diff --git a/.github/workflows/integration_tests.yml b/.github/workflows/integration_tests.yml index 7703491..0a6ef85 100644 --- a/.github/workflows/integration_tests.yml +++ b/.github/workflows/integration_tests.yml @@ -89,6 +89,144 @@ jobs: ./dbdeployer delete all --skip-confirm 2>/dev/null || true pkill -9 -u "$USER" mysqld 2>/dev/null || true + # Test Percona Server: single + replication with data verification + percona-test: + name: Percona Server (${{ matrix.percona-version }}) + runs-on: ubuntu-22.04 + strategy: + fail-fast: false + matrix: + percona-version: + - '8.0.36-28' + - '8.4.2-2' + env: + GO111MODULE: on + SANDBOX_BINARY: ${{ github.workspace }}/opt/mysql + PERCONA_VERSION: ${{ matrix.percona-version }} + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-go@v5 + with: + go-version: '1.22' + + - name: Install system libraries + run: | + sudo apt-get update + sudo apt-get install -y libaio1 libnuma1 libncurses5 + + - name: Build dbdeployer + run: go build -o dbdeployer . + + - name: Download and unpack Percona Server + run: | + # Extract major.minor from version (e.g., "8.0.36-28" -> "8.0") + MAJOR_MINOR=$(echo "$PERCONA_VERSION" | grep -oP '^\d+\.\d+') + GLIBC="glibc2.17" + TARBALL="Percona-Server-${PERCONA_VERSION}-Linux.x86_64.${GLIBC}-minimal.tar.gz" + URL="https://downloads.percona.com/downloads/Percona-Server-${MAJOR_MINOR}/Percona-Server-${PERCONA_VERSION}/binary/tarball/${TARBALL}" + echo "Downloading Percona Server ${PERCONA_VERSION}..." + mkdir -p "$SANDBOX_BINARY" + curl -L -f -o "/tmp/$TARBALL" "$URL" || { + GLIBC="glibc2.35" + TARBALL="Percona-Server-${PERCONA_VERSION}-Linux.x86_64.${GLIBC}-minimal.tar.gz" + URL="https://downloads.percona.com/downloads/Percona-Server-${MAJOR_MINOR}/Percona-Server-${PERCONA_VERSION}/binary/tarball/${TARBALL}" + echo "Retrying with glibc2.35..." + curl -L -f -o "/tmp/$TARBALL" "$URL" + } + ./dbdeployer unpack "/tmp/$TARBALL" --sandbox-binary="$SANDBOX_BINARY" + + - name: Test single sandbox + run: | + # Extract version without build suffix for deploy + VERSION=$(ls "$SANDBOX_BINARY" | head -1) + echo "Deploying Percona Server $VERSION..." + ./dbdeployer deploy single "$VERSION" --sandbox-binary="$SANDBOX_BINARY" + ~/sandboxes/msb_*/use -e "SELECT VERSION()" | grep -i percona + echo "OK: Percona Server single sandbox works" + ./dbdeployer delete all --skip-confirm + + - name: Test replication with data verification + run: | + VERSION=$(ls "$SANDBOX_BINARY" | head -1) + echo "Deploying Percona Server $VERSION replication..." + ./dbdeployer deploy replication "$VERSION" --sandbox-binary="$SANDBOX_BINARY" + ~/sandboxes/rsandbox_*/test_replication + echo "OK: Percona Server replication works" + ./dbdeployer delete all --skip-confirm + + - name: Cleanup + if: always() + run: | + ./dbdeployer delete all --skip-confirm 2>/dev/null || true + pkill -9 -u "$USER" mysqld 2>/dev/null || true + + # Test MariaDB: single + replication with data verification + mariadb-test: + name: MariaDB (${{ matrix.mariadb-version }}) + runs-on: ubuntu-22.04 + strategy: + fail-fast: false + matrix: + mariadb-version: + - '10.11.25' + - '11.4.10' + env: + GO111MODULE: on + SANDBOX_BINARY: ${{ github.workspace }}/opt/mysql + MARIADB_VERSION: ${{ matrix.mariadb-version }} + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-go@v5 + with: + go-version: '1.22' + + - name: Install system libraries + run: | + sudo apt-get update + sudo apt-get install -y libaio1 libnuma1 libncurses5 + + - name: Build dbdeployer + run: go build -o dbdeployer . + + - name: Download and unpack MariaDB + run: | + TARBALL="mariadb-${MARIADB_VERSION}-linux-x86_64.tar.gz" + URL="https://downloads.mariadb.com/MariaDB/mariadb-${MARIADB_VERSION}/bintar-linux-x86_64/${TARBALL}" + echo "Downloading MariaDB ${MARIADB_VERSION}..." + mkdir -p "$SANDBOX_BINARY" + curl -L -f -o "/tmp/$TARBALL" "$URL" + ./dbdeployer unpack "/tmp/$TARBALL" --sandbox-binary="$SANDBOX_BINARY" + + - name: Test single sandbox + run: | + echo "Deploying MariaDB ${MARIADB_VERSION}..." + ./dbdeployer deploy single "$MARIADB_VERSION" --sandbox-binary="$SANDBOX_BINARY" + ~/sandboxes/msb_*/use -e "SELECT VERSION()" | grep -i mariadb + echo "OK: MariaDB single sandbox works" + ./dbdeployer delete all --skip-confirm + + - name: Test replication with data verification + run: | + echo "Deploying MariaDB ${MARIADB_VERSION} replication..." + ./dbdeployer deploy replication "$MARIADB_VERSION" --sandbox-binary="$SANDBOX_BINARY" + SBDIR=$(ls -d ~/sandboxes/rsandbox_*) + # Write on master, verify on slave + $SBDIR/m -e "CREATE DATABASE ci_test; USE ci_test; CREATE TABLE t1(id INT PRIMARY KEY, val VARCHAR(50)); INSERT INTO t1 VALUES (1, 'mariadb_repl_test');" + sleep 2 + RESULT=$($SBDIR/s1 -BN -e "SELECT val FROM ci_test.t1;") + echo "Replica result: $RESULT" + echo "$RESULT" | grep -q "mariadb_repl_test" || { echo "FAIL: data not replicated"; exit 1; } + echo "OK: MariaDB replication works" + ./dbdeployer delete all --skip-confirm + + - name: Cleanup + if: always() + run: | + ./dbdeployer delete all --skip-confirm 2>/dev/null || true + pkill -9 -u "$USER" mysqld 2>/dev/null || true + # Run the ts (testscript) replication suite against multiple MySQL versions. # This tests replication, replication-gtid, and semisync across versions. ts-replication-test: diff --git a/downloads/tarball_list.json b/downloads/tarball_list.json index 8a60f3f..24f5a25 100644 --- a/downloads/tarball_list.json +++ b/downloads/tarball_list.json @@ -3120,6 +3120,370 @@ "version": "8.4.8", "notes": "added with version 2.0.0", "date_added": "2026-03-24 00:00" + }, + { + "name": "mariadb-10.6.25-linux-x86_64.tar.gz", + "OS": "Linux", + "arch": "amd64", + "url": "https://downloads.mariadb.com/MariaDB/mariadb-10.6.25/bintar-linux-x86_64/mariadb-10.6.25-linux-x86_64.tar.gz", + "flavor": "mariadb", + "minimal": false, + "size": 0, + "short_version": "10.6", + "version": "10.6.25", + "notes": "added with version 2.1.1", + "date_added": "2026-04-05 00:00" + }, + { + "name": "mariadb-10.6.25-linux-aarch64.tar.gz", + "OS": "Linux", + "arch": "arm64", + "url": "https://downloads.mariadb.com/MariaDB/mariadb-10.6.25/bintar-linux-aarch64/mariadb-10.6.25-linux-aarch64.tar.gz", + "flavor": "mariadb", + "minimal": false, + "size": 0, + "short_version": "10.6", + "version": "10.6.25", + "notes": "added with version 2.1.1", + "date_added": "2026-04-05 00:00" + }, + { + "name": "mariadb-10.11.25-linux-x86_64.tar.gz", + "OS": "Linux", + "arch": "amd64", + "url": "https://downloads.mariadb.com/MariaDB/mariadb-10.11.25/bintar-linux-x86_64/mariadb-10.11.25-linux-x86_64.tar.gz", + "flavor": "mariadb", + "minimal": false, + "size": 0, + "short_version": "10.11", + "version": "10.11.25", + "notes": "added with version 2.1.1", + "date_added": "2026-04-05 00:00" + }, + { + "name": "mariadb-10.11.25-linux-aarch64.tar.gz", + "OS": "Linux", + "arch": "arm64", + "url": "https://downloads.mariadb.com/MariaDB/mariadb-10.11.25/bintar-linux-aarch64/mariadb-10.11.25-linux-aarch64.tar.gz", + "flavor": "mariadb", + "minimal": false, + "size": 0, + "short_version": "10.11", + "version": "10.11.25", + "notes": "added with version 2.1.1", + "date_added": "2026-04-05 00:00" + }, + { + "name": "mariadb-11.0.10-linux-x86_64.tar.gz", + "OS": "Linux", + "arch": "amd64", + "url": "https://downloads.mariadb.com/MariaDB/mariadb-11.0.10/bintar-linux-x86_64/mariadb-11.0.10-linux-x86_64.tar.gz", + "flavor": "mariadb", + "minimal": false, + "size": 0, + "short_version": "11.0", + "version": "11.0.10", + "notes": "added with version 2.1.1", + "date_added": "2026-04-05 00:00" + }, + { + "name": "mariadb-11.1.10-linux-x86_64.tar.gz", + "OS": "Linux", + "arch": "amd64", + "url": "https://downloads.mariadb.com/MariaDB/mariadb-11.1.10/bintar-linux-x86_64/mariadb-11.1.10-linux-x86_64.tar.gz", + "flavor": "mariadb", + "minimal": false, + "size": 0, + "short_version": "11.1", + "version": "11.1.10", + "notes": "added with version 2.1.1", + "date_added": "2026-04-05 00:00" + }, + { + "name": "mariadb-11.2.10-linux-x86_64.tar.gz", + "OS": "Linux", + "arch": "amd64", + "url": "https://downloads.mariadb.com/MariaDB/mariadb-11.2.10/bintar-linux-x86_64/mariadb-11.2.10-linux-x86_64.tar.gz", + "flavor": "mariadb", + "minimal": false, + "size": 0, + "short_version": "11.2", + "version": "11.2.10", + "notes": "added with version 2.1.1", + "date_added": "2026-04-05 00:00" + }, + { + "name": "mariadb-11.3.10-linux-x86_64.tar.gz", + "OS": "Linux", + "arch": "amd64", + "url": "https://downloads.mariadb.com/MariaDB/mariadb-11.3.10/bintar-linux-x86_64/mariadb-11.3.10-linux-x86_64.tar.gz", + "flavor": "mariadb", + "minimal": false, + "size": 0, + "short_version": "11.3", + "version": "11.3.10", + "notes": "added with version 2.1.1", + "date_added": "2026-04-05 00:00" + }, + { + "name": "mariadb-11.4.10-linux-x86_64.tar.gz", + "OS": "Linux", + "arch": "amd64", + "url": "https://downloads.mariadb.com/MariaDB/mariadb-11.4.10/bintar-linux-x86_64/mariadb-11.4.10-linux-x86_64.tar.gz", + "flavor": "mariadb", + "minimal": false, + "size": 0, + "short_version": "11.4", + "version": "11.4.10", + "notes": "added with version 2.1.1", + "date_added": "2026-04-05 00:00" + }, + { + "name": "mariadb-11.4.10-linux-aarch64.tar.gz", + "OS": "Linux", + "arch": "arm64", + "url": "https://downloads.mariadb.com/MariaDB/mariadb-11.4.10/bintar-linux-aarch64/mariadb-11.4.10-linux-aarch64.tar.gz", + "flavor": "mariadb", + "minimal": false, + "size": 0, + "short_version": "11.4", + "version": "11.4.10", + "notes": "added with version 2.1.1", + "date_added": "2026-04-05 00:00" + }, + { + "name": "mariadb-11.5.10-linux-x86_64.tar.gz", + "OS": "Linux", + "arch": "amd64", + "url": "https://downloads.mariadb.com/MariaDB/mariadb-11.5.10/bintar-linux-x86_64/mariadb-11.5.10-linux-x86_64.tar.gz", + "flavor": "mariadb", + "minimal": false, + "size": 0, + "short_version": "11.5", + "version": "11.5.10", + "notes": "added with version 2.1.1", + "date_added": "2026-04-05 00:00" + }, + { + "name": "mariadb-11.6.10-linux-x86_64.tar.gz", + "OS": "Linux", + "arch": "amd64", + "url": "https://downloads.mariadb.com/MariaDB/mariadb-11.6.10/bintar-linux-x86_64/mariadb-11.6.10-linux-x86_64.tar.gz", + "flavor": "mariadb", + "minimal": false, + "size": 0, + "short_version": "11.6", + "version": "11.6.10", + "notes": "added with version 2.1.1", + "date_added": "2026-04-05 00:00" + }, + { + "name": "mariadb-11.7.10-linux-x86_64.tar.gz", + "OS": "Linux", + "arch": "amd64", + "url": "https://downloads.mariadb.com/MariaDB/mariadb-11.7.10/bintar-linux-x86_64/mariadb-11.7.10-linux-x86_64.tar.gz", + "flavor": "mariadb", + "minimal": false, + "size": 0, + "short_version": "11.7", + "version": "11.7.10", + "notes": "added with version 2.1.1", + "date_added": "2026-04-05 00:00" + }, + { + "name": "mariadb-11.8.10-linux-x86_64.tar.gz", + "OS": "Linux", + "arch": "amd64", + "url": "https://downloads.mariadb.com/MariaDB/mariadb-11.8.10/bintar-linux-x86_64/mariadb-11.8.10-linux-x86_64.tar.gz", + "flavor": "mariadb", + "minimal": false, + "size": 0, + "short_version": "11.8", + "version": "11.8.10", + "notes": "added with version 2.1.1", + "date_added": "2026-04-05 00:00" + }, + { + "name": "Percona-Server-5.7.41-44-Linux.x86_64.glibc2.17-minimal.tar.gz", + "OS": "Linux", + "arch": "amd64", + "url": "https://downloads.percona.com/downloads/Percona-Server-5.7/Percona-Server-5.7.41-44/binary/tarball/Percona-Server-5.7.41-44-Linux.x86_64.glibc2.17-minimal.tar.gz", + "flavor": "percona", + "minimal": true, + "size": 0, + "short_version": "5.7", + "version": "5.7.41", + "notes": "added with version 2.1.1", + "date_added": "2026-04-05 00:00" + }, + { + "name": "Percona-Server-5.7.42-46-Linux.x86_64.glibc2.17-minimal.tar.gz", + "OS": "Linux", + "arch": "amd64", + "url": "https://downloads.percona.com/downloads/Percona-Server-5.7/Percona-Server-5.7.42-46/binary/tarball/Percona-Server-5.7.42-46-Linux.x86_64.glibc2.17-minimal.tar.gz", + "flavor": "percona", + "minimal": true, + "size": 0, + "short_version": "5.7", + "version": "5.7.42", + "notes": "added with version 2.1.1", + "date_added": "2026-04-05 00:00" + }, + { + "name": "Percona-Server-5.7.43-47-Linux.x86_64.glibc2.17-minimal.tar.gz", + "OS": "Linux", + "arch": "amd64", + "url": "https://downloads.percona.com/downloads/Percona-Server-5.7/Percona-Server-5.7.43-47/binary/tarball/Percona-Server-5.7.43-47-Linux.x86_64.glibc2.17-minimal.tar.gz", + "flavor": "percona", + "minimal": true, + "size": 0, + "short_version": "5.7", + "version": "5.7.43", + "notes": "added with version 2.1.1", + "date_added": "2026-04-05 00:00" + }, + { + "name": "Percona-Server-5.7.44-48-Linux.x86_64.glibc2.17-minimal.tar.gz", + "OS": "Linux", + "arch": "amd64", + "url": "https://downloads.percona.com/downloads/Percona-Server-5.7/Percona-Server-5.7.44-48/binary/tarball/Percona-Server-5.7.44-48-Linux.x86_64.glibc2.17-minimal.tar.gz", + "flavor": "percona", + "minimal": true, + "size": 0, + "short_version": "5.7", + "version": "5.7.44", + "notes": "added with version 2.1.1", + "date_added": "2026-04-05 00:00" + }, + { + "name": "Percona-Server-8.0.33-25-Linux.x86_64.glibc2.17-minimal.tar.gz", + "OS": "Linux", + "arch": "amd64", + "url": "https://downloads.percona.com/downloads/Percona-Server-8.0/Percona-Server-8.0.33-25/binary/tarball/Percona-Server-8.0.33-25-Linux.x86_64.glibc2.17-minimal.tar.gz", + "flavor": "percona", + "minimal": true, + "size": 0, + "short_version": "8.0", + "version": "8.0.33", + "notes": "added with version 2.1.1", + "date_added": "2026-04-05 00:00" + }, + { + "name": "Percona-Server-8.0.34-26-Linux.x86_64.glibc2.17-minimal.tar.gz", + "OS": "Linux", + "arch": "amd64", + "url": "https://downloads.percona.com/downloads/Percona-Server-8.0/Percona-Server-8.0.34-26/binary/tarball/Percona-Server-8.0.34-26-Linux.x86_64.glibc2.17-minimal.tar.gz", + "flavor": "percona", + "minimal": true, + "size": 0, + "short_version": "8.0", + "version": "8.0.34", + "notes": "added with version 2.1.1", + "date_added": "2026-04-05 00:00" + }, + { + "name": "Percona-Server-8.0.35-27-Linux.x86_64.glibc2.17-minimal.tar.gz", + "OS": "Linux", + "arch": "amd64", + "url": "https://downloads.percona.com/downloads/Percona-Server-8.0/Percona-Server-8.0.35-27/binary/tarball/Percona-Server-8.0.35-27-Linux.x86_64.glibc2.17-minimal.tar.gz", + "flavor": "percona", + "minimal": true, + "size": 0, + "short_version": "8.0", + "version": "8.0.35", + "notes": "added with version 2.1.1", + "date_added": "2026-04-05 00:00" + }, + { + "name": "Percona-Server-8.0.36-28-Linux.x86_64.glibc2.17-minimal.tar.gz", + "OS": "Linux", + "arch": "amd64", + "url": "https://downloads.percona.com/downloads/Percona-Server-8.0/Percona-Server-8.0.36-28/binary/tarball/Percona-Server-8.0.36-28-Linux.x86_64.glibc2.17-minimal.tar.gz", + "flavor": "percona", + "minimal": true, + "size": 0, + "short_version": "8.0", + "version": "8.0.36", + "notes": "added with version 2.1.1", + "date_added": "2026-04-05 00:00" + }, + { + "name": "Percona-Server-8.0.39-30-Linux.x86_64.glibc2.35-minimal.tar.gz", + "OS": "Linux", + "arch": "amd64", + "url": "https://downloads.percona.com/downloads/Percona-Server-8.0/Percona-Server-8.0.39-30/binary/tarball/Percona-Server-8.0.39-30-Linux.x86_64.glibc2.35-minimal.tar.gz", + "flavor": "percona", + "minimal": true, + "size": 0, + "short_version": "8.0", + "version": "8.0.39", + "notes": "added with version 2.1.1", + "date_added": "2026-04-05 00:00" + }, + { + "name": "Percona-Server-8.0.40-31-Linux.x86_64.glibc2.35-minimal.tar.gz", + "OS": "Linux", + "arch": "amd64", + "url": "https://downloads.percona.com/downloads/Percona-Server-8.0/Percona-Server-8.0.40-31/binary/tarball/Percona-Server-8.0.40-31-Linux.x86_64.glibc2.35-minimal.tar.gz", + "flavor": "percona", + "minimal": true, + "size": 0, + "short_version": "8.0", + "version": "8.0.40", + "notes": "added with version 2.1.1", + "date_added": "2026-04-05 00:00" + }, + { + "name": "Percona-Server-8.4.0-1-Linux.x86_64.glibc2.17-minimal.tar.gz", + "OS": "Linux", + "arch": "amd64", + "url": "https://downloads.percona.com/downloads/Percona-Server-8.4/Percona-Server-8.4.0-1/binary/tarball/Percona-Server-8.4.0-1-Linux.x86_64.glibc2.17-minimal.tar.gz", + "flavor": "percona", + "minimal": true, + "size": 0, + "short_version": "8.4", + "version": "8.4.0", + "notes": "added with version 2.1.1", + "date_added": "2026-04-05 00:00" + }, + { + "name": "Percona-Server-8.4.2-2-Linux.x86_64.glibc2.17-minimal.tar.gz", + "OS": "Linux", + "arch": "amd64", + "url": "https://downloads.percona.com/downloads/Percona-Server-8.4/Percona-Server-8.4.2-2/binary/tarball/Percona-Server-8.4.2-2-Linux.x86_64.glibc2.17-minimal.tar.gz", + "flavor": "percona", + "minimal": true, + "size": 0, + "short_version": "8.4", + "version": "8.4.2", + "notes": "added with version 2.1.1", + "date_added": "2026-04-05 00:00" + }, + { + "name": "Percona-Server-8.4.3-3-Linux.x86_64.glibc2.35-minimal.tar.gz", + "OS": "Linux", + "arch": "amd64", + "url": "https://downloads.percona.com/downloads/Percona-Server-8.4/Percona-Server-8.4.3-3/binary/tarball/Percona-Server-8.4.3-3-Linux.x86_64.glibc2.35-minimal.tar.gz", + "flavor": "percona", + "minimal": true, + "size": 0, + "short_version": "8.4", + "version": "8.4.3", + "notes": "added with version 2.1.1", + "date_added": "2026-04-05 00:00" + }, + { + "name": "Percona-Server-8.4.4-4-Linux.x86_64.glibc2.35-minimal.tar.gz", + "OS": "Linux", + "arch": "amd64", + "url": "https://downloads.percona.com/downloads/Percona-Server-8.4/Percona-Server-8.4.4-4/binary/tarball/Percona-Server-8.4.4-4-Linux.x86_64.glibc2.35-minimal.tar.gz", + "flavor": "percona", + "minimal": true, + "size": 0, + "short_version": "8.4", + "version": "8.4.4", + "notes": "added with version 2.1.1", + "date_added": "2026-04-05 00:00" } ] }