diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index faf7a4d..9b55d2e 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -40,6 +40,10 @@ jobs: - name: Upload JUnit report if: ${{ always() }} 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: name: python-test-results path: reports/pytest.xml @@ -95,6 +99,8 @@ jobs: - name: Build and smoke-test image run: sh ci/container.sh verify - uses: https://gitea.com/actions/gitea-upload-artifact@62ac910c5d3dfa85c7cb2df15afe2e342b2407c2 + env: + ACTIONS_RESULTS_URL: ${{ vars.ARTIFACT_SERVER_URL || gitea.server_url }} with: name: container-build path: build.env @@ -127,6 +133,8 @@ jobs: REGISTRY_TOKEN: ${{ secrets.REGISTRY_TOKEN }} run: sh ci/container.sh publish - uses: https://gitea.com/actions/gitea-upload-artifact@62ac910c5d3dfa85c7cb2df15afe2e342b2407c2 + env: + ACTIONS_RESULTS_URL: ${{ vars.ARTIFACT_SERVER_URL || gitea.server_url }} with: name: container-deploy path: | diff --git a/docs/gitea-actions.md b/docs/gitea-actions.md index 1083a80..9df8cad 100644 --- a/docs/gitea-actions.md +++ b/docs/gitea-actions.md @@ -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 diff --git a/docs/test-report.md b/docs/test-report.md index a567860..c90e7b5 100644 --- a/docs/test-report.md +++ b/docs/test-report.md @@ -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