mirror of
https://github.com/ansible-collections/community.mysql.git
synced 2025-04-06 10:40:36 -07:00
242 lines
7.3 KiB
YAML
242 lines
7.3 KiB
YAML
---
|
|
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
|