community.mysql/.github/workflows/ansible-test-plugins.yml
2023-01-04 17:29:06 +01:00

172 lines
4.9 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 * * *'
env:
config_file: "tests/integration/targets/setup_controller/defaults/main.yml"
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 }})"
name: "Integration (Python: ${{ matrix.python }}, Ansible: ${{ matrix.ansible }}, Connector: ${{ matrix.connector }})"
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
db_engine_version:
# - mysql:5.7.40
- mysql:8.0.22
# - mariadb:10.4.24
# - mariadb:10.5.18
# - mariadb:10.8.3
ansible:
# - stable-2.12
# - stable-2.13
- stable-2.14
# - devel
python:
# - 3.6
# - 3.8
- 3.9
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.8.3
# connector: pymysql==0.7.10
- python: 3.6
ansible: stable-2.12
- python: 3.6
ansible: stable-2.13
- python: 3.6
ansible: stable-2.14
- python: 3.6
ansible: devel
- 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
services:
db_primary:
image: ${{ matrix.db_engine_version }}
env:
MARIADB_ROOT_PASSWORD: msandbox
MYSQL_ROOT_PASSWORD: msandbox
ports:
- 3307:3306
db_replica1:
image: ${{ matrix.db_engine_version }}
env:
MARIADB_ROOT_PASSWORD: msandbox
MYSQL_ROOT_PASSWORD: msandbox
ports:
- 3308:3306
options: >-
--server_id 2
db_replica2:
image: ${{ matrix.db_engine_version }}
env:
MARIADB_ROOT_PASSWORD: msandbox
MYSQL_ROOT_PASSWORD: msandbox
ports:
- 3309:3306
options: >-
--server_id 3
steps:
- name: 'Wait 20s for the service containers to be healthy'
run:
sleep 20;
- 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: >-
>&2 echo Setting db_engine_version to ${{ matrix.db_engine_version }}...;
sed -i 's/^db_engine_version:.*/db_engine_version: [${{ matrix.db_engine_version }}]/' ${{ env.config_file }}
>&2 echo Setting Connector version to ${{ matrix.connector }}...;
sed -i 's/^python_packages:.*/python_packages: [${{ matrix.connector }}]/' ${{ env.config_file }}
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