Skip to content

ci(release): reuse the tagged commit's CI run - #792

Merged
hakula139 merged 2 commits into
mainfrom
ci/release-reuse-tag-ci
Nov 1, 2026
Merged

hakula139 merged 2 commits into
mainfrom
ci/release-reuse-tag-ci

Conversation

@hakula139

@hakula139 hakula139 commented Oct 30, 2026 •

Copy link
Copy Markdown
Owner

Summary

Release tags now reuse successful CI on the exact tagged commit, avoiding a second full CI run.

  • Gate: accept push or manually dispatched CI runs, wait up to an hour while an eligible run is active, and fail with recovery steps when none passed or remains active. Publication also requires every target build.
  • Dry runs: branch dispatches still call CI. Tag dispatches use the same gate as tag pushes.
  • Docs: document the gate and how to run CI before releasing a backport commit.

This preserves #210's exact-commit CI requirement. Reused runs can predate the release and its runner images. Pull request runs are excluded because they test a merge commit.

Test plan

  • Full local verification, actionlint and hooks passed on original patch head 96ba906a9.
  • Nine query fixtures cover passing, active and ineligible runs, including success or activity on a second page. Mutations confirmed the pagination and API-failure checks detect their regressions. Live queries accepted a passing main commit and rejected a SHA without runs.
  • Final head 15659d5d passed CI, release-build checks, and formula checks.
  • The tag-triggered gate has not run in Actions. Publication was skipped, and no tag or release was created to test that path.

@hakula139 hakula139 added the ci Changes to CI, release, or build workflows (ci) label Oct 30, 2026
@hakula139 hakula139 self-assigned this Oct 30, 2026
@codecov

codecov Bot commented Oct 30, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

A tag push ran the full CI again on the commit that main's push had already checked, which delayed every build and added a second exposure to Cachix stalls. The release now waits for a passing push or dispatched CI run on the tagged commit, and fails with the steps to get one when none passes. Dry runs from other refs still call ci.yml.
A commit with repeated manual CI dispatches can have more than one page of runs. Aggregate every page before deciding whether an eligible run passed or remains active, and use Bash pipeline failure handling for API errors.
Base automatically changed from ci/unreferenced-snapshots to main November 1, 2026 09:17
@hakula139
hakula139 force-pushed the ci/release-reuse-tag-ci branch from 96ba906 to 15659d5 Compare November 1, 2026 09:19
@hakula139
hakula139 merged commit c389865 into main Nov 1, 2026
20 checks passed
@hakula139
hakula139 deleted the ci/release-reuse-tag-ci branch November 1, 2026 09:30
@hakula139 hakula139 added this to the v0.1.0-alpha.10 milestone Nov 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci Changes to CI, release, or build workflows (ci)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant