fix(ci): robuste artefakt- und release-stabilisierung gegen flakes#99
fix(ci): robuste artefakt- und release-stabilisierung gegen flakes#99tomtastisch merged 3 commits intomainfrom
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4aa27593b6
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
Pull request overview
This PR enhances CI/Release pipeline stability by adding retry mechanisms and adjusting verification strategies to handle transient platform failures ("flakes") while maintaining fail-closed behavior.
Changes:
- Introduces robust artifact download mechanism with exponential backoff retry for CI summary job
- Implements GitHub Release API retry logic with reason classification (auth/rate-limit/network/5xx)
- Shifts NuGet post-publish verification from slower registration endpoint to more reliable V2 download endpoint
Reviewed changes
Copilot reviewed 5 out of 7 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| tools/ci/bin/download_artifacts_with_retry.sh | New retry-enabled artifact downloader with exponential backoff (6 attempts by default) |
| .github/workflows/ci.yml | Refactors summary job from 13 individual download-artifact actions to single retry script; adds actions: read permission |
| .github/workflows/release.yml | Makes evidence artifact uploads non-blocking with continue-on-error: true |
| tools/ci/release/upsert_github_release.sh | Adds retry/backoff with reason classification; fails fast on auth errors |
| tools/ci/release/gate4_verify_postpublish.sh | Changes defaults: registration=0, flatcontainer=0, v2_download=1 to use more stable endpoint |
| tools/ci/verify_nuget_release.sh | Implements V2 download check via /api/v2/package endpoint with retry support |
Comments suppressed due to low confidence (1)
.github/workflows/release.yml:40
- Incomplete artifact upload configuration: The tag-gate artifact upload has
continue-on-error: trueadded on line 40, but theif-no-files-foundparameter on line 43 (visible in context, not shown in diff) still useserror. This is inconsistent with the attestation verification artifact upload (lines 223-228) which correctly changes both settings. When making an artifact upload non-blocking withcontinue-on-error: true, theif-no-files-foundshould also be changed towarnto ensure the step doesn't fail if no files are found. Otherwise, the combination could still cause the step to fail, which contradicts the intent of making it non-blocking for flake resilience.
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
Ziel & Scope
Dieses PR haertet die CI/Release-Stabilitaet gegen externe Plattform-Flakes (Artifact-403, API-Transienten) und reduziert False-Negatives bei der NuGet-Postpublish-Konvergenz, ohne Fail-Closed-Prinzip aufzugeben.
Umgesetzte Aufgaben (abhaken)
tools/ci/bin/download_artifacts_with_retry.sh.summary-Job in/.github/workflows/ci.ymlvon 13 Einzel-download-artifactSchritten auf robusten Retry-Download umgestellt.actions: readin CI-Workflow fuergh run download.continue-on-errorfuer Evidence-Uploads).tools/ci/release/upsert_github_release.sh).tools/ci/verify_nuget_release.sh).Nachbesserungen aus Review (iterativ)
Security- und Merge-Gates
security/code-scanning/tools: Pflichtziel fuer Merge bleibt0 offene Alerts.Evidence (auditierbar)
bash -n tools/ci/bin/download_artifacts_with_retry.shbash -n tools/ci/release/upsert_github_release.shbash -n tools/ci/release/gate4_verify_postpublish.shbash -n tools/ci/verify_nuget_release.shGITHUB_REPOSITORY=tomtastisch/FileClassifier bash tools/ci/bin/download_artifacts_with_retry.sh 22144970647 "ci-build=<tmp>" "ci-pack=<tmp>"EXPECTED_VERSION=5.2.1 PKG_ID=Tomtastisch.FileClassifier PKG_VER=5.2.1 VERIFY_ONLINE=1 REQUIRE_SEARCH=0 REQUIRE_REGISTRATION=0 REQUIRE_FLATCONTAINER=0 REQUIRE_V2_DOWNLOAD=1 RETRY_COUNT=2 RETRY_SLEEP_SECONDS=1 bash tools/ci/verify_nuget_release.sh/.github/workflows/ci.yml,/.github/workflows/release.yml,/tools/ci/release/upsert_github_release.sh,/tools/ci/release/gate4_verify_postpublish.sh,/tools/ci/verify_nuget_release.sh,/tools/ci/bin/download_artifacts_with_retry.shDoD (mindestens 2 pro Punkt)
summarynutzt Retry-Downloader statt Einzel-Downloadsverify_nuget_release.shunterstuetztREQUIRE_V2_DOWNLOAD5.2.1erfolgreich nachgewiesenrequire_v2_downloadin JSON-Summary aufgenommen.package idumgestellt.