From 11d6e19ae25626547e199aae9af33c69d86fa58c Mon Sep 17 00:00:00 2001 From: Matthew Jackson <1085847+MattJackson@users.noreply.github.com> Date: Sat, 3 Oct 2026 11:15:58 -0700 Subject: [PATCH] ci: consumers path-patch; monthly grouped dependabot; actions/checkout 7 The consumers job path-patches this commit into libfreemkv and bdemu. Dependabot runs monthly with grouped version updates. actions/checkout 5 -> 7 in ci and qa (#15). --- .github/dependabot.yml | 92 ++++++++++++++-------------------------- .github/workflows/ci.yml | 28 ++++++------ .github/workflows/qa.yml | 10 ++--- 3 files changed, 52 insertions(+), 78 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 4732e6b..62b61e7 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,63 +1,33 @@ +# Version updates are monthly and grouped into one PR per ecosystem. +# Security updates are separate and run whenever an advisory is published. version: 2 - -# Dependency updates land on `dev`, never on `main`. -# -# `main` here is a RELEASE POINTER that release.sh moves to each tag. A bot -# commit on it would put work there that no tag contains, which is exactly the -# state that aborted the 1.6.2 cascade at the last step -- so pointing -# Dependabot at main would recreate that failure on a schedule. updates: - - package-ecosystem: cargo - directory: / - target-branch: dev - schedule: - interval: weekly - open-pull-requests-limit: 5 - # One PR per week for the routine bumps instead of one per crate. Eight - # repos times a handful of crates is a volume nobody reads, and an - # unread PR queue is indistinguishable from no updates at all. - groups: - minor-and-patch: - update-types: - - minor - - patch - ignore: - # The freemkv crates depend on each other by GIT TAG, re-pinned by - # release.sh as part of the release commit. Dependabot cannot see that - # cascade, so a PR bumping one of these would fight the release process - # and could pin a version whose tag does not exist yet. - - dependency-name: freemkv-unlock - - dependency-name: libfreemkv - - dependency-name: freemkv-keysources - - dependency-name: freemkv-i18n - - dependency-name: freemkv-engine - - # The workflows are now real infrastructure -- the release cascade, the - # cross-platform hash matrix, the disc gate -- so their actions need the same - # attention as the crates. - - package-ecosystem: github-actions - directory: / - target-branch: dev - schedule: - interval: weekly - open-pull-requests-limit: 5 - groups: - actions: - update-types: - - minor - - patch - ignore: - # NOT a dependency: `dtolnay/rust-toolchain` is versioned by the RUST - # release it installs, and the tag we pin is the toolchain CI is pinned - # to on purpose -- precommit.sh runs the same one locally so a lint that - # passes on a developer's newer default cannot pass CI by accident. - # - # Dependabot reads those tags as semver and proposed 1.97.0 -> 1.100.0, - # a Rust version that does not exist. Every such PR 404s on toolchain - # download across all eight repos, and they regenerate weekly -- eight - # permanently-red PRs that promote.yml then has to special-case when it - # decides whether dev is green. - # - # Bumping the toolchain is a deliberate, all-eight-repos change, made by - # hand together with precommit.sh. There is nothing here for a bot. - - dependency-name: dtolnay/rust-toolchain +- package-ecosystem: cargo + directory: / + target-branch: dev + schedule: + interval: monthly + open-pull-requests-limit: 5 + groups: + all: + patterns: + - '*' + ignore: + - dependency-name: freemkv-unlock + - dependency-name: libfreemkv + - dependency-name: freemkv-keysources + - dependency-name: freemkv-i18n + - dependency-name: freemkv-engine +- package-ecosystem: github-actions + directory: / + target-branch: dev + schedule: + interval: monthly + open-pull-requests-limit: 5 + groups: + all: + patterns: + - '*' + ignore: + - dependency-name: dtolnay/rust-toolchain + - dependency-name: freemkv/.github* diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1a0bc84..ce96313 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -46,7 +46,7 @@ jobs: outputs: v: ${{ steps.msrv.outputs.v }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v7 - id: msrv shell: bash run: echo "v=$(grep -m1 '^rust-version' Cargo.toml | sed -E 's/.*\"([^\"]+)\".*/\1/')" >> "$GITHUB_OUTPUT" @@ -60,7 +60,7 @@ jobs: changelog: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v7 - name: Require a CHANGELOG entry for the crate version on main shell: bash run: | @@ -81,7 +81,7 @@ jobs: needs: resolve-msrv runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v7 # fmt runs on the pinned MSRV toolchain; clippy runs on stable. Linting on # stable makes new-lint debt a BLOCKING gate the pinned version would # otherwise hide. The MSRV pin is installed second so it stays the default @@ -104,7 +104,7 @@ jobs: needs: resolve-msrv runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v7 - uses: dtolnay/rust-toolchain@master with: toolchain: ${{ needs.resolve-msrv.outputs.v }} @@ -119,19 +119,23 @@ jobs: - run: cargo test --doc --all-features # This crate's breakage takes every dependent down, so build the two direct - # consumers against THIS commit. libfreemkv resolves ../freemkv-unlock by - # layout; bdemu (emulation feature) also needs libfreemkv patched to the sibling. + # consumers against THIS commit: both dep freemkv-unlock by version, so each + # gets a path patch (bdemu also patches libfreemkv to the sibling). consumers: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v7 with: path: freemkv-unlock - uses: freemkv/.github/.github/actions/checkout-siblings@v1 with: checkout: libfreemkv bdemu - patch: libfreemkv + patch: libfreemkv freemkv-unlock self: bdemu + - name: Point libfreemkv at THIS commit + run: | + mkdir -p libfreemkv/.cargo + printf '[patch.crates-io]\nfreemkv-unlock = { path = "../freemkv-unlock" }\n' > libfreemkv/.cargo/config.toml # Dependents track current Rust, not this crate's MSRV. - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 @@ -154,7 +158,7 @@ jobs: needs: resolve-msrv runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v7 - uses: dtolnay/rust-toolchain@master with: toolchain: ${{ needs.resolve-msrv.outputs.v }} @@ -179,7 +183,7 @@ jobs: deny: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v7 - uses: dtolnay/rust-toolchain@stable - uses: EmbarkStudios/cargo-deny-action@v2 with: @@ -205,7 +209,7 @@ jobs: if: github.ref_name == 'qa' || github.ref_name == 'main' runs-on: macos-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v7 - uses: dtolnay/rust-toolchain@master with: toolchain: ${{ needs.resolve-msrv.outputs.v }} @@ -230,7 +234,7 @@ jobs: if: github.ref_name == 'qa' || github.ref_name == 'main' runs-on: windows-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v7 - uses: dtolnay/rust-toolchain@master with: toolchain: ${{ needs.resolve-msrv.outputs.v }} diff --git a/.github/workflows/qa.yml b/.github/workflows/qa.yml index 5e08824..b84c9ba 100644 --- a/.github/workflows/qa.yml +++ b/.github/workflows/qa.yml @@ -40,7 +40,7 @@ jobs: outputs: v: ${{ steps.msrv.outputs.v }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v7 - id: msrv shell: bash run: echo "v=$(grep -m1 '^rust-version' Cargo.toml | sed -E 's/.*\"([^\"]+)\".*/\1/')" >> "$GITHUB_OUTPUT" @@ -64,7 +64,7 @@ jobs: permissions: contents: write steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v7 with: fetch-depth: 0 - name: Stamp the next rc @@ -93,7 +93,7 @@ jobs: os: ['ubuntu-latest', 'macos-latest'] runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v7 with: path: freemkv-unlock - uses: dtolnay/rust-toolchain@master @@ -111,7 +111,7 @@ jobs: cross-lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v7 with: path: freemkv-unlock # clippy runs on stable (matches ci.yml's lint job); build/test stay on @@ -134,7 +134,7 @@ jobs: needs: resolve-msrv runs-on: windows-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v7 with: path: freemkv-unlock - uses: dtolnay/rust-toolchain@master