Refactor build container using a matrix

This commit is contained in:
Laurent Indermuehle 2024-06-06 22:16:55 +02:00
commit 77f707c564
No known key found for this signature in database
GPG key ID: 93FA944C9F34DD09
31 changed files with 180 additions and 594 deletions

View file

@ -23,16 +23,159 @@ jobs:
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 ${{ inputs.registry }}
- name: Log into registry ghcr.io
uses: docker/login-action@v2
with:
registry: ${{ inputs.registry }}
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
@ -42,9 +185,12 @@ jobs:
uses: docker/metadata-action@v4
with:
images:
"${{ inputs.registry }}\
" ghcr.io\
/${{ github.repository }}\
/${{ inputs.image_name }}"
/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
@ -59,7 +205,36 @@ jobs:
id: build-and-push
uses: docker/build-push-action@v3
with:
context: ${{ inputs.context }}
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 }}