Compare commits

..
5 Commits
Author SHA1 Message Date
DragonSlayer_14 5768604ac9 Merge pull request 'Merge testing in main: Release 1.0.3' (#20) from testing into main
Testing Build, Publish & Preview Release / Build, Publish Packages (Testing) & Create Preview Release (push) Skipped
Security Scans / Trivy & OSV-Scanner (push) Successful in 25s
Main Release & Publish / Build, Publish Packages (Stable) & Create Release (push) Successful in 1m54s
TruffleHog Secret Scan / TruffleHog (push) Successful in 9s
Reviewed-on: #20
2026-09-10 20:38:58 +00:00
DragonSlayer_14 07ef691bc1 Merge pull request 'Merge dev in testing: Fix: Alte Paketierungs-Artefakte aus dem Cargo-Cache bereinigen' (#19) from dev into testing
TruffleHog Secret Scan / TruffleHog (push) Successful in 16s
Security Scans / Trivy & OSV-Scanner (push) Successful in 27s
Testing Build, Publish & Preview Release / Build, Publish Packages (Testing) & Create Preview Release (push) Successful in 2m6s
Unit-Tests / Unit-Tests (pull_request) Skipped
TruffleHog Secret Scan / TruffleHog (pull_request) Successful in 11s
Security Scans / Trivy & OSV-Scanner (pull_request) Successful in 18s
Reviewed-on: #19
2026-09-10 20:34:46 +00:00
DragonSlayer_14andClaude Sonnet 5 4d110b7c52 Fix: Alte Paketierungs-Artefakte aus dem Cargo-Cache bereinigen
Testing Build, Publish & Preview Release / Build, Publish Packages (Testing) & Create Preview Release (push) Skipped
TruffleHog Secret Scan / TruffleHog (push) Successful in 11s
Security Scans / Trivy & OSV-Scanner (push) Successful in 17s
TruffleHog Secret Scan / TruffleHog (pull_request) Successful in 16s
Security Scans / Trivy & OSV-Scanner (pull_request) Successful in 25s
Unit-Tests / Unit-Tests (pull_request) Successful in 36s
Der target-Cache (aus dem vorherigen Caching-Fix) haelt zwischen
Laeufen auch target/debian, target/generate-rpm und target/arch am
Leben, obwohl diese nie geleert wurden. Bei einem Cache-Treffer
wurden dadurch alte .deb/.rpm/.pkg.tar.zst-Dateien aus frueheren
Builds wiederhergestellt und beim Registry-Publish erneut mit
hochgeladen - Gitea lehnte die bereits existierende Datei mit 409
ab und riss den kompletten Schritt ab, bevor die eigentlich neue
Datei drankam (beobachtet beim RPM-Upload trotz korrekt berechneter
neuer Build-Nummer).

Die drei Paketierungs-Ausgabeordner werden jetzt direkt nach dem
Cache-Restore geleert, der eigentliche Kompilierungs-Cache
(target/<triple>/release/...) bleibt davon unberuehrt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Kh9v73QApBwJj96w6A8R55
2026-09-10 22:32:57 +02:00
DragonSlayer_14 5f4be34a73 Merge pull request 'Merge dev in testing: Fix: Build-Nummer-Ermittlung uebersah bereits veroeffentlichte RPM/Deb/Arch-Versionen' (#18) from dev into testing
TruffleHog Secret Scan / TruffleHog (push) Successful in 16s
Security Scans / Trivy & OSV-Scanner (push) Successful in 24s
Testing Build, Publish & Preview Release / Build, Publish Packages (Testing) & Create Preview Release (push) Failing after 1m54s
Reviewed-on: #18
2026-09-10 20:24:01 +00:00
DragonSlayer_14andClaude Sonnet 5 2a16a866ed Fix: Build-Nummer-Ermittlung uebersah bereits veroeffentlichte RPM/Deb/Arch-Versionen
Testing Build, Publish & Preview Release / Build, Publish Packages (Testing) & Create Preview Release (push) Skipped
TruffleHog Secret Scan / TruffleHog (push) Successful in 11s
Security Scans / Trivy & OSV-Scanner (push) Successful in 16s
TruffleHog Secret Scan / TruffleHog (pull_request) Successful in 16s
Security Scans / Trivy & OSV-Scanner (pull_request) Successful in 26s
Unit-Tests / Unit-Tests (pull_request) Successful in 38s
Die bisherige Abfrage GET /api/v1/packages/{owner}?limit=50 listete
alle Pakete des Owners ungefiltert (inkl. Docker-Image-Tags aus
main.yaml/testing.yaml), ohne Pagination. Dadurch konnte die
tatsaechlich relevante Paket-Version verdraengt werden, das Skript
hielt eine bereits genutzte Build-Nummer faelschlich fuer frei, und
der anschliessende Registry-Upload schlug mit 409 (Datei existiert
bereits) fehl - beobachtet beim RPM-Upload.

Fragt jetzt stattdessen gezielt pro Paket-Typ (debian/rpm/arch) die
Latest-Version ab (GET .../{type}/{name}/-/latest, ein Request ohne
Pagination). Alle drei Ergebnisse fliessen weiterhin in dasselbe Set
ein, sodass die naechste Build-Nummer weiterhin als globales Maximum
ueber alle Typen hinweg berechnet wird - deb/rpm/arch bleiben also
mit einer gemeinsamen Nummer synchron, auch wenn ein frueherer Lauf
nur bei einem der Typen erfolgreich hochgeladen hat.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Kh9v73QApBwJj96w6A8R55
2026-09-10 22:18:58 +02:00
3 changed files with 30 additions and 10 deletions
+3
View File
@@ -34,6 +34,9 @@ jobs:
restore-keys: | restore-keys: |
cargo-${{ runner.os }}- cargo-${{ runner.os }}-
- name: Alte Paketierungs-Ausgaben aus dem Cache entfernen
run: rm -rf target/debian target/generate-rpm target/arch
- name: Install Cross-Compilation Toolchains (apt) - name: Install Cross-Compilation Toolchains (apt)
run: | run: |
sudo apt-get update sudo apt-get update
+3
View File
@@ -34,6 +34,9 @@ jobs:
restore-keys: | restore-keys: |
cargo-${{ runner.os }}- cargo-${{ runner.os }}-
- name: Alte Paketierungs-Ausgaben aus dem Cache entfernen
run: rm -rf target/debian target/generate-rpm target/arch
- name: Install Cross-Compilation Toolchains (apt) - name: Install Cross-Compilation Toolchains (apt)
run: | run: |
sudo apt-get update sudo apt-get update
+24 -10
View File
@@ -9,9 +9,14 @@ import os
import re import re
import subprocess import subprocess
import sys import sys
import urllib.error
import urllib.parse import urllib.parse
import urllib.request import urllib.request
# Paket-Typen, unter denen dasselbe Release veroeffentlicht wird und die sich
# daher eine gemeinsame Build-Nummer teilen muessen.
PACKAGE_TYPES = ("debian", "rpm", "arch")
def get_cargo_pkg_info(): def get_cargo_pkg_info():
try: try:
@@ -83,20 +88,29 @@ def query_existing_build_numbers(name, version, gitea_url, repo, owner, token=No
except Exception as e: except Exception as e:
sys.stderr.write(f"[Hinweis] Konnte Gitea Releases nicht abfragen: {e}\n") sys.stderr.write(f"[Hinweis] Konnte Gitea Releases nicht abfragen: {e}\n")
# 2. Gitea Packages API (falls Token vorhanden) # 2. Gitea Packages API (falls Token vorhanden): pro Paket-Typ gezielt nur die
if gitea_url and owner and token: # neueste Version abfragen (ein Request, keine Pagination noetig). Das haelt
try: # die Abfrage schnell unabhaengig von der Historie und ist unbeeinflusst von
url = f"{gitea_url.rstrip('/')}/api/v1/packages/{owner}?limit=50" # Docker-Tags/anderen Paket-Typen, die unter demselben Owner haengen.
req = urllib.request.Request(url, headers=headers) if gitea_url and owner and token and name:
with urllib.request.urlopen(req, timeout=10) as resp: for pkg_type in PACKAGE_TYPES:
packages = json.loads(resp.read().decode()) try:
for pkg in packages: url = (
f"{gitea_url.rstrip('/')}/api/v1/packages/{owner}/"
f"{pkg_type}/{urllib.parse.quote(name, safe='')}/-/latest"
)
req = urllib.request.Request(url, headers=headers)
with urllib.request.urlopen(req, timeout=10) as resp:
pkg = json.loads(resp.read().decode())
pkg_ver = pkg.get("version", "") pkg_ver = pkg.get("version", "")
m = pattern.search(pkg_ver) m = pattern.search(pkg_ver)
if m: if m:
build_nums.add(int(m.group(1))) build_nums.add(int(m.group(1)))
except Exception as e: except urllib.error.HTTPError as e:
sys.stderr.write(f"[Hinweis] Konnte Gitea Packages nicht abfragen: {e}\n") if e.code != 404:
sys.stderr.write(f"[Hinweis] Konnte neueste {pkg_type}-Paketversion nicht abfragen: {e}\n")
except Exception as e:
sys.stderr.write(f"[Hinweis] Konnte neueste {pkg_type}-Paketversion nicht abfragen: {e}\n")
# 3. Lokales Target-Verzeichnis prüfen # 3. Lokales Target-Verzeichnis prüfen
target_dirs = ["target/debian", "target/generate-rpm", "target/arch"] target_dirs = ["target/debian", "target/generate-rpm", "target/arch"]