Skip to content

Commit f68c7a8

Browse files
rohankmr414claude
andcommitted
ci: pin GitHub Actions to commit SHAs for supply chain security
Replace mutable tag references with immutable commit SHAs across workflow files. Original tags are preserved as inline comments. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 2929f54 commit f68c7a8

File tree

5 files changed

+33
-33
lines changed

5 files changed

+33
-33
lines changed

.github/workflows/build_and_test.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,19 @@ jobs:
77
name: cargo test
88
runs-on: ubuntu-latest
99
steps:
10-
- uses: actions/checkout@v4
11-
- uses: actions-rust-lang/setup-rust-toolchain@v1
10+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
11+
- uses: actions-rust-lang/setup-rust-toolchain@150fca883cd4034361b621bd4e6a9d34e5143606 # v1
1212
- run: cargo test --all-features
1313

1414
# Check formatting with rustfmt
1515
formatting:
1616
name: cargo fmt
1717
runs-on: ubuntu-latest
1818
steps:
19-
- uses: actions/checkout@v4
19+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
2020
# Ensure rustfmt is installed and setup problem matcher
21-
- uses: actions-rust-lang/setup-rust-toolchain@v1
21+
- uses: actions-rust-lang/setup-rust-toolchain@150fca883cd4034361b621bd4e6a9d34e5143606 # v1
2222
with:
2323
components: rustfmt
2424
- name: Rustfmt Check
25-
uses: actions-rust-lang/rustfmt@v1
25+
uses: actions-rust-lang/rustfmt@4066006ec54a31931b9b1fddfd38f2fdf2d27143 # v1

.github/workflows/create-release.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ jobs:
1515
CARGO_NET_GIT_FETCH_WITH_CLI: "true"
1616
GH_TOKEN: ${{ secrets.HASURA_BOT_TOKEN }}
1717
steps:
18-
- uses: actions/checkout@v4
18+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
1919

20-
- uses: actions-rust-lang/setup-rust-toolchain@v1
20+
- uses: actions-rust-lang/setup-rust-toolchain@150fca883cd4034361b621bd4e6a9d34e5143606 # v1
2121

2222
- run: |
2323
set -evo pipefail

.github/workflows/deploy-stage.yaml

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -24,33 +24,33 @@ jobs:
2424
packages: write
2525
steps:
2626
- name: Checkout repository
27-
uses: actions/checkout@v4
27+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
2828
# Uses the `docker/login-action` action to log in to the Container registry registry using the account and password that will publish the packages. Once published, the packages are scoped to the account defined here.
2929
- name: Log in to the Container registry
30-
uses: docker/login-action@v3
30+
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
3131
with:
3232
registry: ${{ env.REGISTRY }}
3333
username: ${{ github.actor }}
3434
password: ${{ secrets.GITHUB_TOKEN }}
3535
# This step uses [docker/metadata-action](https://github.com/docker/metadata-action#about) to extract tags and labels that will be applied to the specified image. The `id` "meta" allows the output of this step to be referenced in a subsequent step. The `images` value provides the base name for the tags and labels.
3636
- name: Extract metadata (tags, labels) for Docker
3737
id: meta
38-
uses: docker/metadata-action@v5
38+
uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5
3939
with:
4040
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
4141
# This step uses the `docker/build-push-action` action to build the image, based on your repository's `Dockerfile`. If the build succeeds, it pushes the image to GitHub Packages.
4242
# It uses the `context` parameter to define the build's context as the set of files located in the specified path. For more information, see "[Usage](https://github.com/docker/build-push-action#usage)" in the README of the `docker/build-push-action` repository.
4343
# It uses the `tags` and `labels` parameters to tag and label the image with the output from the "meta" step.
4444
- name: Build and push Docker image
45-
uses: docker/build-push-action@v5
45+
uses: docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25 # v5
4646
with:
4747
context: .
4848
load: true
4949
push: ${{ startsWith(github.ref, 'refs/tags/v') }}
5050
tags: ${{ steps.meta.outputs.tags }}
5151
labels: ${{ steps.meta.outputs.labels }}
5252
- name: Run Trivy vulnerability scanner
53-
uses: aquasecurity/trivy-action@v0.35.0
53+
uses: aquasecurity/trivy-action@57a97c7e7821a5776cebc9bb87c984fa69cba8f1 # v0.35.0
5454
with:
5555
image-ref: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.meta.outputs.version }}
5656
format: json
@@ -89,10 +89,10 @@ jobs:
8989
run:
9090
shell: bash
9191
steps:
92-
- uses: actions/checkout@v4
92+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
9393

9494
- name: install protoc
95-
uses: arduino/setup-protoc@v3
95+
uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3
9696
with:
9797
version: "25.x"
9898
repo-token: ${{ secrets.GITHUB_TOKEN }}
@@ -108,7 +108,7 @@ jobs:
108108
sudo apt-get update
109109
sudo apt-get install -y ${{ matrix.linux-packages }}
110110
111-
- uses: Swatinem/rust-cache@v2
111+
- uses: Swatinem/rust-cache@42dc69e1aa15d09112580998cf2ef0119e2e91ae # v2
112112
with:
113113
shared-key: "build" # share the cache across jobs
114114

