fix(ci): stabilize artifact uploads in Gitea Actions
CI / python-tests (push) Successful in 1m1s
CI / javascript-check (push) Successful in 17s
CI / container-policy (push) Successful in 4s
CI / container-verify (push) Successful in 38s
CI / container-publish (push) Skipped

This commit is contained in:
BartelLuis
2026-09-14 20:31:37 +02:00
parent 9c528c6eca
commit c32aaa8d27
3 changed files with 48 additions and 3 deletions
+32
View File
@@ -53,6 +53,7 @@ In **Settings → Actions → Variables** folgende Repository-Variablen setzen:
| Variable | Wert und Bedeutung |
| --- | --- |
| `AIS_RUNNER_LABEL` | Optional: Label eines verfügbaren Runners; Standard `ubuntu-latest` |
| `ARTIFACT_SERVER_URL` | Optional: aus dem Job-Container erreichbare Basis-URL derselben Gitea-Instanz, etwa `https://gitlab.bartelluis.de`; Standard ist `gitea.server_url` wie beim Checkout |
| `REGISTRY_HOST` | Optional: Registry-Host ohne Schema oder Pfad; Standard `gitlab.bartelluis.de` |
| `REGISTRY_USERNAME` | Gitea-Benutzername des Token-Inhabers; für Veröffentlichung erforderlich |
| `PUBLISH_IMAGES` | Genau `true`, nachdem Registry-Zugang und Schutzregeln eingerichtet sind |
@@ -196,6 +197,37 @@ von der Instanz zurückgegebene abweichende Adresse wie `git.bartelluis.de` muss
ebenfalls auflösbar und erreichbar sein oder in der Gitea-Konfiguration
korrigiert werden.
Bei einem Timeout von `ArtifactService/CreateArtifact` den Wert von
`ACTIONS_RESULTS_URL` im Upload-Schritt prüfen. Der Runner setzt ihn zunächst
aus seiner Registrierungsadresse; Runner 3.4.2 kann ihn für die
Artefaktweiterleitung durch die Adresse seines Cache-Servers ersetzen.
Ein interner Docker-Hostname oder eine nur im Runner-Container erreichbare
Adresse kann im getrennten Job-Netz unerreichbar sein. Der gemountete
Docker-Socket verbindet diese Netze nicht miteinander.
Der Workflow setzt deshalb für alle drei Uploads `ACTIONS_RESULTS_URL` auf
`gitea.server_url`, also dieselbe Gitea-Adresse wie beim Checkout. Falls nötig,
`ARTIFACT_SERVER_URL=https://gitlab.bartelluis.de` als Repository-Variable setzen.
Die Basis-URL enthält Schema und Host, gegebenenfalls einen Port, aber keinen
`/api/actions_pipeline`-Pfad. Sie muss dieselbe Gitea-Instanz erreichen.
Die Überschreibung muss direkt im Upload-Schritt stehen, da der Runner
Umgebungsvariablen auf Workflow- oder Job-Ebene überschreiben kann.
[Runner-Artefaktweiterleitung](https://gitea.com/gitea/runner/src/tag/v3.4.2/internal/app/run/runner.go#L598),
[Gitea-Laufzeitvariablen](https://docs.gitea.com/usage/actions/actions-variables/#internal-environment-variables).
Die Erreichbarkeit innerhalb eines Job-Containers prüfen:
```bash
curl --connect-timeout 5 --max-time 10 --silent --show-error --output /dev/null \
--write-out 'HTTP %{http_code}\n' \
https://gitlab.bartelluis.de/twirp/github.actions.results.api.v1.ArtifactService/CreateArtifact
```
Ein `405` auf diese GET-Anfrage bestätigt, dass der POST-Endpunkt erreichbar
ist; der eigentliche Upload benötigt weiterhin das vom Runner bereitgestellte
Job-Token. Bei einem Timeout DNS, Routing und Proxy-Zugriff aus dem Job-Netz
prüfen oder Runner und Jobs an ein gemeinsames erreichbares Docker-Netz
anbinden. Eine längere Wiederholungszeit behebt eine unerreichbare Adresse nicht.
Bei übersprungenem Publish-Job `PUBLISH_IMAGES`, Ereignis, Standardbranch und
Tagformat prüfen. Bei `denied` oder `unauthorized` Registry-Host, Benutzername,
`REGISTRY_TOKEN`, dessen `write:package`-Scope und die Rechte am Paketinhaber
+8 -3
View File
@@ -19,9 +19,14 @@ Gitea Container Registry. Die Prüfung unter Windows mit Python 3.13.15 ergab:
wurden unter Windows übersprungen.
- Workflow-YAML, Shell-Syntax und JavaScript-Syntax wurden erfolgreich geprüft.
Ein neuer Linux-Containerbuild und ein vollständiger Gitea-Lauf einschließlich
Registry-Push sind noch offen. Der vorhandene Gitea-Lauf wartet auf einen
Online-Runner mit passendem Label; die Repository-Runnerliste ist leer.
Im anschließenden [Gitea-Lauf 2](https://gitlab.bartelluis.de/BartelLuis/Proxmox-AIS-Server/actions/runs/2)
bestanden alle 169 Tests unter Linux; auch JavaScript- und Policy-Job waren
erfolgreich. Der JUnit-Upload scheiterte mit einem Timeout beim Aufruf von
`ArtifactService/CreateArtifact`. Der Workflow verwendet für alle Uploads nun
die vom Checkout erreichbare Gitea-URL statt der vom Runner gewählten
Artefakt- beziehungsweise Cache-Proxy-Adresse.
Diese Korrektur ist lokal geprüft; der erfolgreiche Artefakt-Upload sowie
Containerbuild und Registry-Push müssen im nächsten Gitea-Lauf bestätigt werden.
Die folgenden Ergebnisse dokumentieren den Stand vor dieser Migration.
## Automatisierte Prüfungen: 13. September 2026