Skip to content

upload-snapshot: include UCRT64 artifacts when present#181

Merged
dscho merged 1 commit into
mainfrom
upload-snapshots-should-include-ucrt64-when-available
Jun 23, 2026
Merged

upload-snapshot: include UCRT64 artifacts when present#181
dscho merged 1 commit into
mainfrom
upload-snapshots-should-include-ucrt64-when-available

Conversation

@dscho

@dscho dscho commented Jun 22, 2026

Copy link
Copy Markdown
Member

Now that the git-artifacts workflow can build UCRT64 variants, this teaches upload-snapshot.yml to pick them up for the snapshots. UCRT64 is deliberately kept out of the full Git for Windows releases for the time being, so the pickup is lenient: a new optional git_artifacts_ucrt64_workflow_run_id input (with a matching UCRT64_WORKFLOW_RUN_ID environment variable) is honored only when it is provided, and even then only the UCRT64 artifacts that the run actually published are downloaded. A snapshot upload that runs against builds without UCRT64 (such as a full release, where this workflow picks up the bits that were produced) therefore contributes nothing extra.

The full-release path is left untouched: the architectures list in github-release.js that drives the release assembly keeps its three entries (x86_64, i686, aarch64), so full releases remain UCRT64-free.

Note that, to actually feed UCRT64 into the snapshots, whatever dispatches upload-snapshot.yml (the GitForWindowsHelper app) will need to pass the new git_artifacts_ucrt64_workflow_run_id input.

Now that the git-artifacts workflow can build UCRT64 variants, the
snapshots should start carrying them. For the time being, though,
UCRT64 must not become part of the full Git for Windows releases; it is
meant to be offered through the snapshots only. Because the snapshot
upload path is also run for full releases, where it picks up the bits
that were produced for the release, and those builds do not include
UCRT64, the workflow has to treat UCRT64 as optional rather than
mandatory: if the files are there, include them, and if they are not,
simply leave them out.

To that end, teach the workflow about an optional
git_artifacts_ucrt64_workflow_run_id input and a matching
UCRT64_WORKFLOW_RUN_ID environment variable. Only when that run ID is
provided does the "download remaining artifacts" step append ucrt64 to
the list of architectures to fetch, and even then it downloads just the
artifacts that the run actually published, so a run without UCRT64
contributes nothing.

The full-release path is deliberately left untouched: the architectures
list in github-release.js, which drives the release assembly, keeps its
three entries (x86_64, i686, aarch64), so full releases remain
UCRT64-free.

Assisted-by: Opus 4.8
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
@dscho dscho marked this pull request as ready for review June 22, 2026 08:50
dscho added a commit to git-for-windows/gfw-helper-github-app that referenced this pull request Jun 22, 2026
The previous commit taught `/git-artifacts` to build the UCRT64 flavor,
but the `upload-snapshot` cascade still only ever waited for, and
forwarded, the three classic architectures. The freshly built UCRT64
bits were therefore dropped on the floor: nothing waited for that run
and nothing handed its ID to the snapshot upload.

Now that the snapshot pipeline can pick those bits up
(git-for-windows/git-for-windows-automation#181
adds an optional `git_artifacts_ucrt64_workflow_run_id` input to
`upload-snapshot.yml`, downloading the UCRT64 artifacts when the input
is supplied), this teaches the helper to supply it.

Both places that dispatch `upload-snapshot.yml` learn about the fourth
architecture: the `git-artifacts` completion cascade in
`cascadingRuns()`, and the push-to-`main` path in `handlePush()`. Adding
`ucrt64` to the loop that gathers the per-architecture run IDs means the
upload is held back until the UCRT64 build has finished, exactly like
the other three, and the gathered ID is then passed along as the new
input.

This deliberately stops at snapshots. The full-release path (`/release`,
which drives `release-git.yml`, and the automation side's own
`architectures` list in `github-release.js`) is left UCRT64-free for the
time being.

Because `upload-snapshot.yml` does not declare the new input until #181
lands, dispatching it with that input beforehand would be rejected, so
this change must not be merged before #181.

Assisted-by: Opus 4.8
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
@dscho

dscho commented Jun 23, 2026

Copy link
Copy Markdown
Member Author

Since the automation looks for an existing tag-git run upon push to git-for-windows/git's main branch, it will pick up even the UCRT64 bits for full releases, once git-for-windows/gfw-helper-github-app#223 is merged.

@dscho dscho merged commit 498a084 into main Jun 23, 2026
@dscho dscho deleted the upload-snapshots-should-include-ucrt64-when-available branch June 23, 2026 08:33
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