Repository navigation
fix(build): pre-flight tag existence check + restore continue-on-signing-failure - #452
Conversation
|
Warning Review limit reached
More reviews will be available in 33 minutes and 52 seconds. Learn how PR review limits work. To continue reviewing without waiting, enable usage-based billing in the billing tab. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits. 🚦 How do rate limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan refill rate. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, the refill rate gradually slows as usage increases. The highest same-day bursts are limited more strictly. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yml Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (2)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
🔍 PR Validation Summary✅ PR Mergeable — no blocking failures
|
🔍 Lint Analysis
|
🛡️ CodeQL Analysis ResultsLanguages analyzed: ✅ No security issues found. 🔍 View full scan logs | 🛡️ Security tab |
Description
Fixes the two root causes of the
tenant-manager2.2.0-beta.6two-attempt failure (run) — both confirmed from the run's job annotations.Attempt #2 — wasted rebuild on an immutable tag. A re-run rebuilt the image (~19s) then failed at push because DockerHub tag immutability rejected the already-published tag. New
on_existing_taginput adds a pre-flight existence check (viadocker manifest inspect, reusing the registry logins) before the build:fail(default): abort early with a clear error instead of rebuilding then failing at push.skip: skip build/push but still emit the GitOps tag artifacts (from the version) so a re-run stays idempotent for the downstream GitOps update.warn: warn and build anyway.A non-existent tag — or a check that errors (transient registry issues) — is treated as "not present", so the check never blocks a legitimate build.
Attempt #1 secondary error — broken
continue_gitops_on_signing_failure. When cosign signing failed, the job died withThe template is not valid … build.yml@v1.31.0 (Line: 372, Col: 28): Unexpected value ''/an error occurred when attempting to determine whether to continue on error. Root cause (verified): aworkflow_callboolean input interpolated into a step-levelcontinue-on-errorrenders empty when evaluated at failure time — a known GitHub Actions quirk — so the very feature meant to tolerate a Sigstore/Rekor outage was itself broken at the moment of failure. Fixed by coercing to a guaranteed boolean:continue-on-error: ${{ inputs.continue_gitops_on_signing_failure || false }}.Files:
.github/workflows/build.yml— newon_existing_taginput; pre-flight tag check step;should_buildgating of metadata/build-push/cosign steps (GitOps artifact steps stay soskipremains idempotent);continue-on-errorboolean coercion.docs/build-workflow.md—on_existing_tagrow + "Tag Immutability and Re-runs" section.Scope / relationship to #421
#421 is an umbrella covering several loosely-related fixes. This PR delivers the two incident root-cause fixes (attempt #1 template error, attempt #2 tag check). The remaining items are split into focused issues:
cosign_max_attemptsdefault).cleanup_on_failurefor pushed images (high-risk, originally a suggestion).#421 will be closed as superseded by this PR + #450 + #451.
Type of Change
feat: New workflow or new input/output/step in an existing workflowfix: Bug fix in a workflow (incorrect behavior, broken step, wrong condition)perf: Performance improvement (e.g. caching, parallelism, reduced steps)refactor: Internal restructuring with no behavior changedocs: Documentation only (README, docs/, inline comments)ci: Changes to self-CI (workflows under.github/workflows/that run on this repo)chore: Dependency bumps, config updates, maintenancetest: Adding or updating testsBREAKING CHANGE: Callers must update their configuration after this PRBreaking Changes
on_existing_tagdefaults tofail, so a re-run whose target tag already exists now fails fast before building. Previously such a re-run either failed at push (immutable registries — same red, just later) or overwrote the tag (mutable registries). Repos that intentionally re-push/overwrite a tag must seton_existing_tag: warn(orskip).This propagates to
go-release.ymlcallers, which callbuild.ymlwithouton_existing_tagand therefore inheritfail.go-releasedoes not yet expose a passthrough to override it; that can be added as a follow-up if a caller needsskip/warn.Testing
should_buildgating across metadata/build-push/cosign while GitOps artifact steps remain (idempotentskip)@this-branchor the beta tagCaller repo / workflow run: Pending — to validate on a re-run against an already-published tag (fail/skip/warn) and a cosign-failure path (continue-on-error no longer template-errors).
Related Issues
Part of #421 (closed as superseded). Follow-ups: #450, #451.