Skip to content

Commit 04caf9e

Browse files
authored
ci: pin GitHub Actions to SHA digests (fix zizmor unpinned-uses) (#262)
Pins all GitHub Actions workflow steps to full SHA digests, eliminating the `unpinned-uses` supply-chain risk identified by zizmor (35 findings fixed). Closes #261 ### Recommended next steps 1. Dependabot is already configured for `github-actions` in this repo — pinned SHAs will be kept up-to-date automatically. 2. Add [zizmor-action](https://github.com/zizmorcore/zizmor-action?tab=readme-ov-file#usage-with-github-advanced-security-recommended) for continuous workflow security scanning in CI. --- _Generated by [ds-security-scanning](https://github.com/developmentseed/ds-security-scanning) zizmor-cli-unpinned-uses_
1 parent 56849b1 commit 04caf9e

5 files changed

Lines changed: 35 additions & 35 deletions

File tree

.github/workflows/ci.yaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,13 @@ jobs:
3838
# https://github.com/stac-utils/rustac-py/issues/1
3939
# - windows-latest
4040
steps:
41-
- uses: actions/checkout@v6
41+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
4242
with:
4343
submodules: true
44-
- uses: astral-sh/setup-uv@v7
44+
- uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
4545
with:
4646
python-version: ${{ matrix.python-version }}
47-
- uses: Swatinem/rust-cache@v2
47+
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
4848
- name: Install libduckdb
4949
run: |
5050
wget https://github.com/duckdb/duckdb/releases/download/v${{ env.duckdb-version }}/libduckdb-${{ matrix.os.duckdb-slug }}.zip
@@ -74,11 +74,11 @@ jobs:
7474
DUCKDB_LIB_DIR: ${{ github.workspace }}/opt/duckdb
7575
LD_LIBRARY_PATH: ${{ github.workspace }}/opt/duckdb
7676
steps:
77-
- uses: actions/checkout@v6
77+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
7878
with:
7979
submodules: true
80-
- uses: astral-sh/setup-uv@v7
81-
- uses: Swatinem/rust-cache@v2
80+
- uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
81+
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
8282
- name: Install libduckdb
8383
run: |
8484
wget https://github.com/duckdb/duckdb/releases/download/v${{ env.duckdb-version }}/libduckdb-linux-amd64.zip

.github/workflows/docs.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,12 @@ jobs:
2020
env:
2121
DUCKDB_LIB_DIR: ${{ github.workspace }}/opt/duckdb
2222
steps:
23-
- uses: actions/checkout@v6
23+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
2424
with:
2525
fetch-depth: 0 # to get gh-pages
2626
submodules: true
27-
- uses: astral-sh/setup-uv@v7
28-
- uses: Swatinem/rust-cache@v2
27+
- uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
28+
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
2929
- name: Install libduckdb
3030
run: |
3131
wget https://github.com/duckdb/duckdb/releases/download/v${{ env.duckdb-version }}/libduckdb-linux-amd64.zip

.github/workflows/duckdb-extensions.yaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ jobs:
2828
run:
2929
working-directory: duckdb-extensions
3030
steps:
31-
- uses: actions/checkout@v6
32-
- uses: astral-sh/setup-uv@v7
31+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
32+
- uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
3333
- name: Download extensions
3434
run: uv run --only-group build scripts/download_extensions.py ${{ matrix.duckdb-platform }}
3535
- name: Build wheel
@@ -41,7 +41,7 @@ jobs:
4141
--remove
4242
--platform-tag ${{ matrix.wheel-platform }}
4343
dist/*.whl
44-
- uses: actions/upload-artifact@v7
44+
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
4545
with:
4646
name: duckdb-extensions-${{ matrix.duckdb-platform }}
4747
path: duckdb-extensions/dist
@@ -59,17 +59,17 @@ jobs:
5959
contents: write
6060
attestations: write
6161
steps:
62-
- uses: actions/download-artifact@v8
62+
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
6363
with:
6464
pattern: duckdb-extensions-*
6565
path: dist
6666
merge-multiple: true
6767
- name: Generate artifact attestation
68-
uses: actions/attest-build-provenance@v4
68+
uses: actions/attest-build-provenance@a2bbfa25375fe432b6a289bc6b6cd05ecd0c4c32 # v4
6969
with:
7070
subject-path: "dist/*"
7171
- name: Publish to PyPI
7272
if: ${{ startsWith(github.ref, 'refs/tags/') }}
73-
uses: pypa/gh-action-pypi-publish@release/v1
73+
uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # release/v1
7474
with:
7575
packages-dir: dist/

.github/workflows/pypi.yaml

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@ jobs:
2525
- armv7
2626
- ppc64le
2727
steps:
28-
- uses: actions/checkout@v6
28+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
2929
with:
3030
submodules: true
31-
- uses: astral-sh/setup-uv@v7
31+
- uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
3232
- name: Install Python
3333
run: uv python install 3.11
3434
- name: Build wheels
35-
uses: PyO3/maturin-action@v1
35+
uses: PyO3/maturin-action@04ac600d27cdf7a9a280dadf7147097c42b757ad # v1
3636
with:
3737
target: ${{ matrix.target }}
3838
args: --release --out dist -i 3.11 -F pyo3/abi3-py311 -F duckdb-bundled -F openssl-vendored
@@ -52,7 +52,7 @@ jobs:
5252
;;
5353
esac
5454
- name: Upload wheels
55-
uses: actions/upload-artifact@v7
55+
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
5656
with:
5757
name: wheels-linux-${{ matrix.target }}
5858
path: dist
@@ -67,21 +67,21 @@ jobs:
6767
- target: aarch64
6868
- target: armv7
6969
steps:
70-
- uses: actions/checkout@v6
70+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
7171
with:
7272
submodules: true
73-
- uses: astral-sh/setup-uv@v7
73+
- uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
7474
- name: Install Python
7575
run: uv python install 3.11
7676
- name: Build wheels
77-
uses: PyO3/maturin-action@v1
77+
uses: PyO3/maturin-action@04ac600d27cdf7a9a280dadf7147097c42b757ad # v1
7878
with:
7979
target: ${{ matrix.platform.target }}
8080
args: --release --out dist -i 3.11 -F pyo3/abi3-py311 -F duckdb-bundled -F openssl-vendored
8181
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
8282
manylinux: musllinux_1_2
8383
- name: Upload wheels
84-
uses: actions/upload-artifact@v7
84+
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
8585
with:
8686
name: wheels-musllinux-${{ matrix.platform.target }}
8787
path: dist
@@ -96,37 +96,37 @@ jobs:
9696
- runner: macos-14
9797
target: aarch64
9898
steps:
99-
- uses: actions/checkout@v6
99+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
100100
with:
101101
submodules: true
102-
- uses: astral-sh/setup-uv@v7
102+
- uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
103103
- name: Install Python
104104
run: uv python install 3.11
105105
- name: Build wheels
106-
uses: PyO3/maturin-action@v1
106+
uses: PyO3/maturin-action@04ac600d27cdf7a9a280dadf7147097c42b757ad # v1
107107
with:
108108
target: ${{ matrix.platform.target }}
109109
args: --release --out dist -i 3.11 -F pyo3/abi3-py311 -F duckdb-bundled
110110
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
111111
- name: Upload wheels
112-
uses: actions/upload-artifact@v7
112+
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
113113
with:
114114
name: wheels-macos-${{ matrix.platform.target }}
115115
path: dist
116116

117117
sdist:
118118
runs-on: ubuntu-latest
119119
steps:
120-
- uses: actions/checkout@v6
120+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
121121
with:
122122
submodules: true
123123
- name: Build sdist
124-
uses: PyO3/maturin-action@v1
124+
uses: PyO3/maturin-action@04ac600d27cdf7a9a280dadf7147097c42b757ad # v1
125125
with:
126126
command: sdist
127127
args: --out dist
128128
- name: Upload sdist
129-
uses: actions/upload-artifact@v7
129+
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
130130
with:
131131
name: wheels-sdist
132132
path: dist
@@ -148,14 +148,14 @@ jobs:
148148
contents: write
149149
attestations: write
150150
steps:
151-
- uses: actions/download-artifact@v8
151+
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
152152
- name: Generate artifact attestation
153-
uses: actions/attest-build-provenance@v4
153+
uses: actions/attest-build-provenance@a2bbfa25375fe432b6a289bc6b6cd05ecd0c4c32 # v4
154154
with:
155155
subject-path: "wheels-*/*"
156156
- name: Publish to PyPI
157157
if: ${{ startsWith(github.ref, 'refs/tags/') }}
158-
uses: PyO3/maturin-action@v1
158+
uses: PyO3/maturin-action@04ac600d27cdf7a9a280dadf7147097c42b757ad # v1
159159
with:
160160
command: upload
161161
args: --non-interactive --skip-existing wheels-*/*

.github/workflows/release-please.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ jobs:
1515
release-please:
1616
runs-on: ubuntu-latest
1717
steps:
18-
- uses: actions/create-github-app-token@v3
18+
- uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v3
1919
id: generate-token
2020
with:
2121
app-id: ${{ vars.RELEASE_BOT_CLIENT_ID }}
2222
private-key: ${{ secrets.RELEASE_BOT_PRIVATE_KEY }}
23-
- uses: googleapis/release-please-action@v4
23+
- uses: googleapis/release-please-action@16a9c90856f42705d54a6fda1823352bdc62cf38 # v4
2424
with:
2525
token: ${{ steps.generate-token.outputs.token }}

0 commit comments

Comments
 (0)