From e0fd4ec07aa716283e3dd9a95aa5f5308883ae1f Mon Sep 17 00:00:00 2001 From: Michele Locati Date: Tue, 3 Dec 2024 11:24:45 +0100 Subject: [PATCH] Build containers for PHP > 8.1 (#5) * Build containers for PHP > 8.1 * Use PHP 8.4 GA, not rc * Fix apt for old Debian versions * Update action versions --------- Co-authored-by: Nico Haase --- .github/workflows/create-images.yml | 39 +++++++++++++++++++++-------- docker/Dockerfile.base | 6 +++-- docker/imagine-fix-apt | 23 +++++++++++++++++ 3 files changed, 56 insertions(+), 12 deletions(-) create mode 100755 docker/imagine-fix-apt diff --git a/.github/workflows/create-images.yml b/.github/workflows/create-images.yml index b7512f9..5f00101 100644 --- a/.github/workflows/create-images.yml +++ b/.github/workflows/create-images.yml @@ -31,7 +31,7 @@ jobs: echo 'Docker images will be published' PUBLISH_IMAGES=yes fi - echo "::set-output name=result::$PUBLISH_IMAGES" + echo "result=$PUBLISH_IMAGES" >> $GITHUB_OUTPUT build-base-images: name: PHP ${{ matrix.php-version }} @@ -52,6 +52,7 @@ jobs: # The version of libheif to be installed - see # https://github.com/strukturag/libheif/releases LIBHEIF_VERSION: 1.12.0 strategy: + fail-fast: false matrix: php-version: - "5.5" @@ -63,15 +64,18 @@ jobs: - "7.4" - "8.0" - "8.1" + - "8.2" + - "8.3" + - "8.4" steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Create initial image run: | PHP_VERSION_DOCKERSUFFIX='' - if [ "${{ matrix.php-version }}" = '8.1' ]; then + if [ "${{ matrix.php-version }}" = '8.5' ]; then PHP_VERSION_DOCKERSUFFIX='-rc' fi docker build \ @@ -87,6 +91,12 @@ jobs: - name: Start container run: docker start imagine-${{ matrix.php-version }} + - + name: Temp + run: docker exec -t imagine-${{ matrix.php-version }} ls -al /usr/local/bin/ + - + name: Fix apt + run: docker exec -t imagine-${{ matrix.php-version }} imagine-fix-apt - name: Update apt cache run: docker exec -t imagine-${{ matrix.php-version }} apt-get update -q @@ -112,8 +122,8 @@ jobs: else HEIC_SUPPORT=no fi - echo "::set-output name=avif-support::$AVIF_SUPPORT" - echo "::set-output name=heic-support::$HEIC_SUPPORT" + echo "avif-support=$AVIF_SUPPORT" >> $GITHUB_OUTPUT + echo "heic-support=$HEIC_SUPPORT" >> $GITHUB_OUTPUT - name: Install git run: docker exec -t imagine-${{ matrix.php-version }} imagine-install git $GIT_VERSION @@ -172,14 +182,14 @@ jobs: - name: Upload image if: needs.inspect.outputs.publish == 'no' - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: base-image-${{ matrix.php-version }} path: /tmp/base-image-${{ matrix.php-version }}.tgz - name: Login to the container registry if: needs.inspect.outputs.publish == 'yes' - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} @@ -227,17 +237,26 @@ jobs: - php-version: "8.1" graphicsmagic-version: "1.3.36" imagemagick-version: "7.1.0-8" + - php-version: "8.2" + graphicsmagic-version: "1.3.36" + imagemagick-version: "7.1.0-8" + - php-version: "8.3" + graphicsmagic-version: "1.3.36" + imagemagick-version: "7.1.0-8" + - php-version: "8.4" + graphicsmagic-version: "1.3.36" + imagemagick-version: "7.1.0-8" extensions: - "gd-gmagick" - "gd-imagick" steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Download base image if: needs.inspect.outputs.publish == 'no' - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v4 with: name: base-image-${{ matrix.config.php-version }} path: /tmp/ @@ -301,7 +320,7 @@ jobs: - name: Login to the container registry if: needs.inspect.outputs.publish == 'yes' - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} diff --git a/docker/Dockerfile.base b/docker/Dockerfile.base index 22a6052..01cb994 100644 --- a/docker/Dockerfile.base +++ b/docker/Dockerfile.base @@ -2,7 +2,7 @@ ARG PHP_VERSION # The suffix of the Docker image to be appended to PHP_VERSION -# Example: "-rc" for php:8.1-rc-cli +# Example: "-rc" for php:8.5-rc-cli ARG PHP_VERSION_DOCKERSUFFIX="" FROM php:${PHP_VERSION}${PHP_VERSION_DOCKERSUFFIX}-cli @@ -11,4 +11,6 @@ COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr COPY imagine-utilities /usr/local/bin/ -COPY imagine-install /usr/local/bin/ +COPY --chmod=0777 imagine-install /usr/local/bin/ + +COPY --chmod=0777 imagine-fix-apt /usr/local/bin/ diff --git a/docker/imagine-fix-apt b/docker/imagine-fix-apt new file mode 100755 index 0000000..d94f91e --- /dev/null +++ b/docker/imagine-fix-apt @@ -0,0 +1,23 @@ +#!/bin/sh + +if grep -q 'VERSION="8 (jessie)"' /etc/os-release; then + distro=jessie +elif grep -q 'VERSION="9 (stretch)"' /etc/os-release; then + distro=stretch +else + exit 0 +fi + +deb_archive=http://archive.kernel.org/debian-archive +deb_archive_security=http://archive.kernel.org/debian-archive/debian-security +sed -ri "s;^(\s*deb\s+http://(httpredir|deb).debian.org/debian\s+$distro-updates\b.*);#\1;" /etc/apt/sources.list +sed -ri "s;^(\s*deb\s+)http://(httpredir|deb).debian.org;\1$deb_archive;" /etc/apt/sources.list +sed -ri "s;^(\s*deb\s+)http://security.debian.org/debian-security;\1$deb_archive_security;" /etc/apt/sources.list +sed -ri "s;^(\s*deb\s+)http://security.debian.org;\1$deb_archive_security;" /etc/apt/sources.list + +tmp="$(mktemp)" +DEBIAN_FRONTEND=noninteractive apt-get update -q 2>"$tmp" +if grep -qE ' KEYEXPIRED [0-9]' "$tmp"; then + printf 'APT::Get::AllowUnauthenticated "true";\n' >/etc/apt/apt.conf.d/99unauthenticated +fi +rm "$tmp"