Skip to content

Upgrade GitHub Actions in CI workflows#132

Merged
dscho merged 12 commits into
mainfrom
upgrade-github-actions
May 15, 2026
Merged

Upgrade GitHub Actions in CI workflows#132
dscho merged 12 commits into
mainfrom
upgrade-github-actions

Conversation

@dscho
Copy link
Copy Markdown
Member

@dscho dscho commented May 4, 2026

This PR brings the GitHub Actions referenced in this repository's workflows up to their current latest stable major versions.

It supersedes the still-open Dependabot PRs #125 (upload-artifact 6 -> 7), #126 (download-artifact 7 -> 8), and #129 (github-script 8 -> 9), bundling them into the existing branch-ticket structure rather than landing each as an isolated direct-on-main commit. The changes are:

  • actions/checkout -> v6 (already at v6 for new workflows; bumped from v3 in the inherited cygwin.yml)
  • actions/upload-artifact -> v7 (bumped from v6 in cygwin.yml, build.yaml, ui-tests.yml; from v4 in the older fixup chain)
  • actions/download-artifact -> v8 (bumped from v7 in build.yaml and ui-tests.yml)
  • actions/github-script -> v9 (bumped from v8 in build.yaml)
  • actions/cache -> v5 (already current)
  • actions/setup-node -> v6 (already current)

The aggregate diff against main is exactly nine lines changed (nine deletions, nine insertions) across cygwin.yml, build.yaml, and ui-tests.yml. No behavioral changes: every step continues to use default arguments and the new optional features (direct unzipped uploads in upload-artifact@v7, Content-Type-aware unzipping in download-artifact@v8, the new getOctokit factory in github-script@v9, etc.) are not exercised here.

The branch follows the existing merging-rebase layering. Each incremental bump is rooted in the layer where the action reference ultimately lives:

  • A new sub-branch update-github-actions-in-cygwin-ci carrying one fixup! of 4bd00d615b Cygwin: CI: update Actions versions (the only Cygwin-layer bump still needed: upload-artifact v6 to v7 in cygwin.yml).
  • A new sub-branch msys2-ci-fixups carrying one fixup! of cd1436184d CI: add a GHA for doing a basic build test (the
    build.yaml upload-artifact v6->v7 and download-artifact v7->v8 bumps).
  • Three GFW-only fixup! commits directly on the branch tip, targeting the GFW commits that introduced the additional action references that aren't in upstream MSYS2:
    • fixup! ci: run Git's entire test suite (build.yaml: github-script v8->v9, download-artifact v7->v8,
      upload-artifact v6->v7 x2)
    • fixup! ci: add an AutoHotKey-based integration test (ui-tests.yml download-artifact v7->v8)
    • fixup! ci(ui-tests): upload the test logs (ui-tests.yml upload-artifact v6->v7)

While in the area, this PR also adds amend! commits that replace the dependabot-style boilerplate on five existing GFW-only commits with prose that actually explains what each change does, why, and how it affects the workflow.

dscho and others added 12 commits May 3, 2026 13:22
Cygwin: CI: update Actions versions

Update both versioned actions in `cygwin.yml` to current major
versions: `actions/checkout` from v3 to v6 (in both invocations:
the Fedora cross-build job and the windows-2022 native build job)
and `actions/upload-artifact` from v4 to v6 (the "Upload test logs"
step that publishes the testsuite `*.log` and `*.trs` artifacts).

All three call sites use the actions with default arguments, so the
bumps are behaviorally transparent: they exist purely to advance the
underlying Node.js runtime to v24 on the GitHub Actions runners and
to retire the v3/v4 deprecation warnings emitted on each workflow
run.

Cygwin upstream's `cygwin.yml` still pins the older v3 and v4
revisions. Carrying this bump in the Git for Windows fork keeps the
fork's CI clean ahead of upstream catching up at the next
merging-rebase.

Originally-authored-by: dependabot[bot] <support@github.com>
Assisted-by: Claude Opus 4.7
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Bring `actions/upload-artifact` in `cygwin.yml` from v6 up to v7.
The v7 major release adds an optional `archive: false` mode for
uploading a single file unzipped and migrates the action's internal
implementation to ESM modules. Neither change affects the existing
"Upload test logs" step, which continues to upload a directory tree
of `*.log` and `*.trs` files via the default zipped-archive mode.
See https://github.com/actions/upload-artifact/releases/tag/v7.0.0
for the v7 release notes.

Assisted-by: Claude Opus 4.7
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
fixup! CI: add a GHA for doing a basic build test

