Move release builds onto supported runner images - #40
Merged
Conversation
The Linux release build targeted ubuntu-20.04, which GitHub retired on 2025-04-15 and no longer provisions, so the job would fail to find a runner and the release would ship without its Linux archive. macos-14 is still available but deprecated. Move Linux to ubuntu-24.04 and macOS to macos-15. Bare macos-15 is the arm64 image, matching the osx-arm64 publish profile, so the build stays arm64. Windows already targets windows-latest. Both jobs publish SelfContained=true and freeze codeql_bundle with PyInstaller, so the runner image sets the minimum glibc/macOS version for released binaries. The same publish and PyInstaller steps already run on ubuntu-24.04 via install-qlt-local in the pull request workflows.
There was a problem hiding this comment.
Pull request overview
Updates the GitHub Actions runner images used for internal release builds so the release workflow can run on currently supported hosted runners and avoid failures due to retired/deprecated images.
Changes:
- Linux release build runner:
ubuntu-20.04→ubuntu-24.04 - macOS release build runner:
macos-14→macos-15(arm64)
Show a summary per file
| File | Description |
|---|---|
| .github/workflows/internal-build-release-linux64.yml | Moves the Linux release job to a supported Ubuntu runner image (ubuntu-24.04). |
| .github/workflows/internal-build-release-macos64.yml | Moves the macOS release job to macos-15 while keeping the arm64 target. |
Review details
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Files reviewed: 2/2 changed files
- Comments generated: 0
- Review effort level: Low
Contributor
Author
|
Note: The Copilot-generated PR description surfaced a point I missed, which is that pinning to ubuntu-latest (currently 24.04) will pin the glibc version to be higher than necessary, so I'm downgrading the version it runs on to 22.04. |
ubuntu-24.04 matched ubuntu-latest but raised the minimum glibc for released binaries to 2.39. The Linux job publishes SelfContained=true and freezes codeql_bundle with PyInstaller, so that floor is inherited by every QLT Linux user, and nothing here needs it. ubuntu-22.04 is the oldest image GitHub still provisions and keeps the floor at glibc 2.35.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The release build cannot run today.
internal-build-release-linux64.ymltargetsubuntu-20.04, which GitHub retired on 2025-04-15; it is no longer listed inactions/runner-imagesand is not provisioned. Dispatchinginternal-release-build.ymlin its current state would create the draft release tag, succeed on macOS and Windows, and then fail the Linux leg with no available runner — leaving a published tag and a draft release missingqlt-linux-x86_64.zip.macos-14is still provisioned but is marked deprecated upstream (actions/runner-images#13518), so it is moved in the same pass rather than left to break the next release.Changes
ubuntu-20.04→ubuntu-22.04macos-14→macos-15Windows already targets
windows-latestand is unchanged. These were the only two stale labels;ubuntu-20.04appeared exactly once in the repository.Bare
macos-15is the arm64 image, matching theosx-arm64runtime identifier inMacOS-arm64-Profile.pubxml, so the macOS build stays arm64 and the existing# note this is arm64comment remains accurate.Why the image choice matters here
Both jobs publish with
SelfContained=trueand freezecodeql_bundlewith PyInstaller on the same runner. Both link against the builder's system libraries, so the runner image sets the minimum glibc / macOS version for every released QLT binary.ubuntu-24.04raises the Linux floor from glibc 2.31 to 2.39.ubuntu-22.04(glibc 2.35) would have been the smaller step; 24.04 was chosen deliberately to align withubuntu-latestand avoid a second migration soon.Edit: Downgraded to 22.04 for Linux. Pinning to
ubuntu-latest(currently 24.04) would raise the glibc floor to 2.39, which is higher than necessary.ubuntu-22.04is the oldest image GitHub still provisions and keeps the floor at glibc 2.35.Risk
Low, and already exercised.
install-qlt-localruns the samedotnet publishand the samebuild_codeql_bundle_dist.ps1PyInstaller freeze onubuntu-latestin the pull request workflows, and those pass on the currentmain.This is a prerequisite for cutting
v0.0.27, which is the first release that will ship the codeql-bundle 0.5.0 cache-aware tooling from #39.