Skip to content

ci: gate merges and releases on Integration e2e - #216

Merged
joshua-temple merged 1 commit into
mainfrom
ci/integration-gate
Jun 18, 2026
Merged

joshua-temple merged 1 commit into
mainfrom
ci/integration-gate

Conversation

@joshua-temple

Copy link
Copy Markdown
Collaborator

Problem

Integration (act + gitea) e2e is informational only; main's required checks are ["PR Gate"]. A red e2e can merge and ship (this is the gap that let a red change in). Separately, release.yaml's push: tags: ['v*'] has not been auto-firing: every release this session needed a manual gh workflow run.

Fix

  • e2e.yaml: path filtering moves from the workflow on: triggers to a job-level changes detector (dorny/paths-filter). A new always-run Integration Gate job reports the required status context: it passes when E2E is correctly skipped on non-code changes and mirrors the heavy E2E result otherwise. This avoids the required-but-skipped deadlock so the context can be made a required check.
  • orchestrate.yaml: the release-candidate tag is created with the trigger-capable token (CASCADE_STATE_TOKEN) instead of GITHUB_TOKEN. Tags created via the API with GITHUB_TOKEN do not emit a push event (GitHub's recursion guard), which is why release.yaml never auto-fired. The PAT-created tag fires Release, which chains to Fleet for rc tags.
  • release.yaml: documents that a tag cut from main is implicitly Integration-validated because Integration now gates merge, so there is no need to double the ~27min e2e cost on the release path.

Verification

  • actionlint clean on all three changed files (the two SC2129 style warnings in orchestrate.yaml pre-exist and are untouched by this change).
  • The Integration Gate context will be added to branch protection after this PR merges, so this workflow-only PR is not blocked by a gate that does not yet exist on its base.

Make Integration an always-run required gate so a red e2e cannot merge.

- e2e.yaml: move path filtering to a job-level changes detector and add an
  always-run Integration Gate job so the required status context reports on
  every PR. It passes when E2E is correctly skipped on non-code changes and
  mirrors the heavy E2E result otherwise, avoiding the required-but-skipped
  deadlock. Change-detection failure fails the gate closed.
- release.yaml: document that a tag cut from main is implicitly validated
  because Integration now gates merge, so the release path does not re-run
  the heavy suite.

Signed-off-by: Joshua Temple <joshua.temple@stablekernel.com>
@joshua-temple
joshua-temple merged commit c111b16 into main Jun 18, 2026
13 checks passed
@joshua-temple
joshua-temple deleted the ci/integration-gate branch June 18, 2026 02:47
@joshua-temple joshua-temple added the ci CI/CD pipeline and workflow changes label Jun 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci CI/CD pipeline and workflow changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant