Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Integrations tests : Use containers for more control and verify that versions match expectation #490

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
243 commits
Select commit Hold shift + click to select a range
86188a2
Draft: Add a mariadb container
laurent-indermuehle Dec 5, 2022
5bd358e
Add playbook to test connection to the server
laurent-indermuehle Dec 5, 2022
d781636
Add healthcheck to MariaDB before starting the tests
laurent-indermuehle Dec 9, 2022
8c58068
Add default file for root necessary since using venv instead of docker
laurent-indermuehle Dec 9, 2022
c895a86
Add % instead of the default 'localhost' since we use remote connection
laurent-indermuehle Dec 9, 2022
f2c2173
Add ansible-test integration inventory to .gitignore
laurent-indermuehle Dec 9, 2022
d06cefa
Revert to old workflow to use ansible-test --venv
laurent-indermuehle Dec 9, 2022
d98aa89
Cut target filtering
laurent-indermuehle Dec 9, 2022
01e664f
Fix comparison
laurent-indermuehle Dec 9, 2022
eec9f97
Add path to default-file
laurent-indermuehle Dec 9, 2022
574fef5
Merge branch 'main' into lie_tests_using_containers
laurent-indermuehle Dec 9, 2022
634d1fb
Fix workflow unknown option container_name
laurent-indermuehle Dec 9, 2022
2149261
Attempt GHA communication between container using "docker host network"
laurent-indermuehle Jan 3, 2023
589a0de
Cut anchors currently unsupported by GHA
laurent-indermuehle Jan 3, 2023
60c87ab
Disable healthcheck
laurent-indermuehle Jan 3, 2023
8652a9a
Disable sanity, units and matrix to speed up tests in GHA
laurent-indermuehle Jan 3, 2023
cd9f216
Further disable tests to speed up
laurent-indermuehle Jan 3, 2023
0cd57ad
Add mysql_client to the controller
laurent-indermuehle Jan 3, 2023
676509e
Install mysql_client the correct way
laurent-indermuehle Jan 3, 2023
0666669
Fix package name and missing apt cache
laurent-indermuehle Jan 3, 2023
b72ca0d
Prepare controller with Podman/Docker Network
laurent-indermuehle Jan 4, 2023
4b6617a
Swap MariaDB with MySQL
laurent-indermuehle Jan 4, 2023
90266f1
De-duplicate the mysql_command alias
laurent-indermuehle Jan 4, 2023
b821db9
Generalize mysql and mariadb version based on container name
laurent-indermuehle Jan 4, 2023
c3458f4
Cut docker healthcheck unsupported by GHA
laurent-indermuehle Jan 4, 2023
1e03a25
Fix replication server_id already in use
laurent-indermuehle Jan 4, 2023
87acd3d
Add static test with replication containers
laurent-indermuehle Jan 4, 2023
72b3ecb
Fix database not selected
laurent-indermuehle Jan 4, 2023
17f8ece
Fix replication due to usage of gateway_addr instead of localhost
laurent-indermuehle Jan 4, 2023
1c863da
Simplify version computation
laurent-indermuehle Jan 4, 2023
405b809
Linting
laurent-indermuehle Jan 4, 2023
7049a28
Refactor setup_mysql into setup_controller
laurent-indermuehle Jan 4, 2023
9e3010d
Fix test_mysql_role
laurent-indermuehle Jan 4, 2023
2af8e4f
Fix server_id in GHA
laurent-indermuehle Jan 5, 2023
7cffcf3
Add back a package to connect to MySQL 8+
laurent-indermuehle Jan 5, 2023
978676a
Linting
laurent-indermuehle Jan 5, 2023
9da866a
Refactor test_mysql_user to work with other host than localhost
laurent-indermuehle Jan 5, 2023
98ce2af
Refactor way tests info are passed from sed to file with lookup
laurent-indermuehle Jan 5, 2023
1de0f2c
Fix missing var
laurent-indermuehle Jan 5, 2023
bc92ded
Refactor test to use the db_version from setup_controller
laurent-indermuehle Jan 5, 2023
95d26fa
Add temporary files to .gitignore
laurent-indermuehle Jan 5, 2023
cb1d820
Fix volume path
laurent-indermuehle Jan 5, 2023
46972bb
Fix volume path by adding a final /
laurent-indermuehle Jan 5, 2023
9c1b13c
Fix volume path using $(pwd)
laurent-indermuehle Jan 5, 2023
cac6af4
Fix volume path using github.workspace var
laurent-indermuehle Jan 5, 2023
2efa3c4
Cut files from gitignore because it prevents ansible-test to copy them
laurent-indermuehle Jan 5, 2023
3a12801
Fix pre-test-cmd missing separators
laurent-indermuehle Jan 5, 2023
a271a9b
Cut the newline added by lookup 'file'
laurent-indermuehle Jan 5, 2023
42fe4ba
Fix tailing newline by not created it in the first place
laurent-indermuehle Jan 5, 2023
a0a0493
Disable tests to concentrate on the \n and quote issue with my files
laurent-indermuehle Jan 6, 2023
1926808
Fix trailing newline and quote in db_engine_version
laurent-indermuehle Jan 6, 2023
9d3ce94
Re-enable integration tests to validate db_engine_version is fixed
laurent-indermuehle Jan 6, 2023
7ba0dbd
lint
laurent-indermuehle Jan 6, 2023
168de6b
Cut unused file
laurent-indermuehle Jan 6, 2023
897cb08
Fix pre-test-cmd paste in wrong context
laurent-indermuehle Jan 6, 2023
9872926
Re-enable service containers
laurent-indermuehle Jan 6, 2023
19e9116
Add back docker healthcheck on services
laurent-indermuehle Jan 6, 2023
10d497e
Add tmate to debug the server_id in replicas
laurent-indermuehle Jan 6, 2023
c5c32f7
Attempt to fix "invalid syntax"
laurent-indermuehle Jan 6, 2023
163a43b
Enclose command in quotes
laurent-indermuehle Jan 6, 2023
8d43f9e
Refactor the way server_id is set for replicas
laurent-indermuehle Jan 6, 2023
1e20611
Re-activate all tests
laurent-indermuehle Jan 6, 2023
06ca921
Cut useless task
laurent-indermuehle Jan 6, 2023
994c6ef
Use same variable as other target for consistency
laurent-indermuehle Jan 6, 2023
9b7fbdf
Linting
laurent-indermuehle Jan 6, 2023
9001b87
Update version tested
laurent-indermuehle Jan 6, 2023
3f64fb5
Add options to the makefile
laurent-indermuehle Jan 6, 2023
0b6569d
Add same variables as other target for consistency
laurent-indermuehle Jan 6, 2023
98dbc1e
Add IF NOT EXISTS to prevent misleading error on retry
laurent-indermuehle Jan 6, 2023
bcca4e8
Cut python 3.11 not supported by ansible-test yet
laurent-indermuehle Jan 6, 2023
7f69ead
Attempt to set log-bin into docker
laurent-indermuehle Jan 6, 2023
ac74898
Reformat for readability
laurent-indermuehle Jan 6, 2023
ae48ac7
Document that full version is mandatory
laurent-indermuehle Jan 6, 2023
ae0976c
Fix newline
laurent-indermuehle Jan 6, 2023
4abb304
Github complain it doesn't find python 3.1 !!!
laurent-indermuehle Jan 6, 2023
2e56d5b
Add option to run only a single target
laurent-indermuehle Jan 6, 2023
f8390aa
Fix mysqlclient not supporting Python 3.9
laurent-indermuehle Jan 9, 2023
a473e06
Enhance installation of mysql_client
laurent-indermuehle Jan 9, 2023
6adb71a
Linting
laurent-indermuehle Jan 9, 2023
b973849
Add unique name to simplify debugging
laurent-indermuehle Jan 9, 2023
9cb404b
Fix mysql_dump for MySQL 5.7 and MariaDB when using mysqldump 8
laurent-indermuehle Jan 9, 2023
a3c67c3
Add unique name to simplify debugging
laurent-indermuehle Jan 9, 2023
47a4b49
Deduplicate tasks
laurent-indermuehle Jan 9, 2023
d7db57c
Lining
laurent-indermuehle Jan 9, 2023
7fc8339
Add python script to recreate the test matrix from github workflow file
laurent-indermuehle Jan 9, 2023
ec76110
Fix dump with mysqldump 8 against mysql 5.7
laurent-indermuehle Jan 9, 2023
fb72e44
Disable test for replication with chanel for mysql 5.7
laurent-indermuehle Jan 9, 2023
6710113
Add better task name
laurent-indermuehle Jan 9, 2023
0494de3
Fix exclusion function
laurent-indermuehle Jan 9, 2023
ce8d166
Disable replication with channel tests entirely for MySQL 5.7
laurent-indermuehle Jan 9, 2023
f6e7b36
Activate Mysql 8 and Mariadb into GitHub Action Workflow
laurent-indermuehle Jan 9, 2023
e8d7de4
Cut Ansible since we can't change what the user have on his computer
laurent-indermuehle Jan 9, 2023
a646e76
Add running make command for all tests of the matrix
laurent-indermuehle Jan 9, 2023
91e76d1
Add unique test names
laurent-indermuehle Jan 10, 2023
05a6589
Document run_all_tests.py
laurent-indermuehle Jan 10, 2023
ae41a50
Add unique test names
laurent-indermuehle Jan 11, 2023
35531e7
Add tmate to experiment with docker healthcheck
laurent-indermuehle Jan 12, 2023
b9d0e96
Fix replication settings
laurent-indermuehle Jan 12, 2023
f79355f
Add TODO verify that the version of mysql/mariadb is correct
laurent-indermuehle Jan 12, 2023
3f0f4ff
Add more descriptive tests names
laurent-indermuehle Jan 12, 2023
39de75b
Use mysql_host var name instead of gateway_addr in tests
laurent-indermuehle Jan 12, 2023
4e0c048
Refactor user@<gateway ip addr> into user@%
laurent-indermuehle Jan 12, 2023
c3e079c
Fix healthcheck in GHA
laurent-indermuehle Jan 12, 2023
7fa1bf8
Disable tests that fails only on MariaDB
laurent-indermuehle Jan 12, 2023
85f24bd
Refactor to remove useless variables
laurent-indermuehle Jan 12, 2023
3b379d0
Workaround for plugin role that fails with any MariaDB versions
laurent-indermuehle Jan 12, 2023
3c621ea
Fix Python 3.10 beein run as 3.1
laurent-indermuehle Jan 12, 2023
b6160f3
Ensure replicas are healthy before rebooting them
laurent-indermuehle Jan 12, 2023
4f33b77
Enable all tests
laurent-indermuehle Jan 12, 2023
70e23b2
Add a virtualenv for ansible-test used locally
laurent-indermuehle Jan 13, 2023
199b7a5
Simplify connector_name variables
laurent-indermuehle Jan 13, 2023
db99524
Add PoC using custom ansible-test containers
laurent-indermuehle Jan 13, 2023
05b5f62
Fix docker_container variable name
laurent-indermuehle Jan 13, 2023
79ea9fe
Cut forgotten comment
laurent-indermuehle Jan 13, 2023
9bfd0a3
Fix error when using local registry by using quay.io
laurent-indermuehle Jan 13, 2023
5bc5ed1
Change tag of test-containers to latest
laurent-indermuehle Jan 16, 2023
fbb0290
Fix ansible-test unknown option
laurent-indermuehle Jan 16, 2023
8f0d1f5
Cut column-statistics disabling
laurent-indermuehle Jan 16, 2023
47806f1
Add manual test matrix (MariaDB 10.6, 10.7 and 10.8 missing)
laurent-indermuehle Jan 16, 2023
4d2a4ff
Fix test matrix
laurent-indermuehle Jan 16, 2023
075af8f
Reduce number of tests and adapt containers images
laurent-indermuehle Jan 17, 2023
06ed737
Fix queries for roles
laurent-indermuehle Jan 17, 2023
73ee8f0
Add filter for issues resolved in newer version of mysqlclient
laurent-indermuehle Jan 17, 2023
f9f185c
Add names to tests
laurent-indermuehle Jan 17, 2023
31d2905
Fix assertion for mariadb
laurent-indermuehle Jan 17, 2023
757e974
Linting
laurent-indermuehle Jan 17, 2023
0e5f87e
Cut tests for incompatible MySQL 8 and pymysql 0.7.11
laurent-indermuehle Jan 17, 2023
db72c79
Fix assertion for older mysqlclient than 2.0.1 with mysql (mariadb ok)
laurent-indermuehle Jan 17, 2023
2254e72
Cut playbook that are now handled by the test-containers
laurent-indermuehle Jan 19, 2023
4547784
Change timeout from 10 to 30 seconds to let mysql/mariadb restart
laurent-indermuehle Jan 19, 2023
b24249d
Add connector information to the returned values
laurent-indermuehle Jan 19, 2023
6bc293a
Add a verify stage at setup of test to assert all version are correct
laurent-indermuehle Jan 19, 2023
a849f92
Attempt to build and publish an image on ghcr.io
laurent-indermuehle Jan 20, 2023
f663ee6
Add latest release of actions and with a context
laurent-indermuehle Jan 20, 2023
e398071
Add trigger on workflow file edit
laurent-indermuehle Jan 20, 2023
f4b1e0f
Fix env not recognized in the 'on' clause
laurent-indermuehle Jan 20, 2023
535b2f7
Add latest tag
laurent-indermuehle Jan 20, 2023
1aa7cc9
Fix insufficient context
laurent-indermuehle Jan 20, 2023
3686637
Add missing slash
laurent-indermuehle Jan 20, 2023
f52410d
Cut addition of tag 'latest' as GHA does it automatically
laurent-indermuehle Jan 20, 2023
fbbb700
Add ghcr.io image for mariadb10.3 python3.8 mysqlclient2.0.1
laurent-indermuehle Jan 20, 2023
9fd0d8b
Change docker-image workflow to work on all images using matrix
laurent-indermuehle Jan 20, 2023
5ba5ab0
Fix workflow title
laurent-indermuehle Jan 20, 2023
e376b8c
Add support for version of mysqlclient
laurent-indermuehle Jan 20, 2023
eadb216
Fix context path
laurent-indermuehle Jan 20, 2023
7a80607
Workaround failed to push ghcr.io
laurent-indermuehle Jan 20, 2023
c59e541
Add back all tests using ghcr.io images
laurent-indermuehle Jan 20, 2023
e908762
Cut unused images
laurent-indermuehle Jan 20, 2023
14cc5cc
Fix verify database version
laurent-indermuehle Jan 20, 2023
f59e94e
Fix verify for mysqlclient second name MySQLdb
laurent-indermuehle Jan 20, 2023
05215dc
Rename variable for consistency
laurent-indermuehle Jan 20, 2023
163048b
Fix container name
laurent-indermuehle Jan 20, 2023
069eba9
Add tag 'latest' to images
laurent-indermuehle Jan 20, 2023
d574daf
Cut filter for tests now that the right connector is used
laurent-indermuehle Jan 20, 2023
b2cbd3b
Fix test of mysql/mariadb version in use
laurent-indermuehle Jan 20, 2023
d6956e2
Fix python version lookup
laurent-indermuehle Jan 20, 2023
e412aa5
Add clean up in "always" phase of the block
laurent-indermuehle Jan 20, 2023
a5c2634
Document TODO
laurent-indermuehle Jan 20, 2023
d9d48eb
Disable tests using pymysql 1.0.2
laurent-indermuehle Jan 20, 2023
20965d2
Cut test MySQL 8 with incompatible pymysql 0.7.11
laurent-indermuehle Jan 20, 2023
6399f24
Fix dict key lookup
laurent-indermuehle Jan 20, 2023
41b408d
Fix indentation
laurent-indermuehle Jan 20, 2023
23dd5a5
Cut tests that was excluded in previous matrix
laurent-indermuehle Jan 20, 2023
7a0956f
Enable back sanity and unit tests
laurent-indermuehle Jan 20, 2023
5d9952c
Refactor get_driver_version to display name while passing sanity tests
laurent-indermuehle Jan 20, 2023
37e5c71
Fix variable name
laurent-indermuehle Jan 20, 2023
cc6fdb3
Fix missing cffi package to connect to MySQL 8 using Python 3.9
laurent-indermuehle Jan 23, 2023
a409445
Fix image not found
laurent-indermuehle Jan 23, 2023
095ed0a
Split Docker image workflow to rebuild only changed Dockerfile
laurent-indermuehle Jan 23, 2023
325320a
Fix verify ansible 'devel' for which the version is unknown
laurent-indermuehle Jan 23, 2023
7d50a68
Fix ansible version extraction for "devel"
laurent-indermuehle Jan 23, 2023
d951a47
Cut matrix from when build was done in a single workflow
laurent-indermuehle Jan 23, 2023
5538e17
Merge branch 'ansible-collections:main' into lie_tests_using_containers
laurent-indermuehle Jan 23, 2023
7cfac48
Document fix container name
laurent-indermuehle Jan 23, 2023
ada9f6a
Add bold
laurent-indermuehle Jan 23, 2023
ff20c8c
Add option to let containers alive at end of testing
laurent-indermuehle Jan 23, 2023
240729d
Enhance error handling and doc of get_driver_name and get_driver_version
laurent-indermuehle Jan 23, 2023
cbc3721
Migrate tests documentations in their own file
laurent-indermuehle Jan 23, 2023
31a41d1
Skip retry-on-error by default and add option to activate it on demand
laurent-indermuehle Jan 23, 2023
affcd1e
Rename folder to better purpose
laurent-indermuehle Jan 23, 2023
39969f8
Enable back push and schedule workflow
laurent-indermuehle Jan 23, 2023
9637ec8
Rename registry from fork to upstream
laurent-indermuehle Jan 23, 2023
4fed2e2
Cut Docker Image workflow's filter for branch from my fork
laurent-indermuehle Jan 23, 2023
7ec9ee5
Add changelog fragment
laurent-indermuehle Jan 23, 2023
f200382
Update supported versions
laurent-indermuehle Jan 24, 2023
fc66f9a
Rename file for clarity
laurent-indermuehle Jan 24, 2023
829cff6
Cut mariadb non long term releases
laurent-indermuehle Jan 25, 2023
51dc695
Add '-client' to the block title to better explain what it is
laurent-indermuehle Jan 25, 2023
f39df3d
Update readme for tested versions of long term release of MariaDB
laurent-indermuehle Jan 25, 2023
30380d5
Attempt to add the workflow to the Action tab
laurent-indermuehle Jan 25, 2023
d300f72
Second attempt to add the workflow to the Action tab
laurent-indermuehle Jan 25, 2023
f1749db
Merge branch 'main' into lie_tests_using_containers
laurent-indermuehle Jan 25, 2023
84373e9
Cut folder re-created by merge from main
laurent-indermuehle Jan 25, 2023
e2adefc
Cut filter by branch
laurent-indermuehle Jan 25, 2023
8658f19
Merge branch 'main' into lie_tests_using_containers
laurent-indermuehle Jan 31, 2023
fc51c78
Cut changelog item done in #497
laurent-indermuehle Jan 31, 2023
c3a85dc
Attempt to fix upload of image under c.mysql instead of my fork
laurent-indermuehle Feb 1, 2023
e54db90
Add debug to buildkitd
laurent-indermuehle Feb 1, 2023
484699b
Bump setup-buildy-action to latest
laurent-indermuehle Feb 1, 2023
f356eec
Cut dot in image name in attempt to fix buildx bad request 400 error
laurent-indermuehle Feb 1, 2023
8f6fade
Sanitize the repository name using metadata-action
laurent-indermuehle Feb 1, 2023
1ac543c
Document why we use optional checkout action
laurent-indermuehle Feb 1, 2023
87b9cf0
Cut debugging from setup-buildx-action
laurent-indermuehle Feb 1, 2023
2ce768b
Fix workflow to work both on fork and c.mysql repository
laurent-indermuehle Feb 1, 2023
5afac35
Use apt-get instead of apt that not have a stable CLI interface
laurent-indermuehle Feb 1, 2023
e583eb6
Use apt-get instead of apt
laurent-indermuehle Feb 1, 2023
4ff16b7
update docker image path to my personal repo
laurent-indermuehle Feb 1, 2023
740e3e6
Fix test after merge of PR497
laurent-indermuehle Feb 1, 2023
8608208
Enhance testing documentation header
laurent-indermuehle Feb 13, 2023
0f5dc50
Fix installation of ansible venv
laurent-indermuehle Feb 21, 2023
3bf867a
Document usage of continue_on_errors
laurent-indermuehle Feb 21, 2023
7ae5225
Fix versions used in examples
laurent-indermuehle Feb 21, 2023
fedda29
Add support for systems with unsupported python set as default
laurent-indermuehle Feb 21, 2023
eadf0a6
Fix cleanup task
laurent-indermuehle Feb 21, 2023
03a925f
Fix variable assignation to the include task
laurent-indermuehle Feb 21, 2023
9190df3
Add forgotten variable to handle unsupported python version
laurent-indermuehle Feb 21, 2023
246df39
Fix user site-packages not visible in virtualenv
laurent-indermuehle Feb 21, 2023
4a52201
Merge branch 'main' into lie_tests_using_containers
laurent-indermuehle Feb 21, 2023
6288c8b
Fix test connection to the database and tasks names
laurent-indermuehle Feb 21, 2023
41cb5de
Add create podman network for system missing it.
laurent-indermuehle Feb 23, 2023
7e2e5a3
Add full path to image to prevent podman asking which registry to use
laurent-indermuehle Feb 23, 2023
0ef8552
Add options to enforce recreate containers even if already exists
laurent-indermuehle Mar 3, 2023
2e1fbcd
Reformat command multiline to oneline
laurent-indermuehle Mar 3, 2023
cfa6b38
Add deletion of anonymous volumes associated with the container
laurent-indermuehle Mar 3, 2023
0cbe258
Comment unused variable
laurent-indermuehle Mar 3, 2023
29fc0f7
Change shebang from python to python3 to avoid confusion with python2
laurent-indermuehle Mar 3, 2023
1d983e9
Add disk and RAM requirements
laurent-indermuehle Mar 3, 2023
3af4561
Cut the 3 from python command to follow shebang recommendations
laurent-indermuehle Mar 3, 2023
896ad47
Reformat spelling
laurent-indermuehle Mar 7, 2023
f2e1bc8
Reformat file path
laurent-indermuehle Mar 7, 2023
ed79c6d
Fix link URI
laurent-indermuehle Mar 7, 2023
b6920d1
Fix link URI
laurent-indermuehle Mar 7, 2023
92b47c0
Lint
laurent-indermuehle Mar 7, 2023
73ce044
Lint
laurent-indermuehle Mar 7, 2023
b30e8d8
Add better task name
laurent-indermuehle Mar 7, 2023
2462d61
Move utility task files in their own folder
laurent-indermuehle Mar 7, 2023
a0805cc
Refactor using reusable GHA workflows
laurent-indermuehle Mar 7, 2023
232e9fa
Fix path to called workflow file
laurent-indermuehle Mar 7, 2023
5c38fc7
Fix path to use local workflow
laurent-indermuehle Mar 7, 2023
7218409
Fix cannot specify version when calling local workflows
laurent-indermuehle Mar 7, 2023
48da254
Attempt to use a fixed repo name in the image name
laurent-indermuehle Mar 7, 2023
c0e8077
Add called workflow file in the GHA hooks
laurent-indermuehle Mar 7, 2023
e84bbb7
Rollback to github.repository in container image name
laurent-indermuehle Mar 7, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
379 changes: 318 additions & 61 deletions .github/workflows/ansible-test-plugins.yml

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions .github/workflows/ansible-test-roles.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
---
name: Roles CI
on:
push:
Expand Down
67 changes: 67 additions & 0 deletions .github/workflows/build-docker-image.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
---
name: Build Docker Image for ansible-test

on:
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

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 }}
uses: docker/login-action@v2
with:
registry: ${{ inputs.registry }}
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:
"${{ inputs.registry }}\
/${{ github.repository }}\
/${{ inputs.image_name }}"
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: ${{ inputs.context }}
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
19 changes: 19 additions & 0 deletions .github/workflows/docker-image-mariadb103-py38-mysqlclient201.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
laurent-indermuehle marked this conversation as resolved.
Show resolved Hide resolved
name: Docker Image CI mariadb103-py38-mysqlclient201

on:
push:
paths:
- 'test-containers/mariadb103-py38-mysqlclient201/**'
- '.github/workflows/docker-image-mariadb103-py38-mysqlclient201.yml'
- '.github/workflows/build-docker-image.yml'

jobs:

call-workflow-passing-data:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@laurent-indermuehle why did you go for multiple reusable workflow invocations? This causes a lot of duplication, which is prone to human error.

Besides, multiple separate workflows may fight for the resources more, aren't consolidated visually and make it hard to have unified merge gates…

Have you tried wrapping this into a matrix? I'm pretty sure this would work combined with reusable workflows.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@webknjaz you raise a good question. I think my main goal was to rebuild the containers only if needed. Do you think it would be possible to combine a matrix and an "on: push: paths + branch_ignore: stable-*" ?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, it's 💯 possible with an extra small decision-making job that calculates conditions or even better — generates the matrix. I've been meaning to make an example PR but it fell off my radar. Maybe, later...

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@webknjaz I'm finally attempting to simplify the build of the test containers as you suggested. I've done a first attempt in #643. I would love to have your input on this if you have the time.