Bring the two artifact actions in `build.yaml` up from the v4
revisions that existed when the workflow was originally introduced
in 2020: `actions/upload-artifact` from v4 to v6 (the "Upload" step
that publishes the just-built `_dest/` install tree as the `install`
artifact) and `actions/download-artifact` from v4 to v7 (the
"Download msys2-runtime artifact" step in the `msys2-tests` job
that overlays that artifact on top of the runner's MSYS2
installation).

Both steps invoke the actions with default arguments, so the bumps
are behaviorally transparent: they advance the Node.js runtime on
the runners and retire the v4 deprecation warnings without altering
the upload or download semantics. The asymmetric target versions
(upload v6, download v7) simply reflect each action's then-current
latest major release.

Originally-authored-by: dependabot[bot] <support@github.com>
Assisted-by: Claude Opus 4.7
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
fixup! CI: add a GHA for doing a basic build test

Bring `actions/checkout` in `build.yaml` up from v4 (untouched
since the workflow was first introduced in 2020) to the current
latest major v6. The single "Checkout code" step uses default
settings, so the bump is behaviorally transparent: it advances the
underlying Node.js runtime on the GitHub Actions runner and retires
the v4 deprecation warning without changing checkout semantics.

Originally-authored-by: dependabot[bot] <support@github.com>
Assisted-by: Claude Opus 4.7
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Bring the two artifact actions in `build.yaml` up to the latest
stable major versions: `actions/upload-artifact` from v6 to v7, and
`actions/download-artifact` from v7 to v8. The `actions/checkout`
step remains on v6, which is still the current latest major.

