diff --git a/.github/workflows/flow.yml b/.github/workflows/flow.yml
index 1805aed91..71dfd9924 100644
--- a/.github/workflows/flow.yml
+++ b/.github/workflows/flow.yml
@@ -23,7 +23,7 @@ permissions:
jobs:
flow_test:
- name: flow_test (${{ matrix.runner }}, ${{ matrix.db-version.pg }}, ${{ matrix.db-version.mysql }}, ${{ matrix.db-version.mongo }}, ${{ matrix.db-version.ch }})
+ name: flow_test (${{ matrix.runner }}, ${{ matrix.db-version.pg }}, ${{ matrix.db-version.mysql-flavor }}, ${{ matrix.db-version.mongo }}, ${{ matrix.db-version.ch }}${{ matrix.db-version.mysql-tag && format(', {0}', matrix.db-version.mysql-tag) || '' }})
if: |
(github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) ||
(github.event_name == 'pull_request_target' && github.event.pull_request.head.repo.full_name != github.repository) ||
@@ -33,31 +33,45 @@ jobs:
fail-fast: false
matrix:
runner: [ubuntu-latest-16-cores]
+ # Each db-version row picks a MySQL/MariaDB family via mysql-flavor, which keys into
+ # version-configs.mysql (below) for the base img and its default tag. Rows WITHOUT a
+ # mysql-tag use that flavor's default tag. Rows WITH a mysql-tag override only the tag,
+ # which the "MySQL" step combines with the flavor's img (e.g. img 'mariadb' + mysql-tag
+ # '12-ubi' -> 'mariadb:12-ubi'). The mysql-tag value also disambiguates the job name,
+ # artifact name and combination-id across those variants, so it must be filesystem-safe
+ # (no ':' or '/') — which is why the lts row uses the plain 'lts-ubi9' tag, not a digest.
db-version: [
- {pg: 16, mysql: 'mysql-gtid', mongo: '6.0', ch: 'lts'},
- {pg: 17, mysql: 'mysql-pos', mongo: '7.0', ch: 'stable'},
- {pg: 18, mysql: 'maria-gtid', mongo: '8.0', ch: 'latest'},
+ {pg: 16, mysql-flavor: 'mysql-gtid', mongo: '6.0', ch: 'lts'},
+ {pg: 17, mysql-flavor: 'mysql-pos', mongo: '7.0', ch: 'stable'},
+ {pg: 18, mysql-flavor: 'maria-gtid', mysql-tag: 'lts-ubi9', mongo: '8.0', ch: 'latest'},
+ {pg: 18, mysql-flavor: 'maria-gtid', mysql-tag: '12-ubi', mongo: '8.0', ch: 'latest'},
+ {pg: 18, mysql-flavor: 'maria-gtid', mysql-tag: '13.0-ubi-rc', mongo: '8.0', ch: 'latest'},
]
# Per-version container settings consumed by the "MySQL" step, keyed by the matrix
- # db-version.mysql value. Grouped under "mysql" since these are MySQL/MariaDB families;
+ # db-version.mysql-flavor value. Grouped under "mysql" since these are MySQL/MariaDB families;
# only the databases handled by the MySQL step are listed here. Wrapped in a single-item
# list because matrix values must be arrays; it stays a single shared value (no extra jobs).
version-configs:
- mysql:
mysql-gtid:
- img: 'mysql:9.5'
+ img: 'mysql'
+ tag: '9.5'
env: ['MYSQL_ROOT_PASSWORD=cipass']
parameters: []
mysql-pos:
- img: 'mysql:5.7'
+ img: 'mysql'
+ tag: '5.7'
env: ['MYSQL_ROOT_PASSWORD=cipass']
parameters: ['--log_bin=mysql-bin', '--server-id=1', '--bind-address=::']
maria-pos:
- img: 'mariadb:lts-ubi9@sha256:55a81b2d791d2ff8ad33fef413d9e45e0ac57a951127e0cfc69a8e59f922ba6e'
+ img: 'mariadb'
+ tag: 'lts-ubi9@sha256:55a81b2d791d2ff8ad33fef413d9e45e0ac57a951127e0cfc69a8e59f922ba6e'
env: ['MARIADB_ROOT_PASSWORD=cipass']
parameters: ['--log-bin=maria']
+ # tag omitted: maria-gtid runs across several MariaDB tags, so each db-version row
+ # supplies its own mysql-tag, which the "MySQL" step combines with this img.
maria-gtid:
- img: 'mariadb:lts-ubi9@sha256:55a81b2d791d2ff8ad33fef413d9e45e0ac57a951127e0cfc69a8e59f922ba6e'
+ img: 'mariadb'
env: ['MARIADB_ROOT_PASSWORD=cipass']
parameters: ['--log-bin=maria', '--gtid-strict-mode=ON']
runs-on: ${{ matrix.runner }}
@@ -214,9 +228,11 @@ jobs:
- name: MySQL
env:
- DB_IMG: ${{ matrix.version-configs.mysql[matrix.db-version.mysql].img }}
- DB_ENV: ${{ join(matrix.version-configs.mysql[matrix.db-version.mysql].env, ' -e ') }}
- DB_PARAMS: ${{ join(matrix.version-configs.mysql[matrix.db-version.mysql].parameters, ' ') }}
+ # Image is always
:. img comes from version-configs; the tag is the
+ # db-version row's mysql-tag when set, otherwise the flavor's default tag.
+ DB_IMG: ${{ format('{0}:{1}', matrix.version-configs.mysql[matrix.db-version.mysql-flavor].img, matrix.db-version.mysql-tag || matrix.version-configs.mysql[matrix.db-version.mysql-flavor].tag) }}
+ DB_ENV: ${{ join(matrix.version-configs.mysql[matrix.db-version.mysql-flavor].env, ' -e ') }}
+ DB_PARAMS: ${{ join(matrix.version-configs.mysql[matrix.db-version.mysql-flavor].parameters, ' ') }}
run: |
docker run -d --rm --name mysql --network ${{ job.container.network }} -p 3306:3306 \
-e $DB_ENV $DB_IMG $DB_PARAMS
@@ -630,7 +646,7 @@ jobs:
PEERDB_QUEUE_FORCE_TOPIC_CREATION: "true"
ELASTICSEARCH_TEST_ADDRESS: http://localhost:9200
CI_PG_VERSION: ${{ matrix.db-version.pg }}
- CI_MYSQL_VERSION: ${{ matrix.db-version.mysql }}
+ CI_MYSQL_VERSION: ${{ matrix.db-version.mysql-flavor }}
CI_MONGO_ADMIN_URI: mongodb://localhost:27017
CI_MONGO_ADMIN_USERNAME: "admin"
CI_MONGO_ADMIN_PASSWORD: "admin"
@@ -638,7 +654,7 @@ jobs:
CI_MONGO_USERNAME: "csuser"
CI_MONGO_PASSWORD: "cspass"
SSH_POSTGRES_HOST: catalog
- ENABLE_OTEL_METRICS: ${{ (matrix.db-version.pg == '17' || matrix.db-version.mysql == 'mysql-pos') && 'true' || 'false' }}
+ ENABLE_OTEL_METRICS: ${{ (matrix.db-version.pg == '17' || matrix.db-version.mysql-flavor == 'mysql-pos') && 'true' || 'false' }}
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: http://localhost:4317
OTEL_EXPORTER_OTLP_METRICS_PROTOCOL: grpc
PEERDB_OTEL_METRICS_NAMESPACE: 'peerdb_ci_tests.'
@@ -669,7 +685,7 @@ jobs:
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
- name: peer-flow-logs-pg${{ matrix.db-version.pg }}-my${{ matrix.db-version.mysql }}-mo${{ matrix.db-version.mongo }}
+ name: peer-flow-logs-pg${{ matrix.db-version.pg }}-my${{ matrix.db-version.mysql-flavor }}-mo${{ matrix.db-version.mongo }}${{ matrix.db-version.mysql-tag && format('-{0}', matrix.db-version.mysql-tag) || '' }}
path: logs/
retention-days: 30
@@ -688,7 +704,7 @@ jobs:
if: success() || failure()
uses: ./.github/actions/ingest-test-results
with:
- combination-id: "pg${{ matrix.db-version.pg }}-my${{ matrix.db-version.mysql }}-mo${{ matrix.db-version.mongo }}-ch${{ matrix.db-version.ch }}"
+ combination-id: "pg${{ matrix.db-version.pg }}-my${{ matrix.db-version.mysql-flavor }}-mo${{ matrix.db-version.mongo }}-ch${{ matrix.db-version.ch }}${{ matrix.db-version.mysql-tag && format('-{0}', matrix.db-version.mysql-tag) || '' }}"
o11y-api-key-id: ${{ secrets.CI_O11Y_TARGET_API_KEY_ID }}
o11y-api-key-secret: ${{ secrets.CI_O11Y_TARGET_API_KEY_SECRET }}
o11y-query-endpoint: ${{ secrets.CI_O11Y_TARGET_QUERY_ENDPOINT }}