From a34e5520d037ecfe9b1d2d23fc2928acc71f7426 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Sun, 23 Aug 2026 13:26:16 +0200 Subject: [PATCH] =?UTF-8?q?Feat:=20CI/CD=20Workflows=20und=20Paketierungss?= =?UTF-8?q?kripte=20f=C3=BCr=20Arch/Fedora=20erg=C3=A4nzt,=20Dokumentation?= =?UTF-8?q?=20aktualisiert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AGENTS.md | 42 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 5 deletions(-) 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.