uses: ./.github/workflows/build-docker-image.yml
secrets: inherit
with:
registry: ghcr.io
image_name: test-container-mariadb103-py38-mysqlclient201
context: test-containers/mariadb103-py38-mysqlclient201
19 changes: 19 additions & 0 deletions .github/workflows/docker-image-mariadb103-py38-pymysql093.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
name: Docker Image CI mariadb103-py38-pymysql093

on:
push:
paths:
- 'test-containers/mariadb103-py38-pymysql093/**'
- '.github/workflows/docker-image-mariadb103-py38-pymysql093.yml'
- '.github/workflows/build-docker-image.yml'

jobs:

call-workflow-passing-data:
uses: ./.github/workflows/build-docker-image.yml
secrets: inherit
with:
registry: ghcr.io
image_name: test-container-mariadb103-py38-pymysql093
context: test-containers/mariadb103-py38-pymysql093
19 changes: 19 additions & 0 deletions .github/workflows/docker-image-mariadb103-py39-mysqlclient203.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
name: Docker Image CI mariadb103-py39-mysqlclient203

on:
push:
paths:
- 'test-containers/mariadb103-py39-mysqlclient203/**'
- '.github/workflows/docker-image-mariadb103-py39-mysqlclient203.yml'
- '.github/workflows/build-docker-image.yml'

