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
+8
View File
@@ -40,6 +40,10 @@ jobs:
- name: Upload JUnit report - name: Upload JUnit report
if: ${{ always() }} if: ${{ always() }}
uses: https://gitea.com/actions/gitea-upload-artifact@62ac910c5d3dfa85c7cb2df15afe2e342b2407c2 uses: https://gitea.com/actions/gitea-upload-artifact@62ac910c5d3dfa85c7cb2df15afe2e342b2407c2
env:
# The runner's artifact proxy may be private to its Docker network.
# Use the Gitea URL reachable by checkout in the job container.
ACTIONS_RESULTS_URL: ${{ vars.ARTIFACT_SERVER_URL || gitea.server_url }}
with: with:
name: python-test-results name: python-test-results
path: reports/pytest.xml path: reports/pytest.xml
@@ -95,6 +99,8 @@ jobs:
- name: Build and smoke-test image - name: Build and smoke-test image
run: sh ci/container.sh verify run: sh ci/container.sh verify
- uses: https://gitea.com/actions/gitea-upload-artifact@62ac910c5d3dfa85c7cb2df15afe2e342b2407c2 - uses: https://gitea.com/actions/gitea-upload-artifact@62ac910c5d3dfa85c7cb2df15afe2e342b2407c2
env:
ACTIONS_RESULTS_URL: ${{ vars.ARTIFACT_SERVER_URL || gitea.server_url }}
with: with:
name: container-build name: container-build
path: build.env path: build.env
@@ -127,6 +133,8 @@ jobs:
REGISTRY_TOKEN: ${{ secrets.REGISTRY_TOKEN }} REGISTRY_TOKEN: ${{ secrets.REGISTRY_TOKEN }}
run: sh ci/container.sh publish run: sh ci/container.sh publish
- uses: https://gitea.com/actions/gitea-upload-artifact@62ac910c5d3dfa85c7cb2df15afe2e342b2407c2 - uses: https://gitea.com/actions/gitea-upload-artifact@62ac910c5d3dfa85c7cb2df15afe2e342b2407c2
env:
ACTIONS_RESULTS_URL: ${{ vars.ARTIFACT_SERVER_URL || gitea.server_url }}
with: with:
name: container-deploy name: container-deploy
path: | path: |
+32
View File
@@ -53,6 +53,7 @@ In **Settings → Actions → Variables** folgende Repository-Variablen setzen:
| Variable | Wert und Bedeutung | | Variable | Wert und Bedeutung |
| --- | --- | | --- | --- |
| `AIS_RUNNER_LABEL` | Optional: Label eines verfügbaren Runners; Standard `ubuntu-latest` | | `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_HOST` | Optional: Registry-Host ohne Schema oder Pfad; Standard `gitlab.bartelluis.de` |
| `REGISTRY_USERNAME` | Gitea-Benutzername des Token-Inhabers; für Veröffentlichung erforderlich | | `REGISTRY_USERNAME` | Gitea-Benutzername des Token-Inhabers; für Veröffentlichung erforderlich |
| `PUBLISH_IMAGES` | Genau `true`, nachdem Registry-Zugang und Schutzregeln eingerichtet sind | | `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 ebenfalls auflösbar und erreichbar sein oder in der Gitea-Konfiguration
korrigiert werden. 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 Bei übersprungenem Publish-Job `PUBLISH_IMAGES`, Ereignis, Standardbranch und
Tagformat prüfen. Bei `denied` oder `unauthorized` Registry-Host, Benutzername, Tagformat prüfen. Bei `denied` oder `unauthorized` Registry-Host, Benutzername,
`REGISTRY_TOKEN`, dessen `write:package`-Scope und die Rechte am Paketinhaber `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. wurden unter Windows übersprungen.
- Workflow-YAML, Shell-Syntax und JavaScript-Syntax wurden erfolgreich geprüft. - Workflow-YAML, Shell-Syntax und JavaScript-Syntax wurden erfolgreich geprüft.
Ein neuer Linux-Containerbuild und ein vollständiger Gitea-Lauf einschließlich Im anschließenden [Gitea-Lauf 2](https://gitlab.bartelluis.de/BartelLuis/Proxmox-AIS-Server/actions/runs/2)
Registry-Push sind noch offen. Der vorhandene Gitea-Lauf wartet auf einen bestanden alle 169 Tests unter Linux; auch JavaScript- und Policy-Job waren
Online-Runner mit passendem Label; die Repository-Runnerliste ist leer. 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. Die folgenden Ergebnisse dokumentieren den Stand vor dieser Migration.
## Automatisierte Prüfungen: 13. September 2026 ## Automatisierte Prüfungen: 13. September 2026