From 9b5f8b6f11cd1ec88b63f01d9133d91e3a3f0bfd Mon Sep 17 00:00:00 2001 From: loulanyue <260355617@qq.com> Date: Sat, 22 Aug 2026 07:39:47 +0800 Subject: [PATCH] ci: pin third-party GitHub Actions to immutable commit SHAs Defend CI against floating tag mutations and supply-chain tampering by pinning actions to immutable commit hashes with release tag comments. Fixes #3287 --- .github/workflows/release.yml | 10 +++++----- .github/workflows/rust-ci.yml | 28 ++++++++++++++-------------- .github/workflows/rust.yml | 2 +- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c1a1d9423b..ced1476427 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -40,11 +40,11 @@ jobs: run: working-directory: rust steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: dtolnay/rust-toolchain@stable + - uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable - - uses: Swatinem/rust-cache@v2 + - uses: Swatinem/rust-cache@400e7407cfd7a091e5fbb6afec01ec146c432b7c # v2.7.7 with: workspaces: rust -> target @@ -60,7 +60,7 @@ jobs: (cd dist && sha256sum "${{ matrix.artifact_name }}" > "${{ matrix.artifact_name }}.sha256") - name: Upload workflow artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 with: name: ${{ matrix.artifact_name }} path: | @@ -69,7 +69,7 @@ jobs: - name: Upload release asset if: startsWith(github.ref, 'refs/tags/') - uses: softprops/action-gh-release@v2 + uses: softprops/action-gh-release@c95fe1489396fe8a9eb87c0abf8aa5b2ef267fda # v2.2.1 with: files: | rust/dist/${{ matrix.artifact_name }} diff --git a/.github/workflows/rust-ci.yml b/.github/workflows/rust-ci.yml index e41d95cb1c..d3d4578f91 100644 --- a/.github/workflows/rust-ci.yml +++ b/.github/workflows/rust-ci.yml @@ -68,8 +68,8 @@ jobs: run: working-directory: . steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0 with: python-version: "3.x" - name: Check docs and metadata for stale branding @@ -85,11 +85,11 @@ jobs: name: cargo fmt runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable with: components: rustfmt - - uses: Swatinem/rust-cache@v2 + - uses: Swatinem/rust-cache@400e7407cfd7a091e5fbb6afec01ec146c432b7c # v2.7.7 with: workspaces: rust -> target - name: Check formatting @@ -99,9 +99,9 @@ jobs: name: cargo test --workspace runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable - - uses: Swatinem/rust-cache@v2 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable + - uses: Swatinem/rust-cache@400e7407cfd7a091e5fbb6afec01ec146c432b7c # v2.7.7 with: workspaces: rust -> target - name: Run workspace tests @@ -111,11 +111,11 @@ jobs: name: cargo clippy --workspace runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable with: components: clippy - - uses: Swatinem/rust-cache@v2 + - uses: Swatinem/rust-cache@400e7407cfd7a091e5fbb6afec01ec146c432b7c # v2.7.7 with: workspaces: rust -> target - name: Run workspace clippy @@ -129,9 +129,9 @@ jobs: working-directory: rust shell: pwsh steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable - - uses: Swatinem/rust-cache@v2 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable + - uses: Swatinem/rust-cache@400e7407cfd7a091e5fbb6afec01ec146c432b7c # v2.7.7 with: workspaces: rust -> target - name: Build CLI for Windows smoke diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index a17f338722..51f3130bb5 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Build run: cargo build --verbose - name: Run tests