--- name: Build Docker Image for ansible-test on: # yamllint disable-line rule:truthy workflow_call: inputs: registry: required: true type: string image_name: required: true type: string context: required: true type: string jobs: build: runs-on: ubuntu-latest permissions: contents: read packages: write strategy: fail-fast: false matrix: include: - from: ubuntu2004 db_client: mariadb python_minor: '8' connector_name: pymysql connector_major: '0' connector_minor: '9' connector_release: '3' - from: ubuntu2004 db_client: mariadb python_minor: '8' connector_name: mysqlclient connector_major: '2' connector_minor: '0' connector_release: '1' - from: ubuntu2204 db_client: mariadb python_minor: '9' # RHEL9 uses 3.9 by default connector_name: pymysql # Same ver. as RHEL package python3-PyMySQL connector_major: '0' connector_minor: '10' connector_release: '1' - from: ubuntu2004 db_client: mariadb python_minor: '9' connector_name: mysqlclient connector_major: '2' connector_minor: '0' connector_release: '3' - from: ubuntu2204 db_client: mariadb python_minor: '10' connector_name: pymysql connector_major: '1' connector_minor: '0' connector_release: '2' - from: ubuntu2204 db_client: mariadb python_minor: '10' connector_name: mysqlclient connector_major: '2' connector_minor: '1' connector_release: '1' - from: ubuntu2204 db_client: mariadb python_minor: '11' # RHEL9 uses 3.9 by default connector_name: pymysql # Same ver. as RHEL package python3.11-PyMySQL connector_major: '1' connector_minor: '0' connector_release: '2' - from: ubuntu2204 db_client: mariadb python_minor: '12' # RHEL9 uses 3.9 by default connector_name: pymysql # Same ver. as RHEL package python3.12-PyMySQL connector_major: '1' connector_minor: '1' connector_release: '0' - from: ubuntu2004 db_client: mysql python_minor: '8' connector_name: pymysql connector_major: '0' connector_minor: '9' connector_release: '3' - from: ubuntu2004 db_client: mysql python_minor: '8' connector_name: mysqlclient connector_major: '2' connector_minor: '0' connector_release: '1' - from: ubuntu2004 db_client: mysql python_minor: '9' connector_name: pymysql connector_major: '0' connector_minor: '10' connector_release: '1' - from: ubuntu2004 db_client: mysql python_minor: '9' connector_name: mysqlclient connector_major: '2' connector_minor: '0' connector_release: '3' - from: ubuntu2204 db_client: mysql python_minor: '10' connector_name: pymysql connector_major: '1' connector_minor: '0' connector_release: '2' - from: ubuntu2204 db_client: mysql python_minor: '10' connector_name: mysqlclient connector_major: '2' connector_minor: '1' connector_release: '1' - from: ubuntu2204 db_client: mysql python_minor: '11' # RHEL9 uses 3.9 by default connector_name: pymysql # Same ver. as RHEL package python3.11-PyMySQL connector_major: '1' connector_minor: '0' connector_release: '2' - from: ubuntu2204 db_client: mysql python_minor: '12' # RHEL9 uses 3.9 by default connector_name: pymysql # Same ver. as RHEL package python3.12-PyMySQL connector_major: '1' connector_minor: '1' connector_release: '0' env: connector_version: "${{ matrix.connector_major }}.\ ${{ matrix.connector_minor }}.\ ${{ matrix.connector_release }}" steps: # Requirement to use 'context' in docker/build-push-action@v3 - name: Checkout repository uses: actions/checkout@v3 # https://github.com/docker/login-action - name: Log into registry ghcr.io uses: docker/login-action@v2 with: registry: ghcr.io 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: " ghcr.io\ /${{ github.repository }}\ /test-container-${{ matrix.db_client }}-\ py3${{ matrix.python_minor }}-\ ${{ matrix.connector_name }}${{ matrix.connector_major }}\ ${{ matrix.connector_minor }}${{ matrix.connector_release }}" tags: latest # 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 # 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: | FROM quay.io/ansible/${{ matrix.from }}-test-container:main RUN apt-get update -y && \ DEBIAN_FRONTEND=noninteractive apt-get upgrade -y \ --no-install-recommends && \ DEBIAN_FRONTEND=noninteractive apt-get install -y \ --no-install-recommends \ python3${{ matrix.python_minor }} \ python3${{ matrix.python_minor }}-dev \ iproute2 \ build-essential \ if [[ "${{ matrix.db_client }}" == "mysql" ]]; then RUN DEBIAN_FRONTEND=noninteractive apt-get install -y \ --no-install-recommends default-libmysqlclient-dev \ mysql-client else RUN DEBIAN_FRONTEND=noninteractive apt-get install -y \ --no-install-recommends mariadb-client fi RUN python3${{ matrix.python_minor }} -m pip install \ --disable-pip-version-check \ --no-cache-dir \ cffi \ ${{ matrix.connector_name }}==$connector_version ENV container=docker CMD ["/sbin/init"] push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha cache-to: type=gha,mode=max