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