From a1ea32ecc90d002e585f90245910b4be31db8493 Mon Sep 17 00:00:00 2001 From: Flavio Heleno Date: Wed, 15 May 2024 11:42:48 -0300 Subject: [PATCH 1/5] Add Docker Image build workflow --- .github/workflows/docker.yml | 118 +++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 .github/workflows/docker.yml diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 0000000..9c73bc1 --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,118 @@ +name: Docker +on: [workflow_dispatch, push] + +jobs: + docker: + name: PHP v${{ matrix.php.major }}.${{ matrix.php.minor }}, ${{ matrix.flags.name }} + runs-on: ubuntu-latest + permissions: + packages: write + strategy: + matrix: + ubuntu: + - major: '22' + minor: '04' + php: + - major: 8 + minor: 0 + patch: 24 + rc: '' + - major: 8 + minor: 1 + patch: 11 + rc: '' + - major: 8 + minor: 2 + patch: 0 + rc: 'RC5' + - major: 8 + minor: 3 + patch: 7 + rc: '' + src: + - dist + flags: + - name: asan + debug: disable + asan: enable + gcov: disable + - name: dbg + debug: enable + asan: disable + gcov: disable + - name: gcov + debug: disable + asan: disable + gcov: enable + - name: release + debug: disable + asan: disable + gcov: disable + exclude: + - php: {major: 8, minor: 0} + flags: {name: asan} + + steps: + - name: Prepare build variables + id: build-vars + run: echo "tag=ghcr.io/${{ github.repository_owner }}/php-${{ matrix.flags.name }}-${{ matrix.php.major }}.${{ matrix.php.minor }}:latest" >> $GITHUB_OUTPUT + + - name: Repository checkout + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@d70bba72b1f3fd22344832f00baa16ece964efeb # v3.3.0 + + - name: Login to GitHub Container Registry + uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + # https://docs.docker.com/build/ci/github-actions/cache/ + - name: Build and export Docker Image + uses: docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0 # v5.3.0 + with: + load: true + build-args: | + "UBUNTU_VERSION_MAJOR=${{ matrix.ubuntu.major }}" + "UBUNTU_VERSION_MINOR=${{ matrix.ubuntu.minor }}" + "PHP_SRC_TYPE=${{ matrix.src }}" + "PHP_SRC_DEBUG=${{ matrix.flags.debug }}" + "PHP_SRC_ASAN=${{ matrix.flags.asan }}" + "PHP_SRC_GCOV=${{ matrix.flags.gcov }}" + "PHP_VERSION_MAJOR=${{ matrix.php.major }}" + "PHP_VERSION_MINOR=${{ matrix.php.minor }}" + "PHP_VERSION_PATCH=${{ matrix.php.patch }}" + "PHP_VERSION_RC=${{ matrix.php.rc }}" + tags: ${{ steps.build-vars.outputs.tag }} + file: ./docker/php.dockerfile + cache-from: type=gha + cache-to: type=gha,mode=max + + # https://docs.docker.com/build/ci/github-actions/test-before-push/ + - name: Test Docker Image + run: docker run --rm ${{ steps.build-vars.outputs.tag }} php --version + + - name: Build and push Docker Image + uses: docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0 # v5.3.0 + with: + push: true + build-args: | + "UBUNTU_VERSION_MAJOR=${{ matrix.ubuntu.major }}" + "UBUNTU_VERSION_MINOR=${{ matrix.ubuntu.minor }}" + "PHP_SRC_TYPE=${{ matrix.src }}" + "PHP_SRC_DEBUG=${{ matrix.flags.debug }}" + "PHP_SRC_ASAN=${{ matrix.flags.asan }}" + "PHP_SRC_GCOV=${{ matrix.flags.gcov }}" + "PHP_VERSION_MAJOR=${{ matrix.php.major }}" + "PHP_VERSION_MINOR=${{ matrix.php.minor }}" + "PHP_VERSION_PATCH=${{ matrix.php.patch }}" + "PHP_VERSION_RC=${{ matrix.php.rc }}" + tags: | + ${{ steps.build-vars.outputs.tag }} + ghcr.io/${{ github.repository_owner }}/php-${{ matrix.flags.name }}-${{ matrix.php.major }}.${{ matrix.php.minor }}:${{ matrix.php.major }}.${{ matrix.php.minor }}.${{ matrix.php.patch }}${{ matrix.php.rc }} + file: ./docker/php.dockerfile + cache-from: type=gha + cache-to: type=gha,mode=max From b57b81110ccef2698d0603c428dee7eb72fd2801 Mon Sep 17 00:00:00 2001 From: Flavio Heleno Date: Wed, 15 May 2024 14:51:13 -0300 Subject: [PATCH 2/5] Replace "parallelphp" images with GHCR alternative --- docker-compose.yml | 44 +++++++++++++++++++------------------- docker/parallel.dockerfile | 4 ++-- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 2020d51..d978ef6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -40,7 +40,7 @@ services: } }, container_name: php-dbg-8.0, - image: parallelphp/php-dbg-8.0:8.0.24, + image: ghcr.io/krakjoe/php-dbg-8.0:8.0.24, profiles: [php-8.0,dbg], <<: [*dev, *parallel] } @@ -55,7 +55,7 @@ services: } }, container_name: php-gcov-8.0, - image: parallelphp/php-gcov-8.0:8.0.24, + image: ghcr.io/krakjoe/php-gcov-8.0:8.0.24, profiles: [php-8.0,gcov], <<: [*dev, *parallel] } @@ -70,7 +70,7 @@ services: } }, container_name: php-release-8.0, - image: parallelphp/php-release-8.0:8.0.24, + image: ghcr.io/krakjoe/php-release-8.0:8.0.24, profiles: [php-8.0,release], <<: [*dev, *parallel] } @@ -87,7 +87,7 @@ services: } }, container_name: parallel-dbg-8.0, - image: parallelphp/parallel-dbg-8.0:latest, + image: ghcr.io/krakjoe/parallel-dbg-8.0:latest, profiles: [parallel-8.0,dbg], <<: [*dev, *parallel] } @@ -103,7 +103,7 @@ services: } }, container_name: parallel-gcov-8.0, - image: parallelphp/parallel-gcov-8.0:latest, + image: ghcr.io/krakjoe/parallel-gcov-8.0:latest, profiles: [parallel-8.0,gcov], <<: [*dev, *parallel] } @@ -119,7 +119,7 @@ services: } }, container_name: parallel-release-8.0, - image: parallelphp/parallel-release-8.0:latest, + image: ghcr.io/krakjoe/parallel-release-8.0:latest, profiles: [parallel-8.0,release], <<: [*dev, *parallel] } @@ -135,7 +135,7 @@ services: } }, container_name: php-dbg-8.1, - image: parallelphp/php-dbg-8.1:8.1.11, + image: ghcr.io/krakjoe/php-dbg-8.1:8.1.11, profiles: [php-8.1,dbg], <<: [*dev, *parallel] } @@ -150,7 +150,7 @@ services: } }, container_name: php-gcov-8.1, - image: parallelphp/php-gcov-8.1:8.1.11, + image: ghcr.io/krakjoe/php-gcov-8.1:8.1.11, profiles: [php-8.1,gcov], <<: [*dev, *parallel] } @@ -165,7 +165,7 @@ services: } }, container_name: php-asan-8.1, - image: parallelphp/php-asan-8.1:8.1.11, + image: ghcr.io/krakjoe/php-asan-8.1:8.1.11, profiles: [php-8.1,asan], <<: [*dev, *parallel] } @@ -180,7 +180,7 @@ services: } }, container_name: php-release-8.1, - image: parallelphp/php-release-8.1:8.1.11, + image: ghcr.io/krakjoe/php-release-8.1:8.1.11, profiles: [php-8.1,release], <<: [*dev, *parallel] } @@ -196,7 +196,7 @@ services: } }, container_name: parallel-dbg-8.1, - image: parallelphp/parallel-dbg-8.1:latest, + image: ghcr.io/krakjoe/parallel-dbg-8.1:latest, profiles: [parallel-8.1,dbg], <<: [*dev, *parallel] } @@ -212,7 +212,7 @@ services: } }, container_name: parallel-gcov-8.1, - image: parallelphp/parallel-gcov-8.1:latest, + image: ghcr.io/krakjoe/parallel-gcov-8.1:latest, profiles: [parallel-8.1,gcov], <<: [*dev, *parallel] } @@ -227,7 +227,7 @@ services: } }, container_name: parallel-asan-8.1, - image: parallelphp/parallel-asan-8.1:latest, + image: ghcr.io/krakjoe/parallel-asan-8.1:latest, profiles: [parallel-8.1,asan], <<: [*dev, *parallel] } @@ -242,7 +242,7 @@ services: } }, container_name: parallel-release-8.1, - image: parallelphp/parallel-release-8.1:latest, + image: ghcr.io/krakjoe/parallel-release-8.1:latest, profiles: [parallel-8.1,release], <<: [*dev, *parallel] } @@ -260,7 +260,7 @@ services: } }, container_name: php-dbg-8.2, - image: parallelphp/php-dbg-8.2:8.2.0RC5, + image: ghcr.io/krakjoe/php-dbg-8.2:8.2.0RC5, profiles: [php-8.2,dbg], <<: [*dev, *parallel] } @@ -277,7 +277,7 @@ services: } }, container_name: php-gcov-8.2, - image: parallelphp/php-gcov-8.2:8.2.0RC5, + image: ghcr.io/krakjoe/php-gcov-8.2:8.2.0RC5, profiles: [php-8.2,gcov], <<: [*dev, *parallel] } @@ -294,7 +294,7 @@ services: } }, container_name: php-asan-8.2, - image: parallelphp/php-asan-8.2:8.2.0RC5, + image: ghcr.io/krakjoe/php-asan-8.2:8.2.0RC5, profiles: [php-8.2,asan], <<: [*dev, *parallel] } @@ -311,7 +311,7 @@ services: } }, container_name: php-release-8.2, - image: parallelphp/php-release-8.2:8.2.0RC5, + image: ghcr.io/krakjoe/php-release-8.2:8.2.0RC5, profiles: [php-8.2,release], <<: [*dev, *parallel] } @@ -328,7 +328,7 @@ services: } }, container_name: parallel-dbg-8.2, - image: parallelphp/parallel-dbg-8.2:latest, + image: ghcr.io/krakjoe/parallel-dbg-8.2:latest, profiles: [parallel-8.2,dbg], <<: [*dev, *parallel] } @@ -345,7 +345,7 @@ services: } }, container_name: parallel-gcov-8.2, - image: parallelphp/parallel-gcov-8.2:latest, + image: ghcr.io/krakjoe/parallel-gcov-8.2:latest, profiles: [parallel-8.2,gcov], <<: [*dev, *parallel] } @@ -362,7 +362,7 @@ services: } }, container_name: parallel-asan-8.2, - image: parallelphp/parallel-asan-8.2:latest, + image: ghcr.io/krakjoe/parallel-asan-8.2:latest, profiles: [parallel-8.2,asan], <<: [*dev, *parallel] } @@ -379,7 +379,7 @@ services: } }, container_name: parallel-release-8.2, - image: parallelphp/parallel-release-8.2:latest, + image: ghcr.io/krakjoe/parallel-release-8.2:latest, profiles: [parallel-8.2,release], <<: [*dev, *parallel] } diff --git a/docker/parallel.dockerfile b/docker/parallel.dockerfile index 48c8379..18c1549 100644 --- a/docker/parallel.dockerfile +++ b/docker/parallel.dockerfile @@ -4,7 +4,7 @@ ARG PHP_VERSION_MINOR ARG PHP_VERSION_PATCH ARG PHP_VERSION_RC -FROM parallelphp/php-$PHP_SRC_TYPE-$PHP_VERSION_MAJOR.$PHP_VERSION_MINOR:$PHP_VERSION_MAJOR.$PHP_VERSION_MINOR.$PHP_VERSION_PATCH$PHP_VERSION_RC +FROM ghcr.io/krakjoe/php-$PHP_SRC_TYPE-$PHP_VERSION_MAJOR.$PHP_VERSION_MINOR:$PHP_VERSION_MAJOR.$PHP_VERSION_MINOR.$PHP_VERSION_PATCH$PHP_VERSION_RC ARG PHP_SRC_TYPE @@ -38,4 +38,4 @@ RUN echo "extension=parallel.so" > \ RUN php -m -WORKDIR /opt/parallel \ No newline at end of file +WORKDIR /opt/parallel From 8814dfda5955047afff180ccd27b1c78bfd2f30d Mon Sep 17 00:00:00 2001 From: Flavio Heleno Date: Wed, 15 May 2024 15:00:17 -0300 Subject: [PATCH 3/5] Update PHP 8.2.0RC5 to 8.2.0 --- .github/workflows/docker.yml | 2 +- docker-compose.yml | 16 ++++------------ 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 9c73bc1..497bb10 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -24,7 +24,7 @@ jobs: - major: 8 minor: 2 patch: 0 - rc: 'RC5' + rc: '' - major: 8 minor: 3 patch: 7 diff --git a/docker-compose.yml b/docker-compose.yml index d978ef6..d4d0fec 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -256,11 +256,10 @@ services: PHP_VERSION_MAJOR: 8, PHP_VERSION_MINOR: 2, PHP_VERSION_PATCH: 0, - PHP_VERSION_RC: RC5, } }, container_name: php-dbg-8.2, - image: ghcr.io/krakjoe/php-dbg-8.2:8.2.0RC5, + image: ghcr.io/krakjoe/php-dbg-8.2:8.2.0, profiles: [php-8.2,dbg], <<: [*dev, *parallel] } @@ -273,11 +272,10 @@ services: PHP_VERSION_MAJOR: 8, PHP_VERSION_MINOR: 2, PHP_VERSION_PATCH: 0, - PHP_VERSION_RC: RC5, } }, container_name: php-gcov-8.2, - image: ghcr.io/krakjoe/php-gcov-8.2:8.2.0RC5, + image: ghcr.io/krakjoe/php-gcov-8.2:8.2.0, profiles: [php-8.2,gcov], <<: [*dev, *parallel] } @@ -290,11 +288,10 @@ services: PHP_VERSION_MAJOR: 8, PHP_VERSION_MINOR: 2, PHP_VERSION_PATCH: 0, - PHP_VERSION_RC: RC5, } }, container_name: php-asan-8.2, - image: ghcr.io/krakjoe/php-asan-8.2:8.2.0RC5, + image: ghcr.io/krakjoe/php-asan-8.2:8.2.0, profiles: [php-8.2,asan], <<: [*dev, *parallel] } @@ -307,11 +304,10 @@ services: PHP_VERSION_MAJOR: 8, PHP_VERSION_MINOR: 2, PHP_VERSION_PATCH: 0, - PHP_VERSION_RC: RC5, } }, container_name: php-release-8.2, - image: ghcr.io/krakjoe/php-release-8.2:8.2.0RC5, + image: ghcr.io/krakjoe/php-release-8.2:8.2.0, profiles: [php-8.2,release], <<: [*dev, *parallel] } @@ -324,7 +320,6 @@ services: PHP_VERSION_MAJOR: 8, PHP_VERSION_MINOR: 2, PHP_VERSION_PATCH: 0, - PHP_VERSION_RC: RC5, } }, container_name: parallel-dbg-8.2, @@ -341,7 +336,6 @@ services: PHP_VERSION_MAJOR: 8, PHP_VERSION_MINOR: 2, PHP_VERSION_PATCH: 0, - PHP_VERSION_RC: RC5, } }, container_name: parallel-gcov-8.2, @@ -358,7 +352,6 @@ services: PHP_VERSION_MAJOR: 8, PHP_VERSION_MINOR: 2, PHP_VERSION_PATCH: 0, - PHP_VERSION_RC: RC5, } }, container_name: parallel-asan-8.2, @@ -375,7 +368,6 @@ services: PHP_VERSION_MAJOR: 8, PHP_VERSION_MINOR: 2, PHP_VERSION_PATCH: 0, - PHP_VERSION_RC: RC5, } }, container_name: parallel-release-8.2, From 0c3cb35c338c1db6007a12d0639b52d7de9fd424 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fl=C3=A1vio=20Heleno?= Date: Thu, 16 May 2024 06:53:26 -0300 Subject: [PATCH 4/5] Replace "push" with "pull_request" trigger Co-authored-by: Florian Engelhardt --- .github/workflows/docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 497bb10..c42d165 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -1,5 +1,5 @@ name: Docker -on: [workflow_dispatch, push] +on: [workflow_dispatch, pull_request] jobs: docker: From 7bd06f4ef363fbd7565582c9ff4319e6963ec77a Mon Sep 17 00:00:00 2001 From: Flavio Heleno Date: Thu, 16 May 2024 13:41:14 -0300 Subject: [PATCH 5/5] Add GitHub Container Registry auth to asan/linux workflows --- .github/workflows/asan.yml | 15 ++++++++++++++- .github/workflows/linux.yml | 13 +++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/.github/workflows/asan.yml b/.github/workflows/asan.yml index 83290ed..365d530 100644 --- a/.github/workflows/asan.yml +++ b/.github/workflows/asan.yml @@ -1,12 +1,23 @@ name: ASAN on: [push, pull_request] jobs: + auth: + runs-on: ubuntu-latest + name: Login to GitHub Container Registry + steps: + - uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + vanilla: strategy: matrix: version: ["8.1", "8.2"] if: success() || failure() runs-on: ubuntu-latest + needs: auth name: ASAN, PHP v${{matrix.version}} steps: - name: Checkout @@ -19,6 +30,7 @@ jobs: version: ["8.1", "8.2"] if: success() || failure() runs-on: ubuntu-latest + needs: auth name: ASAN, PHP v${{matrix.version}}, opcache steps: - name: Checkout @@ -31,9 +43,10 @@ jobs: version: ["8.1", "8.2"] if: success() || failure() runs-on: ubuntu-latest + needs: auth name: ASAN, PHP v${{matrix.version}}, JIT steps: - name: Checkout uses: actions/checkout@v3 - name: Test parallel - run: docker compose run parallel-asan-${{matrix.version}} docker/parallel.test -d opcache.enable_cli=1 -d opcache.jit=function -d opcache.jit_buffer_size=32M --asan \ No newline at end of file + run: docker compose run parallel-asan-${{matrix.version}} docker/parallel.test -d opcache.enable_cli=1 -d opcache.jit=function -d opcache.jit_buffer_size=32M --asan diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 8d4dea7..aa855f8 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -3,6 +3,16 @@ on: [push, pull_request] env: NODE_COVERALLS_DEBUG: true jobs: + auth: + runs-on: ubuntu-latest + name: Login to GitHub Container Registry + steps: + - uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + vanilla: strategy: matrix: @@ -10,6 +20,7 @@ jobs: build: ["gcov", "release"] if: success() || failure() runs-on: ubuntu-latest + needs: auth name: Linux, PHP v${{matrix.version}}, ${{matrix.build}} steps: - name: Checkout @@ -31,6 +42,7 @@ jobs: build: ["gcov", "release"] if: success() || failure() runs-on: ubuntu-latest + needs: auth name: Linux, PHP v${{matrix.version}}, ${{matrix.build}}, opcache steps: - name: Checkout @@ -52,6 +64,7 @@ jobs: build: ["gcov", "release"] if: success() || failure() runs-on: ubuntu-latest + needs: auth name: Linux, PHP v${{matrix.version}}, ${{matrix.build}}, JIT steps: - name: Checkout