jobs:

call-workflow-passing-data:
uses: ./.github/workflows/build-docker-image.yml
secrets: inherit
with:
registry: ghcr.io
image_name: test-container-mariadb103-py39-mysqlclient203
context: test-containers/mariadb103-py39-mysqlclient203
19 changes: 19 additions & 0 deletions .github/workflows/docker-image-mariadb103-py39-pymysql093.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
name: Docker Image CI mariadb103-py39-pymysql093

on:
push:
paths:
- 'test-containers/mariadb103-py39-pymysql093/**'
- '.github/workflows/docker-image-mariadb103-py39-pymysql093.yml'
- '.github/workflows/build-docker-image.yml'

jobs:

call-workflow-passing-data:
uses: ./.github/workflows/build-docker-image.yml
secrets: inherit
with:
registry: ghcr.io
image_name: test-container-mariadb103-py39-pymysql093
context: test-containers/mariadb103-py39-pymysql093
19 changes: 19 additions & 0 deletions .github/workflows/docker-image-mariadb106-py310-mysqlclient211.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
name: Docker Image CI mariadb106-py310-mysqlclient211

on:
push:
paths:
- 'test-containers/mariadb106-py310-mysqlclient211/**'
- '.github/workflows/docker-image-mariadb106-py310-mysqlclient211.yml'
- '.github/workflows/build-docker-image.yml'

