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).
This commit is contained in:
Matthew Jackson
2026-10-03 11:15:58 -07:00
parent 2ee8c0b0a6
commit 11d6e19ae2
3 changed files with 52 additions and 78 deletions
+31 -61
View File
@@ -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 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: updates:
- package-ecosystem: cargo - package-ecosystem: cargo
directory: / directory: /
target-branch: dev target-branch: dev
schedule: schedule:
interval: weekly interval: monthly
open-pull-requests-limit: 5 open-pull-requests-limit: 5
# One PR per week for the routine bumps instead of one per crate. Eight groups:
# repos times a handful of crates is a volume nobody reads, and an all:
# unread PR queue is indistinguishable from no updates at all. patterns:
groups: - '*'
minor-and-patch: ignore:
update-types: - dependency-name: freemkv-unlock
- minor - dependency-name: libfreemkv
- patch - dependency-name: freemkv-keysources
ignore: - dependency-name: freemkv-i18n
# The freemkv crates depend on each other by GIT TAG, re-pinned by - dependency-name: freemkv-engine
# release.sh as part of the release commit. Dependabot cannot see that - package-ecosystem: github-actions
# cascade, so a PR bumping one of these would fight the release process directory: /
# and could pin a version whose tag does not exist yet. target-branch: dev
- dependency-name: freemkv-unlock schedule:
- dependency-name: libfreemkv interval: monthly
- dependency-name: freemkv-keysources open-pull-requests-limit: 5
- dependency-name: freemkv-i18n groups:
- dependency-name: freemkv-engine all:
patterns:
# The workflows are now real infrastructure -- the release cascade, the - '*'
# cross-platform hash matrix, the disc gate -- so their actions need the same ignore:
# attention as the crates. - dependency-name: dtolnay/rust-toolchain
- package-ecosystem: github-actions - dependency-name: freemkv/.github*
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
+16 -12
View File
@@ -46,7 +46,7 @@ jobs:
outputs: outputs:
v: ${{ steps.msrv.outputs.v }} v: ${{ steps.msrv.outputs.v }}
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v7
- id: msrv - id: msrv
shell: bash shell: bash
run: echo "v=$(grep -m1 '^rust-version' Cargo.toml | sed -E 's/.*\"([^\"]+)\".*/\1/')" >> "$GITHUB_OUTPUT" run: echo "v=$(grep -m1 '^rust-version' Cargo.toml | sed -E 's/.*\"([^\"]+)\".*/\1/')" >> "$GITHUB_OUTPUT"
@@ -60,7 +60,7 @@ jobs:
changelog: changelog:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v7
- name: Require a CHANGELOG entry for the crate version on main - name: Require a CHANGELOG entry for the crate version on main
shell: bash shell: bash
run: | run: |
@@ -81,7 +81,7 @@ jobs:
needs: resolve-msrv needs: resolve-msrv
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v7
# fmt runs on the pinned MSRV toolchain; clippy runs on stable. Linting on # 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 # 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 # otherwise hide. The MSRV pin is installed second so it stays the default
@@ -104,7 +104,7 @@ jobs:
needs: resolve-msrv needs: resolve-msrv
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@master - uses: dtolnay/rust-toolchain@master
with: with:
toolchain: ${{ needs.resolve-msrv.outputs.v }} toolchain: ${{ needs.resolve-msrv.outputs.v }}
@@ -119,19 +119,23 @@ jobs:
- run: cargo test --doc --all-features - run: cargo test --doc --all-features
# This crate's breakage takes every dependent down, so build the two direct # This crate's breakage takes every dependent down, so build the two direct
# consumers against THIS commit. libfreemkv resolves ../freemkv-unlock by # consumers against THIS commit: both dep freemkv-unlock by version, so each
# layout; bdemu (emulation feature) also needs libfreemkv patched to the sibling. # gets a path patch (bdemu also patches libfreemkv to the sibling).
consumers: consumers:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v7
with: with:
path: freemkv-unlock path: freemkv-unlock
- uses: freemkv/.github/.github/actions/checkout-siblings@v1 - uses: freemkv/.github/.github/actions/checkout-siblings@v1
with: with:
checkout: libfreemkv bdemu checkout: libfreemkv bdemu
patch: libfreemkv patch: libfreemkv freemkv-unlock
self: bdemu 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. # Dependents track current Rust, not this crate's MSRV.
- uses: dtolnay/rust-toolchain@stable - uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2 - uses: Swatinem/rust-cache@v2
@@ -154,7 +158,7 @@ jobs:
needs: resolve-msrv needs: resolve-msrv
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@master - uses: dtolnay/rust-toolchain@master
with: with:
toolchain: ${{ needs.resolve-msrv.outputs.v }} toolchain: ${{ needs.resolve-msrv.outputs.v }}
@@ -179,7 +183,7 @@ jobs:
deny: deny:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@stable - uses: dtolnay/rust-toolchain@stable
- uses: EmbarkStudios/cargo-deny-action@v2 - uses: EmbarkStudios/cargo-deny-action@v2
with: with:
@@ -205,7 +209,7 @@ jobs:
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
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@master - uses: dtolnay/rust-toolchain@master
with: with:
toolchain: ${{ needs.resolve-msrv.outputs.v }} toolchain: ${{ needs.resolve-msrv.outputs.v }}
@@ -230,7 +234,7 @@ jobs:
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
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@master - uses: dtolnay/rust-toolchain@master
with: with:
toolchain: ${{ needs.resolve-msrv.outputs.v }} toolchain: ${{ needs.resolve-msrv.outputs.v }}
+5 -5
View File
@@ -40,7 +40,7 @@ jobs:
outputs: outputs:
v: ${{ steps.msrv.outputs.v }} v: ${{ steps.msrv.outputs.v }}
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v7
- id: msrv - id: msrv
shell: bash shell: bash
run: echo "v=$(grep -m1 '^rust-version' Cargo.toml | sed -E 's/.*\"([^\"]+)\".*/\1/')" >> "$GITHUB_OUTPUT" run: echo "v=$(grep -m1 '^rust-version' Cargo.toml | sed -E 's/.*\"([^\"]+)\".*/\1/')" >> "$GITHUB_OUTPUT"
@@ -64,7 +64,7 @@ jobs:
permissions: permissions:
contents: write contents: write
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v7
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Stamp the next rc - name: Stamp the next rc
@@ -93,7 +93,7 @@ jobs:
os: ['ubuntu-latest', 'macos-latest'] os: ['ubuntu-latest', 'macos-latest']
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v7
with: with:
path: freemkv-unlock path: freemkv-unlock
- uses: dtolnay/rust-toolchain@master - uses: dtolnay/rust-toolchain@master
@@ -111,7 +111,7 @@ jobs:
cross-lint: cross-lint:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v7
with: with:
path: freemkv-unlock path: freemkv-unlock
# clippy runs on stable (matches ci.yml's lint job); build/test stay on # clippy runs on stable (matches ci.yml's lint job); build/test stay on
@@ -134,7 +134,7 @@ jobs:
needs: resolve-msrv needs: resolve-msrv
runs-on: windows-latest runs-on: windows-latest
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v7
with: with:
path: freemkv-unlock path: freemkv-unlock
- uses: dtolnay/rust-toolchain@master - uses: dtolnay/rust-toolchain@master