update ci-cd fix sequence issue #347
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI/CD | |
| on: | |
| push: | |
| workflow_dispatch: | |
| schedule: | |
| - cron: "0 0 * * 0" | |
| jobs: | |
| # =========================================== | |
| # Alpine Base Images (Phase 1) | |
| # =========================================== | |
| build-alpine-base: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| version: ["8.1", "8.2", "8.3", "8.4"] | |
| type: ["", "-prod"] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5.0.0 | |
| - name: Setup QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| - name: Setup Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Login to DockerHub | |
| uses: docker/login-action@v3 | |
| if: github.ref == 'refs/heads/master' && github.repository == 'kool-dev/docker-php' | |
| with: | |
| username: ${{ secrets.DOCKER_USERNAME }} | |
| password: ${{ secrets.DOCKER_PASSWORD }} | |
| - name: Build and export to Docker | |
| uses: docker/build-push-action@v6 | |
| with: | |
| context: ${{ matrix.version }}${{ matrix.type }} | |
| load: true | |
| tags: kooldev/php:${{ matrix.version }}${{ matrix.type }} | |
| - name: Tests - Basic | |
| run: | | |
| docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} php -v | |
| docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} composer -V | |
| docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} composer1 -V | |
| docker run -e ASUSER=1000 kooldev/php:${{ matrix.version }}${{ matrix.type }} php -v | |
| docker run -e ASUSER=1000 kooldev/php:${{ matrix.version }}${{ matrix.type }} composer -V | |
| docker run -e ASUSER=1000 kooldev/php:${{ matrix.version }}${{ matrix.type }} composer1 -V | |
| docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | grep readline | |
| docker run -e ENABLE_XDEBUG=true kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | |
| - name: Tests - Dockerize | |
| run: | | |
| docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} dockerize --version | |
| docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} sh -c 'echo "{{ .Env.TEST_VAR }}" > /tmp/test.tmpl && TEST_VAR=hello dockerize -template /tmp/test.tmpl:/tmp/test.out && cat /tmp/test.out | grep hello' | |
| - name: Tests - PHP Extensions | |
| run: | | |
| docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | grep -i bcmath | |
| docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | grep -i gd | |
| docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | grep -i intl | |
| docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | grep -i pdo_mysql | |
| docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | grep -i pdo_pgsql | |
| docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | grep -i redis | |
| docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | grep -i zip | |
| docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | grep -i mbstring | |
| docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | grep -i ldap | |
| - name: Tests - Production Checks | |
| if: matrix.type == '-prod' | |
| run: | | |
| docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | grep -i "Zend OPcache" | |
| docker run -e ENABLE_XDEBUG=true kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | grep -i xdebug && exit 1 || echo "OK: xdebug not in prod" | |
| - name: Tests - Development Checks | |
| if: matrix.type == '' | |
| run: | | |
| docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | grep -i pcov | |
| docker run -e ENABLE_XDEBUG=true kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | grep -i xdebug | |
| - name: Build and push | |
| uses: docker/build-push-action@v6 | |
| if: github.ref == 'refs/heads/master' && github.repository == 'kool-dev/docker-php' | |
| with: | |
| context: ${{ matrix.version }}${{ matrix.type }} | |
| platforms: linux/amd64,linux/arm64 | |
| push: true | |
| tags: kooldev/php:${{ matrix.version }}${{ matrix.type }} | |
| # =========================================== | |
| # Alpine Nginx Images (Phase 2 - depends on base) | |
| # =========================================== | |
| build-alpine-nginx: | |
| runs-on: ubuntu-latest | |
| needs: build-alpine-base | |
| strategy: | |
| matrix: | |
| version: ["8.1", "8.2", "8.3", "8.4"] | |
| type: ["", "-prod"] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5.0.0 | |
| - name: Setup QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| - name: Setup Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Login to DockerHub | |
| uses: docker/login-action@v3 | |
| if: github.ref == 'refs/heads/master' && github.repository == 'kool-dev/docker-php' | |
| with: | |
| username: ${{ secrets.DOCKER_USERNAME }} | |
| password: ${{ secrets.DOCKER_PASSWORD }} | |
| - name: Build and export to Docker (nginx) | |
| uses: docker/build-push-action@v6 | |
| with: | |
| context: ${{ matrix.version }}-nginx${{ matrix.type }} | |
| load: true | |
| tags: kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} | |
| - name: Tests (nginx) - Basic | |
| run: | | |
| docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -v | |
| docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} composer -V | |
| docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} composer1 -V | |
| docker run -e ASUSER=1000 kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -v | |
| docker run -e ASUSER=1000 kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} composer -V | |
| docker run -e ASUSER=1000 kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} composer1 -V | |
| docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | grep readline | |
| docker run -e ENABLE_XDEBUG=true kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | |
| docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} nginx -v | |
| docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} nginx -T | |
| docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} supervisord --version | |
| - name: Tests (nginx) - Dockerize | |
| run: | | |
| docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} dockerize --version | |
| docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} sh -c 'echo "{{ .Env.TEST_VAR }}" > /tmp/test.tmpl && TEST_VAR=hello dockerize -template /tmp/test.tmpl:/tmp/test.out && cat /tmp/test.out | grep hello' | |
| - name: Tests (nginx) - PHP Extensions | |
| run: | | |
| docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | grep -i bcmath | |
| docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | grep -i gd | |
| docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | grep -i intl | |
| docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | grep -i pdo_mysql | |
| docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | grep -i pdo_pgsql | |
| docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | grep -i redis | |
| docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | grep -i zip | |
| docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | grep -i mbstring | |
| docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | grep -i ldap | |
| - name: Tests (nginx) - Production Checks | |
| if: matrix.type == '-prod' | |
| run: | | |
| docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | grep -i "Zend OPcache" | |
| docker run -e ENABLE_XDEBUG=true kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | grep -i xdebug && exit 1 || echo "OK: xdebug not in prod" | |
| - name: Tests (nginx) - Development Checks | |
| if: matrix.type == '' | |
| run: | | |
| docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | grep -i pcov | |
| docker run -e ENABLE_XDEBUG=true kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | grep -i xdebug | |
| - name: Build and push (nginx) | |
| uses: docker/build-push-action@v6 | |
| if: github.ref == 'refs/heads/master' && github.repository == 'kool-dev/docker-php' | |
| with: | |
| context: ${{ matrix.version }}-nginx${{ matrix.type }} | |
| platforms: linux/amd64,linux/arm64 | |
| push: true | |
| tags: kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} | |
| # =========================================== | |
| # Alpine Node Images (Phase 2 - depends on base) | |
| # =========================================== | |
| build-alpine-node: | |
| runs-on: ubuntu-latest | |
| needs: build-alpine-base | |
| strategy: | |
| matrix: | |
| version: ["8.1", "8.2", "8.3", "8.4"] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5.0.0 | |
| - name: Setup QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| - name: Setup Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Login to DockerHub | |
| uses: docker/login-action@v3 | |
| if: github.ref == 'refs/heads/master' && github.repository == 'kool-dev/docker-php' | |
| with: | |
| username: ${{ secrets.DOCKER_USERNAME }} | |
| password: ${{ secrets.DOCKER_PASSWORD }} | |
| - name: Build and export to Docker (Node) | |
| uses: docker/build-push-action@v6 | |
| with: | |
| context: ${{ matrix.version }}-node | |
| load: true | |
| tags: kooldev/php:${{ matrix.version }}-node | |
| - name: Tests (Node) | |
| run: | | |
| docker run kooldev/php:${{ matrix.version }}-node node -v | |
| docker run kooldev/php:${{ matrix.version }}-node npm -v | |
| docker run kooldev/php:${{ matrix.version }}-node yarn -v | |
| - name: Build and push (Node) | |
| uses: docker/build-push-action@v6 | |
| if: github.ref == 'refs/heads/master' && github.repository == 'kool-dev/docker-php' | |
| with: | |
| context: ${{ matrix.version }}-node | |
| platforms: linux/amd64,linux/arm64 | |
| push: true | |
| tags: kooldev/php:${{ matrix.version }}-node | |
| # =========================================== | |
| # Debian Base Images (Phase 1) | |
| # =========================================== | |
| build-debian-base: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| type: ["", "-prod"] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5.0.0 | |
| - name: Setup QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| - name: Setup Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Login to DockerHub | |
| uses: docker/login-action@v3 | |
| if: github.ref == 'refs/heads/master' && github.repository == 'kool-dev/docker-php' | |
| with: | |
| username: ${{ secrets.DOCKER_USERNAME }} | |
| password: ${{ secrets.DOCKER_PASSWORD }} | |
| - name: Build and export to Docker (Debian base) | |
| uses: docker/build-push-action@v6 | |
| with: | |
| context: 8.4-debian${{ matrix.type }} | |
| load: true | |
| tags: kooldev/php:8.4-debian${{ matrix.type }} | |
| - name: Tests (Debian) - Basic | |
| run: | | |
| docker run kooldev/php:8.4-debian${{ matrix.type }} php -v | |
| docker run kooldev/php:8.4-debian${{ matrix.type }} composer -V | |
| docker run kooldev/php:8.4-debian${{ matrix.type }} composer1 -V | |
| docker run -e ASUSER=1000 kooldev/php:8.4-debian${{ matrix.type }} php -v | |
| docker run -e ASUSER=1000 kooldev/php:8.4-debian${{ matrix.type }} composer -V | |
| docker run -e ASUSER=1000 kooldev/php:8.4-debian${{ matrix.type }} composer1 -V | |
| docker run kooldev/php:8.4-debian${{ matrix.type }} php -m | grep readline | |
| docker run -e ENABLE_XDEBUG=true kooldev/php:8.4-debian${{ matrix.type }} php -m | |
| - name: Tests (Debian) - Dockerize | |
| run: | | |
| docker run kooldev/php:8.4-debian${{ matrix.type }} dockerize --version | |
| docker run kooldev/php:8.4-debian${{ matrix.type }} bash -c 'echo "{{ .Env.TEST_VAR }}" > /tmp/test.tmpl && TEST_VAR=hello dockerize -template /tmp/test.tmpl:/tmp/test.out && cat /tmp/test.out | grep hello' | |
| - name: Tests (Debian) - Gosu user switching | |
| run: | | |
| docker run kooldev/php:8.4-debian${{ matrix.type }} gosu --version | |
| docker run -e ASUSER=1000 kooldev/php:8.4-debian${{ matrix.type }} id | grep "uid=1000" | |
| - name: Tests (Debian) - PHP Extensions | |
| run: | | |
| docker run kooldev/php:8.4-debian${{ matrix.type }} php -m | grep -i bcmath | |
| docker run kooldev/php:8.4-debian${{ matrix.type }} php -m | grep -i gd | |
| docker run kooldev/php:8.4-debian${{ matrix.type }} php -m | grep -i intl | |
| docker run kooldev/php:8.4-debian${{ matrix.type }} php -m | grep -i pdo_mysql | |
| docker run kooldev/php:8.4-debian${{ matrix.type }} php -m | grep -i pdo_pgsql | |
| docker run kooldev/php:8.4-debian${{ matrix.type }} php -m | grep -i redis | |
| docker run kooldev/php:8.4-debian${{ matrix.type }} php -m | grep -i zip | |
| docker run kooldev/php:8.4-debian${{ matrix.type }} php -m | grep -i mbstring | |
| docker run kooldev/php:8.4-debian${{ matrix.type }} php -m | grep -i ldap | |
| - name: Tests (Debian) - Production Checks | |
| if: matrix.type == '-prod' | |
| run: | | |
| docker run kooldev/php:8.4-debian${{ matrix.type }} php -m | grep -i "Zend OPcache" | |
| docker run -e ENABLE_XDEBUG=true kooldev/php:8.4-debian${{ matrix.type }} php -m | grep -i xdebug && exit 1 || echo "OK: xdebug not in prod" | |
| - name: Tests (Debian) - Development Checks | |
| if: matrix.type == '' | |
| run: | | |
| docker run kooldev/php:8.4-debian${{ matrix.type }} php -m | grep -i pcov | |
| docker run -e ENABLE_XDEBUG=true kooldev/php:8.4-debian${{ matrix.type }} php -m | grep -i xdebug | |
| - name: Build and push (Debian base) | |
| uses: docker/build-push-action@v6 | |
| if: github.ref == 'refs/heads/master' && github.repository == 'kool-dev/docker-php' | |
| with: | |
| context: 8.4-debian${{ matrix.type }} | |
| platforms: linux/amd64,linux/arm64 | |
| push: true | |
| tags: kooldev/php:8.4-debian${{ matrix.type }} | |
| # =========================================== | |
| # Debian Nginx Images (Phase 2 - depends on base) | |
| # =========================================== | |
| build-debian-nginx: | |
| runs-on: ubuntu-latest | |
| needs: build-debian-base | |
| strategy: | |
| matrix: | |
| type: ["", "-prod"] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5.0.0 | |
| - name: Setup QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| - name: Setup Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Login to DockerHub | |
| uses: docker/login-action@v3 | |
| if: github.ref == 'refs/heads/master' && github.repository == 'kool-dev/docker-php' | |
| with: | |
| username: ${{ secrets.DOCKER_USERNAME }} | |
| password: ${{ secrets.DOCKER_PASSWORD }} | |
| - name: Build and export to Docker (Debian nginx) | |
| uses: docker/build-push-action@v6 | |
| with: | |
| context: 8.4-debian-nginx${{ matrix.type }} | |
| load: true | |
| tags: kooldev/php:8.4-debian-nginx${{ matrix.type }} | |
| - name: Tests (Debian nginx) - Basic | |
| run: | | |
| docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} php -v | |
| docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} composer -V | |
| docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} composer1 -V | |
| docker run -e ASUSER=1000 kooldev/php:8.4-debian-nginx${{ matrix.type }} php -v | |
| docker run -e ASUSER=1000 kooldev/php:8.4-debian-nginx${{ matrix.type }} composer -V | |
| docker run -e ASUSER=1000 kooldev/php:8.4-debian-nginx${{ matrix.type }} composer1 -V | |
| docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | grep readline | |
| docker run -e ENABLE_XDEBUG=true kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | |
| docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} nginx -v | |
| docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} nginx -T | |
| docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} supervisord version | |
| - name: Tests (Debian nginx) - Dockerize | |
| run: | | |
| docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} dockerize --version | |
| docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} bash -c 'echo "{{ .Env.TEST_VAR }}" > /tmp/test.tmpl && TEST_VAR=hello dockerize -template /tmp/test.tmpl:/tmp/test.out && cat /tmp/test.out | grep hello' | |
| - name: Tests (Debian nginx) - PHP Extensions | |
| run: | | |
| docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | grep -i bcmath | |
| docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | grep -i gd | |
| docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | grep -i intl | |
| docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | grep -i pdo_mysql | |
| docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | grep -i pdo_pgsql | |
| docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | grep -i redis | |
| docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | grep -i zip | |
| docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | grep -i mbstring | |
| docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | grep -i ldap | |
| - name: Tests (Debian nginx) - Production Checks | |
| if: matrix.type == '-prod' | |
| run: | | |
| docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | grep -i "Zend OPcache" | |
| docker run -e ENABLE_XDEBUG=true kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | grep -i xdebug && exit 1 || echo "OK: xdebug not in prod" | |
| - name: Tests (Debian nginx) - Development Checks | |
| if: matrix.type == '' | |
| run: | | |
| docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | grep -i pcov | |
| docker run -e ENABLE_XDEBUG=true kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | grep -i xdebug | |
| - name: Build and push (Debian nginx) | |
| uses: docker/build-push-action@v6 | |
| if: github.ref == 'refs/heads/master' && github.repository == 'kool-dev/docker-php' | |
| with: | |
| context: 8.4-debian-nginx${{ matrix.type }} | |
| platforms: linux/amd64,linux/arm64 | |
| push: true | |
| tags: kooldev/php:8.4-debian-nginx${{ matrix.type }} | |
| # =========================================== | |
| # Downstream Triggers (after all builds complete) | |
| # =========================================== | |
| trigger-build-wordpress: | |
| name: Trigger Wordpress Build | |
| runs-on: ubuntu-latest | |
| needs: [build-alpine-nginx, build-alpine-node, build-debian-nginx] | |
| steps: | |
| - name: Trigger build on kool-dev/docker-wordpress | |
| uses: benc-uk/workflow-dispatch@v1.2 | |
| if: github.ref == 'refs/heads/master' && github.repository == 'kool-dev/docker-php' | |
| with: | |
| workflow: CI/CD | |
| repo: kool-dev/docker-wordpress | |
| token: ${{ secrets.WORKFLOW_TOKEN }} | |
| trigger-extended-builds: | |
| name: Trigger Extended Builds | |
| runs-on: ubuntu-latest | |
| needs: [build-alpine-nginx, build-alpine-node, build-debian-nginx] | |
| strategy: | |
| matrix: | |
| image: | |
| - kool-dev/docker-php-sqlsrv | |
| - kool-dev/docker-php-swoole | |
| - kool-dev/docker-phpqa | |
| steps: | |
| - name: Trigger build on ${{ matrix.image }} | |
| uses: benc-uk/workflow-dispatch@v1.2 | |
| if: github.ref == 'refs/heads/master' && github.repository == 'kool-dev/docker-php' | |
| with: | |
| workflow: CI/CD | |
| ref: refs/heads/main | |
| repo: ${{ matrix.image }} | |
| token: ${{ secrets.WORKFLOW_TOKEN }} |