diff --git a/AGENTS.md b/AGENTS.md index af607ed..1d03492 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -27,6 +27,10 @@ lädt diese herunter, startet betroffene Services neu und bereinigt ungenutzte Z ```text DockerUpdate/ +├── .gitea/ +│ └── workflows/ +│ ├── dev.yml # CI/CD für dev-Branch (Tests, Testing-Packages & Preview-Release) +│ └── main.yml # CI/CD für main-Branch (Tests, Stable-Packages & Release) ├── Cargo.toml # Rust-Manifest, Abhängigkeiten und Metadaten für cargo-deb / generate-rpm ├── Cargo.lock ├── LICENSE # GPL-3.0 Lizenztext @@ -34,9 +38,10 @@ DockerUpdate/ ├── AGENTS.md # Richtlinien und Dokumentation für Agenten ├── packaging/ │ ├── arch/ -│ │ └── PKGBUILD # Arch Linux PKGBUILD +│ │ ├── PKGBUILD # Arch Linux PKGBUILD +│ │ └── build-package.sh # Hilfsskript zur Erstellung des .pkg.tar.zst-Pakets │ └── fedora/ -│ └── docker-update.spec # RPM-Spec für Fedora / RHEL / CentOS +│ └── docker-update.spec # RPM-Spec für Fedora / RHEL / CentOS └── src/ ├── main.rs # Einstiegspunkt, Root-Prüfung, Ausführung ├── program.rs # Hilfsfunktion zur Programmnamensermittlung @@ -70,6 +75,17 @@ DockerUpdate/ - **`src/sudo.rs`**: - `is_run_as_root()`: Nutzt `libc::geteuid() == 0`. - `run_as_root()`: Führt `sudo ` per `exec` aus. +- **`.gitea/workflows/`**: + - `dev.yml`: Führt bei Push auf `dev` Tests und Builds durch, veröffentlicht Pakete in der Gitea Package Registry + (`distribution: testing`, `component: main` bzw. Gruppe/Repo `testing`) und erstellt ein Gitea Preview-Release mit + den Paketen als Assets. + - `main.yml`: Führt bei Push auf `main` Tests und Builds durch, veröffentlicht Pakete in der Gitea Package Registry + (`distribution: stable`, `component: main` bzw. Gruppe/Repo `stable`) und erstellt ein Gitea Release mit den + Paketen als Assets. +- **`packaging/`**: + - `arch/PKGBUILD`: Quellpaketdefinition für Arch Linux (AUR / Makepkg). + - `arch/build-package.sh`: Hilfsskript zum Bauen des standardkonformen `.pkg.tar.zst`-Pakets aus dem Cargo-Build. + - `fedora/docker-update.spec`: RPM-Spec-Datei für Fedora, RHEL und CentOS. --- @@ -88,6 +104,19 @@ cargo test cargo build --release ``` +### Optionale Paketierungsbefehle (lokale Validierung) + +```bash +# Debian-Paket (.deb) erstellen (benötigt cargo-deb) +cargo deb + +# Fedora / RPM-Paket (.rpm) erstellen (benötigt cargo-generate-rpm) +cargo generate-rpm + +# Arch Linux-Paket (.pkg.tar.zst) erstellen +./packaging/arch/build-package.sh +``` + --- ## 4. Richtlinien für Änderungen @@ -95,10 +124,13 @@ cargo build --release 1. **Abwärtskompatibilität & Pfade**: Der Standard-Apps-Pfad `/var/apps` und die Konfigurationspfade dürfen nicht ohne triftigen Grund geändert werden. 2. **Paketierungsdefinitionen synchron halten**: - Werden Abhängigkeiten oder Assets geändert, müssen `Cargo.toml` (`[package.metadata.deb]`, - `[package.metadata.generate-rpm]`), `packaging/arch/PKGBUILD` und `packaging/fedora/docker-update.spec` entsprechend - aktualisiert werden. + Werden Abhängigkeiten, Metadaten oder Assets geändert, müssen `Cargo.toml` (`[package.metadata.deb]`, + `[package.metadata.generate-rpm]`), `packaging/arch/PKGBUILD`, `packaging/arch/build-package.sh` und + `packaging/fedora/docker-update.spec` entsprechend aktualisiert werden. 3. **Automatisierung**: Die empfohlene Automatisierungsmethode ist **Cron** (`/etc/cron.d/docker-update` oder `crontab -e`). 4. **Keine Mocking-Bypässe**: Tests dürfen nicht gelöscht, ignoriert oder durch leere Dummy-Assertions ersetzt werden. +5. **CI/CD & Release-Konsistenz**: + Workflows in `.gitea/workflows/` müssen bei strukturellen Paket- oder Release-Anpassungen konsistent zu `Cargo.toml` + gehalten werden.