Skip to content

Commit 5a42d9d

Browse files
authored
Miscellaneous improvements (#28)
* Dockerfile.almalinux Dockerfile.ubuntu - Use main branch of action-runners - for now * build-files/build-image.sh - Remove /home/ubuntu/.nuget to free >2GB as it was only there for action runners build * build-files/install-packages.sh - Remove docker and use podman - Make less verbose * build-files/supported_packages.txt - Use php8.3 * setup-build-env.sh - Compress image again - priming will untar/unzip so it has no performance impact
1 parent 8dcbf85 commit 5a42d9d

6 files changed

+80
-82
lines changed

Dockerfile.almalinux

+4-5
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,10 @@ COPY ${RUNNERPATCH} /tmp/runner.patch
1414
RUN cd /tmp && \
1515
git clone -q ${RUNNERREPO} && \
1616
cd runner && \
17-
git checkout $(git describe --tags $(git rev-list --tags --max-count=1)) -b build && \
18-
git apply /tmp/runner.patch && \
19-
sed -i'' -e 's/"version": "8[^"]*"/"version": "'${SDK_VERSION}'"/' src/global.json && \
20-
sed -i'' -e 's/"version": "8[^"]*"/"version": "'${SDK_VERSION}'"/' .devcontainer/devcontainer.json && \
21-
sed -i'' -e 's/DOTNETSDK_VERSION="8[^"]*"/DOTNETSDK_VERSION="'${SDK_VERSION}'"/' src/dev.sh
17+
git checkout main -b build && \
18+
# git checkout $(git describe --tags $(git rev-list --tags --max-count=1)) -b build && \
19+
sed -i'' -e /version/s/8......\"$/${SDK}.0.100\"/ src/global.json && \
20+
git apply /tmp/runner.patch
2221

2322
RUN cd /tmp/runner/src && \
2423
./dev.sh layout && \

Dockerfile.ubuntu

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
1-
FROM ubuntu:22.04
1+
FROM ubuntu:24.10
22

33
ARG RUNNERREPO="https://github.com/actions/runner" RUNNERPATCH SDK_VERSION ARCH
44

55
ENV DEBIAN_FRONTEND=noninteractive
66

77
RUN apt-get -qq update -y && \
8-
apt-get -qq -y install wget git sudo alien curl && \
8+
apt-get -qq -y install wget git sudo curl dotnet-sdk-8.0 && \
99
apt autoclean
1010

11-
RUN apt-get -qq -y install dotnet-sdk-8.0 && \
12-
SDK_VERSION=`dotnet --version` && \
13-
echo "Using SDK - ${SDK_VERSION}"
11+
RUN echo "Using SDK - `dotnet --version`"
1412

1513
ADD ${RUNNERPATCH} /tmp/runner.patch
1614

build-files/build-image.sh

+2-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,8 @@ install_runner() {
9292

9393
cleanup() {
9494
rm -rf /home/ubuntu/build-image.sh /home/ubuntu/runner-sdk-8.patch \
95-
/tmp/runner /tmp/preseed-yaml
95+
/tmp/runner /tmp/preseed-yaml /home/ubuntu/.nuget \
96+
/home/ubuntu/.local/share
9697
}
9798

9899
run() {

build-files/install-packages.sh

+15-22
Original file line numberDiff line numberDiff line change
@@ -27,34 +27,27 @@ fi
2727
header "Installing additional packages"
2828
# Update the package list
2929
msg "Updating package list..."
30-
sudo DEBIAN_FRONTEND=noninteractive apt-get -qq update -y
31-
32-
# installing docker
33-
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
34-
35-
# Add Docker's official GPG key:
36-
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
37-
sudo DEBIAN_FRONTEND=noninteractive apt-get install ca-certificates curl -y
38-
sudo install -m 0755 -d /etc/apt/keyrings
39-
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
40-
sudo chmod a+r /etc/apt/keyrings/docker.asc
41-
42-
# Add the repository to Apt sources:
43-
echo \
44-
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
45-
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
46-
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
47-
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
48-
49-
sudo DEBIAN_FRONTEND=noninteractive apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
30+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y >/dev/null
5031

5132
# Read the file line by line and install each package
33+
OK=`true`
5234
while IFS= read -r package || [ -n "$package" ]; do
5335
if [[ ! -z "$package" && "$package" != \#* ]]; then
5436
echo "Installing $package..."
55-
sudo DEBIAN_FRONTEND=noninteractive apt-get -qq install -y "$package"
37+
sudo DEBIAN_FRONTEND=noninteractive apt-get -qq install -y "$package" >/dev/null
38+
if [ $? -ne 0 ]; then
39+
OK=`false`
40+
fi
5641
sudo dpkg --configure -a
5742
fi
5843
done < "$PACKAGE_LIST_FILE"
5944

60-
msg "All packages from $PACKAGE_LIST_FILE have been installed."
45+
if [ ${OK} ]; then
46+
msg "All packages from $PACKAGE_LIST_FILE have been installed."
47+
else
48+
msg "NOT all packages from $PACKAGE_LIST_FILE have been installed - check log."
49+
fi
50+
51+
# Removing the packaging cache
52+
sudo rm -rf /var/cache/apt/archives /var/lib/apt/lists/*
53+
sudo apt-get clean

build-files/supported_packages.txt

+51-47
Original file line numberDiff line numberDiff line change
@@ -24,56 +24,60 @@ packages-microsoft-prod
2424
parallel
2525
patchelf
2626
php-pear
27-
php8.1
28-
php8.1-amqp
29-
php8.1-apcu
30-
php8.1-bcmath
31-
php8.1-bz2
32-
php8.1-cgi
33-
php8.1-cli
34-
php8.1-common
35-
php8.1-curl
36-
php8.1-dba
37-
php8.1-dev
38-
php8.1-enchant
39-
php8.1-fpm
40-
php8.1-gd
41-
php8.1-gmp
42-
php8.1-igbinary
43-
php8.1-imagick
44-
php8.1-imap
45-
php8.1-interbase
46-
php8.1-intl
47-
php8.1-ldap
48-
php8.1-mbstring
49-
php8.1-memcache
50-
php8.1-memcached
51-
php8.1-mongodb
52-
php8.1-msgpack
53-
php8.1-mysql
54-
php8.1-odbc
55-
php8.1-opcache
56-
php8.1-pcov
57-
php8.1-pgsql
58-
php8.1-phpdbg
59-
php8.1-pspell
60-
php8.1-readline
61-
php8.1-redis
62-
php8.1-snmp
63-
php8.1-soap
64-
php8.1-sqlite3
65-
php8.1-sybase
66-
php8.1-tidy
67-
php8.1-xdebug
68-
php8.1-xml
69-
php8.1-xsl
70-
php8.1-yaml
71-
php8.1-zip
72-
php8.1-zmq
27+
php8.3
28+
php8.3-amqp
29+
php8.3-apcu
30+
php8.3-bcmath
31+
php8.3-bz2
32+
php8.3-cgi
33+
php8.3-cli
34+
php8.3-common
35+
php8.3-curl
36+
php8.3-dba
37+
php8.3-dev
38+
php8.3-enchant
39+
php8.3-fpm
40+
php8.3-gd
41+
php8.3-gmp
42+
php8.3-igbinary
43+
php8.3-imagick
44+
php8.3-imap
45+
php8.3-interbase
46+
php8.3-intl
47+
php8.3-ldap
48+
php8.3-mbstring
49+
php8.3-memcache
50+
php8.3-memcached
51+
php8.3-mongodb
52+
php8.3-msgpack
53+
php8.3-mysql
54+
php8.3-odbc
55+
php8.3-opcache
56+
php8.3-pcov
57+
php8.3-pgsql
58+
php8.3-phpdbg
59+
php8.3-pspell
60+
php8.3-readline
61+
php8.3-redis
62+
php8.3-snmp
63+
php8.3-soap
64+
php8.3-sqlite3
65+
php8.3-sybase
66+
php8.3-tidy
67+
php8.3-xdebug
68+
php8.3-xml
69+
php8.3-xsl
70+
php8.3-yaml
71+
php8.3-zip
72+
php8.3-zmq
7373
pigz
7474
pipx
7575
pkg-config
7676
podman
77+
podman-compose
78+
podman-docker
79+
podman-remote
80+
podman-toolbox
7781
pollinate
7882
postgresql-16
7983
powershell-lts
@@ -127,4 +131,4 @@ xz-utils
127131
yarn
128132
zip
129133
zlib1g-dev
130-
zsync
134+
zsync

setup-build-env.sh

+5-2
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ build_image_in_container() {
6767
msg "Copy the build-image script into gha-builder"
6868
lxc file push --mode 0755 "${BUILD_PREREQS_PATH}/install-packages.sh" "${BUILD_CONTAINER}${BUILD_HOME}/install-packages.sh"
6969

70-
msg "Copy the build-image script into gha-builder"
70+
msg "Copy the supported packages list into the gha-builder"
7171
lxc file push --mode 0755 "${BUILD_PREREQS_PATH}/supported_packages.txt" "${BUILD_CONTAINER}${BUILD_HOME}/supported_packages.txt"
7272

7373
msg "Copy the patch file into gha-builder"
@@ -85,6 +85,10 @@ build_image_in_container() {
8585
msg "Copy the gha-service unit file into gha-builder"
8686
lxc file push ${BUILD_PREREQS_PATH}/gha-runner.service "${BUILD_CONTAINER}/etc/systemd/system/gha-runner.service"
8787

88+
msg "Copy the apt and dpkg overrides into gha-builder - these prevent doc files from being installed"
89+
lxc file push --mode 0644 "${BUILD_PREREQS_PATH}/99synaptics" "${BUILD_CONTAINER}/etc/apt/apt.conf.d/99synaptics"
90+
lxc file push --mode 0644 "${BUILD_PREREQS_PATH}/01_nodoc" "${BUILD_CONTAINER}/etc/dpk/dpkg.cfg.d/01_nodoc"
91+
8892
msg "Setting user ubuntu with sudo privileges"
8993
lxc exec "${BUILD_CONTAINER}" --user 0 --group 0 -- sh -c "echo 'ubuntu ALL=(ALL) NOPASSWD:ALL' | sudo EDITOR='tee -a' visudo"
9094

@@ -103,7 +107,6 @@ build_image_in_container() {
103107
msg "Runner build complete. Creating image snapshot."
104108
lxc snapshot "${BUILD_CONTAINER}" "build-snapshot"
105109
lxc publish "${BUILD_CONTAINER}/build-snapshot" -f --alias "${IMAGE_ALIAS}" \
106-
--compression none \
107110
description="GitHub Actions ${OS_NAME} ${OS_VERSION} Runner for ${ARCH}"
108111

109112
msg "Export the image to ${EXPORT} for use elsewhere"

0 commit comments

Comments
 (0)