jobs:

call-workflow-passing-data:
uses: ./.github/workflows/build-docker-image.yml
secrets: inherit
with:
registry: ghcr.io
image_name: test-container-mariadb106-py310-mysqlclient211
context: test-containers/mariadb106-py310-mysqlclient211
19 changes: 19 additions & 0 deletions .github/workflows/docker-image-mariadb106-py310-pymysql102.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
name: Docker Image CI mariadb106-py310-pymysql102

on:
push:
paths:
- 'test-containers/mariadb106-py310-pymysql102/**'
- '.github/workflows/docker-image-mariadb106-py310-pymysql102.yml'
- '.github/workflows/build-docker-image.yml'

jobs:

call-workflow-passing-data:
uses: ./.github/workflows/build-docker-image.yml
secrets: inherit
with:
registry: ghcr.io
image_name: test-container-mariadb106-py310-pymysql102
context: test-containers/mariadb106-py310-pymysql102
19 changes: 19 additions & 0 deletions .github/workflows/docker-image-my57-py38-mysqlclient201.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
name: Docker Image CI my57-py38-mysqlclient201

on:
push:
paths:
- 'test-containers/my57-py38-mysqlclient201/**'
- '.github/workflows/docker-image-my57-py38-mysqlclient201.yml'
- '.github/workflows/build-docker-image.yml'

jobs:

call-workflow-passing-data:
uses: ./.github/workflows/build-docker-image.yml
secrets: inherit
with:
registry: ghcr.io
image_name: test-container-my57-py38-mysqlclient201
context: test-containers/my57-py38-mysqlclient201
19 changes: 19 additions & 0 deletions .github/workflows/docker-image-my57-py38-pymysql0711.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
name: Docker Image CI my57-py38-pymysql0711

on:
push:
paths:
- 'test-containers/my57-py38-pymysql0711/**'
- '.github/workflows/docker-image-my57-py38-pymysql0711.yml'
- '.github/workflows/build-docker-image.yml'

jobs:

call-workflow-passing-data:
uses: ./.github/workflows/build-docker-image.yml
secrets: inherit
with:
registry: ghcr.io
image_name: test-container-my57-py38-pymysql0711
context: test-containers/my57-py38-pymysql0711
19 changes: 19 additions & 0 deletions .github/workflows/docker-image-my57-py38-pymysql093.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
name: Docker Image CI my57-py38-pymysql093

on:
push:
paths:
- 'test-containers/my57-py38-pymysql093/**'
- '.github/workflows/docker-image-my57-py38-pymysql093.yml'
- '.github/workflows/build-docker-image.yml'

jobs:

call-workflow-passing-data:
uses: ./.github/workflows/build-docker-image.yml
secrets: inherit
with:
registry: ghcr.io
image_name: test-container-my57-py38-pymysql093
context: test-containers/my57-py38-pymysql093
19 changes: 19 additions & 0 deletions .github/workflows/docker-image-my80-py310-mysqlclient211.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
name: Docker Image CI my80-py310-mysqlclient211

