fix(ci): stabilize artifact uploads in Gitea Actions
This commit is contained in:
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user