Skip to content

Changes

Changes #53

name: Build and Push Docker image
env:
PHP_VERSION: 8.3
on:
push:
branches:
- main
schedule:
- cron: '0 0 * * 1'
jobs:
build:
permissions:
contents: write
packages: write
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GitLab Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Pull Base Image for Comparison
run: docker pull wordpress:php${{ env.PHP_VERSION }}-fpm-alpine || true
- name: Pull Last Built Image for Comparison
run: docker pull ghcr.io/hueske-digital/wordpress:latest || true
- name: Check if base image has changed
id: check_layer
run: |
last_layer_base=$(docker inspect --format='{{range .RootFS.Layers}}{{.}} {{end}}' wordpress:php${{ env.PHP_VERSION }}-fpm-alpine | awk '{print $NF}')
last_layer_current=$(docker inspect --format='{{range .RootFS.Layers}}{{.}} {{end}}' ghcr.io/hueske-digital/wordpress:latest | awk '{print $NF}')
if echo $last_layer_base | grep -q $last_layer_current; then
echo "image_changed=false" >> $GITHUB_ENV
echo "Der letzte Layer von $image1 ist ein Bestandteil von $image2."
else
echo "image_changed=true" >> $GITHUB_ENV
echo "Der letzte Layer von $image1 ist kein Bestandteil von $image2."
fi
- name: Build and push Docker image
if: env.image_changed == 'true'
uses: docker/build-push-action@v3
with:
push: true
context: ./build
tags: ghcr.io/hueske-digital/wordpress:latest
platforms: linux/amd64,linux/arm64
build-args: |
PHP_VERSION=${{ env.PHP_VERSION }}
- name: Do not automatically disable workflow execution
uses: gautamkrishnar/keepalive-workflow@v1