Skip to content

ci: restore the in-cluster image build dispatch sender - #140

Open
todie wants to merge 1 commit into
mainfrom
ci/restore-image-build-sender
Open

ci: restore the in-cluster image build dispatch sender#140
todie wants to merge 1 commit into
mainfrom
ci/restore-image-build-sender

Conversation

@todie

@todie todie commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Restores the dispatch sender for the in-cluster image build. It was absent from this repo, so pushes to main triggered no build at all.

Why this matters

  • Harbor platform/linearctl holds exactly one tag: git-deac9f1a5406, built 2026-07-29.
  • The in-cluster operator (ns linearctl, Cygnus) has been running that image ever since, while main moved 38 source files ahead of it.
  • Chart 0.3.0 — the OPS-1214 containment + queue-HMAC rebuild (13703f9, 3719db8, 2ac8e33) — was never published.

The missing sender is why. Its disappearance is consistent with the 2026-07-29 history rewrites, which force-moved main twice; the deployed image's own source commit deac9f1a5406 is likewise unreachable from main today and survives only as a cached GitHub object.

What it does

Mirrors the blackwall sender: resolves the pinned SHA + chart version and triggers unsigned-gg/unsigned-paasbuild-linearctl-image.yaml, which renders a rootless BuildKit Job, signs the image, and publishes deploy/chart to Harbor OCI.

Uses workflow_dispatch, not repository_dispatch — per OPS-1019, POST /repos/{o}/{r}/dispatches needs Contents: write, which the unsigned-reverie-arc App does not hold and should not be granted; POST .../actions/workflows/{file}/dispatches needs only Actions: write, which it already has.

chart_version is read from deploy/chart/Chart.yaml rather than hardcoded, so it cannot silently drift from the file the receiver re-verifies it against.

Requires before it can run

Repo secrets ARC_APP_ID and ARC_APP_PRIVATE_KEY (operator-seeded; this repo has neither today — blackwall has both).

This repo is PUBLIC. The workflow deliberately does not run on pull_request — push-to-main and manual only — so the App token is never minted in a context a fork can influence.

Depends on

unsigned-gg/unsigned-paas#2427, which unblocks the receiver's chart-version contract (0.2.00.3.0). Until that lands, the receiver rejects every dispatch: 0.3.0 fails its contract gate and 0.2.0 fails its Chart.yaml verify.

Publishing is not deploying

A successful build changes nothing in-cluster. The ArgoCD app pins its own image tag and chart targetRevision in unsigned-paas gitops/; that bump is a separate, operator-gated PR.

This file was absent, so pushes to main triggered NO image build. Harbor held
exactly one linearctl tag — git-deac9f1a5406, built 2026-07-29 — and the
in-cluster operator ran that image while main moved 38 source files ahead of
it. Chart 0.3.0 (the OPS-1214 containment + queue-HMAC rebuild) was never
published at all. The missing sender is why.

Mirrors the blackwall sender: resolves the pinned SHA + chart version and
triggers the receiver in unsigned-gg/unsigned-paas via workflow_dispatch
(Actions:write) rather than repository_dispatch (Contents:write, which the
unsigned-reverie-arc App does not hold — OPS-1019).

chart_version is read from deploy/chart/Chart.yaml rather than hardcoded, so
it cannot silently drift from the file the receiver re-verifies it against.
The receiver's own EXPECTED_CHART_VERSION must still be bumped in lockstep on
any chart bump; the 0.2.0-vs-0.3.0 mismatch is exactly what deadlocked this
pipeline (fixed in unsigned-paas by the companion PR).

Publishing is not deploying: the ArgoCD app pins its image tag and chart
targetRevision in unsigned-paas gitops/, so a successful build changes nothing
in-cluster until that separate operator-gated PR lands.

Requires repo secrets ARC_APP_ID + ARC_APP_PRIVATE_KEY (operator-seeded). This
repo is PUBLIC: the workflow deliberately does not run on pull_request, so the
App token is never minted in a context a fork can influence.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant