community.mysql/.github/workflows/ansible-test-plugins.yml
Laurent Indermuehle 41b408d71f
Fix indentation
2023-01-20 18:53:55 +01:00

639 lines
27 KiB
YAML

---
name: Plugins CI
on:
# push:
# paths:
# - 'plugins/**'
# - 'tests/**'
# - '.github/workflows/ansible-test-plugins.yml'
pull_request:
paths:
- 'plugins/**'
- 'tests/**'
- '.github/workflows/ansible-test-plugins.yml'
# schedule:
# - cron: '0 6 * * *'
jobs:
# sanity:
# name: "Sanity (Ansible: ${{ matrix.ansible }})"
# runs-on: ubuntu-20.04
# strategy:
# matrix:
# ansible:
# - stable-2.12
# - stable-2.13
# - stable-2.14
# - devel
# steps:
# - name: Perform sanity testing
# uses: ansible-community/ansible-test-gh-action@release/v1
# with:
# ansible-core-version: ${{ matrix.ansible }}
# testing-type: sanity
# pull-request-change-detection: true
integration:
name: "Integration (Python: ${{ matrix.python }}, Ansible: ${{ matrix.ansible }}, MySQL: ${{ matrix.db_engine_version }}, Connector: ${{ matrix.connector }})"
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
include:
# Before we can activate test with pymysql 1.0.2 we should debug the
# following plugins:
#
# mysql_query:
# test "Assert that create table IF NOT EXISTS is not changed with pymysql" failed
#
# mysql_replication:
# test "Assert that startreplica is not changed" failed
# ==================================================================
# MySQL 5.7 + Python 3.8
# ==================================================================
- ansible: stable-2.12
db_engine_version: mysql:5.7.40
python: '3.8'
connector: pymysql==0.7.11
docker_image: ghcr.io/laurent-indermuehle/test-container-my57-py38-pymysql0711:latest
- ansible: stable-2.12
db_engine_version: mysql:5.7.40
python: '3.8'
connector: pymysql==0.9.3
docker_image: ghcr.io/laurent-indermuehle/test-container-my57-py38-pymysql093:latest
- ansible: stable-2.12
db_engine_version: mysql:5.7.40
python: '3.8'
connector: mysqlclient==2.0.1
docker_image: ghcr.io/laurent-indermuehle/test-container-my57-py38-mysqlclient201:latest
- ansible: stable-2.13
db_engine_version: mysql:5.7.40
python: '3.8'
connector: pymysql==0.7.11
docker_image: ghcr.io/laurent-indermuehle/test-container-my57-py38-pymysql0711:latest
- ansible: stable-2.13
db_engine_version: mysql:5.7.40
python: '3.8'
connector: pymysql==0.9.3
docker_image: ghcr.io/laurent-indermuehle/test-container-my57-py38-pymysql093:latest
- ansible: stable-2.14
db_engine_version: mysql:5.7.40
python: '3.8'
connector: mysqlclient==2.0.1
docker_image: ghcr.io/laurent-indermuehle/test-container-my57-py38-mysqlclient201:latest
# ==================================================================
# MySQL 8 + Python 3.8
# ==================================================================
- ansible: stable-2.12
db_engine_version: mysql:8.0.31
python: '3.8'
connector: pymysql==0.9.3
docker_image: ghcr.io/laurent-indermuehle/test-container-my80-py38-pymysql093:latest
- ansible: stable-2.12
db_engine_version: mysql:8.0.31
python: '3.8'
connector: mysqlclient==2.0.1
docker_image: ghcr.io/laurent-indermuehle/test-container-my80-py38-mysqlclient201:latest
- ansible: stable-2.13
db_engine_version: mysql:8.0.31
python: '3.8'
connector: pymysql==0.9.3
docker_image: ghcr.io/laurent-indermuehle/test-container-my80-py38-pymysql093:latest
- ansible: stable-2.13
db_engine_version: mysql:8.0.31
python: '3.8'
connector: mysqlclient==2.0.1
docker_image: ghcr.io/laurent-indermuehle/test-container-my80-py38-mysqlclient201:latest
# ==================================================================
# MySQL 8 + Python 3.9
# ==================================================================
- ansible: stable-2.12
db_engine_version: mysql:8.0.31
python: '3.9'
connector: pymysql==0.9.3
docker_image: ghcr.io/laurent-indermuehle/test-container-my80-py39-pymysql093:latest
- ansible: stable-2.12
db_engine_version: mysql:8.0.31
python: '3.9'
connector: mysqlclient==2.0.3
docker_image: ghcr.io/laurent-indermuehle/test-container-my80-py39-mysqlclient203:latest
- ansible: stable-2.13
db_engine_version: mysql:8.0.31
python: '3.9'
connector: pymysql==0.9.3
docker_image: ghcr.io/laurent-indermuehle/test-container-my80-py39-pymysql093:latest
- ansible: stable-2.13
db_engine_version: mysql:8.0.31
python: '3.9'
connector: mysqlclient==2.0.3
docker_image: ghcr.io/laurent-indermuehle/test-container-my80-py39-mysqlclient203:latest
- ansible: stable-2.14
db_engine_version: mysql:8.0.31
python: '3.9'
connector: pymysql==0.9.3
docker_image: ghcr.io/laurent-indermuehle/test-container-my80-py39-pymysql093:latest
- ansible: stable-2.14
db_engine_version: mysql:8.0.31
python: '3.9'
connector: mysqlclient==2.0.3
docker_image: ghcr.io/laurent-indermuehle/test-container-my80-py39-mysqlclient203:latest
# ==================================================================
# MySQL 8 + Python 3.10
# ==================================================================
# - ansible: stable-2.12
# db_engine_version: mysql:8.0.31
# python: '3.10'
# connector: pymysql==1.0.2
# docker_image: ghcr.io/laurent-indermuehle/test-container-my80-py310-pymysql102:latest
- ansible: stable-2.12
db_engine_version: mysql:8.0.31
python: '3.10'
connector: mysqlclient==2.1.1
docker_image: ghcr.io/laurent-indermuehle/test-container-my80-py310-mysqlclient211:latest
# - ansible: stable-2.13
# db_engine_version: mysql:8.0.31
# python: '3.10'
# connector: pymysql==1.0.2
# docker_image: ghcr.io/laurent-indermuehle/test-container-my80-py310-pymysql102:latest
- ansible: stable-2.13
db_engine_version: mysql:8.0.31
python: '3.10'
connector: mysqlclient==2.1.1
docker_image: ghcr.io/laurent-indermuehle/test-container-my80-py310-mysqlclient211:latest
# - ansible: stable-2.14
# db_engine_version: mysql:8.0.31
# python: '3.10'
# connector: pymysql==1.0.2
# docker_image: ghcr.io/laurent-indermuehle/test-container-my80-py310-pymysql102:latest
- ansible: stable-2.14
db_engine_version: mysql:8.0.31
python: '3.10'
connector: mysqlclient==2.1.1
docker_image: ghcr.io/laurent-indermuehle/test-container-my80-py310-mysqlclient211:latest
# - ansible: devel
# db_engine_version: mysql:8.0.31
# python: '3.10'
# connector: pymysql==1.0.2
# docker_image: ghcr.io/laurent-indermuehle/test-container-my80-py310-pymysql102:latest
- ansible: devel
db_engine_version: mysql:8.0.31
python: '3.10'
connector: mysqlclient==2.1.1
docker_image: ghcr.io/laurent-indermuehle/test-container-my80-py310-mysqlclient211:latest
# ==================================================================
# MariaDB 10.3 + Python 3.8
# ==================================================================
- ansible: stable-2.12
db_engine_version: mariadb:10.4.27
python: '3.8'
connector: pymysql==0.9.3
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb103-py38-pymysql093:latest
- ansible: stable-2.12
db_engine_version: mariadb:10.4.27
python: '3.8'
connector: mysqlclient==2.0.1
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb103-py38-mysqlclient201:latest
- ansible: stable-2.12
db_engine_version: mariadb:10.5.18
python: '3.8'
connector: pymysql==0.9.3
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb103-py38-pymysql093:latest
- ansible: stable-2.12
db_engine_version: mariadb:10.5.18
python: '3.8'
connector: mysqlclient==2.0.1
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb103-py38-mysqlclient201:latest
- ansible: stable-2.13
db_engine_version: mariadb:10.4.27
python: '3.8'
connector: pymysql==0.9.3
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb103-py38-pymysql093:latest
- ansible: stable-2.13
db_engine_version: mariadb:10.4.27
python: '3.8'
connector: mysqlclient==2.0.1
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb103-py38-mysqlclient201:latest
- ansible: stable-2.13
db_engine_version: mariadb:10.5.18
python: '3.8'
connector: pymysql==0.9.3
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb103-py38-pymysql093:latest
- ansible: stable-2.13
db_engine_version: mariadb:10.5.18
python: '3.8'
connector: mysqlclient==2.0.1
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb103-py38-mysqlclient201:latest
# ==================================================================
# MariaDB 10.3 + Python 3.9
# ==================================================================
- ansible: stable-2.12
db_engine_version: mariadb:10.4.27
python: '3.9'
connector: pymysql==0.9.3
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb103-py39-pymysql093:latest
- ansible: stable-2.12
db_engine_version: mariadb:10.4.27
python: '3.9'
connector: mysqlclient==2.0.3
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb103-py39-mysqlclient203:latest
- ansible: stable-2.12
db_engine_version: mariadb:10.5.18
python: '3.9'
connector: pymysql==0.9.3
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb103-py39-pymysql093:latest
- ansible: stable-2.12
db_engine_version: mariadb:10.5.18
python: '3.9'
connector: mysqlclient==2.0.3
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb103-py39-mysqlclient203:latest
- ansible: stable-2.13
db_engine_version: mariadb:10.4.27
python: '3.9'
connector: pymysql==0.9.3
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb103-py39-pymysql093:latest
- ansible: stable-2.13
db_engine_version: mariadb:10.4.27
python: '3.9'
connector: mysqlclient==2.0.3
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb103-py39-mysqlclient203:latest
- ansible: stable-2.13
db_engine_version: mariadb:10.5.18
python: '3.9'
connector: pymysql==0.9.3
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb103-py39-pymysql093:latest
- ansible: stable-2.13
db_engine_version: mariadb:10.5.18
python: '3.9'
connector: mysqlclient==2.0.3
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb103-py39-mysqlclient203:latest
- ansible: stable-2.14
db_engine_version: mariadb:10.4.27
python: '3.9'
connector: pymysql==0.9.3
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb103-py39-pymysql093:latest
- ansible: stable-2.14
db_engine_version: mariadb:10.4.27
python: '3.9'
connector: mysqlclient==2.0.3
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb103-py39-mysqlclient203:latest
- ansible: stable-2.14
db_engine_version: mariadb:10.5.18
python: '3.9'
connector: pymysql==0.9.3
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb103-py39-pymysql093:latest
- ansible: stable-2.14
db_engine_version: mariadb:10.5.18
python: '3.9'
connector: mysqlclient==2.0.3
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb103-py39-mysqlclient203:latest
# ==================================================================
# MariaDB 10.6 + Python 3.10
# ==================================================================
- ansible: stable-2.12
db_engine_version: mariadb:10.5.18
python: '3.10'
connector: pymysql==1.0.2
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-pymysql102:latest
- ansible: stable-2.12
db_engine_version: mariadb:10.5.18
python: '3.10'
connector: mysqlclient==2.1.1
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-mysqlclient211:latest
# - ansible: stable-2.12
# db_engine_version: mariadb:10.6.11
# python: '3.10'
# connector: pymysql==1.0.2
# docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-pymysql102:latest
- ansible: stable-2.12
db_engine_version: mariadb:10.6.11
python: '3.10'
connector: mysqlclient==2.1.1
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-mysqlclient211:latest
# - ansible: stable-2.12
# db_engine_version: mariadb:10.7.7
# python: '3.10'
# connector: pymysql==1.0.2
# docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-pymysql102:latest
- ansible: stable-2.12
db_engine_version: mariadb:10.7.7
python: '3.10'
connector: mysqlclient==2.1.1
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-mysqlclient211:latest
# - ansible: stable-2.12
# db_engine_version: mariadb:10.8.3
# python: '3.10'
# connector: pymysql==1.0.2
# docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-pymysql102:latest
- ansible: stable-2.12
db_engine_version: mariadb:10.8.3
python: '3.10'
connector: mysqlclient==2.1.1
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-mysqlclient211:latest
# - ansible: stable-2.13
# db_engine_version: mariadb:10.5.18
# python: '3.10'
# connector: pymysql==1.0.2
# docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-pymysql102:latest
- ansible: stable-2.13
db_engine_version: mariadb:10.5.18
python: '3.10'
connector: mysqlclient==2.1.1
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-mysqlclient211-:latest
# - ansible: stable-2.13
# db_engine_version: mariadb:10.6.11
# python: '3.10'
# connector: pymysql==1.0.2
# docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-pymysql102:latest
- ansible: stable-2.13
db_engine_version: mariadb:10.6.11
python: '3.10'
connector: mysqlclient==2.1.1
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-mysqlclient211:latest
# - ansible: stable-2.13
# db_engine_version: mariadb:10.7.7
# python: '3.10'
# connector: pymysql==1.0.2
# docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-pymysql102:latest
- ansible: stable-2.13
db_engine_version: mariadb:10.7.7
python: '3.10'
connector: mysqlclient==2.1.1
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-mysqlclient211:latest
# - ansible: stable-2.13
# db_engine_version: mariadb:10.8.3
# python: '3.10'
# connector: pymysql==1.0.2
# docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-pymysql102:latest
- ansible: stable-2.13
db_engine_version: mariadb:10.8.3
python: '3.10'
connector: mysqlclient==2.1.1
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-mysqlclient211:latest
# - ansible: stable-2.14
# db_engine_version: mariadb:10.5.18
# python: '3.10'
# connector: pymysql==1.0.2
# docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-pymysql102:latest
- ansible: stable-2.14
db_engine_version: mariadb:10.5.18
python: '3.10'
connector: mysqlclient==2.1.1
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-mysqlclient211:latest
# - ansible: stable-2.14
# db_engine_version: mariadb:10.6.11
# python: '3.10'
# connector: pymysql==1.0.2
# docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-pymysql102:latest
- ansible: stable-2.14
db_engine_version: mariadb:10.6.11
python: '3.10'
connector: mysqlclient==2.1.1
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-mysqlclient211:latest
# - ansible: stable-2.14
# db_engine_version: mariadb:10.7.7
# python: '3.10'
# connector: pymysql==1.0.2
# docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-pymysql102:latest
- ansible: stable-2.14
db_engine_version: mariadb:10.7.7
python: '3.10'
connector: mysqlclient==2.1.1
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-mysqlclient211:latest
# - ansible: stable-2.14
# db_engine_version: mariadb:10.8.3
# python: '3.10'
# connector: pymysql==1.0.2
# docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-pymysql102:latest
- ansible: stable-2.14
db_engine_version: mariadb:10.8.3
python: '3.10'
connector: mysqlclient==2.1.1
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-mysqlclient211:latest
# - ansible: devel
# db_engine_version: mariadb:10.5.18
# python: '3.10'
# connector: pymysql==1.0.2
# docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-pymysql102:latest
- ansible: devel
db_engine_version: mariadb:10.5.18
python: '3.10'
connector: mysqlclient==2.1.1
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-mysqlclient211:latest
# - ansible: devel
# db_engine_version: mariadb:10.6.11
# python: '3.10'
# connector: pymysql==1.0.2
# docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-pymysql102:latest
- ansible: devel
db_engine_version: mariadb:10.6.11
python: '3.10'
connector: mysqlclient==2.1.1
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-mysqlclient211:latest
# - ansible: devel
# db_engine_version: mariadb:10.7.7
# python: '3.10'
# connector: pymysql==1.0.2
# docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310--pymysql102:latest
- ansible: devel
db_engine_version: mariadb:10.7.7
python: '3.10'
connector: mysqlclient==2.1.1
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-mysqlclient211:latest
# - ansible: devel
# db_engine_version: mariadb:10.8.3
# python: '3.10'
# connector: pymysql==1.0.2
# docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-pymysql102:latest
- ansible: devel
db_engine_version: mariadb:10.8.3
python: '3.10'
connector: mysqlclient==2.1.1
docker_image: ghcr.io/laurent-indermuehle/test-container-mariadb106-py310-mysqlclient211:latest
# db_engine_version:
# - mysql:5.7.40
# - mysql:8.0.31
# - mariadb:10.4.24
# - mariadb:10.5.18
# - mariadb:10.6.11
# - mariadb:10.7.7
# - mariadb:10.8.3
# ansible:
# - stable-2.12
# - stable-2.13
# - stable-2.14
# - devel
# python:
# - "3.8"
# - "3.9"
# - "3.10" # Without quotes, this become 3.1 in run_all_test.py!
# connector:
# - pymysql==0.7.10
# - pymysql==0.9.3
# - mysqlclient==2.0.1
# exclude:
# - db_engine_version: mysql:8.0.22
# connector: pymysql==0.7.10
# - db_engine_version: mariadb:10.4.24
# connector: pymysql==0.7.10
# - db_engine_version: mariadb:10.5.18
# connector: pymysql==0.7.10
# - db_engine_version: mariadb:10.8.3
# connector: pymysql==0.7.10
# - python: '3.8'
# ansible: stable-2.13
# - python: '3.8'
# ansible: stable-2.14
# - python: '3.8'
# ansible: devel
# - python: '3.9'
# ansible: stable-2.12
# - python: '3.9'
# connector: mysqlclient==2.0.1
# - python: '3.10'
# ansible: stable-2.12
services:
db_primary:
image: ${{ matrix.db_engine_version }}
env:
MARIADB_ROOT_PASSWORD: msandbox
MYSQL_ROOT_PASSWORD: msandbox
ports:
- 3307:3306
# We write our own health-cmd because the mariadb container does not
# provide a healthcheck
options: >-
--health-cmd "mysqladmin ping -P 3306 -pmsandbox |grep alive || exit 1"
--health-start-period 10s
--health-interval 10s
--health-timeout 5s
--health-retries 6
db_replica1:
image: ${{ matrix.db_engine_version }}
env:
MARIADB_ROOT_PASSWORD: msandbox
MYSQL_ROOT_PASSWORD: msandbox
ports:
- 3308:3306
options: >-
--health-cmd "mysqladmin ping -P 3306 -pmsandbox |grep alive || exit 1"
--health-start-period 10s
--health-interval 10s
--health-timeout 5s
--health-retries 6
db_replica2:
image: ${{ matrix.db_engine_version }}
env:
MARIADB_ROOT_PASSWORD: msandbox
MYSQL_ROOT_PASSWORD: msandbox
ports:
- 3309:3306
options: >-
--health-cmd "mysqladmin ping -P 3306 -pmsandbox |grep alive || exit 1"
--health-start-period 10s
--health-interval 10s
--health-timeout 5s
--health-retries 6
steps:
# No need to check for service health. GitHub Action took care of it.
- name: Restart MySQL server with settings for replication
run: |
docker exec ${{ job.services.db_primary.id }} bash -c 'echo -e [mysqld]\\nserver-id=1\\nlog-bin=/var/lib/mysql/primary-bin > /etc/mysql/conf.d/replication.cnf'
docker exec ${{ job.services.db_replica1.id }} bash -c 'echo -e [mysqld]\\nserver-id=2\\nlog-bin=/var/lib/mysql/replica1-bin > /etc/mysql/conf.d/replication.cnf'
docker exec ${{ job.services.db_replica2.id }} bash -c 'echo -e [mysqld]\\nserver-id=3\\nlog-bin=/var/lib/mysql/replica2-bin > /etc/mysql/conf.d/replication.cnf'
docker restart -t 30 ${{ job.services.db_primary.id }}
docker restart -t 30 ${{ job.services.db_replica1.id }}
docker restart -t 30 ${{ job.services.db_replica2.id }}
- name: Wait for the primary to be healthy
run: |
while ! /usr/bin/docker inspect --format="{{if .Config.Healthcheck}}{{print .State.Health.Status}}{{end}}" ${{ job.services.db_primary.id }} | grep healthy && [[ "$SECONDS" -lt 120 ]]; do sleep 1; done
- name: >-
Perform integration testing against
Ansible version ${{ matrix.ansible }}
under Python ${{ matrix.python }}
uses: ansible-community/ansible-test-gh-action@release/v1
with:
ansible-core-version: ${{ matrix.ansible }}
pre-test-cmd: >-
echo Setting db_engine_version to "${{ matrix.db_engine_version }}"...;
echo -n "${{ matrix.db_engine_version }}" > tests/integration/db_engine_version;
echo Setting Connector version to "${{ matrix.connector }}"...;
echo -n "${{ matrix.connector }}" > tests/integration/connector;
echo Setting Python version to "${{ matrix.python }}"...;
echo -n "${{ matrix.python }}" > tests/integration/python;
echo Setting Ansible version to "${{ matrix.ansible }}"...;
echo -n "${{ matrix.ansible }}" > tests/integration/ansible
docker-image: ${{ matrix.docker_image }}
target-python-version: ${{ matrix.python }}
testing-type: integration
# units:
# runs-on: ubuntu-20.04
# name: Units (Ⓐ${{ matrix.ansible }})
# strategy:
# # As soon as the first unit test fails,
# # cancel the others to free up the CI queue
# fail-fast: true
# matrix:
# ansible:
# - stable-2.12
# - stable-2.13
# - stable-2.14
# - devel
# python:
# - 3.8
# - 3.9
# exclude:
# - python: '3.8'
# ansible: stable-2.13
# - python: '3.8'
# ansible: stable-2.14
# - python: '3.8'
# ansible: devel
# - python: '3.9'
# ansible: stable-2.12
# steps:
# - name: >-
# Perform unit testing against
# Ansible version ${{ matrix.ansible }}
# uses: ansible-community/ansible-test-gh-action@release/v1
# with:
# ansible-core-version: ${{ matrix.ansible }}
# target-python-version: ${{ matrix.python }}
# testing-type: units
# pull-request-change-detection: true