Feat: CI/CD Workflows und Paketierungsskripte für Arch/Fedora ergänzt, Dokumentation aktualisiert
This commit is contained in:
@@ -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 <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
|
||||
```
|
||||
|
||||
### 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.
|
||||
|
||||
Reference in New Issue
Block a user