Skip to content

[Chore] Run the deployment acceptance gate concurrently with image builds - #137

Merged
mrubens merged 1 commit into
developfrom
chore/parallel-acceptance-gate
Jul 10, 2026
Merged

[Chore] Run the deployment acceptance gate concurrently with image builds#137
mrubens merged 1 commit into
developfrom
chore/parallel-acceptance-gate

Conversation

@mrubens

@mrubens mrubens commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Problem

Merge-to-nightly latency is ~12 minutes plus per-branch queueing: the acceptance gate (~5 min) runs strictly before the build matrix (~5.5 min on the arm64 app critical path), even though the gate builds its own local images for the smoke test and consumes nothing from the build jobs.

Change

  • build no longer depends on deployment-acceptance; the two run concurrently.
  • publish now depends on [prepare, build, deployment-acceptance].

Protection is unchanged: build jobs only push untagged per-arch digests, and nothing is consumable until publish assembles the tagged manifests — which still cannot happen unless the gate passes. Expected wall clock drops to ~max(gate, builds) + manifests ≈ 7 minutes.

docs_only skip behavior is unchanged: when the gate is skipped, builds are also skipped by the same condition, so publish skips exactly as before.

…ilds

The gate builds its own local images for the smoke test, so serializing it
ahead of the build matrix only added its ~5 minutes to every publish. Gate
the publish job instead: builds push untagged per-arch digests, and nothing
is consumable until publish assembles the tagged manifests, so a failed gate
still prevents any image from shipping. Cuts merge-to-nightly wall clock
from ~12 to ~7 minutes.
@roomote-roomote

roomote-roomote Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

No code issues found. See task

Reviewed the job-dependency rewiring in .github/workflows/publish-ghcr.yml. The change is sound:

  • Dropping deployment-acceptance from build's needs is safe — there is no data dependency. The gate builds its own candidate images locally (docker buildx build --loadlocalhost/roomote/... in deploy/ci/deployment-smoke.sh) and pulls only the baseline from GHCR, so it consumes nothing from the build jobs.
  • Adding deployment-acceptance to publish's needs preserves protection: build only pushes untagged per-arch digests, and tagged manifests are assembled solely by publish, which cannot run unless the gate passes.
  • docs_only skip behavior is unchanged: build and deployment-acceptance share the same if condition, and a skipped needs propagates the skip to publish (and then notify-ops), so publish skips exactly as before.

@mrubens
mrubens merged commit 08b02b0 into develop Jul 10, 2026
@mrubens
mrubens deleted the chore/parallel-acceptance-gate branch July 12, 2026 04:19
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.

2 participants