build: extend the main-sync gate to the image build and the k8s deploy
Some checks failed
CI/CD / lint (pull_request) Successful in 1m15s
CI/CD / test (pull_request) Successful in 1m23s
CI/CD / typecheck (pull_request) Successful in 2m59s
CI/CD / smoke (pull_request) Failing after 1m57s
CI/CD / build (pull_request) Successful in 4m58s
CI/CD / publish (pull_request) Has been skipped
Some checks failed
CI/CD / lint (pull_request) Successful in 1m15s
CI/CD / test (pull_request) Successful in 1m23s
CI/CD / typecheck (pull_request) Successful in 2m59s
CI/CD / smoke (pull_request) Failing after 1m57s
CI/CD / build (pull_request) Successful in 4m58s
CI/CD / publish (pull_request) Has been skipped
Same hazard as the package build, with the cluster on the receiving end: a
branch behind main builds images missing whatever landed there, and deploy-k8s.sh
pins that sha in Pulumi — making the stale build the cluster's source of truth.
build-mcpd.sh gets its own call because it is run standalone as well as from
deploy-k8s.sh, so neither can rely on the other having checked.
`--dry-run` is exempt. It builds and cuts over nothing, and blocking a read-only
inspection is exactly what teaches people to export MCPCTL_ALLOW_BEHIND_MAIN=1
permanently — which would disable the gate for the real deploys too.
The failure text is now artifact-agnostic ("produce an artifact" / "shipping
it"), since one helper now speaks for packages, images and deploys.
Verified against a synthetic ref one commit ahead: build-mcpd.sh exits 1 before
any docker work, and deploy-k8s.sh exits 1 before the test gate, the pg_dump,
the image build and pulumi. Neither the working tree nor HEAD was moved to test
this — the ref was built with git commit-tree and deleted afterwards.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019wUmrfkVQR6CKcYKxENq7k
This commit is contained in:
@@ -80,6 +80,20 @@ cat <<EOF
|
||||
EOF
|
||||
[ -f "$PULUMI_YAML" ] || die "Pulumi config not found: $PULUMI_YAML"
|
||||
|
||||
# ── 0. Staleness gate ──
|
||||
# Same hazard as the RPM build, with the cluster on the receiving end: a branch
|
||||
# behind main deploys images missing whatever landed there, and the sha pinned in
|
||||
# Pulumi makes that the new source of truth. Skipped for --dry-run, which builds
|
||||
# and cuts over nothing — blocking a read-only inspection only teaches people to
|
||||
# export MCPCTL_ALLOW_BEHIND_MAIN=1 permanently, which would disable the gate for
|
||||
# the real deploys too.
|
||||
if [ "$DRY_RUN" = true ]; then
|
||||
warn "dry-run: skip the main-sync check"
|
||||
else
|
||||
source "$SCRIPT_DIR/check-main-sync.sh"
|
||||
check_main_sync || die "branch is behind main — merge it before deploying"
|
||||
fi
|
||||
|
||||
# ── 1. Test gate ──
|
||||
if [ "$SKIP_TESTS" = true ]; then warn "skipping unit tests (--skip-tests)"; else
|
||||
say "1/7 Unit tests (pnpm test:run)"
|
||||
|
||||
Reference in New Issue
Block a user