Skip to content

Commit e28f2dc

Browse files
dschogitster
authored andcommitted
ci: bump actions/{upload,download}-artifact to v7 and v8
`actions/upload-artifact` and `actions/download-artifact` are tightly coupled: the upload action writes artifact archives in a format that the download action then reads. Because of this coupling, the two actions should always be bumped together so that the artifact format contract between them is satisfied. All of our `actions/upload-artifact` uses are still on v5, with one stray v4 occurrence. Keeping them on these versions would leave the artifact-upload steps running on Node.js 20, which GitHub is phasing out, and would eventually cause all upload steps to fail. Going from v5 directly to v7 folds in two release bumps: - v6 switches the action's default runtime from Node.js 20 to Node.js 24 (v5 had preliminary Node 24 support but still defaulted to Node 20). This is the main motivation for bumping now: it gets us off the deprecated runtime. - v7 adds two opt-in features: direct (unzipped) single-file uploads via a new `archive: false` parameter, and an internal conversion of the action to ESM to match the updated `@actions/*` packages. Risk analysis: we never pass `archive`, so the zip-as-usual behavior is unchanged. We also do not `require('@actions/*')` from any calling workflow, so the ESM migration cannot affect us. The upload steps we care about -- tracked files/build artifacts and failing-test directories -- keep the same inputs (`name`, `path`) and outputs, so the diff is purely the `@vN` identifier. The main precondition is a recent Actions Runner (>= 2.327.1), which the github.com-hosted runners used by our CI already satisfy. While at it, align the one remaining `@v4` occurrence with the rest so that every `upload-artifact` step uses the same version. See also: - Release notes: https://github.com/actions/upload-artifact/releases - Compare: actions/upload-artifact@v5...v7 We use `actions/download-artifact` to pass build artifacts between the "windows-build" / "vs-build" / "windows-meson-build" jobs and their corresponding test jobs. All callers are currently on v6; bumping to v8 keeps this action in lockstep with the `upload-artifact` bump above. What v7 and v8 change: - v7 switches the default runtime from Node.js 20 to Node.js 24 (v6 had preliminary Node 24 support but still defaulted to Node 20). This is the main motivation: it gets us off the deprecated runtime. - v8 makes three further changes: * The package is converted to ESM (invisible to workflow authors). * The action now checks the `Content-Type` header before attempting to unzip a download, so that directly-uploaded (unzipped) artifacts from `upload-artifact` v7 are downloaded correctly. * The `digest-mismatch` behaviour is changed from warn-and- continue to a hard failure by default. Risk analysis: defaulting hash-mismatch to a hard failure is strictly safer than the previous warn-and-continue behaviour -- a mismatch points to real corruption or tampering and should stop the run. We download archives that the same workflow just uploaded, on the same runner fleet, so false positives are not expected. Our usage is limited to the `name` and `path` inputs, which are unchanged between v6 and v8, so the diff is purely the `@vN` identifier. See also: - Release notes: https://github.com/actions/download-artifact/releases - Compare: actions/download-artifact@v6...v8 Originally-authored-by: dependabot[bot] <support@github.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent 0b28ab9 commit e28f2dc

1 file changed

Lines changed: 11 additions & 11 deletions

File tree

.github/workflows/main.yml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ jobs:
123123
- name: zip up tracked files
124124
run: git archive -o artifacts/tracked.tar.gz HEAD
125125
- name: upload tracked files and build artifacts
126-
uses: actions/upload-artifact@v5
126+
uses: actions/upload-artifact@v7
127127
with:
128128
name: windows-artifacts
129129
path: artifacts
@@ -140,7 +140,7 @@ jobs:
140140
cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
141141
steps:
142142
- name: download tracked files and build artifacts
143-
uses: actions/download-artifact@v6
143+
uses: actions/download-artifact@v8
144144
with:
145145
name: windows-artifacts
146146
path: ${{github.workspace}}
@@ -157,7 +157,7 @@ jobs:
157157
run: ci/print-test-failures.sh
158158
- name: Upload failed tests' directories
159159
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
160-
uses: actions/upload-artifact@v5
160+
uses: actions/upload-artifact@v7
161161
with:
162162
name: failed-tests-windows-${{ matrix.nr }}
163163
path: ${{env.FAILED_TEST_ARTIFACTS}}
@@ -208,7 +208,7 @@ jobs:
208208
- name: zip up tracked files
209209
run: git archive -o artifacts/tracked.tar.gz HEAD
210210
- name: upload tracked files and build artifacts
211-
uses: actions/upload-artifact@v5
211+
uses: actions/upload-artifact@v7
212212
with:
213213
name: vs-artifacts
214214
path: artifacts
@@ -226,7 +226,7 @@ jobs:
226226
steps:
227227
- uses: git-for-windows/setup-git-for-windows-sdk@v1
228228
- name: download tracked files and build artifacts
229-
uses: actions/download-artifact@v6
229+
uses: actions/download-artifact@v8
230230
with:
231231
name: vs-artifacts
232232
path: ${{github.workspace}}
@@ -244,7 +244,7 @@ jobs:
244244
run: ci/print-test-failures.sh
245245
- name: Upload failed tests' directories
246246
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
247-
uses: actions/upload-artifact@v5
247+
uses: actions/upload-artifact@v7
248248
with:
249249
name: failed-tests-windows-vs-${{ matrix.nr }}
250250
path: ${{env.FAILED_TEST_ARTIFACTS}}
@@ -270,7 +270,7 @@ jobs:
270270
shell: pwsh
271271
run: meson compile -C build
272272
- name: Upload build artifacts
273-
uses: actions/upload-artifact@v5
273+
uses: actions/upload-artifact@v7
274274
with:
275275
name: windows-meson-artifacts
276276
path: build
@@ -292,7 +292,7 @@ jobs:
292292
shell: pwsh
293293
run: pip install meson ninja
294294
- name: Download build artifacts
295-
uses: actions/download-artifact@v6
295+
uses: actions/download-artifact@v8
296296
with:
297297
name: windows-meson-artifacts
298298
path: build
@@ -305,7 +305,7 @@ jobs:
305305
run: ci/print-test-failures.sh
306306
- name: Upload failed tests' directories
307307
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
308-
uses: actions/upload-artifact@v4
308+
uses: actions/upload-artifact@v7
309309
with:
310310
name: failed-tests-windows-meson-${{ matrix.nr }}
311311
path: ${{env.FAILED_TEST_ARTIFACTS}}
@@ -349,7 +349,7 @@ jobs:
349349
run: ci/print-test-failures.sh
350350
- name: Upload failed tests' directories
351351
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
352-
uses: actions/upload-artifact@v5
352+
uses: actions/upload-artifact@v7
353353
with:
354354
name: failed-tests-${{matrix.vector.jobname}}
355355
path: ${{env.FAILED_TEST_ARTIFACTS}}
@@ -449,7 +449,7 @@ jobs:
449449
run: sudo --preserve-env --set-home --user=builder ci/print-test-failures.sh
450450
- name: Upload failed tests' directories
451451
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
452-
uses: actions/upload-artifact@v5
452+
uses: actions/upload-artifact@v7
453453
with:
454454
name: failed-tests-${{matrix.vector.jobname}}
455455
path: ${{env.FAILED_TEST_ARTIFACTS}}

0 commit comments

Comments
 (0)