Skip to content

Commit

Permalink
Add Ubuntu 24.04
Browse files Browse the repository at this point in the history
  • Loading branch information
shivammathur committed May 18, 2024
1 parent ae34cc5 commit ac0d4da
Show file tree
Hide file tree
Showing 3 changed files with 169 additions and 5 deletions.
12 changes: 9 additions & 3 deletions .github/scripts/get-matrix.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
platforms=(linux/386 linux/amd64 linux/arm/v7 linux/arm64 multi)
tags=('latest' 'bookworm,12' 'bullseye,11' 'jammy,2204' 'focal,2004' 'latest-slim' 'bookworm-slim,12-slim' 'bullseye-slim,11-slim' 'jammy-slim,2204-slim' 'focal-slim,2004-slim')
tags=('latest' 'bookworm,12' 'bullseye,11' 'noble,2404' 'jammy,2204' 'focal,2004' 'latest-slim' 'bookworm-slim,12-slim' 'bullseye-slim,11-slim' 'noble-slim,2404-slim' 'jammy-slim,2204-slim' 'focal-slim,2004-slim')
matrix=()
for platform in "${platforms[@]}"; do
for tag in "${tags[@]}"; do
Expand All @@ -8,9 +8,15 @@ for platform in "${platforms[@]}"; do
base="debian:12"
file="bookworm"
else
base="ubuntu:22.04"
file="jammy"
base="ubuntu:24.04"
file="noble"
fi
elif [[ "$tag" =~ noble ]]; then
if [ "$platform" = "linux/386" ]; then
continue
fi
base="ubuntu:24.04"
file="noble"
elif [[ "$tag" =~ jammy ]]; then
if [ "$platform" = "linux/386" ]; then
continue
Expand Down
145 changes: 145 additions & 0 deletions Dockerfile_noble
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
FROM ubuntu:noble
ARG type
ENV CONTAINER shivammathur/node
ENV DEBIAN_FRONTEND=noninteractive
ENV NODE_VERSION 20.13.1
ENV NODE_VERSION_x86 16.20.2
ENV YARN_VERSION 1.22.19
ENV RUNNER_TOOL_PATH "/opt/hostedtoolcache"
ENV RUNNER_TOOL_CACHE "/opt/hostedtoolcache"
ENV GITHUB_ENV "/tmp/set_env"
ENV GITHUB_PATH "/tmp/add_path"
ENV runner "self-hosted"