The v7 release of `actions/upload-artifact` (see
https://github.com/actions/upload-artifact/releases/tag/v7.0.0)
adds an optional `archive: false` mode for uploading a single file
unzipped, and migrates the package to ESM modules. The "Upload"
step here packages the entire `_dest/` install directory as an
artifact, so the default zipped-archive mode continues to apply
unchanged.

The v8 release of `actions/download-artifact` (see
https://github.com/actions/download-artifact/releases/tag/v8.0.0)
makes two behavior changes that matter for callers. Firstly, the
action now inspects the `Content-Type` header before unzipping and
skips non-zipped artifacts, complementing the new direct-upload
mode in `upload-artifact@v7`; the msys2-runtime install artifact
uploaded earlier in this workflow continues to be a zipped archive
and is therefore unzipped as before into the MSYS2 install root.
Secondly, hash-digest mismatches between the requested artifact and
the downloaded payload now fail the step by default (the previous
behavior only emitted a warning); the new `digest-mismatch` input
can be set back to `warn` if needed, but failing fast is the safer
default for a CI flow that immediately overlays the downloaded
files on top of the live MSYS2 installation.

Both major version bumps additionally pull in the ESM migration
from the underlying `@actions/*` toolkit packages, which is
transparent for this workflow.

Assisted-by: Claude Opus 4.7
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Some Action version updates for MSYS2's CI definition.
Bring the three actions newly introduced by this commit in
`build.yaml` up to their latest stable major versions.

`actions/github-script` is bumped from v8 to v9. The v9 release
(see https://github.com/actions/github-script/releases/tag/v9.0.0)
upgrades the bundled `@actions/github` package to v9, which is now
ESM-only, and exposes a new `getOctokit` factory function as a
script parameter for callers that need additional authenticated
clients. It also drops the ability to redeclare `getOctokit` via
`const`/`let`, and removes the `require('@actions/github')` escape
hatch. The script invoked here only uses the injected `github`
client to call `github.rest.actions.listWorkflowRuns` for the
latest successful `ci-artifacts.yml` run, so none of the breaking
changes apply.

`actions/download-artifact` is bumped from v7 to v8. The v8 release
(see https://github.com/actions/download-artifact/releases/tag/v8.0.0)
inspects the `Content-Type` header before unzipping (so the new
unzipped uploads from `upload-artifact@v7` round-trip correctly) and
makes hash-digest mismatches fail the step by default rather than
emitting a warning; both changes are safe for the `install` artifact
downloaded here, which is the zipped `_dest/` archive produced
earlier in the same workflow run.

`actions/upload-artifact` is bumped from v6 to v7 in the
"upload minimal-sdk artifact" and "upload git artifacts for testing"
steps, matching the bump that is already applied to the "Upload"
step via the msys2-ci-fixups merge. Both steps upload a single
`*.tar.gz` file, so they continue to use the default zipped-archive
mode and are unaffected by the new `archive: false` option.

Assisted-by: Claude Opus 4.7
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Bring the `actions/download-artifact` step that fetches the
msys2-runtime build artifact in `ui-tests.yml` from v7 up to v8,
matching the bumps applied to the other download-artifact steps in
`build.yaml` via the msys2-ci-fixups merge and the companion
`fixup! ci: run Git's entire test suite` commit.

The v8 release (see
https://github.com/actions/download-artifact/releases/tag/v8.0.0)
checks the artifact's `Content-Type` header before unzipping (so
the new unzipped uploads from `upload-artifact@v7` round-trip
correctly) and turns hash-digest mismatches into hard errors
instead of warnings. The artifact downloaded here is the zipped
msys2-runtime install tree produced by the upstream `build` job,
which uses the default zipped upload mode, so the new behavior
applies cleanly: the archive is still unzipped into
`${{ runner.temp }}/artifacts` as before, and any digest mismatch
will now correctly fail the step rather than silently corrupting
the MSYS2 install.

The other actions referenced in this workflow (`actions/checkout`
v6, `actions/cache/restore` v5, `actions/cache/save` v5, and
`actions/setup-node` v6) are already at the current latest major
versions and need no change here.

Assisted-by: Claude Opus 4.7
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Bring the `actions/upload-artifact` step that publishes the
`ui-tests-${{ matrix.os }}` artifact from v6 up to v7, completing
the upload-artifact bump that the cygwin-CI and msys2-ci-fixups
sub-branch merges and the companion `fixup! ci: run Git's entire
test suite` commit have already applied to all the other
upload-artifact steps in this branch.

The v7 release (see
https://github.com/actions/upload-artifact/releases/tag/v7.0.0)
adds an optional `archive: false` mode for uploading a single file
unzipped, and migrates the bundled `@actions/*` packages to ESM.
The "Upload test results" step uploads the entire `ui-tests`
directory (the AutoHotKey scripts, screenshots, and `.log` files
captured by the test run), so it continues to use the default
zipped-archive mode and is not affected by the new option.

Assisted-by: Claude Opus 4.7
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
dependabot: help keeping GitHub Actions versions up to date

Add a minimal `.github/dependabot.yml` that subscribes the
`github-actions` ecosystem at the repository root to weekly
Dependabot scans. With this enabled, Dependabot opens a pull
request whenever any GitHub Action referenced in
`.github/workflows/*.yml` publishes a new release.

Without this configuration, Action versions in this fork's CI
silently drift behind their upstream releases until somebody
notices a deprecation warning or a behavior change in CI. Letting
Dependabot file the PRs preserves the manual review step (the
maintainer still decides whether to merge each individual bump)
while removing the busywork of polling each action's release page.

The configuration follows the GitHub Actions example at
https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot#enabling-dependabot-version-updates-for-actions
verbatim with no extra options.

Assisted-by: Claude Opus 4.7
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
ci: run Git's entire test suite

One particularly important part of Git for Windows' MSYS2 runtime
is that it is used to run Git's tests, and regressions have
happened there. For example, the first iteration of MSYS2 runtime
v3.5.5 caused plenty of hangs. This was realized unfortunately
only after deploying the msys2-runtime Pacman package, and some
painful vacation-time scrambling was required to revert to v3.5.4.

To verify that this does not happen anymore, this commit reuses
what `setup-git-for-windows-sdk` uses in Git's very own CI:
determine the latest successful `ci-artifacts` workflow run in
`git-for-windows/git-sdk-64`, download its Git files, build
artifacts, and minimal SDK, overwrite the MSYS2 runtime in the
minimal SDK with the just-built version, and then run Git's test
suite and the assorted validations exactly as the `ci-artifacts`
workflow runs them (and from which these jobs are copied).

This obviously adds a hefty time penalty (around 7 minutes!) to
every MSYS2 runtime PR in the git-for-windows org. Happily, these
days we don't need many of those, and the balance between things
like the v3.5.5 scramble and waiting a little longer for the CI to
finish is clearly in favor of the latter.

Co-authored-by: Jeremy Drake <github@jdrake.com>
Assisted-by: Claude Opus 4.7
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
@dscho dscho marked this pull request as ready for review May 4, 2026 17:11
@dscho dscho merged commit 8c30fba into main May 15, 2026
90 of 91 checks passed
@dscho dscho deleted the upgrade-github-actions branch May 15, 2026 07:57
@dscho
Copy link
Copy Markdown
Member Author

dscho commented May 15, 2026

No deployment needed: This PR's changes are purely in the .github/workflows/ directory.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant