Support Ubuntu 24.04 in dependency installation
Describe the bug Currently runner cannot be installed on Ubuntu 24.04
To Reproduce Steps to reproduce the behavior:
- Install 24.04
- Download latest runner release
- Extract latest runner release
./bin/installdependencies.sh- See error
Expected behavior Should support 24.04
Runner Version and Platform
Version of your runner?
OS of the machine running the runner? Linux
What's not working?
Unable to locate package libssl1.0.0$
Unable to locate package libicu63
https://github.com/actions/runner/pull/3303 partly enables this.
I have the runner on ubuntu 24.04 for more than 3 weeks.
I have the runner on ubuntu 24.04 for more than 3 weeks.
Not sure why you wrote this message. Could you elaborate how you think this helps?
I pointed that it already working.
Installed a fresh version ubuntu server 24.04, did a full-upgrade and the script worked without any issue.
Hi @seuros , I am currently using the Open source runner image as it is and adding some custom libraries to build a new docker image. I run the ARC platform on aks clusters. Now I am looking for options to upgrade my custom runner image to ubuntu 24.04 as the opensource one only offers 22.04.
can you share some info how you have built your custom image with 24.04? Thanks!
@rekha-prakash-maersk I recently opened a similar discussion: https://github.com/orgs/community/discussions/146402
@rekha-prakash-maersk
I just cloud-init a server with ubuntu 24.04.
Most cloud/host provider will allow you to setup a server user_data or cloud init.
Replace with your the token, your org and the runner name.
#cloud-config
hostname: your-runner
disable_root: true
ssh_pwauth: false
package_update: true
package_upgrade: true
package_reboot_if_required: true
packages:
- curl
- ca-certificates
- gnupg
- libxml2-dev
- libxslt1-dev
- pkg-config
- libyaml-dev
- libreadline6-dev
- zlib1g-dev
- libncurses5-dev
- openjdk-17-jre-headless
- openjdk-17-jdk
# add more package that you will need
users:
- name: runner
shell: /bin/bash
homedir: /home/runner
sudo: false
system: false
lock_passwd: true
runcmd:
- |
export DEBIAN_FRONTEND=noninteractive
GITHUB_TOKEN=AASIUT43NOTVSREALTF3W3HNMW6A
# Docker setup
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Runner setup
cd /home/runner
mkdir -p actions-runner && cd actions-runner
curl -o actions-runner-linux-x64.tar.gz -L https://github.com/actions/runner/releases/download/v2.321.0/actions-runner-linux-x64-2.321.0.tar.gz
tar xzf ./actions-runner-linux-x64.tar.gz
rm actions-runner-linux-x64.tar.gz
chown -R runner:runner /home/runner
chmod 755 /home/runner/actions-runner
usermod -aG docker runner
su runner -c "./config.sh --url https://github.com/your-org --token $GITHUB_TOKEN --unattended --name yourrunnername"
./svc.sh install runner
./svc.sh start
Hi @seuros Thank you sharing the details, I am actually deploying the runners as pods on aks k8s node pool, so it just basically a docker image very similar to the OS runner docker file. So I am still bit clueless on following your approach.
Hi @seuros Thank you sharing the details, I am actually deploying the runners as pods on aks k8s node pool, so it just basically a docker image very similar to the OS runner docker file. So I am still bit clueless on following your approach.
We're having this same situation
Still waiting for the update myself, but in case it may be useful to others, I've been building an Ubuntu 24 docker image with the runner since last year and with various runner releases, by simply modifying the current Dockerfile. Diff below:
$ diff --unified <(curl -sL https://raw.githubusercontent.com/actions/runner/refs/heads/main/images/Dockerfile) tmp/arc-runner-ubuntu24.dockerfile
--- /dev/fd/63 2025-06-14 12:24:33.602200419 +0300
+++ arc-runner-ubuntu24.dockerfile 2025-06-14 12:22:39.522880060 +0300
@@ -1,5 +1,8 @@
+#See https://github.com/actions/runner/blob/main/.github/workflows/publish-image.yml
+# and https://github.com/actions/runner/blob/main/images/Dockerfile
+
# Source: https://github.com/dotnet/dotnet-docker
-FROM mcr.microsoft.com/dotnet/runtime-deps:8.0-jammy AS build
+FROM mcr.microsoft.com/dotnet/runtime-deps:9.0-noble as build
ARG TARGETOS
ARG TARGETARCH
@@ -32,12 +35,12 @@
"https://github.com/docker/buildx/releases/download/v${BUILDX_VERSION}/buildx-v${BUILDX_VERSION}.linux-${TARGETARCH}" \
&& chmod +x /usr/local/lib/docker/cli-plugins/docker-buildx
-FROM mcr.microsoft.com/dotnet/runtime-deps:8.0-jammy
+FROM mcr.microsoft.com/dotnet/runtime-deps:9.0-noble
ENV DEBIAN_FRONTEND=noninteractive
ENV RUNNER_MANUALLY_TRAP_SIG=1
ENV ACTIONS_RUNNER_PRINT_LOG_TO_STDOUT=1
-ENV ImageOS=ubuntu22
+ENV ImageOS=ubuntu24
# 'gpg-agent' and 'software-properties-common' are needed for the 'add-apt-repository' command that follows
RUN apt update -y \
Currently I only have linux amd64 Kubernetes nodes, so build it with podman build --platform linux/amd64 --build-arg RUNNER_VERSION=2.325.0 -t actions-runner:2.325.0-1 -f arc-runner-ubuntu24.dockerfile . etc.