on:
push:
paths:
- 'test-containers/my80-py310-mysqlclient211/**'
- '.github/workflows/docker-image-my80-py310-mysqlclient211.yml'
- '.github/workflows/build-docker-image.yml'

jobs:

call-workflow-passing-data:
uses: ./.github/workflows/build-docker-image.yml
secrets: inherit
with:
registry: ghcr.io
image_name: test-container-my80-py310-mysqlclient211
context: test-containers/my80-py310-mysqlclient211
19 changes: 19 additions & 0 deletions .github/workflows/docker-image-my80-py310-pymysql102.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
name: Docker Image CI my80-py310-pymysql102

on:
push:
paths:
- 'test-containers/my80-py310-pymysql102/**'
- '.github/workflows/docker-image-my80-py310-pymysql102.yml'
- '.github/workflows/build-docker-image.yml'

jobs:

call-workflow-passing-data:
uses: ./.github/workflows/build-docker-image.yml
secrets: inherit
with:
registry: ghcr.io
image_name: test-container-my80-py310-pymysql102
context: test-containers/my80-py310-pymysql102
19 changes: 19 additions & 0 deletions .github/workflows/docker-image-my80-py38-mysqlclient201.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
name: Docker Image CI my80-py38-mysqlclient201

on:
push:
paths:
- 'test-containers/my80-py38-mysqlclient201/**'
- '.github/workflows/docker-image-my80-py38-mysqlclient201.yml'
- '.github/workflows/build-docker-image.yml'

