Skip to content

Build and publish images to Docker Hub #219

Build and publish images to Docker Hub

Build and publish images to Docker Hub #219

Workflow file for this run

##########################################################################
#
# WARNING: This file was generated by update.php.
#
# You can find the relevant template in the `/templates` folder.
#
name: Build and publish images to Docker Hub
on:
push:
branches:
- trunk
paths:
- 'config/**'
- 'entrypoint/**'
- 'images/**'
- '.github/workflows/docker-hub.yml'
workflow_dispatch:
# Once weekly On Sundays at 00:00 UTC.
schedule:
- cron: '0 0 * * 0'
env:
REGISTRY_USERNAME: garypendergast
REGISTRY_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
PACKAGE_REGISTRY_HOST:
PACKAGE_REGISTRY: wordpressdevelop
PR_TAG:
# Cancels all previous workflow runs for pull requests that have not completed.
concurrency:
# The concurrency group contains the workflow name and the branch name for pull requests
# or the commit hash for any other events.
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }}
cancel-in-progress: true
jobs:
build-php-images:
name: PHP ${{ matrix.php }} Image
runs-on: ubuntu-latest
strategy:
matrix:
php: [ '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3', '8.4' ]
env:
PHP_VERSION: ${{ matrix.php }}
PHP_LATEST: '8.2'
steps:
- name: Checkout repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Login to the package registry
run: |
echo "$REGISTRY_PASSWORD" | docker login $PACKAGE_REGISTRY_HOST -u "$REGISTRY_USERNAME" --password-stdin
- name: Build Docker image
run: docker build --build-arg PACKAGE_REGISTRY=$PACKAGE_REGISTRY --build-arg PR_TAG=$PR_TAG -t $PACKAGE_REGISTRY/php:$PHP_VERSION-fpm$PR_TAG images/$PHP_VERSION/php
- name: Log Docker images
run: docker images
- name: Push Docker image
run: docker push $PACKAGE_REGISTRY/php:$PHP_VERSION-fpm$PR_TAG
- name: Push image as latest
if: ${{ env.PHP_LATEST == env.PHP_VERSION }}
run: |
docker image tag $PACKAGE_REGISTRY/php:$PHP_VERSION-fpm$PR_TAG $PACKAGE_REGISTRY/php:latest$PR_TAG
docker images
docker push $PACKAGE_REGISTRY/php:latest$PR_TAG
build-phpunit-images:
name: PHPUnit on PHP ${{ matrix.php }}
runs-on: ubuntu-latest
needs: build-php-images
strategy:
matrix:
php: [ '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3', '8.4' ]
env:
PHP_VERSION: ${{ matrix.php }}
PHP_LATEST: '8.2'
steps:
- name: Checkout repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Login to the package registry
run: |
echo "$REGISTRY_PASSWORD" | docker login $PACKAGE_REGISTRY_HOST -u "$REGISTRY_USERNAME" --password-stdin
- name: Build Docker image
run: docker build --build-arg PACKAGE_REGISTRY=$PACKAGE_REGISTRY --build-arg PR_TAG=$PR_TAG -t $PACKAGE_REGISTRY/phpunit:$PHP_VERSION-fpm$PR_TAG images/$PHP_VERSION/phpunit
- name: Log Docker images
run: docker images
- name: Push Docker image
run: docker push $PACKAGE_REGISTRY/phpunit:$PHP_VERSION-fpm$PR_TAG
- name: Tag and push image as latest
if: ${{ env.PHP_LATEST == env.PHP_VERSION }}
run: |
docker image tag $PACKAGE_REGISTRY/phpunit:$PHP_VERSION-fpm$PR_TAG $PACKAGE_REGISTRY/phpunit:latest$PR_TAG
docker push $PACKAGE_REGISTRY/phpunit:latest$PR_TAG
build-specific-phpunit-images:
name: PHPUnit ${{ matrix.phpunit }}
runs-on: ubuntu-latest
needs: build-php-images
strategy:
matrix:
phpunit: [ '7-php-7.0', '6-php-7.0', '5-php-7.0', '7-php-7.1', '6-php-7.1', '8-php-7.2', '7-php-7.2', '6-php-7.2', '9-php-7.3', '8-php-7.3', '7-php-7.3', '6-php-7.3', '9-php-7.4', '8-php-7.4', '7-php-7.4', '9-php-8.0', '8-php-8.0', '9-php-8.1', '8-php-8.1', '9-php-8.2', '8-php-8.2', '9-php-8.3' ]
env:
PHPUNIT_VERSION: ${{ matrix.phpunit }}
steps:
- name: Checkout repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Login to the package registry
run: |
echo "$REGISTRY_PASSWORD" | docker login $PACKAGE_REGISTRY_HOST -u "$REGISTRY_USERNAME" --password-stdin
- name: Build Docker image
run: docker build --build-arg PACKAGE_REGISTRY=$PACKAGE_REGISTRY --build-arg PR_TAG=$PR_TAG -t $PACKAGE_REGISTRY/phpunit:$PHPUNIT_VERSION-fpm$PR_TAG images/phpunit/$PHPUNIT_VERSION
- name: Log Docker images
run: docker images
- name: Push Docker image
run: docker push $PACKAGE_REGISTRY/phpunit:$PHPUNIT_VERSION-fpm$PR_TAG
build-cli-images:
name: CLI on PHP ${{ matrix.php }}
runs-on: ubuntu-latest
needs: build-php-images
strategy:
matrix:
php: [ '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3', '8.4' ]
env:
PHP_VERSION: ${{ matrix.php }}
PHP_LATEST: '8.2'
steps:
- name: Checkout repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Login to the package registry
run: |
echo "$REGISTRY_PASSWORD" | docker login $PACKAGE_REGISTRY_HOST -u "$REGISTRY_USERNAME" --password-stdin
- name: Build Docker image
run: docker build --build-arg PACKAGE_REGISTRY=$PACKAGE_REGISTRY --build-arg PR_TAG=$PR_TAG -t $PACKAGE_REGISTRY/cli:$PHP_VERSION-fpm$PR_TAG images/$PHP_VERSION/cli
- name: Log Docker images
run: docker images
- name: Push Docker image
run: docker push $PACKAGE_REGISTRY/cli:$PHP_VERSION-fpm$PR_TAG
- name: Push image as latest
if: ${{ env.PHP_LATEST == env.PHP_VERSION }}
run: |
docker image tag $PACKAGE_REGISTRY/cli:$PHP_VERSION-fpm$PR_TAG $PACKAGE_REGISTRY/cli:latest$PR_TAG
docker push $PACKAGE_REGISTRY/cli:latest$PR_TAG