community.mysql/.github/workflows/docker-image-my80-py310-pymysql102.yml
Laurent Indermuehle 095ed0ad2e
Split Docker image workflow to rebuild only changed Dockerfile
My goal is not to save the planet but to make it work. Currently
docker/setup-buildx-action@v2 often fails. You have to rerun the
workflow multiple times until it succeed. When you do that with the
matrix with 15 containers, you never get to the point where they all
built successfully. Having separate workflows makes rerun the failing
build easier.
2023-01-23 09:18:36 +01:00

68 lines
2 KiB
YAML

---
name: Docker Image CI my80-py310-pymysql102
on:
push:
branch:
- main
- lie_tests_using_containers
paths:
- 'test-containers/my80-py310-pymysql102/**'
- '.github/workflows/docker-image-my80-py310-pymysql102.yml'
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.actor }}/test-container-my80-py310-pymysql102
CONTEXT: test-containers/my80-py310-pymysql102
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v3
# https://github.com/docker/login-action
- name: Log into registry ${{ env.REGISTRY }}
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
# https://github.com/docker/metadata-action
- name: Extract Docker metadata (tags, labels)
id: meta
uses: docker/metadata-action@v4
with:
images:
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
# Setting up Docker Buildx with docker-container driver is required
# at the moment to be able to use a subdirectory with Git context
#
# https://github.com/docker/setup-buildx-action
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
with:
# Use the previous version of buildx https://github.com/docker/buildx/releases
# to solve https://github.com/docker/build-push-action/issues/761
version: v0.9.1
# https://github.com/docker/build-push-action
- name: Build and push Docker image with Buildx
id: build-and-push
uses: docker/build-push-action@v3
with:
context: ${{ env.CONTEXT }}
push: true
tags: ${{ steps.meta.outputs.tags }},${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max