docs/ci: drop stale local-precommit/release.sh references — CI is the only gate

This commit is contained in:
Matthew Jackson
2026-09-21 09:11:35 -07:00
parent 948511853e
commit a34980970b
3 changed files with 14 additions and 19 deletions
+6 -8
View File
@@ -20,7 +20,7 @@ concurrency:
# The committed Cargo.toml resolves libfreemkv from a git TAG (it is off # The committed Cargo.toml resolves libfreemkv from a git TAG (it is off
# crates.io). That means CI was building this branch against the LAST RELEASE # crates.io). That means CI was building this branch against the LAST RELEASE
# of libfreemkv, never against libfreemkv's dev tip — so a coordinated change # of libfreemkv, never against libfreemkv's dev tip — so a coordinated change
# across the two repos could not be verified until release.sh cut the tags. # across the two repos could not be verified until release-orchestrate.yml cut the tags.
# Green here meant "compiles against last month's library". # Green here meant "compiles against last month's library".
# #
# The fix mirrors the developer's local layout via the shared composite # The fix mirrors the developer's local layout via the shared composite
@@ -42,7 +42,7 @@ concurrency:
# the `deny` job audits the resolved graph, but CI's sibling path-patch layout # the `deny` job audits the resolved graph, but CI's sibling path-patch layout
# resolves the freemkv crates as path packages, which `--locked` can't satisfy — # resolves the freemkv crates as path packages, which `--locked` can't satisfy —
# the same reason the binary crates omit it. The lock that has to hold is the one # the same reason the binary crates omit it. The lock that has to hold is the one
# release.sh regenerates in each consuming binary. # release-orchestrate.yml regenerates in each consuming binary.
jobs: jobs:
# Single source of truth for the MSRV — read rust-version from Cargo.toml once # Single source of truth for the MSRV — read rust-version from Cargo.toml once
@@ -170,9 +170,8 @@ jobs:
# to agree is what a release candidate is for. # to agree is what a release candidate is for.
# #
# `if` SKIPS the job (it does not queue). A queued job would be far worse # `if` SKIPS the job (it does not queue). A queued job would be far worse
# than a slow one: release.sh's CI gate refuses while any run for the # than a slow one: a never-scheduled job leaves the run pending forever, so
# commit is still in progress, so a never-scheduled job blocks releases # the branch's required checks never report complete.
# silently -- see the note on real-media in qa.yml.
needs: resolve-msrv needs: resolve-msrv
if: github.ref_name == 'qa' || github.ref_name == 'main' if: github.ref_name == 'qa' || github.ref_name == 'main'
runs-on: macos-latest runs-on: macos-latest
@@ -239,9 +238,8 @@ jobs:
# to agree is what a release candidate is for. # to agree is what a release candidate is for.
# #
# `if` SKIPS the job (it does not queue). A queued job would be far worse # `if` SKIPS the job (it does not queue). A queued job would be far worse
# than a slow one: release.sh's CI gate refuses while any run for the # than a slow one: a never-scheduled job leaves the run pending forever, so
# commit is still in progress, so a never-scheduled job blocks releases # the branch's required checks never report complete.
# silently -- see the note on real-media in qa.yml.
needs: resolve-msrv needs: resolve-msrv
if: github.ref_name == 'qa' || github.ref_name == 'main' if: github.ref_name == 'qa' || github.ref_name == 'main'
runs-on: windows-latest runs-on: windows-latest
+2 -3
View File
@@ -16,9 +16,8 @@ name: qa
# The shared checkout-siblings composite resolves qa->qa from the caller branch. # The shared checkout-siblings composite resolves qa->qa from the caller branch.
# #
# What this gate CANNOT cover: `disc://` and real `iso://` need physical media, # What this gate CANNOT cover: `disc://` and real `iso://` need physical media,
# and no hosted runner has an optical drive or the image hoard. Those run on a # and no hosted runner has an optical drive or the image hoard. That coverage
# self-hosted runner (see the media job at the end) and are the one leg that # lives in freemkv's qa.yml (the real-media EC2 matrix), not in this file.
# stays on hardware.
on: on:
push: push:
branches: [qa] branches: [qa]
+6 -8
View File
@@ -29,14 +29,14 @@ jobs:
# Tests run as a PARALLEL TRIPWIRE: they fail the run if they fail, but the # Tests run as a PARALLEL TRIPWIRE: they fail the run if they fail, but the
# release job does NOT `needs:` this job. The tag decision was already gated by # release job does NOT `needs:` this job. The tag decision was already gated by
# the local precommit (same MSRV, same commit). # CI (ci.yml on dev, then a green qa.yml on the same commit).
# #
# Cargo.lock is now committed (issue #15), but --locked is still omitted: on # Cargo.lock is now committed (issue #15), but --locked is still omitted: on
# the runner the libfreemkv dep resolves from crates.io, not the local path # the runner the libfreemkv dep resolves from crates.io, not the local path
# patch, which --locked can't reconcile. Its # patch, which --locked can't reconcile. Its
# libfreemkv dep resolves from crates.io (the dev .cargo/config.toml patch is # libfreemkv dep resolves from crates.io (the dev .cargo/config.toml patch is
# gitignored and absent on the runner), so libfreemkv must already be published # gitignored and absent on the runner), so libfreemkv must already be published
# at this version — the release script enforces that ordering before tagging. # at this version — release-orchestrate.yml enforces that ordering before tagging.
test: test:
needs: verify needs: verify
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -51,12 +51,10 @@ jobs:
- uses: Swatinem/rust-cache@v2 - uses: Swatinem/rust-cache@v2
- run: cargo test - run: cargo test
# NOTE: the crates.io publish is driven by the maintainer's release tooling # NOTE: there is no crates.io publish — keysources is `publish = false` and
# from local credentials, not from CI — this repo has no CARGO_REGISTRY_TOKEN # git-tag-only. Consumers git-tag-pin it via a committed [patch.crates-io], so
# secret. release.sh runs `cargo publish --no-verify` locally. CI here only # the git tag itself is the release artifact. CI here only verifies the
# verifies the version/tag match, runs tests (tripwire), and cuts the GitHub # version/tag match, runs tests (tripwire), and cuts the GitHub Release.
# Release. The binaries git-tag-pin keysources, so they don't wait on the
# crates.io publish — it serves external consumers in parallel.
release: release:
# Only needs `verify`; the GitHub Release is cut as soon as the version # Only needs `verify`; the GitHub Release is cut as soon as the version