jobs:

call-workflow-passing-data:
uses: ./.github/workflows/build-docker-image.yml
secrets: inherit
with:
registry: ghcr.io
image_name: test-container-my80-py38-mysqlclient201
context: test-containers/my80-py38-mysqlclient201
19 changes: 19 additions & 0 deletions .github/workflows/docker-image-my80-py38-pymysql093.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
name: Docker Image CI my80-py38-pymysql093

on:
push:
paths:
- 'test-containers/my80-py38-pymysql093/**'
- '.github/workflows/docker-image-my80-py38-pymysql093.yml'
- '.github/workflows/build-docker-image.yml'

jobs:

call-workflow-passing-data:
uses: ./.github/workflows/build-docker-image.yml
secrets: inherit
with:
registry: ghcr.io
image_name: test-container-my80-py38-pymysql093
context: test-containers/my80-py38-pymysql093
19 changes: 19 additions & 0 deletions .github/workflows/docker-image-my80-py39-mysqlclient203.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
name: Docker Image CI my80-py39-mysqlclient203

on:
push:
paths:
- 'test-containers/my80-py39-mysqlclient203/**'
- '.github/workflows/docker-image-my80-py39-mysqlclient203.yml'
- '.github/workflows/build-docker-image.yml'

jobs:

call-workflow-passing-data:
uses: ./.github/workflows/build-docker-image.yml
secrets: inherit
with:
registry: ghcr.io
image_name: test-container-my80-py39-mysqlclient203
context: test-containers/my80-py39-mysqlclient203
19 changes: 19 additions & 0 deletions .github/workflows/docker-image-my80-py39-pymysql093.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
name: Docker Image CI my80-py39-pymysql093

on:
push:
paths:
- 'test-containers/my80-py39-pymysql093/*'
- '.github/workflows/docker-image-my80-py39-pymysql093.yml'
- '.github/workflows/build-docker-image.yml'

jobs:

call-workflow-passing-data:
uses: ./.github/workflows/build-docker-image.yml
secrets: inherit
with:
registry: ghcr.io
image_name: test-container-my80-py39-pymysql093
context: test-containers/my80-py39-pymysql093
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
/tests/output/
/tests/integration/inventory
/changelogs/.plugin-cache.yaml
*.swp

Expand Down
Loading