Skip to content

fix(ci+orchestrator): unblock startup without PUSHER_CHECKOUT_PATH; harden required-checks gate#153

Merged
behinddwalls merged 1 commit into
mainfrom
preetam/fix-tests
May 11, 2026
Merged

fix(ci+orchestrator): unblock startup without PUSHER_CHECKOUT_PATH; harden required-checks gate#153
behinddwalls merged 1 commit into
mainfrom
preetam/fix-tests

Conversation

@behinddwalls
Copy link
Copy Markdown
Collaborator

@behinddwalls behinddwalls commented May 11, 2026

Why

The merge-queue CI run for #151 actually failed (Orchestrator + E2E integration tests), but the PR merged anyway. Root cause: the Required Checks aggregator job was skipped (its needs failed and it had no if: always()), and GitHub treats a skipped required status check as not-failed, so the ruleset on main let it through.

The orchestrator-service container itself was crashing on startup because #151 made PUSHER_CHECKOUT_PATH a hard requirement, but neither docker-compose used by the integration / e2e tests sets it.

What

  1. example/server/orchestrator/main.go — when PUSHER_CHECKOUT_PATH is unset, log a warning and fall back to an in-file noopPusher that errors on Push. Lets the orchestrator start in ping-only tests / local dev without a checkout; the merge controller treats the error as transient and nacks, so misconfigured prod deployments still surface loudly.
  2. .github/workflows/ci.yml — Required Checks gate: add if: always() plus an explicit step that fails when any needs.*.result is failure/cancelled/skipped, so the gate turns RED instead of skipped. toJSON(needs) is dumped to the log so the offending child job is obvious.
  3. .github/workflows/ci.yml — dynamic run-name: the Actions UI now labels runs as PR-CI #<n>, MergeQueue-CI, or Main-CI depending on trigger.

Test Plan

  • bazel build --platforms=@rules_go//go/toolchain:linux_amd64 //example/server/orchestrator — passes
  • bazel test //orchestrator/controller/merge:merge_test //extension/pusher/... — passes
  • make fmt is a no-op on the modified files (yamlfmt + gofmt clean)
  • Integration tests can't be exercised locally (no Docker daemon on this Mac), but the orchestrator startup path that was crashing in CI now has a working fallback

Co-Authored-By: Oz oz-agent@warp.dev

…arden required-checks gate

The merge_group CI run for PR #151 actually failed (e2e + orchestrator integration tests), but the PR merged anyway because the Required Checks aggregator job was *skipped* (its needs failed), and GitHub treats a skipped required status check as not-failed.

Three fixes:

1. example/server/orchestrator/main.go: when PUSHER_CHECKOUT_PATH is unset, log a warning and fall back to an in-file noopPusher (returns an error on Push). Lets the orchestrator start in ping-only test environments and local dev; the merge controller still surfaces loudly via nack/retry if a misconfigured prod deployment ever reaches it.

2. .github/workflows/ci.yml: add 'if: always()' to required-checks plus an explicit step that fails when any needs result is failure/cancelled/skipped, so the gate turns RED instead of being skipped. Includes toJSON(needs) in the failure log for triage.

3. .github/workflows/ci.yml: add a dynamic run-name so the Actions UI distinguishes 'PR-CI #<n>' / 'MergeQueue-CI' / 'Main-CI' runs at a glance.

Co-Authored-By: Oz <oz-agent@warp.dev>
@behinddwalls behinddwalls requested review from a team and sbalabanov as code owners May 11, 2026 20:57
@behinddwalls behinddwalls added this pull request to the merge queue May 11, 2026
Merged via the queue into main with commit 68532e9 May 11, 2026
13 checks passed
@github-actions github-actions Bot deleted the preetam/fix-tests branch May 11, 2026 23:01
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