You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Match the runner image to GitHub's ubuntu-24.04 image for each architecture #103
The runner pod image in Dockerfile starts from ghcr.io/actions/actions-runner and adds gcc 11, make, unzip, python3-venv, bun, gh and the Docker CLI. GitHub's own runner image for the same OS and architecture (ubuntu-24.04-arm, defined by images/ubuntu/templates/build.ubuntu-24_04-arm64.pkr.hcl and images/ubuntu/toolsets/toolset-2404-arm64.json in actions/runner-images) carries far more, so a workflow written for ubuntu-24.04-arm or ubuntu-latest breaks when it lands on the fleet. Repositories should not have to install what the native image carries, and they should not come to rely on anything the native image does not.
Gaps that have already broken or slowed jobs routed to the fleet:
Rust (install-rust.sh: rustup with the stable toolchain, clippy and rustfmt, $HOME/.cargo/bin on the path). A Rust job failed with cargo: command not found, and its workflow now carries a guarded rustup install as a stopgap.
zstd (install-zstd.sh). Without it actions/cache falls back to gzip, which costs more to compress and decompress the same cache.
cmake, ninja and clang/libclang (install-cmake.sh, install-ninja.sh, install-clang.sh), which build scripts that compile C or C++ through bindgen need.
The Dockerfile installs nothing for most of the native image's other install scripts either, among them git-lfs, Node.js, Java, Ruby, PHP, .NET, PowerShell, pipx packages, yq, the Kubernetes tools, the cloud CLIs, the Docker engine (only the CLI is installed), Homebrew, Bazel, Swift and vcpkg; some may come with the actions-runner base image, which the check below would settle. The native image's own manifest is the reference, not this list.
Proposal: build the fleet image to the native image's toolset for its architecture, from the runner-images install scripts or toolset JSON, and add a check that compares the two so the gap cannot reopen. Where a tool genuinely cannot be carried, the image's README says which, so workflows know not to assume it.
Activity