Files
Weny Xu c02e1f58af fix(ci): prepare Ubuntu build runners and default EC2 disks to 500 GiB (#10156)
* ci: share Linux runner dependency setup for builds and benchmarks

Signed-off-by: WenyXu <wenymedia@gmail.com>

* ci: configure EC2 build runner volumes with a 500 GiB default

Signed-off-by: WenyXu <wenymedia@gmail.com>

---------

Signed-off-by: WenyXu <wenymedia@gmail.com>
2026-11-05 02:40:14 +00:00

63 lines
2.6 KiB
YAML

name: Set up Linux runner dependencies
description: Reuse installed tools and install missing dependencies on an Ubuntu self-hosted runner
inputs:
tools:
description: Space-separated commands to install if missing (Ubuntu package names, except shasum)
required: false
default: curl
expected-architecture:
description: Optional uname architecture required by the workload
required: false
default: ''
runs:
using: composite
steps:
- name: Check host and install missing tools
shell: bash
env:
REQUIRED_TOOLS: ${{ inputs.tools }}
EXPECTED_ARCH: ${{ inputs.expected-architecture }}
run: |
set -euo pipefail
if [[ -n "$EXPECTED_ARCH" ]]; then
[[ "$(uname -m)" == "$EXPECTED_ARCH" ]]
fi
command -v git
missing=()
read -r -a tools <<< "$REQUIRED_TOOLS"
for tool in "${tools[@]}"; do
if ! command -v "$tool" >/dev/null; then
case "$tool" in
shasum) missing+=(libdigest-sha-perl) ;;
*) missing+=("$tool") ;;
esac
fi
done
if ((${#missing[@]})); then
. /etc/os-release
[[ "$ID" == ubuntu ]]
sudo -n apt-get update
sudo -n env DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=l apt-get install -y --no-install-recommends "${missing[@]}"
fi
- name: Install Docker if missing and verify access
shell: bash
run: |
set -euo pipefail
if ! command -v docker >/dev/null; then
. /etc/os-release
[[ "$ID" == ubuntu ]]
sudo -n apt-get update
sudo -n env DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=l apt-get install -y --no-install-recommends curl ca-certificates
sudo -n install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo -n tee /etc/apt/keyrings/docker.asc >/dev/null
sudo -n chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $VERSION_CODENAME stable" | sudo -n tee /etc/apt/sources.list.d/docker.list >/dev/null
sudo -n apt-get update
sudo -n env DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=l apt-get install -y --no-install-recommends docker-ce docker-ce-cli containerd.io docker-buildx-plugin
fi
if ! docker info >/dev/null 2>&1; then
sudo -n systemctl enable --now docker
fi
# Membership must be configured before the runner starts, not in this job.
docker info