RUN ARCH= && MULTILIB= && PREFIX='www' && URLPATH='dist' && dpkgArch="$(dpkg --print-architecture)" \
&& case "${dpkgArch##*-}" in \
amd64) ARCH='x64';; \
ppc64el) ARCH='ppc64le';; \
s390x) ARCH='s390x';; \
arm64) ARCH='arm64';; \
armhf) ARCH='armv7l';; \
i386) ARCH='x86'; MULTILIB='gcc-multilib'; PREFIX='unofficial-builds'; URLPATH='download/release'; NODE_VERSION=$NODE_VERSION_x86;; \
*) echo "unsupported architecture"; exit 1 ;; \
esac \
&& set -ex \
&& echo "" | tee "$GITHUB_ENV" "$GITHUB_PATH" \
&& mkdir -p "$RUNNER_TOOL_CACHE" \
# libatomic1 for arm
&& apt-get update && apt-get install -y ca-certificates curl wget gnupg dirmngr xz-utils libatomic1 $MULTILIB --no-install-recommends \
&& rm -rf /var/lib/apt/lists/* \
&& curl -fsSLO --compressed "https://$PREFIX.nodejs.org/$URLPATH/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" \
&& tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
&& rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" \
&& curl -o /usr/local/bin/spc -sL https://github.com/shivammathur/spc/releases/latest/download/spc \
&& curl -o /usr/local/bin/systemctl -sL https://raw.githubusercontent.com/shivammathur/node-docker/main/systemctl-shim \
&& chmod a+x /usr/local/bin/spc /usr/local/bin/systemctl \
&& apt-mark auto '.*' > /dev/null \
&& apt-mark manual curl libatomic1 $MULTILIB \
&& find /usr/local -type f -executable -exec ldd '{}' ';' \
| awk '/=>/ { print $(NF-1) }' \
| sort -u \
| xargs -r dpkg-query --search \
| cut -d: -f1 \
| sort -u \
| xargs -r apt-mark manual \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
&& ln -s /usr/local/bin/node /usr/local/bin/nodejs \
# smoke tests
&& node --version \
&& npm --version \
&& spc -V

RUN set -ex \
&& savedAptMark="$(apt-mark showmanual)" \
&& apt-get update && apt-get install -y ca-certificates curl wget gnupg dirmngr make sudo --no-install-recommends \
&& rm -rf /var/lib/apt/lists/* \
&& curl -fsSLO --compressed "https://github.com/yarnpkg/yarn/releases/download/v$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \
&& mkdir -p /opt /opt/hostedtoolcache \
&& chmod -R 777 /opt/hostedtoolcache \
&& tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \
&& rm yarn-v$YARN_VERSION.tar.gz \
&& apt-mark auto '.*' > /dev/null \
&& apt-mark manual ca-certificates sudo make \
&& { [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; } \
&& find /usr/local -type f -executable -exec ldd '{}' ';' \
| awk '/=>/ { print $(NF-1) }' \
| sort -u \
| xargs -r dpkg-query --search \
| cut -d: -f1 \
| sort -u \
| xargs -r apt-mark manual \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
# smoke test
&& yarn --version

RUN if [ "$type" = "full" ]; then set -ex \
&& savedAptMark="$(apt-mark showmanual)" \
&& apt-mark auto '.*' > /dev/null \
&& apt-get update && apt-get install -y --no-install-recommends curl gnupg jq lsb-release mysql-server postgresql software-properties-common unzip \
&& usermod -d /var/lib/mysql/ mysql \
&& add-apt-repository ppa:git-core/ppa -y \
&& LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php \
&& LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/apache2 \
&& apt-get remove software-properties-common -y \
&& 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 noble stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null \
&& apt-get update \
&& cp -r /etc/apt/sources.list.d /etc/apt/sources.list.d.save \
&& for v in 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3; do \
apt-get install -y --no-install-recommends php"$v" \
php"$v"-dev \
php"$v"-curl \
php"$v"-mbstring \
php"$v"-xml \
php"$v"-intl \
php"$v"-mysql \
php"$v"-pgsql \
php"$v"-zip; \
done \
&& curl -o /usr/bin/systemctl -sL https://raw.githubusercontent.com/shivammathur/node-docker/main/systemctl-shim \
&& chmod a+x /usr/bin/systemctl \
&& curl -o /usr/lib/ssl/cert.pem -sL https://curl.se/ca/cacert.pem \
&& curl -o /tmp/pear.phar -sL https://raw.githubusercontent.com/pear/pearweb_phars/master/install-pear-nozlib.phar \
&& php /tmp/pear.phar && sudo rm -f /tmp/pear.phar \
&& apt-get install -y --no-install-recommends autoconf automake gcc g++ git \
&& apt-get install -y --no-install-recommends docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin \
&& for v in 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3; do \
apt-get install -y --no-install-recommends php"$v"-xdebug 2>/dev/null || (spc -p "$v" -e xdebug-xdebug/xdebug@master -r verbose) \
&& apt-get install -y --no-install-recommends php"$v"-imagick 2>/dev/null || (IMAGICK_LIBS=libmagickwand-dev spc -p "$v" -e imagick-imagick/imagick@master -r verbose); \
done \
&& for tool in php phar phar.phar php-cgi php-config phpize phpdbg; do \
{ [ -e /usr/bin/"$tool"8.3 ] && sudo update-alternatives --set $tool /usr/bin/"$tool"8.3 || true; } \
done \
&& rm -rf /var/lib/apt/lists/* \
&& { [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; } \
&& find /usr/local -type f -executable -exec ldd '{}' ';' \
| awk '/=>/ { print $(NF-1) }' \
| sort -u \
| xargs -r dpkg-query --search \
| cut -d: -f1 \
| sort -u \
| xargs -r apt-mark manual \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
# smoke test
&& gcc --version \
&& g++ --version \
&& git --version \
&& docker --version \
&& php5.6 -v \
&& php7.0 -v \
&& php7.1 -v \
&& php7.2 -v \
&& php7.3 -v \
&& php7.4 -v \
&& php8.0 -v \
&& php8.1 -v \
&& php8.2 -v \
&& php8.3 -v \
&& php -v; \
fi

CMD [ "/bin/bash" ]
17 changes: 15 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Docker images to run setup-php GitHub Action.

### `latest`

- Ubuntu 22.04 (jammy), Debian 12 (bookworm) on i386
- Ubuntu 24.04 (noble), Debian 12 (bookworm) on i386
- PHP 5.6 to PHP 8.3
- Node.js 20.13.1, 16.20.2 (x86)
- Yarn 1.22.19
Expand All @@ -41,6 +41,13 @@ Docker images to run setup-php GitHub Action.
- Node.js 20.13.1, 16.20.2 (x86)
- Yarn 1.22.19

### `noble`, `2404`

- Ubuntu 22.04 (noble)
- PHP 5.6 to PHP 8.3
- Node.js 20.13.1
- Yarn 1.22.19

### `jammy`, `2204`

- Ubuntu 22.04 (jammy)
Expand All @@ -57,10 +64,16 @@ Docker images to run setup-php GitHub Action.

### `latest-slim`

- Ubuntu 22.04 (jammy)), Debian 12 (bookworm) on i386
- Ubuntu 24.04 (jammy)), Debian 12 (bookworm) on i386
- Node.js 20.13.1, 16.20.2 (x86)
- Yarn 1.22.19

### `noble-slim`, `2404-slim`

- Ubuntu 24.04 (jammy)
- Node.js 20.13.1
- Yarn 1.22.19

### `jammy-slim`, `2204-slim`

- Ubuntu 22.04 (jammy)
Expand Down

0 comments on commit ac0d4da

Please sign in to comment.