mirror of
https://github.com/MariaDB/server.git
synced 2025-01-15 19:42:28 +01:00
1016 lines
44 KiB
YAML
1016 lines
44 KiB
YAML
---
|
||
# Include Salsa-CI as a base
|
||
include:
|
||
- https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
|
||
- https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml
|
||
|
||
# Override Salsa-CI with MariaDB specific variations
|
||
variables:
|
||
BUILT_PACKAGES: "libmariadb-dev libmariadb-dev-compat libmariadb3
|
||
libmariadbd19t64 libmariadbd-dev mariadb-common mariadb-client-core
|
||
mariadb-client mariadb-server-core mariadb-server mariadb-backup
|
||
mariadb-plugin-connect mariadb-plugin-s3 mariadb-plugin-rocksdb
|
||
mariadb-plugin-oqgraph mariadb-plugin-mroonga mariadb-plugin-spider
|
||
mariadb-plugin-gssapi-server mariadb-plugin-gssapi-client
|
||
mariadb-plugin-cracklib-password-check mariadb-plugin-hashicorp-key-management
|
||
mariadb-plugin-provider-bzip2 mariadb-plugin-provider-lz4
|
||
mariadb-plugin-provider-lzma mariadb-plugin-provider-lzo
|
||
mariadb-plugin-provider-snappy mariadb-test mariadb-test-data"
|
||
DEB_BUILD_OPTIONS: "nocheck noautodbgsym"
|
||
RELEASE: sid
|
||
# Reprotest works, but takes very long time and often fails due to timeouts.
|
||
# Thus is best kept disabled and only occasionally manually enabled to
|
||
# test that reproducibility works, along with atomic reprotest to directly
|
||
# pinpoint what aspect of the build is broken if not reproducible.
|
||
SALSA_CI_DISABLE_REPROTEST: 1
|
||
SALSA_CI_ENABLE_ATOMIC_REPROTEST: 0
|
||
SALSA_CI_DISABLE_MISSING_BREAKS: 0
|
||
SALSA_CI_DISABLE_RC_BUGS: 1
|
||
SALSA_CI_DISABLE_BUILD_PACKAGE_ALL: 1
|
||
SALSA_CI_DISABLE_BUILD_PACKAGE_ANY: 1
|
||
GIT_SUBMODULE_STRATEGY: recursive
|
||
SALSA_CI_GBP_BUILDPACKAGE_ARGS: "--git-submodules" # did not apply to extract-sources
|
||
|
||
# Extend Salsa-CI build jobs to have longer timeout as the default GitLab
|
||
# timeout (1h) is often not enough
|
||
.build-package:
|
||
timeout: 3h
|
||
|
||
stages:
|
||
- provisioning
|
||
- build
|
||
- test
|
||
- upgrade MariaDB
|
||
- upgrade MariaDB and distro
|
||
- upgrade MariaDB variant
|
||
- test extras
|
||
- publish # Stage referenced by Salsa-CI template aptly stanza, so must exist even though not used
|
||
|
||
|
||
build autobake:
|
||
extends: .build-package
|
||
stage: build
|
||
script: &autobake-deb-steps
|
||
# Run Salsa-CI .build-before-script equivalent
|
||
- mkdir -p ${WORKING_DIR} ${CCACHE_WORK_DIR}
|
||
- mv ${CCACHE_WORK_DIR} ${CCACHE_TMP_DIR}
|
||
# Run Salsa-CI .build-script equivalent, with extra devscripts so autobake-deb.sh can run 'dch'
|
||
- export CCACHE_DIR=${CCACHE_TMP_DIR}
|
||
- apt-get update && eatmydata apt-get install --no-install-recommends -y ccache fakeroot build-essential devscripts lsb-release
|
||
- cd ${WORKING_DIR}/${SOURCE_DIR}
|
||
- eatmydata apt-get build-dep --no-install-recommends -y .
|
||
- update-ccache-symlinks; ccache -z # Zero out ccache counters
|
||
- while true; do sleep 600; echo "10 minutes passed" >&2; done & # Progress keeper since build is long and silent
|
||
- debian/autobake-deb.sh |& tail -n 10000 # Keep Gitlab-CI output under 4 MB
|
||
- cd ${WORKING_DIR}
|
||
- rm -rf ${WORKING_DIR}/${SOURCE_DIR}
|
||
- du -shc ${WORKING_DIR}/* # Show total file size of artifacts. Must stay are under 100 MB.
|
||
- ccache -s # Show ccache stats to validate it worked
|
||
- mv ${CCACHE_TMP_DIR} ${CCACHE_WORK_DIR}
|
||
|
||
# Buster only has libfmt 6.1 but 7.0 is required, so backport build for Buster
|
||
# is not possible unless somebody packages libfmt7-dev for Buster.
|
||
|
||
autopkgtest:
|
||
extends: .test-autopkgtest
|
||
artifacts:
|
||
reports:
|
||
junit: ${WORKING_DIR}/debci/artifacts/mysql-test-run-junit.xml
|
||
|
||
piuparts:
|
||
stage: test extras
|
||
|
||
blhc:
|
||
stage: test extras
|
||
|
||
# In addition to Salsa-CI, also run these fully MariaDB specific build jobs
|
||
|
||
# Define snippets used to construct jobs
|
||
|
||
.test-prepare-container: &test-prepare-container |
|
||
cd ${WORKING_DIR} # Don't repeat this step, it's just cd ./debian/output
|
||
# Enable automatic restarts from maint scripts
|
||
sed -i "s/101/0/g" -i /usr/sbin/policy-rc.d
|
||
# Fake /sbin/runlevel to avoid warnings of "invoke-rc.d: could not determine current runlevel"
|
||
echo -e '#!/bin/sh\necho "N 5"' > /sbin/runlevel; chmod +x /sbin/runlevel
|
||
# Avoid the warnings of "debconf: unable to initialize frontend: Dialog"
|
||
echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
|
||
# Emit non-zero exit code also on warnings
|
||
echo 'APT::Update::Error-Mode "any";' > /etc/apt/apt.conf.d/non-zero-exit-on-warnings
|
||
# Prime the apt cache so later apt commands can run
|
||
apt-get update -qq
|
||
|
||
# Readline was removed from Debian Sid (and Bullseye) in Feb 2021. To be able to install older
|
||
# versions of MariaDB that depend on it, fetch and install it from Buster.
|
||
.test-install-readline-in-sid-for-backwards-compat: &test-install-readline-in-sid-for-backwards-compat |
|
||
curl -sS -O https://snapshot.debian.org/archive/debian/20190316T031117Z/pool/main/r/readline5/libreadline5_5.2%2Bdfsg-3%2Bb13_amd64.deb
|
||
apt-get -qq install --no-install-recommends --yes ./libreadline5_5.2%2Bdfsg-3%2Bb13_amd64.deb
|
||
|
||
# OpenSSL 1.1 was Debian Sid in Dec 2022 (as Bookworm will ship with OpenSSL 3.0
|
||
# only). To be able to install versions of MariaDB that depend on OpenSSL 1.1,
|
||
# fetch and install it manually.
|
||
.test-install-openssl1-in-sid-for-backwards-compat: &test-install-openssl1-in-sid-for-backwards-compat |
|
||
curl -sS -O https://snapshot.debian.org/archive/debian/20220507T034236Z/pool/main/o/openssl/libssl1.1_1.1.1o-1_amd64.deb
|
||
apt-get -qq install --no-install-recommends --yes ./libssl1.1_1.1.1o-1_amd64.deb
|
||
|
||
# Package libaio1 was replaced by libaio1t64 in Debian Sid in April 2024. To
|
||
# continue installing old MariaDB versions that depend on libaio1, use libaio1
|
||
# from snapshots.
|
||
.test-install-libaio-in-sid-for-backwards-compat: &test-install-libaio-in-sid-for-backwards-compat |
|
||
curl -sS -O https://snapshot.debian.org/archive/debian/20240331T210805Z/pool/main/liba/libaio/libaio1_0.3.113-5_amd64.deb
|
||
apt-get -qq install --no-install-recommends --yes ./libaio1_0.3.113-5_amd64.deb
|
||
|
||
.test-verify-initial: &test-verify-initial |
|
||
dpkg -l | grep -iE 'maria|mysql|galera' || true # List installed
|
||
# MariaDB until 10.5 only had 'mysql', and since only 'mariadb', so try both
|
||
service mysql status || service mariadb status
|
||
mysql --skip-column-names -e "select @@version, @@version_comment" # Show version
|
||
mysql --table -e "SHOW DATABASES;" # List databases before upgrade
|
||
mysql --table -e "SELECT host,user,plugin,authentication_string FROM user;" mysql
|
||
mysql --table -e "SELECT * FROM plugin;" mysql
|
||
mysql --table -e "SHOW PLUGINS;" mysql
|
||
|
||
.test-enable-sid-repos: &test-enable-sid-repos
|
||
# Replace any old repos with just Sid
|
||
- echo 'deb http://deb.debian.org/debian sid main' > /etc/apt/sources.list
|
||
# Upgrade minimal stack first
|
||
- apt-get update -qq
|
||
# Complete upgrade of minimal stack
|
||
- apt-get install -qq --yes apt || export APT_STATUS="failed"
|
||
# Due to https://bugs.debian.org/993755 and #975077 upgrades from Buster or
|
||
# older to Bookworm or newer fails on:
|
||
# /usr/bin/perl: error while loading shared libraries: libcrypt.so.1: cannot
|
||
# open shared object file: No such file or directory
|
||
# dpkg: error processing package libc6:amd64 (--configure):
|
||
# Therefore, run this extra workaround if first run of apt-get install failed:
|
||
- |
|
||
if [ "$APT_STATUS" = "failed" ]
|
||
then
|
||
cd $(mktemp -d) # Use temp dir where apt can download and unpack files
|
||
apt-get -y download libcrypt1
|
||
dpkg-deb -x libcrypt1_*.deb .
|
||
cp -ra usr/lib/* /lib/ || true # libcrypt 1:4.4.36-3+
|
||
cd - # Back to /builds/$USER/mariadb-server/debian/output
|
||
find /lib/*/libcrypt.* -ls # Show that new libcrypt is there
|
||
apt-get -qq --yes --fix-broken install
|
||
apt-get install -qq --yes apt
|
||
fi
|
||
|
||
.test-enable-artifacts-repo: &test-enable-artifacts-repo |
|
||
apt-get install -qq --yes apt-utils
|
||
apt-ftparchive packages . > Packages
|
||
echo "deb [trusted=yes] file:$(pwd) ./" > /etc/apt/sources.list.d/mariadb-local.list
|
||
apt-get update -qq
|
||
|
||
.test-install-all: &test-install-all
|
||
- *test-enable-artifacts-repo
|
||
- apt-get install -qq --simulate ${BUILT_PACKAGES}
|
||
- apt-get install -qq --yes ${BUILT_PACKAGES}
|
||
# Verify installation of MariaDB built in this commit
|
||
- mariadb --version
|
||
- dpkg -l | grep -iE 'maria|mysql|galera'
|
||
- find /etc -name '*mariadb*' -ls -or -name '*mysql*' -ls | sort -k 11
|
||
# Purge old versions if they exist
|
||
- apt-get purge --yes mariadb*10.?
|
||
- find /etc -name '*mariadb*' -ls -or -name '*mysql*' -ls | sort -k 11
|
||
|
||
.test-full-upgrade: &test-full-upgrade
|
||
- *test-enable-artifacts-repo
|
||
- apt-get full-upgrade -qq --simulate
|
||
- apt-get full-upgrade -qq --yes
|
||
# Verify installation of MariaDB built in this commit
|
||
- mariadb --version
|
||
- dpkg -l | grep -iE 'maria|mysql|galera'
|
||
- find /etc -name '*mariadb*' -ls -or -name '*mysql*' -ls | sort -k 11
|
||
# Purge old versions if they exist
|
||
- apt-get purge --yes mariadb*10.?
|
||
- find /etc -name '*mariadb*' -ls -or -name '*mysql*' -ls | sort -k 11
|
||
# Purging the old server might stop the running server, so restart it just in case
|
||
- service mariadb restart
|
||
|
||
.test-install-all-libs: &test-install-all-libs
|
||
- *test-enable-artifacts-repo
|
||
- apt-get install -yq --no-install-recommends libmariadb-dev-compat libmariadbd-dev
|
||
# Installs 31 packages, including:
|
||
# libmariadb3 libmariadb-dev libmariadb-dev-compat libmariadbd19t64 libmariadbd-dev
|
||
|
||
.test-full-upgrade-libs: &test-full-upgrade-libs
|
||
- *test-enable-artifacts-repo
|
||
- apt-get full-upgrade -y
|
||
- dpkg -l | grep -iE 'maria|mysql|galera'
|
||
# library tests don't have the mariadb client nor server, so don't check them
|
||
|
||
.test-verify-final: &test-verify-final |
|
||
dpkg -l | grep -e "mariadb-server.*10\.11"
|
||
mkdir -p debug # Ensure dir exists before using it
|
||
find /var/lib/mysql -ls > debug/var-lib-mysql.list || true # Ignore errors about "no such file or directory"
|
||
cp -ra /etc/mysql debug/etc-mysql
|
||
mariadb --skip-column-names -e "select @@version, @@version_comment" # Show version
|
||
mariadb --table -e "SHOW DATABASES;" # List databases
|
||
mariadb --table -e "SELECT host,user,plugin,authentication_string FROM user;" mysql
|
||
mariadb --table -e "SELECT * FROM plugin;" mysql
|
||
mariadb --table -e "SHOW PLUGINS;" mysql
|
||
# Test that InnoDB works and that command 'mysql' is also still usable
|
||
mysql -e "CREATE DATABASE test; USE test; CREATE TABLE t(a INT PRIMARY KEY) ENGINE=INNODB; INSERT INTO t VALUEs (1); SELECT * FROM t; DROP TABLE t; DROP DATABASE test;"
|
||
|
||
.test-verify-libs: &test-verify-libs
|
||
# Don't use a collapsed command as Gitlab-CI would hide each command from the output
|
||
- ldconfig -p | grep -e mariadb -e mysql
|
||
- pkg-config --list-all
|
||
- pkg-config --cflags --libs mysqlclient
|
||
- pkg-config --cflags --libs libmariadb
|
||
- pkg-config --cflags --libs mariadb
|
||
- apt-get install -qq --yes --no-install-recommends g++
|
||
- |
|
||
# Build a test binary that depends on libmysqlclient
|
||
cat > b933063.cpp <<EOF
|
||
#include <iostream>
|
||
#include <mysql/mysql.h>
|
||
#include <stdexcept>
|
||
int main()
|
||
{
|
||
MYSQL h;
|
||
if (!mysql_init(&h)
|
||
|| mysql_options(&h, MYSQL_READ_DEFAULT_GROUP, "")
|
||
// || mysql_options(&h, MYSQL_SET_CHARSET_NAME, "utf8mb4")
|
||
|| !mysql_real_connect(&h, "", "", NULL, "", 0, NULL, 0))
|
||
throw std::runtime_error(mysql_error(&h));
|
||
std::string q = "show variables like '%char%'";
|
||
if (mysql_real_query(&h, q.data(), q.size()))
|
||
throw std::runtime_error(mysql_error(&h));
|
||
MYSQL_RES* result = mysql_store_result(&h);
|
||
if (!result && mysql_errno(&h))
|
||
throw std::runtime_error(mysql_error(&h));
|
||
while (MYSQL_ROW row = mysql_fetch_row(result))
|
||
{
|
||
std::cout << row[0] << ": " << row[1] << "\n";
|
||
}
|
||
return 0;
|
||
}
|
||
EOF
|
||
apt-get install -qq --yes --allow-downgrades ./*.deb # Server must be installed for client to connect
|
||
echo "Testing -l mysqlclient"
|
||
g++ b933063.cpp -l mysqlclient && ./a.out | tee result
|
||
if grep --quiet latin result; then echo "ERROR: Charset latin found!"; exit 1; fi
|
||
echo "Testing -l mariadbclient"
|
||
g++ b933063.cpp -l mariadbclient && ./a.out | tee result
|
||
if grep --quiet latin result; then echo "ERROR: Charset latin found!"; exit 1; fi
|
||
- |
|
||
# Build a test binary to verify API version strings
|
||
cat > b1031863.cpp <<EOF
|
||
#include <cstring>
|
||
#include <iostream>
|
||
#include <mysql/mysql.h>
|
||
using namespace std;
|
||
|
||
void test_if_starts_with(const string expected, const string tested, const string name) {
|
||
int r = strncmp(tested.c_str(), expected.c_str(), expected.size());
|
||
if (r == 0) {
|
||
cout << name << ": " << tested << "\n";
|
||
} else {
|
||
cout << "ERROR: " << name << " started with " << tested << " instead of the expected " << expected << "!\n";
|
||
exit(1);
|
||
}
|
||
}
|
||
|
||
int main()
|
||
{
|
||
MYSQL h;
|
||
// Constants refer to server version
|
||
test_if_starts_with("1011", to_string(MARIADB_VERSION_ID), "MARIADB_VERSION_ID");
|
||
test_if_starts_with("1011", to_string(MYSQL_VERSION_ID), "MYSQL_VERSION_ID");
|
||
// Client ABI returns connector version
|
||
test_if_starts_with("303", to_string(mysql_get_client_version()), "mysql_get_client_version()");
|
||
test_if_starts_with("3.3", mysql_get_client_info(), "mysql_get_client_info()");
|
||
return 0;
|
||
}
|
||
EOF
|
||
g++ b1031863.cpp -l mysqlclient && ./a.out
|
||
|
||
|
||
.salsa-ci-template-for-mariadb:
|
||
stage: test
|
||
needs:
|
||
- job: build
|
||
image: debian:${RELEASE}
|
||
artifacts:
|
||
when: always
|
||
name: "$CI_BUILD_NAME"
|
||
paths:
|
||
- ${WORKING_DIR}/debug
|
||
script:
|
||
- echo "This script section must be overridden in each test" && exit 1
|
||
variables:
|
||
GIT_STRATEGY: none
|
||
except:
|
||
variables:
|
||
- $CI_COMMIT_TAG != null && $SALSA_CI_ENABLE_PIPELINE_ON_TAGS !~ /^(1|yes|true)$/
|
||
|
||
.salsa-ci-template-for-mariadb-upgrade:
|
||
stage: test
|
||
needs:
|
||
- job: build
|
||
image: debian:${RELEASE}
|
||
artifacts:
|
||
when: always
|
||
name: "$CI_BUILD_NAME"
|
||
paths:
|
||
- ${WORKING_DIR}/debug
|
||
before_script:
|
||
- *test-prepare-container
|
||
- apt-get install -qq --yes --no-install-recommends ca-certificates curl
|
||
- |
|
||
[[ -d /etc/apt/keyrings ]] || mkdir /etc/apt/keyrings
|
||
curl -sS https://mariadb.org/mariadb_release_signing_key.pgp -o /etc/apt/keyrings/mariadb-keyring.pgp
|
||
cat >/etc/apt/sources.list.d/mariadb.sources <<EOF
|
||
X-Repolib-Name: MariaDB
|
||
Types: deb
|
||
URIs: https://archive.mariadb.org/mariadb-${MARIADB_VERSION}/repo/debian
|
||
Suites: ${RELEASE}
|
||
Components: main
|
||
Signed-By: /etc/apt/keyrings/mariadb-keyring.pgp
|
||
EOF
|
||
- apt-get update -qq
|
||
script:
|
||
- echo "This script section must be overridden in each test" && exit 1
|
||
variables:
|
||
GIT_STRATEGY: none
|
||
MARIADB_VERSION: "10.0"
|
||
except:
|
||
variables:
|
||
- $CI_COMMIT_TAG != null && $SALSA_CI_ENABLE_PIPELINE_ON_TAGS !~ /^(1|yes|true)$/
|
||
|
||
fresh install:
|
||
extends: .salsa-ci-template-for-mariadb
|
||
script:
|
||
- *test-prepare-container
|
||
- *test-install-all
|
||
- service mariadb status # There is no init.d/mysql in MariaDB 10.5+
|
||
- *test-verify-final
|
||
|
||
simple upgrade:
|
||
extends: .salsa-ci-template-for-mariadb
|
||
stage: upgrade MariaDB
|
||
script:
|
||
- *test-prepare-container
|
||
- apt-get install -qq --yes 'default-mysql*' ${BUILT_PACKAGES}
|
||
- *test-full-upgrade
|
||
- service mariadb status # There is no init.d/mysql in MariaDB 10.5+
|
||
- *test-verify-final
|
||
|
||
mariadb and Bookworm upgrade:
|
||
extends: .salsa-ci-template-for-mariadb
|
||
stage: upgrade MariaDB and distro
|
||
image: debian:bookworm
|
||
script:
|
||
- *test-prepare-container
|
||
# Install everything MariaDB currently in Debian Bookworm
|
||
- apt-get install -qq --yes 'default-mysql*' 'mariadb-*' 'libmariadb*'
|
||
# Verify installation of MariaDB from Bookworm
|
||
- dpkg -l | grep -e "mariadb-server.*10\.11"
|
||
- *test-verify-initial
|
||
- *test-enable-sid-repos
|
||
# Ensure mariadbd will not crash on next shutdown for any reason
|
||
- service mariadb restart
|
||
- *test-full-upgrade
|
||
- service mariadb status # There is no init.d/mysql in MariaDB 10.5+
|
||
- *test-verify-final
|
||
|
||
mariadb-10.6 and Bookworm-20230208 upgrade:
|
||
extends: .salsa-ci-template-for-mariadb
|
||
stage: upgrade MariaDB and distro
|
||
image: debian:bookworm-20230208
|
||
script:
|
||
- *test-prepare-container
|
||
- |
|
||
echo 'deb [check-valid-until=no] http://snapshot.debian.org/archive/debian/20230208T130000Z bookworm main' > /etc/apt/sources.list.d/bookworm.list
|
||
rm /etc/apt/sources.list.d/debian.sources
|
||
apt-get update -qq
|
||
# In February 2023 Bookworm snapshot this will install MariaDB 10.6
|
||
- apt-get install -qq --yes mariadb-server
|
||
# Verify installation of MariaDB from (February 2023) Bookworm
|
||
- dpkg -l | grep -e "mariadb-server.*10\.6"
|
||
- *test-verify-initial
|
||
- *test-enable-sid-repos
|
||
# Ensure mariadbd will not crash on next shutdown for any reason
|
||
- service mariadb restart
|
||
- *test-full-upgrade
|
||
- service mariadb status # There is no init.d/mysql in MariaDB 10.5+
|
||
- apt-get purge --yes mariadb*10.?
|
||
- *test-verify-final
|
||
|
||
mariadb-10.6 and Jammy upgrade:
|
||
extends: .salsa-ci-template-for-mariadb
|
||
stage: upgrade MariaDB and distro
|
||
image: ubuntu:jammy
|
||
script:
|
||
- *test-prepare-container
|
||
# Install everything MariaDB currently in Ubuntu Jammy
|
||
- apt-get install -qq --yes 'mariadb-*' 'libmariadb*'
|
||
# Verify installation of MariaDB from Jammy
|
||
- dpkg -l | grep -e "mariadb-server.*10\.6"
|
||
- *test-verify-initial
|
||
# Install Debian Sid signing keys as Ubuntu does not have them by default
|
||
- apt-get install -qq --yes --no-install-recommends curl
|
||
- curl -sSLO http://deb.debian.org/debian/pool/main/d/debian-archive-keyring/debian-archive-keyring_2023.4_all.deb
|
||
- apt-get install -qq --yes ./debian-archive-keyring_*
|
||
- *test-enable-sid-repos
|
||
# Ensure mariadbd will not crash on next shutdown for any reason
|
||
- service mariadb restart
|
||
- *test-enable-artifacts-repo
|
||
- apt-get install -qq --simulate mariadb-server
|
||
- apt-get install -qq --yes mariadb-server
|
||
# Due to usrmerge, full-upgrade from Jammy to Trixie or newer cannot work
|
||
- service mariadb status # There is no init.d/mysql in MariaDB 10.5+
|
||
- apt-get purge --yes mariadb*10.?
|
||
- *test-verify-final
|
||
|
||
mariadb-10.5 and Bullseye upgrade:
|
||
extends: .salsa-ci-template-for-mariadb
|
||
stage: upgrade MariaDB and distro
|
||
image: debian:bullseye
|
||
script:
|
||
- *test-prepare-container
|
||
# Install everything MariaDB currently in Debian Bullseye
|
||
- apt-get install -qq --yes 'default-mysql*' 'mariadb-*' 'libmariadb*'
|
||
# Verify installation of MariaDB from Bullseye
|
||
- dpkg -l | grep -e "mariadb-server.*10\.5"
|
||
- *test-verify-initial
|
||
- *test-enable-sid-repos
|
||
# Ensure mariadbd will not crash on next shutdown for any reason
|
||
- service mariadb restart
|
||
- *test-enable-artifacts-repo
|
||
- apt-get install -qq --simulate mariadb-server
|
||
- apt-get install -qq --yes mariadb-server
|
||
# Due to usrmerge, full-upgrade from Bullseye to Trixie or newer cannot work
|
||
- service mariadb status # There is no init.d/mysql in MariaDB 10.5+
|
||
- apt-get purge --yes mariadb*10.?
|
||
- *test-verify-final
|
||
|
||
mariadb-10.3 and Buster upgrade:
|
||
extends: .salsa-ci-template-for-mariadb
|
||
stage: upgrade MariaDB and distro
|
||
image: debian:buster
|
||
script:
|
||
- *test-prepare-container
|
||
# Install everything MariaDB currently in Debian Buster
|
||
- apt-get install -qq --yes 'default-mysql*' 'mariadb-*' 'libmariadb*'
|
||
# Verify installation of MariaDB from Buster
|
||
- dpkg -l | grep -e "mariadb-server.*10\.3"
|
||
- *test-verify-initial
|
||
- *test-enable-sid-repos
|
||
# Ensure mariadbd will not crash on next shutdown for any reason
|
||
- service mysql restart # in 10.3 service name is still 'mysql'
|
||
- *test-enable-artifacts-repo
|
||
- apt-get install -qq --simulate mariadb-server
|
||
- apt-get install -qq --yes mariadb-server
|
||
# Due to usrmerge, full-upgrade from Bullseye to Trixie or newer cannot work
|
||
- service mysql status
|
||
# mariadb-10.3 in Buster ships a /etc/init.d/mysql and it continues to exist
|
||
# after upgrade, and is removed only on purge
|
||
- apt-get purge --yes mariadb*10.?
|
||
- service mariadb status
|
||
# Give the mariadb-upgrade plenty of time to complete, otherwise next commands
|
||
# fail on non-existing mariadb.sys user
|
||
- sleep 15
|
||
- *test-verify-final
|
||
|
||
mariadb-10.3 and Focal upgrade:
|
||
extends: .salsa-ci-template-for-mariadb
|
||
stage: upgrade MariaDB and distro
|
||
image: ubuntu:focal
|
||
script:
|
||
- *test-prepare-container
|
||
# Install everything MariaDB currently in Ubuntu Focal
|
||
- apt-get install -qq --yes 'mariadb-*' 'libmariadb*'
|
||
# Verify installation of MariaDB from Focal
|
||
- dpkg -l | grep -e "mariadb-server.*10\.3"
|
||
- *test-verify-initial
|
||
# Install Debian Sid signing keys as Ubuntu does not have them by default
|
||
- apt-get install -qq --yes --no-install-recommends curl
|
||
- curl -sSLO http://deb.debian.org/debian/pool/main/d/debian-archive-keyring/debian-archive-keyring_2023.4_all.deb
|
||
- apt-get install -qq --yes ./debian-archive-keyring_*
|
||
- *test-enable-sid-repos
|
||
# Ensure mariadbd will not crash on next shutdown for any reason
|
||
- service mysql restart # in 10.3 service name is still 'mysql'
|
||
- *test-enable-artifacts-repo
|
||
- apt-get install -qq --simulate mariadb-server
|
||
- apt-get install -qq --yes mariadb-server
|
||
# Due to usrmerge, full-upgrade from Focal to Trixie or newer cannot work
|
||
- service mysql status
|
||
# mariadb-10.3 in Focal ships a /etc/init.d/mysql and it continues to exist
|
||
# after upgrade, and is removed only on purge
|
||
- apt-get purge --yes mariadb*10.?
|
||
# Give the mariadb-upgrade plenty of time to complete, otherwise next commands
|
||
# fail on non-existing mariadb.sys user
|
||
- sleep 15
|
||
- *test-verify-final
|
||
|
||
# Similar to the Cacti install test, check that MariaDB consumer Zoph upgrades
|
||
default-mysql-server and Bookworm upgrade:
|
||
extends: .salsa-ci-template-for-mariadb
|
||
stage: upgrade MariaDB and distro
|
||
image: debian:bookworm
|
||
script:
|
||
- *test-prepare-container
|
||
# Install everything MariaDB currently in Debian Bookworm
|
||
- apt-get install -qq --yes default-mysql-server zoph
|
||
# Verify installation of MariaDB from Bookworm
|
||
- dpkg -l | grep -e "mariadb-server.*10\.11"
|
||
- *test-verify-initial
|
||
- *test-enable-sid-repos
|
||
- *test-enable-artifacts-repo
|
||
- apt-get install -qq --simulate default-mysql-server
|
||
- apt-get install -qq --yes default-mysql-server
|
||
- *test-full-upgrade
|
||
- service mariadb status # There is no init.d/mysql in MariaDB 10.5+
|
||
- *test-verify-final
|
||
|
||
# Similar to the Cacti install test, check that MariaDB consumer Zoph upgrades
|
||
default-mysql-server and Bullseye upgrade:
|
||
extends: .salsa-ci-template-for-mariadb
|
||
stage: upgrade MariaDB and distro
|
||
image: debian:bullseye
|
||
script:
|
||
- *test-prepare-container
|
||
# Install everything MariaDB currently in Debian Bullseye
|
||
- apt-get install -qq --yes default-mysql-server zoph
|
||
# Verify installation of MariaDB from Bullseye
|
||
- dpkg -l | grep -e "mariadb-server.*10\.5"
|
||
- *test-verify-initial
|
||
- *test-enable-sid-repos
|
||
- *test-enable-artifacts-repo
|
||
- apt-get install -qq --simulate default-mysql-server
|
||
- apt-get install -qq --yes default-mysql-server
|
||
# Due to usrmerge, full-upgrade from Bullseye to Trixie or newer cannot work
|
||
- service mariadb status # There is no init.d/mysql in MariaDB 10.5+
|
||
- *test-verify-final
|
||
|
||
test basic features:
|
||
extends: .salsa-ci-template-for-mariadb
|
||
script:
|
||
- *test-prepare-container
|
||
- *test-install-all
|
||
- service mariadb status # There is no init.d/mysql in MariaDB 10.5+
|
||
- *test-verify-final
|
||
- |
|
||
# Print info about server
|
||
mariadb --skip-column-names -e "select @@version, @@version_comment"
|
||
mariadb --skip-column-names -e "select engine, support, transactions, savepoints from information_schema.engines order by engine" | sort
|
||
mariadb --skip-column-names -e "select plugin_name, plugin_status, plugin_type, plugin_library, plugin_license from information_schema.all_plugins order by plugin_name, plugin_library"
|
||
# Test various features
|
||
mariadb -e "CREATE DATABASE db"
|
||
mariadb -e "CREATE TABLE db.t_innodb(a1 SERIAL, c1 CHAR(8)) ENGINE=InnoDB; INSERT INTO db.t_innodb VALUES (1,'"'"'foo'"'"'),(2,'"'"'bar'"'"')"
|
||
mariadb -e "CREATE TABLE db.t_myisam(a2 SERIAL, c2 CHAR(8)) ENGINE=MyISAM; INSERT INTO db.t_myisam VALUES (1,'"'"'foo'"'"'),(2,'"'"'bar'"'"')"
|
||
mariadb -e "CREATE TABLE db.t_aria(a3 SERIAL, c3 CHAR(8)) ENGINE=Aria; INSERT INTO db.t_aria VALUES (1,'"'"'foo'"'"'),(2,'"'"'bar'"'"')"
|
||
mariadb -e "CREATE TABLE db.t_memory(a4 SERIAL, c4 CHAR(8)) ENGINE=MEMORY; INSERT INTO db.t_memory VALUES (1,'"'"'foo'"'"'),(2,'"'"'bar'"'"')"
|
||
mariadb -e "CREATE ALGORITHM=MERGE VIEW db.v_merge AS SELECT * FROM db.t_innodb, db.t_myisam, db.t_aria"
|
||
mariadb -e "CREATE ALGORITHM=TEMPTABLE VIEW db.v_temptable AS SELECT * FROM db.t_innodb, db.t_myisam, db.t_aria"
|
||
mariadb -e "CREATE PROCEDURE db.p() SELECT * FROM db.v_merge"
|
||
mariadb -e "CREATE FUNCTION db.f() RETURNS INT DETERMINISTIC RETURN 1"
|
||
# Test that the features still work (this step can be done e.g. after an upgrade)
|
||
mariadb -e "SHOW TABLES IN db"
|
||
mariadb -e "SELECT * FROM db.t_innodb; INSERT INTO db.t_innodb VALUES (3,'"'"'foo'"'"'),(4,'"'"'bar'"'"')"
|
||
mariadb -e "SELECT * FROM db.t_myisam; INSERT INTO db.t_myisam VALUES (3,'"'"'foo'"'"'),(4,'"'"'bar'"'"')"
|
||
mariadb -e "SELECT * FROM db.t_aria; INSERT INTO db.t_aria VALUES (3,'"'"'foo'"'"'),(4,'"'"'bar'"'"')"
|
||
mariadb -e "SELECT * FROM db.t_memory; INSERT INTO db.t_memory VALUES (3,'"'"'foo'"'"'),(4,'"'"'bar'"'"')"
|
||
mariadb -e "SELECT COUNT(*) FROM db.v_merge"
|
||
mariadb -e "SELECT COUNT(*) FROM db.v_temptable"
|
||
mariadb -e "CALL db.p()"
|
||
mariadb -e "SELECT db.f()"
|
||
- |
|
||
# Test TLS connections
|
||
dpkg -l | grep -i -e tls -e ssl
|
||
# Create user for TCP connection, must have password
|
||
mariadb -e "SET PASSWORD FOR 'mysql'@'localhost' = PASSWORD('asdf234');"
|
||
cat <<EOF > /root/.my.cnf
|
||
[client]
|
||
user=mysql
|
||
password=asdf234
|
||
protocol=tcp
|
||
EOF
|
||
export CERT_PATH=/usr/share/mariadb/mariadb-test/std_data
|
||
openssl verify -CAfile $CERT_PATH/cacert.pem $CERT_PATH/server-cert.pem
|
||
openssl x509 -subject -issuer -noout -in $CERT_PATH/cacert.pem
|
||
openssl x509 -subject -issuer -noout -in $CERT_PATH/server-cert.pem
|
||
cat <<EOF > /etc/mysql/mariadb.conf.d/tls.cnf
|
||
[client-server]
|
||
ssl = on
|
||
ssl-ca = $CERT_PATH/cacert.pem
|
||
ssl-cert = $CERT_PATH/server-cert.pem
|
||
ssl-key = $CERT_PATH/server-key.pem
|
||
[server]
|
||
require-secure-transport = on
|
||
[client]
|
||
ssl-verify-server-cert = on
|
||
EOF
|
||
service mariadb restart
|
||
mariadb -Bse 'STATUS' | tee result
|
||
# Ensure important values present, otherwise fail job
|
||
grep --quiet "localhost via TCP/IP" result
|
||
mariadb -Bse 'SHOW VARIABLES' | grep -e tls -e ssl | tee result
|
||
grep --quiet "have_ssl YES" result
|
||
grep --quiet TLSv1.3 result
|
||
mariadb -Bse 'SHOW SESSION STATUS' | grep -i -e tls -e ssl | tee result
|
||
grep --quiet TLSv1.3 result
|
||
|
||
# Install Cacti, which in uses dbconfig-common to configure the MariaDB user and
|
||
# connection automatically in order to validate that at least one downstream
|
||
# server consumer continues to work.
|
||
test consumer cacti:
|
||
extends: .salsa-ci-template-for-mariadb
|
||
script:
|
||
- *test-prepare-container
|
||
- *test-enable-artifacts-repo
|
||
- apt-get install -qq --yes cacti
|
||
- mariadb -E -e "SHOW CREATE TABLE version;" cacti
|
||
|
||
# Build a piece of software that was designed for libmysqlclient-dev but using the
|
||
# libmariadb-dev-compat layer. Should always end up using libmariadb.so.3 run-time.
|
||
build mariadbclient consumer Python-MySQLdb:
|
||
extends: .salsa-ci-template-for-mariadb
|
||
script:
|
||
- *test-prepare-container
|
||
- *test-install-all-libs
|
||
- apt-get install -qq --yes pkg-config python3-pip
|
||
# See what MySQLdb will build with
|
||
- pkg-config --cflags --libs mysqlclient
|
||
# MySQLdb is also available in Debian as package python3-mysqldb, but
|
||
# install it from pip to force that the client is compiled with
|
||
# libmariadb-dev-compat on-the-fly.
|
||
# Python 3.11 needs `--break-system-packages` to proceed with this.
|
||
- pip3 install --break-system-packages mysqlclient # Compiles module against libmysqlclient
|
||
- apt-get purge --yes libmariadb-dev # Not needed for run-time
|
||
- python3 -c "import MySQLdb; print(MySQLdb.get_client_info())"
|
||
|
||
libmysql* to libmariadb* upgrade:
|
||
extends: .salsa-ci-template-for-mariadb
|
||
stage: upgrade MariaDB
|
||
script:
|
||
- *test-prepare-container
|
||
# Install all libmysql* available in Debian unstable
|
||
- apt-get install -qq --yes pkg-config libmysqlclient-dev
|
||
- pkg-config --list-all
|
||
- pkg-config --cflags mysqlclient # mysqlclient.pc from original package
|
||
- *test-enable-artifacts-repo
|
||
- apt-get install -qq --yes libmariadb3
|
||
- pkg-config --list-all
|
||
- apt-get install -qq --yes libmariadb-dev
|
||
- pkg-config --list-all
|
||
- apt-get install -qq --yes libmariadb-dev-compat
|
||
- pkg-config --cflags mysqlclient # mysqlclient.pc from compat package
|
||
- pkg-config --list-all
|
||
- apt-get install -qq --yes libmariadbd19t64
|
||
- pkg-config --list-all
|
||
- apt-get install -qq --yes libmariadbd-dev
|
||
- pkg-config --list-all
|
||
- apt-get install -qq --yes default-libmysqlclient-dev default-libmysqld-dev
|
||
- *test-verify-libs
|
||
|
||
default-libmysqlclient-dev upgrade:
|
||
extends: .salsa-ci-template-for-mariadb
|
||
stage: upgrade MariaDB
|
||
script:
|
||
- *test-prepare-container
|
||
- apt-get install -qq --yes pkg-config default-libmysqlclient-dev default-libmysqld-dev
|
||
- pkg-config --list-all
|
||
- *test-full-upgrade-libs
|
||
- *test-verify-libs
|
||
|
||
default-libmysqlclient-dev and Bookworm upgrade:
|
||
extends: .salsa-ci-template-for-mariadb
|
||
stage: upgrade MariaDB and distro
|
||
image: debian:bookworm
|
||
script:
|
||
- *test-prepare-container
|
||
- apt-get install -qq --yes pkg-config default-libmysqlclient-dev
|
||
- pkg-config --list-all
|
||
- *test-enable-sid-repos
|
||
- *test-full-upgrade-libs
|
||
- *test-verify-libs
|
||
|
||
default-libmysqlclient-dev and Bullseye upgrade:
|
||
extends: .salsa-ci-template-for-mariadb
|
||
stage: upgrade MariaDB and distro
|
||
image: debian:bullseye
|
||
script:
|
||
- *test-prepare-container
|
||
- apt-get install -qq --yes pkg-config default-libmysqlclient-dev
|
||
- pkg-config --list-all
|
||
- *test-enable-sid-repos
|
||
# Due to usrmerge, full-upgrade from Bullseye to Trixie or newer cannot work
|
||
- *test-install-all-libs
|
||
- *test-verify-libs
|
||
|
||
# No longer possible since as it pulls as dependencies packages that trigger
|
||
# usrmerge, which cannot run in a container
|
||
#default-libmysqlclient-dev and Buster upgrade:
|
||
|
||
# Upgrading from MySQL 8.0 with datadir in place is not possible. Users need to do a data dump.
|
||
# The Debian maintainer scripts detect this situation and simply moves old datadir aside and start fresh.
|
||
mysql-8.0 in Sid upgrade:
|
||
extends: .salsa-ci-template-for-mariadb
|
||
stage: upgrade MariaDB variant
|
||
image: debian:sid
|
||
script:
|
||
- *test-prepare-container
|
||
# The postinst fails often if 'ps' is missing from system, so install procps
|
||
- apt-get install -qq --yes 'mysql*' libmysqlcppconn7t64
|
||
# Ensure MySQL 8.0 package actually got installed
|
||
- dpkg -l | grep -e "mysql-server.*8\.0"
|
||
- *test-verify-initial
|
||
- *test-install-all
|
||
# Due to some (currently unknown) changes in MySQL 8.0 packaging or apt
|
||
# behaviour changes, a system with a previous installation of MySQL 8.0 will
|
||
# on upgrades to MariaDB first fully remove MySQL, including the
|
||
# /etc/init.d/mysql file, so previous techniques in
|
||
# mariadb-server-10.6.postinst to maintain backwards compatibility with
|
||
# 'service mysql status' after installing MariaDB on top MySQL no longer
|
||
# works. Thus the step to test it now intentionally has a fallback to use
|
||
# the service name 'mariadb' instead, and the fallback is always used.
|
||
- sleep 5 # Give the mysql_upgrade a bit of time to complete before querying the server
|
||
- service mysql status || service mariadb status
|
||
- *test-verify-final
|
||
|
||
# Upgrading from MySQL 8.0 with datadir in place is not possible. Users need to do a data dump.
|
||
# The Debian maintainer scripts detect this situation and simply moves old datadir aside and start fresh.
|
||
mysql-8.0 in Ubuntu 23.10 upgrade:
|
||
extends: .salsa-ci-template-for-mariadb
|
||
stage: upgrade MariaDB variant
|
||
image: ubuntu:mantic
|
||
script:
|
||
- *test-prepare-container
|
||
- apt-get install -qq --yes procps mysql-server 'libmysqlc*'
|
||
# Ensure MySQL 8.0 package actually got installed
|
||
- dpkg -l | grep mysql
|
||
- service mysql status
|
||
- *test-verify-initial
|
||
# Install Debian Sid signing keys as Ubuntu does not have them by default
|
||
- apt-get install -qq --yes --no-install-recommends curl
|
||
- curl -sSLO http://deb.debian.org/debian/pool/main/d/debian-archive-keyring/debian-archive-keyring_2023.4_all.deb
|
||
- apt-get install -qq --yes ./debian-archive-keyring_*
|
||
- *test-enable-sid-repos
|
||
# Ensure mysqld will not crash on next shutdown for any reason
|
||
- service mysql restart
|
||
- *test-enable-artifacts-repo
|
||
- apt-get install -qq --simulate mariadb-server
|
||
- apt-get install -qq --yes mariadb-server
|
||
# Due to usrmerge, full-upgrade from Mantic to Trixie or newer may not work
|
||
- service mariadb status # There is no init.d/mysql in MariaDB 10.5+
|
||
# Remove everything MySQL except mysql-common which also MariaDB depends on
|
||
- apt-get purge --yes mysql-s* mysql-cl* libmysql*
|
||
- *test-verify-final
|
||
|
||
# Upgrading from MySQL 8.0 with datadir in place is not possible. Users need to do a data dump.
|
||
# The Debian maintainer scripts detect this situation and simply moves old datadir aside and start fresh.
|
||
mysql-community-cluster-8.0 from MySQL.com with Bookworm upgrade:
|
||
extends: .salsa-ci-template-for-mariadb
|
||
stage: upgrade MariaDB variant
|
||
image: debian:bookworm
|
||
script:
|
||
- *test-prepare-container
|
||
- |
|
||
apt-get install -qq --yes --no-install-recommends ca-certificates curl systemctl
|
||
curl -sS "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xbca43417c3b485dd128ec6d4b7b3b788a8d3785c" -o /etc/apt/trusted.gpg.d/mysql.asc
|
||
echo "deb https://repo.mysql.com/apt/debian/ bookworm mysql-cluster-8.0" > /etc/apt/sources.list.d/mysql.list
|
||
apt-get update -qq
|
||
- apt-get install -qq --yes mysql-cluster-community-server
|
||
- sed 's/ExecStartPre=+/ExecStartPre=/' -i /lib/systemd/system/mysql.service # Hack to make file compatible with systemctl shim
|
||
- systemctl start mysql
|
||
- dpkg -l | grep -iE 'maria|mysql|galera'
|
||
- systemctl status mysql; mysql -e 'SELECT VERSION()'
|
||
- systemctl stop mysql # Stop manually as maintainer scripts don't handle this with systemctl shim
|
||
- *test-enable-sid-repos
|
||
- *test-enable-artifacts-repo
|
||
- apt-get install -qq --simulate mariadb-server
|
||
- apt-get install -qq --yes mariadb-server
|
||
# Ignore systemctl shim result as MariaDB systemd file is incompatible with it and yields:
|
||
# ERROR:systemctl:the ExecStartPre control process exited with error code
|
||
- systemctl status mysql || true
|
||
- mysql -e 'SELECT VERSION()' || true
|
||
- sleep 5 # Give the mysql_upgrade a bit of time to complete before querying the server
|
||
- *test-verify-final
|
||
|
||
mariadb.org-10.11 upgrade:
|
||
extends: .salsa-ci-template-for-mariadb-upgrade
|
||
stage: upgrade MariaDB variant
|
||
variables:
|
||
MARIADB_VERSION: "10.11"
|
||
script:
|
||
- apt-get install -qq --yes mariadb-server
|
||
- *test-verify-initial
|
||
# Install MariaDB built in this commit
|
||
# Force downgrades so our version installs on top of upstream revision, e.g. 1:11.10.1-1 vs 1:11.10.1+mariadb~sid
|
||
- apt-get install -qq --yes --allow-downgrades ./*.deb
|
||
# Verify installation of MariaDB built in this commit
|
||
- dpkg -l | grep -iE 'maria|mysql|galera' || true # List installed
|
||
- mariadb --version # Client version
|
||
- service mariadb status # There is no init.d/mysql in MariaDB 10.5+
|
||
- *test-verify-final
|
||
|
||
mariadb.org-10.10 upgrade:
|
||
extends: .salsa-ci-template-for-mariadb-upgrade
|
||
stage: upgrade MariaDB variant
|
||
variables:
|
||
MARIADB_VERSION: "10.10"
|
||
script:
|
||
# this should not use Sid to begin with
|
||
- apt-get install -qq --yes mariadb-server=1:10.10.2+maria~debunstable mariadb-client=1:10.10.2+maria~debunstable
|
||
- *test-verify-initial
|
||
- *test-full-upgrade
|
||
- service mariadb status # There is no init.d/mysql in MariaDB 10.5+
|
||
- *test-verify-final
|
||
|
||
mariadb.org-10.9 upgrade:
|
||
extends: .salsa-ci-template-for-mariadb-upgrade
|
||
stage: upgrade MariaDB variant
|
||
variables:
|
||
MARIADB_VERSION: "10.9"
|
||
script:
|
||
# this should not use Sid to begin with
|
||
- apt-get install -qq --yes mariadb-server=1:10.9.4+maria~debunstable mariadb-client=1:10.9.4+maria~debunstable
|
||
- *test-verify-initial
|
||
- *test-full-upgrade
|
||
- service mariadb status # There is no init.d/mysql in MariaDB 10.5+
|
||
- *test-verify-final
|
||
|
||
mariadb.org-10.8 upgrade:
|
||
extends: .salsa-ci-template-for-mariadb-upgrade
|
||
stage: upgrade MariaDB variant
|
||
variables:
|
||
MARIADB_VERSION: "10.8"
|
||
script:
|
||
- apt-get install -qq --yes mariadb-server-10.8
|
||
- *test-verify-initial
|
||
- *test-install-all
|
||
- service mariadb status # There is no init.d/mysql in MariaDB 10.5+
|
||
- *test-verify-final
|
||
|
||
mariadb.org-10.7 upgrade:
|
||
extends: .salsa-ci-template-for-mariadb-upgrade
|
||
stage: upgrade MariaDB variant
|
||
variables:
|
||
MARIADB_VERSION: "10.7"
|
||
script:
|
||
- apt-get install -qq --yes mariadb-server-10.7
|
||
- *test-verify-initial
|
||
- *test-install-all
|
||
- service mariadb status # There is no init.d/mysql in MariaDB 10.5+
|
||
- *test-verify-final
|
||
|
||
mariadb.org-10.6 upgrade:
|
||
extends: .salsa-ci-template-for-mariadb-upgrade
|
||
stage: upgrade MariaDB variant
|
||
variables:
|
||
MARIADB_VERSION: "10.6"
|
||
script:
|
||
# Package libmariadbclient-dev from mariadb.org conflicts with libmariadb-dev in Sid, so cannot use wildcard that would include it
|
||
# Enable this line when there is a way to install them only from the mariadb.org repo
|
||
# - apt-get install -qq --yes 'mariadb*' libmariadb3 'libmariadb-*' 'libmariadbd*'
|
||
- apt-get install -qq --yes mariadb-server-10.6
|
||
- *test-verify-initial
|
||
- *test-install-all
|
||
- service mariadb status # There is no init.d/mysql in MariaDB 10.5+
|
||
- *test-verify-final
|
||
|
||
# archive.mariadb.org for Debian Sid latest is 10.5.13
|
||
mariadb.org-10.5 upgrade:
|
||
extends: .salsa-ci-template-for-mariadb-upgrade
|
||
stage: upgrade MariaDB variant
|
||
variables:
|
||
MARIADB_VERSION: "10.5"
|
||
script:
|
||
- *test-install-openssl1-in-sid-for-backwards-compat
|
||
- apt-get install -qq --yes mariadb-server-10.5
|
||
- *test-verify-initial
|
||
- *test-install-all
|
||
- service mariadb status # There is no init.d/mysql in MariaDB 10.5+
|
||
- *test-verify-final
|
||
|
||
# archive.mariadb.org for Debian Sid latest is 10.4.17
|
||
mariadb.org-10.4 upgrade:
|
||
extends: .salsa-ci-template-for-mariadb-upgrade
|
||
stage: upgrade MariaDB variant
|
||
variables:
|
||
MARIADB_VERSION: "10.4"
|
||
script:
|
||
- *test-install-readline-in-sid-for-backwards-compat
|
||
- *test-install-openssl1-in-sid-for-backwards-compat
|
||
- *test-install-libaio-in-sid-for-backwards-compat
|
||
- apt-get install -qq --yes mariadb-server-10.4
|
||
# MariaDB.org version of 10.4 and early 10.5 do not install an init file, so
|
||
# it must be installed here manually
|
||
- cp /usr/share/mysql/mysql.init /etc/init.d/mysql; chmod +x /etc/init.d/mysql; service mysql start; sleep 5
|
||
- *test-verify-initial
|
||
- *test-install-all
|
||
- sleep 5 # Give the mysql_upgrade a bit of time to complete before querying the server
|
||
- service mysql status
|
||
- service mariadb status
|
||
- *test-verify-final
|
||
|
||
# archive.mariadb.org for Debian Sid latest is 10.3.27
|
||
mariadb.org-10.3 upgrade:
|
||
extends: .salsa-ci-template-for-mariadb-upgrade
|
||
stage: upgrade MariaDB variant
|
||
variables:
|
||
MARIADB_VERSION: "10.3"
|
||
script:
|
||
- *test-install-readline-in-sid-for-backwards-compat
|
||
- *test-install-openssl1-in-sid-for-backwards-compat
|
||
- *test-install-libaio-in-sid-for-backwards-compat
|
||
- apt-get install -qq --yes mariadb-server-10.3
|
||
- *test-verify-initial
|
||
- *test-install-all
|
||
# mariadb-10.3 in Buster ships a /etc/init.d/mysql and it continues to exist
|
||
# after upgrade, and is removed only on purge
|
||
- service mysql status || service mariadb status
|
||
# Give the mariadb-upgrade plenty of time to complete, otherwise next commands
|
||
# fail on non-existing mariadb.sys user
|
||
- sleep 15
|
||
- *test-verify-final
|
||
|
||
# archive.mariadb.org for Debian Sid latest is 10.2.21
|
||
mariadb.org-10.2 upgrade:
|
||
extends: .salsa-ci-template-for-mariadb-upgrade
|
||
stage: upgrade MariaDB variant
|
||
variables:
|
||
MARIADB_VERSION: "10.2"
|
||
script:
|
||
- *test-install-readline-in-sid-for-backwards-compat
|
||
- *test-install-openssl1-in-sid-for-backwards-compat
|
||
- *test-install-libaio-in-sid-for-backwards-compat
|
||
- apt-get install -qq --yes mariadb-server-10.2
|
||
# Verify initial state before upgrade
|
||
- dpkg -l | grep -iE 'maria|mysql|galera' || true # List installed
|
||
- service mysql status
|
||
# prepending with --defaults-file=/etc/mysql/debian.cnf is needed in upstream 5.5–10.3
|
||
- |
|
||
mysql --defaults-file=/etc/mysql/debian.cnf --skip-column-names -e "SELECT @@version, @@version_comment"
|
||
mysql --defaults-file=/etc/mysql/debian.cnf --table -e "SHOW DATABASES;"
|
||
mysql --defaults-file=/etc/mysql/debian.cnf --table -e "SELECT * FROM mysql.user; SHOW CREATE USER root@localhost;"
|
||
mysql --defaults-file=/etc/mysql/debian.cnf --table -e "SELECT * FROM mysql.plugin; SHOW PLUGINS;"
|
||
- *test-install-all
|
||
# mariadb-10.2 in ships a /etc/init.d/mysql and it continues to exist
|
||
# after upgrade, and is removed only on purge
|
||
- service mysql status || service mariadb status
|
||
# Give the mariadb-upgrade plenty of time to complete, otherwise next commands
|
||
# fail on non-existing mariadb.sys user
|
||
- sleep 15
|
||
- *test-verify-final
|
||
|
||
# Buster is the last Debian release Oracle MySQL 5.7 offers binaries for
|
||
mysql.com-5.7 with Buster upgrade:
|
||
extends: .salsa-ci-template-for-mariadb
|
||
stage: upgrade MariaDB variant
|
||
needs:
|
||
- job: build
|
||
image: debian:buster
|
||
script:
|
||
- *test-prepare-container
|
||
- |
|
||
apt-get install -qq --yes --no-install-recommends gpg gpg-agent dirmngr ca-certificates # Bare minimal (<4MB) for apt-key to work
|
||
apt-key adv --recv-keys --keyserver hkps://keyserver.ubuntu.com:443 B7B3B788A8D3785C
|
||
echo "deb https://repo.mysql.com/apt/debian/ buster mysql-5.7" > /etc/apt/sources.list.d/mysql.list
|
||
apt-get update -qq
|
||
- apt-get install -qq --yes mysql-server 'libmysqlc*'
|
||
# Ensure MySQL 5.7 package actually got installed
|
||
- dpkg -l | grep -e "mysql-server.*5.7"
|
||
- *test-verify-initial
|
||
- *test-enable-sid-repos
|
||
- *test-install-all
|
||
# Due to some (currently unknown) changes in MySQL 5.7 packaging or apt
|
||
# behaviour changes, a system with a previous installation of MySQL will
|
||
# on upgrades to MariaDB first fully remove MySQL, including the
|
||
# /etc/init.d/mysql file, so previous techniques in
|
||
# mariadb-server-10.6.postinst to maintain backwards compatibility with
|
||
# 'service mysql status' after installing MariaDB on top MySQL no longer
|
||
# works. Thus the step to test it now intentionally has a fallback to use
|
||
# the service name 'mariadb' instead, and the fallback is always used.
|
||
- sleep 5 # Give the mysql_upgrade a bit of time to complete before querying the server
|
||
- service mysql status || service mariadb status
|
||
- sleep 15 # Give the mysql_upgrade a bit of extra time to complete with MySQL 5.7 before querying the server
|
||
- *test-verify-final
|
||
|
||
# Note: pmm2-client does not exist in the Bookworm repository anymore
|
||
percona-xtradb-5.7 with Bookworm upgrade:
|
||
extends: .salsa-ci-template-for-mariadb
|
||
stage: upgrade MariaDB variant
|
||
image: debian:bookworm
|
||
script:
|
||
- *test-prepare-container
|
||
- |
|
||
apt-get install -qq --yes --no-install-recommends ca-certificates curl systemctl
|
||
curl -sS "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x9334A25F8507EFA5" -o /etc/apt/trusted.gpg.d/percona.asc
|
||
echo "deb https://repo.percona.com/apt/ bookworm main" > /etc/apt/sources.list.d/percona.list
|
||
apt-get update -qq
|
||
- apt-get install -qq --yes percona-xtradb-cluster-full-57 percona-xtrabackup-24 percona-toolkit
|
||
# Ensure Percona 5.7 package actually got installed
|
||
- dpkg -l | grep -e "percona.*5\.7"
|
||
- service mysql status
|
||
- *test-verify-initial
|
||
- *test-enable-sid-repos
|
||
- *test-install-all
|
||
# Percona package owned /etc/init.d/mysql, so on removal and upgrade to MariaDB old service name can't be referenced anymore
|
||
- service mariadb status
|
||
- sleep 15 # Give the mysql_upgrade a bit of extra time to complete with MySQL 5.7 before querying the server
|
||
- *test-verify-final
|