Feat: CI/CD Workflows und Paketierungsskripte für Arch/Fedora ergänzt, Dokumentation aktualisiert

This commit is contained in:
2026-08-23 13:26:16 +02:00
parent 589d0f6be1
commit a34e5520d0
+37 -5
View File
@@ -27,6 +27,10 @@ lädt diese herunter, startet betroffene Services neu und bereinigt ungenutzte Z
```text ```text
DockerUpdate/ 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.toml # Rust-Manifest, Abhängigkeiten und Metadaten für cargo-deb / generate-rpm
├── Cargo.lock ├── Cargo.lock
├── LICENSE # GPL-3.0 Lizenztext ├── LICENSE # GPL-3.0 Lizenztext
@@ -34,9 +38,10 @@ DockerUpdate/
├── AGENTS.md # Richtlinien und Dokumentation für Agenten ├── AGENTS.md # Richtlinien und Dokumentation für Agenten
├── packaging/ ├── packaging/
│ ├── arch/ │ ├── arch/
│ │ ── PKGBUILD # Arch Linux PKGBUILD │ │ ── PKGBUILD # Arch Linux PKGBUILD
│ │ └── build-package.sh # Hilfsskript zur Erstellung des .pkg.tar.zst-Pakets
│ └── fedora/ │ └── fedora/
│ └── docker-update.spec # RPM-Spec für Fedora / RHEL / CentOS │ └── docker-update.spec # RPM-Spec für Fedora / RHEL / CentOS
└── src/ └── src/
├── main.rs # Einstiegspunkt, Root-Prüfung, Ausführung ├── main.rs # Einstiegspunkt, Root-Prüfung, Ausführung
├── program.rs # Hilfsfunktion zur Programmnamensermittlung ├── program.rs # Hilfsfunktion zur Programmnamensermittlung
@@ -70,6 +75,17 @@ DockerUpdate/
- **`src/sudo.rs`**: - **`src/sudo.rs`**:
- `is_run_as_root()`: Nutzt `libc::geteuid() == 0`. - `is_run_as_root()`: Nutzt `libc::geteuid() == 0`.
- `run_as_root()`: Führt `sudo <args>` per `exec` aus. - `run_as_root()`: Führt `sudo <args>` 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 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 ## 4. Richtlinien für Änderungen
@@ -95,10 +124,13 @@ cargo build --release
1. **Abwärtskompatibilität & Pfade**: 1. **Abwärtskompatibilität & Pfade**:
Der Standard-Apps-Pfad `/var/apps` und die Konfigurationspfade dürfen nicht ohne triftigen Grund geändert werden. Der Standard-Apps-Pfad `/var/apps` und die Konfigurationspfade dürfen nicht ohne triftigen Grund geändert werden.
2. **Paketierungsdefinitionen synchron halten**: 2. **Paketierungsdefinitionen synchron halten**:
Werden Abhängigkeiten oder Assets geändert, müssen `Cargo.toml` (`[package.metadata.deb]`, Werden Abhängigkeiten, Metadaten 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 `[package.metadata.generate-rpm]`), `packaging/arch/PKGBUILD`, `packaging/arch/build-package.sh` und
aktualisiert werden. `packaging/fedora/docker-update.spec` entsprechend aktualisiert werden.
3. **Automatisierung**: 3. **Automatisierung**:
Die empfohlene Automatisierungsmethode ist **Cron** (`/etc/cron.d/docker-update` oder `crontab -e`). Die empfohlene Automatisierungsmethode ist **Cron** (`/etc/cron.d/docker-update` oder `crontab -e`).
4. **Keine Mocking-Bypässe**: 4. **Keine Mocking-Bypässe**:
Tests dürfen nicht gelöscht, ignoriert oder durch leere Dummy-Assertions ersetzt werden. 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.