Refactor the way server_id is set for replicas

The simple way is to add '--server-id 2' after the name of the image of
the container. But GHA doesn't let us do that. The idea of mount a file
from our repo doesn't work because the repo is check out later in the
workflow and I failed to find a pre-job hook. Then I realized that this
MySQL option is dynamic! So we will set that in the test target!
This commit is contained in:
Laurent Indermuehle 2023-01-06 14:14:35 +01:00
commit 8d43f9e573
No known key found for this signature in database
GPG key ID: 93FA944C9F34DD09
5 changed files with 17 additions and 18 deletions

View file

@ -105,8 +105,6 @@ jobs:
MYSQL_ROOT_PASSWORD: msandbox MYSQL_ROOT_PASSWORD: msandbox
ports: ports:
- 3308:3306 - 3308:3306
volumes:
- ${{ github.workspace }}/tests/integration/setup_mysql/replica1/:/etc/mysql/conf.d/
options: >- options: >-
--health-cmd "mysqladmin ping -P 3306 -pmsandbox |grep alive || exit 1" --health-cmd "mysqladmin ping -P 3306 -pmsandbox |grep alive || exit 1"
--health-start-period 10s --health-start-period 10s
@ -121,8 +119,6 @@ jobs:
MYSQL_ROOT_PASSWORD: msandbox MYSQL_ROOT_PASSWORD: msandbox
ports: ports:
- 3309:3306 - 3309:3306
volumes:
- ${{ github.workspace }}/tests/integration/setup_mysql/replica2/:/etc/mysql/conf.d/
options: >- options: >-
--health-cmd "mysqladmin ping -P 3306 -pmsandbox |grep alive || exit 1" --health-cmd "mysqladmin ping -P 3306 -pmsandbox |grep alive || exit 1"
--health-start-period 10s --health-start-period 10s

View file

@ -19,8 +19,6 @@ test-integration:
--network podman \ --network podman \
--publish 3308:3306 \ --publish 3308:3306 \
--health-cmd 'mysqladmin ping -P 3306 -pmsandbox | grep alive || exit 1' \ --health-cmd 'mysqladmin ping -P 3306 -pmsandbox | grep alive || exit 1' \
--security-opt label=disable \
--volume ./tests/integration/targets/setup_mysql/replica1/:/etc/mysql/conf.d/ \
mysql:8.0.22 mysql:8.0.22
podman run \ podman run \
--detach \ --detach \
@ -30,8 +28,6 @@ test-integration:
--network podman \ --network podman \
--publish 3309:3306 \ --publish 3309:3306 \
--health-cmd 'mysqladmin ping -P 3306 -pmsandbox | grep alive || exit 1' \ --health-cmd 'mysqladmin ping -P 3306 -pmsandbox | grep alive || exit 1' \
--security-opt label=disable \
--volume ./tests/integration/targets/setup_mysql/replica2/:/etc/mysql/conf.d/ \
mysql:8.0.22 mysql:8.0.22
while ! podman healthcheck run primary && [[ "$$SECONDS" -lt 120 ]]; do sleep 1; done while ! podman healthcheck run primary && [[ "$$SECONDS" -lt 120 ]]; do sleep 1; done
-set -x; ansible-test integration -v --color --coverage --retry-on-error --continue-on-error --diff --docker --docker-network podman --python 3.8; set +x -set -x; ansible-test integration -v --color --coverage --retry-on-error --continue-on-error --diff --docker --docker-network podman --python 3.8; set +x

View file

@ -1,4 +0,0 @@
[mysqld]
skip-host-cache
skip-name-resolve
server_id = 2

View file

@ -1,4 +0,0 @@
[mysqld]
skip-host-cache
skip-name-resolve
server_id = 3

View file

@ -26,13 +26,28 @@
- db_engine == 'mysql' - db_engine == 'mysql'
- db_version is version('8.0.22', '>=') - db_version is version('8.0.22', '>=')
# We can't pass --server-id to service containers in GHA
- name: Change replica1 server_id to 2
mysql_variables:
<<: *mysql_params
login_port: '{{ mysql_replica1_port }}'
variable: server_id
value: 2
- name: Change replica2 server_id to 3
mysql_variables:
<<: *mysql_params
login_port: '{{ mysql_replica2_port }}'
variable: server_id
value: 3
# Preparation: # Preparation:
- name: Create user for mysql replication - name: Create user for mysql replication
shell: "echo \"CREATE USER '{{ replication_user }}'@'{{ gateway_addr }}' IDENTIFIED WITH mysql_native_password BY '{{ replication_pass }}'; GRANT REPLICATION SLAVE ON *.* TO '{{ replication_user }}'@'{{ gateway_addr }}';\" | {{ mysql_command }}" shell: "echo \"CREATE USER '{{ replication_user }}'@'{{ mysql_host }}' IDENTIFIED WITH mysql_native_password BY '{{ replication_pass }}'; GRANT REPLICATION SLAVE ON *.* TO '{{ replication_user }}'@'{{ mysql_host }}';\" | {{ mysql_command }}"
when: db_engine == 'mysql' when: db_engine == 'mysql'
- name: Create user for mariadb replication - name: Create user for mariadb replication
shell: "echo \"CREATE USER '{{ replication_user }}'@'{{ gateway_addr }}' IDENTIFIED BY '{{ replication_pass }}'; GRANT REPLICATION SLAVE ON *.* TO '{{ replication_user }}'@'{{ gateway_addr }}';\" | {{ mysql_command }}" shell: "echo \"CREATE USER '{{ replication_user }}'@'{{ mysql_host }}' IDENTIFIED BY '{{ replication_pass }}'; GRANT REPLICATION SLAVE ON *.* TO '{{ replication_user }}'@'{{ mysql_host }}';\" | {{ mysql_command }}"
when: db_engine == 'mariadb' when: db_engine == 'mariadb'
- name: Create test database - name: Create test database