@@ -146,7 +146,7 @@ jobs:
146146
mkdir -p release
147147
mv -v target/${{ matrix.target }}/release/ndc-clickhouse-cli release/ndc-clickhouse-cli-${{ matrix.target }}${{ matrix.extension }}
148148
149-
- uses: actions/upload-artifact@v4
149+
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
150150
with:
151151
name: ndc-clickhouse-cli-${{ matrix.target }}${{ matrix.extension }}
152152
path: release
@@ -160,13 +160,13 @@ jobs:
160160
runs-on: ubuntu-latest
161161
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
162162
steps:
163-
- uses: actions-rust-lang/setup-rust-toolchain@v1
163+
- uses: actions-rust-lang/setup-rust-toolchain@150fca883cd4034361b621bd4e6a9d34e5143606 # v1
164164
with:
165165
rustflags: "" # defaults to "-D warnings", set to empty string to allow warnings
166166

167-
- uses: actions/checkout@v4
167+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
168168

169-
- uses: actions/download-artifact@v4
169+
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
170170
with:
171171
path: release/artifacts
172172
merge-multiple: true
@@ -188,7 +188,7 @@ jobs:
188188
mkdir -p "${ROOT}/release/"
189189
cat "${ROOT}/ci/templates/manifest.yaml" | envsubst > "${ROOT}/release/manifest.yaml"
190190
191-
- uses: actions/upload-artifact@v4
191+
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
192192
with:
193193
name: manifest.yaml
194194
path: release/manifest.yaml
@@ -209,7 +209,7 @@ jobs:
209209
210210
tar -czvf "${ROOT}/release/artifacts/connector-definition.tgz" --directory "${ROOT}/release/connector-definition/" .
211211
212-
- uses: actions/upload-artifact@v4
212+
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
213213
with:
214214
name: connector-definition.tgz
215215
path: ./release/artifacts/connector-definition.tgz
@@ -221,14 +221,14 @@ jobs:
221221
echo "tagged_version=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
222222
shell: bash
223223

224-
- uses: mindsers/changelog-reader-action@v2
224+
- uses: mindsers/changelog-reader-action@97a0b06549019bb99a571f1664272db18031acff # v2
225225
id: changelog-reader
226226
with:
227227
version: ${{ steps.get-version.outputs.tagged_version }}
228228
path: ./CHANGELOG.md
229229

230230
- name: create a release
231-
uses: ncipollo/release-action@v1
231+
uses: ncipollo/release-action@339a81892b84b4eeb0f6e744e4574d79d0d9b8dd # v1
232232
with:
233233
draft: false
234234
tag: v${{ steps.get-version.outputs.tagged_version }}
@@ -244,18 +244,18 @@ jobs:
244244
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
245245
steps:
246246
- name: check out this repository
247-
uses: actions/checkout@v4
247+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
248248
with:
249249
path: ndc-clickhouse
250250

251251
- name: check out cli-plugins-index
252-
uses: actions/checkout@v4
252+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
253253
with:
254254
repository: hasura/cli-plugins-index
255255
path: cli-plugins-index
256256
token: ${{ secrets.HASURA_BOT_TOKEN }}
257257

258-
- uses: actions/download-artifact@v4
258+
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
259259
with:
260260
path: release/artifacts
261261
merge-multiple: true
@@ -305,18 +305,18 @@ jobs:
305305
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
306306
steps:
307307
- name: check out this repository
308-
uses: actions/checkout@v4
308+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
309309
with:
310310
path: ndc-clickhouse
311311

312312
- name: check out ndc-hub
313-
uses: actions/checkout@v4
313+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
314314
with:
315315
repository: hasura/ndc-hub
316316
path: ndc-hub
317317
token: ${{ secrets.HASURA_BOT_TOKEN }}
318318

319-
- uses: actions/download-artifact@v4
319+
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
320320
with:
321321
path: release/artifacts
322322
merge-multiple: true

.github/workflows/security-audit.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ jobs:
66
name: Security Audit
77
runs-on: ubuntu-latest
88
steps:
9-
- uses: actions/checkout@v4
10-
- uses: actions-rust-lang/setup-rust-toolchain@v1
9+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
10+
- uses: actions-rust-lang/setup-rust-toolchain@150fca883cd4034361b621bd4e6a9d34e5143606 # v1
1111
# we don't use the audit-check action, because it overwrites our lockfile before checking
1212
# ref: https://github.com/rustsec/audit-check/issues/15
1313
# todo: once that is fixed, move to audit-check, and set up regular audit check on top of these PR ones

.github/workflows/tag-release.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ jobs:
1717
env:
1818
GH_TOKEN: ${{ github.token }}
1919
steps:
20-
- uses: actions/checkout@v4
20+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
2121
with:
2222
ref: ${{ github.event.pull_request.merge_commit_sha }}
2323

24-
- uses: actions-rust-lang/setup-rust-toolchain@v1
24+
- uses: actions-rust-lang/setup-rust-toolchain@150fca883cd4034361b621bd4e6a9d34e5143606 # v1
2525

2626
- name: Read version from Cargo.toml and push appropriate tag
2727
id: read-version

0 commit comments

Comments
 (0)