2020-08-23 22:49:43 +02:00
---
# Include Salsa-CI as a base
2020-04-07 19:20:11 +02:00
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
2020-08-23 22:49:43 +02:00
# Override Salsa-CI with MariaDB specific variations
2020-04-07 19:20:11 +02:00
variables :
DEB_BUILD_OPTIONS : "nocheck noautodbgsym"
RELEASE : sid
SALSA_CI_DISABLE_REPROTEST : 1
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
2020-08-23 22:49:43 +02:00
SALSA_CI_GBP_BUILDPACKAGE_ARGS : "--git-submodules" # did not apply to extract-sources
2020-04-07 19:20:11 +02:00
stages :
2020-08-23 22:49:43 +02:00
- provisioning
2020-04-07 19:20:11 +02:00
- build
- test
- upgrade in Sid
2020-08-23 22:49:43 +02:00
- upgrade from Buster/Stretch
2020-04-07 19:20:11 +02:00
- upgrade extras
2020-08-23 22:49:43 +02:00
- test extras
2020-04-07 19:20:11 +02:00
- publish # Stage referenced by Salsa-CI template aptly stanza, so must exist even though not used
build :
extends : .build-package
script : &autobake-deb-steps
2020-12-26 20:17:11 +01:00
# Run Salsa-CI .build-before-script equivalent
2020-04-07 19:20:11 +02:00
- mkdir -p ${WORKING_DIR} ${CCACHE_WORK_DIR}
- mv ${CCACHE_WORK_DIR} ${CCACHE_TMP_DIR}
2020-12-26 20:17:11 +01:00
# Run Salsa-CI .build-script equivalent
2020-04-07 19:20:11 +02:00
- export CCACHE_DIR="${CCACHE_TMP_DIR}"
2020-12-26 20:17:11 +01:00
- apt-get update && eatmydata apt-get install --yes --no-install-recommends aptitude devscripts ccache equivs
- cd ${WORKING_DIR}/${SOURCE_DIR}
- eatmydata install-build-deps.sh .
2020-04-07 19:20:11 +02:00
- update-ccache-symlinks; ccache -z # Zero out ccache counters
2020-07-03 15:24:58 +02:00
- 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
2020-12-26 20:17:11 +01:00
- cd ${WORKING_DIR}
- rm -rf ${WORKING_DIR}/${SOURCE_DIR}
2020-04-07 19:20:11 +02:00
- 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} || true
build buster-backports :
extends : .build-package
script :
- *autobake-deb-steps
variables :
2020-08-23 22:49:43 +02:00
RELEASE : buster-backports
2020-04-07 19:20:11 +02:00
2020-08-23 22:49:43 +02:00
# base image missing git
build i386 :
2020-04-07 19:20:11 +02:00
extends : .build-package
script :
2020-08-23 22:49:43 +02:00
- apt-get update && apt-get install -y --no-install-recommends git
- *autobake-deb-steps
image : $SALSA_CI_IMAGES_BASE_I386
variables :
ARCH : 'i386'
build native deb :
extends : .build-package
script : &buildpackage-script |
mkdir -p ${WORKING_DIR} ${CCACHE_WORK_DIR}
mv ${CCACHE_WORK_DIR} ${CCACHE_TMP_DIR}
export CCACHE_DIR=${CCACHE_TMP_DIR}
# Add deb-src entries
sed -n '/^deb\s/s//deb-src /p' /etc/apt/sources.list > /etc/apt/sources.list.d/deb-src.list
apt-get update && eatmydata apt-get install --no-install-recommends -y \
aptitude \
devscripts \
ccache \
equivs \
build-essential \
python3
# Enter source package dir
cd ${WORKING_DIR}/${SOURCE_DIR}
# Install package build dependencies
eatmydata install-build-deps.sh .
# Generate ccache links
dpkg-reconfigure ccache
PATH="/usr/lib/ccache/:${PATH}"
# Reset ccache stats
ccache -z
# Create salsaci user and fix permissions
useradd salsaci
chown -R salsaci. ${WORKING_DIR} ${CCACHE_DIR}
# Define buildlog filename
BUILD_LOGFILE_SOURCE=$(dpkg-parsechangelog -S Source)
BUILD_LOGFILE_VERSION=$(dpkg-parsechangelog -S Version)
BUILD_LOGFILE_VERSION=${BUILD_LOGFILE_VERSION#*:}
BUILD_LOGFILE_ARCH=$(dpkg --print-architecture)
BUILD_LOGFILE="${WORKING_DIR}/${BUILD_LOGFILE_SOURCE}_${BUILD_LOGFILE_VERSION}_${BUILD_LOGFILE_ARCH}.build"
# Build package as user salsaci
su salsaci -c "eatmydata dpkg-buildpackage ${DB_BUILD_PARAM}" |& OUTPUT_FILENAME=${BUILD_LOGFILE} filter-output
# Restore PWD to ${WORKING_DIR}
cd ${WORKING_DIR}
rm -rf ${WORKING_DIR}/${SOURCE_DIR}
# Print ccache stats on job log
ccache -s
mv ${CCACHE_TMP_DIR} ${CCACHE_WORK_DIR}
2020-04-07 19:20:11 +02:00
piuparts :
extends : .test-piuparts
stage : test extras
blhc :
extends : .test-blhc
stage : test extras
2020-08-23 22:49:43 +02:00
needs :
- job : build native deb
artifacts : true
2020-04-07 19:20:11 +02:00
2020-08-23 22:49:43 +02:00
# In addition to Salsa-CI, also run these fully MariaDB specific build jobs
2020-04-07 19:20:11 +02:00
2020-08-23 22:49:43 +02:00
# Define snippets used to construct jobs
2020-04-07 19:20:11 +02:00
2020-08-23 22:49:43 +02:00
.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
# Prime the apt cache so later apt commands can run
apt-get update
.test-verify-initial : &test-verify-initial |
dpkg -l | grep -iE 'maria|mysql|galera' || true # List installed
service mysql status || service mariadb status # Early MariaDB 10.5 only had 'mariadb'
mysql --skip-column-names -e "select @@version, @@version_comment" # Show version
echo 'SHOW DATABASES;' | mysql # List databases before upgrade
mysql -e "SELECT Host, User, plugin,authentication_string FROM user;" mysql
mysql -e "SELECT * FROM plugin;" 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
apt-get install -y apt
.test-install : &test-install |
# Install MariaDB built in this commit
apt-get install -y ./*.deb
# Verify installation of MariaDB built in this commit
dpkg -l | grep -iE 'maria|mysql|galera' || true # List installed
mariadb --version # Client version
.test-verify-final : &test-verify-final |
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
cp -ra /var/log/mysql debug/var-log-mysql
mariadb --skip-column-names -e "select @@version, @@version_comment" # Show version
echo 'SHOW DATABASES;' | mariadb # List databases
mariadb -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 that InnoDB works
mariadb -e "SELECT Host, User, plugin,authentication_string FROM user;" mysql
mariadb -e "SELECT * FROM plugin;" mysql
.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 -y --no-install-recommends g++
2021-04-16 10:23:46 +02:00
- |
# 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 -y ./*.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
2020-08-23 22:49:43 +02:00
.test-install-all-libs : &test-install-all-libs
- apt-get install -y ./libmariadb3_*.deb ./libmariadb-dev_*.deb ./libmariadb-dev-compat_*.deb ./libmariadbd19_*.deb ./libmariadbd-dev_*.deb ./mariadb-common_*.deb
2020-04-07 19:20:11 +02:00
fresh install :
stage : test
2020-08-23 22:49:43 +02:00
needs :
- job : build
artifacts : true
2020-04-07 19:20:11 +02:00
image : debian:${RELEASE}
artifacts :
when : always
name : "$CI_BUILD_NAME"
paths :
- ${WORKING_DIR}/debug
script :
2020-08-23 22:49:43 +02:00
- *test-prepare-container
- *test-install
2020-05-14 17:00:13 +02:00
- service mariadb status # There is no init.d/mysql in MariaDB 10.6
2020-08-23 22:49:43 +02:00
- *test-verify-final
2020-04-07 19:20:11 +02:00
variables :
2020-08-23 22:49:43 +02:00
GIT_STRATEGY : none
2020-04-07 19:20:11 +02:00
except :
variables :
- $CI_COMMIT_TAG != null && $SALSA_CI_ENABLE_PIPELINE_ON_TAGS !~ /^(1|yes|true)$/
2021-01-04 09:52:32 +01:00
mariadb-10.6 Sid upgrade :
2020-04-07 19:20:11 +02:00
stage : upgrade in Sid
2020-08-23 22:49:43 +02:00
needs :
- job : build
artifacts : true
image : debian:${RELEASE}
2020-04-07 19:20:11 +02:00
artifacts :
when : always
name : "$CI_BUILD_NAME"
paths :
- ${WORKING_DIR}/debug
script :
2020-08-23 22:49:43 +02:00
- *test-prepare-container
- *test-install
2021-01-04 09:52:32 +01:00
- service mariadb status # There is no init.d/mysql in MariaDB 10.6
2020-08-23 22:49:43 +02:00
- *test-verify-final
2020-04-07 19:20:11 +02:00
variables :
2020-08-23 22:49:43 +02:00
GIT_STRATEGY : none
2020-04-07 19:20:11 +02:00
except :
variables :
- $CI_COMMIT_TAG != null && $SALSA_CI_ENABLE_PIPELINE_ON_TAGS !~ /^(1|yes|true)$/
2021-01-04 09:52:32 +01:00
mariadb-10.3 Buster to mariadb-10.6 upgrade :
2020-08-23 22:49:43 +02:00
stage : upgrade from Buster/Stretch
needs :
- job : build
artifacts : true
2020-04-07 19:20:11 +02:00
image : debian:buster
artifacts :
when : always
name : "$CI_BUILD_NAME"
paths :
- ${WORKING_DIR}/debug
script :
2020-08-23 22:49:43 +02:00
- *test-prepare-container
# Install everything MariaDB currently in Debian Buster
- apt-get install -y 'default-mysql*' 'mariadb-*' 'libmariadb*'
2020-04-07 19:20:11 +02:00
# Verify installation of MariaDB from Buster
2020-08-23 22:49:43 +02:00
- *test-verify-initial
- *test-enable-sid-repos
- *test-install
2020-04-07 19:20:11 +02:00
- service mysql status
2020-08-23 22:49:43 +02:00
- *test-verify-final
2020-04-07 19:20:11 +02:00
variables :
2020-08-23 22:49:43 +02:00
GIT_STRATEGY : none
2020-04-07 19:20:11 +02:00
except :
variables :
- $CI_COMMIT_TAG != null && $SALSA_CI_ENABLE_PIPELINE_ON_TAGS !~ /^(1|yes|true)$/
2021-01-04 09:52:32 +01:00
mariadb-10.1 Stretch to mariadb-10.6 upgrade :
2020-08-23 22:49:43 +02:00
stage : upgrade from Buster/Stretch
needs :
- job : build
artifacts : true
2020-04-07 19:20:11 +02:00
image : debian:stretch
artifacts :
when : always
name : "$CI_BUILD_NAME"
paths :
- ${WORKING_DIR}/debug
script :
2020-08-23 22:49:43 +02:00
- *test-prepare-container
# Install almost everything currently in Debian Stretch,
# omitting libmariadbclient-dev-compat as it would conflict
2020-04-07 19:20:11 +02:00
- apt-get install -y 'default-mysql*' 'mariadb-*' 'libmariadbd*' 'libmariadbclient*'
2021-03-09 10:27:47 +01:00
# Verify installation of MariaDB from Stretch
2020-08-23 22:49:43 +02:00
- *test-verify-initial
2021-09-06 05:22:45 +02:00
# Remove manpages 4.10 that conflicts with manpages-dev 5.10 on console_ioctl.4.gz
- apt-get remove -y manpages
2020-08-23 22:49:43 +02:00
- *test-enable-sid-repos
- *test-install
2020-04-07 19:20:11 +02:00
- service mysql status
2020-08-23 22:49:43 +02:00
- *test-verify-final
2020-04-07 19:20:11 +02:00
variables :
2020-08-23 22:49:43 +02:00
GIT_STRATEGY : none
2020-04-07 19:20:11 +02:00
except :
variables :
- $CI_COMMIT_TAG != null && $SALSA_CI_ENABLE_PIPELINE_ON_TAGS !~ /^(1|yes|true)$/
test basic features :
stage : test
2020-08-23 22:49:43 +02:00
needs :
- job : build
artifacts : true
2020-04-07 19:20:11 +02:00
image : debian:${RELEASE}
artifacts :
when : always
name : "$CI_BUILD_NAME"
paths :
- ${WORKING_DIR}/debug
script :
2020-08-23 22:49:43 +02:00
- *test-prepare-container
- *test-install
2020-05-14 17:00:13 +02:00
- service mariadb status # There is no init.d/mysql in MariaDB 10.6
2020-08-23 22:49:43 +02:00
- *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/mysql/mysql-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
2020-04-07 19:20:11 +02:00
variables :
2020-08-23 22:49:43 +02:00
GIT_STRATEGY : none
2020-04-07 19:20:11 +02:00
except :
variables :
- $CI_COMMIT_TAG != null && $SALSA_CI_ENABLE_PIPELINE_ON_TAGS !~ /^(1|yes|true)$/
# 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 :
stage : test
2020-08-23 22:49:43 +02:00
needs :
- job : build
artifacts : true
2020-04-07 19:20:11 +02:00
image : debian:${RELEASE}
script :
2020-08-23 22:49:43 +02:00
- *test-prepare-container
# Run each step separately to avoitda 800+ lines chunk that lacks the
# commands themselves printed and Gitlab-CI cutting off the output
2020-04-07 19:20:11 +02:00
- apt-get install -y pkg-config ./libmariadb-dev*.deb ./libmariadb3_*.deb ./mariadb-common*.deb
- pkg-config --cflags --libs mysqlclient # See what MySQLdb builds with
- apt-get install -y python3-pip
- pip3 install mysqlclient # Compiles module against libmysqlclient
- apt-get purge -y libmariadb-dev # Not needed for run-time
- python3 -c "import MySQLdb; print(MySQLdb.get_client_info())"
variables :
2020-08-23 22:49:43 +02:00
GIT_STRATEGY : none
2020-04-07 19:20:11 +02:00
except :
variables :
- $CI_COMMIT_TAG != null && $SALSA_CI_ENABLE_PIPELINE_ON_TAGS !~ /^(1|yes|true)$/
libmysql* to libmariadb* upgrade :
2020-08-23 22:49:43 +02:00
stage : upgrade in Sid
needs :
- job : build
artifacts : true
image : debian:${RELEASE}
2020-04-07 19:20:11 +02:00
artifacts :
when : always
name : "$CI_BUILD_NAME"
paths :
- ${WORKING_DIR}/debug
script :
2020-08-23 22:49:43 +02:00
- *test-prepare-container
2020-04-07 19:20:11 +02:00
# Install all libmysql* available in Debian unstable
2020-08-23 22:49:43 +02:00
- apt-get install -y pkg-config libmysqlclient-dev
2020-04-07 19:20:11 +02:00
- pkg-config --list-all
- pkg-config --cflags mysqlclient # mysqlclient.pc from original package
- apt-get install -y ./libmariadb3_*.deb ./mariadb-common_*.deb
- pkg-config --list-all
- apt-get install -y ./libmariadb-dev_*.deb
- pkg-config --list-all
- apt-get install -y ./libmariadb-dev-compat_*.deb
- pkg-config --cflags mysqlclient # mysqlclient.pc from compat package
- pkg-config --list-all
- apt-get install -y ./libmariadbd19_*.deb
- pkg-config --list-all
- apt-get install -y ./libmariadbd-dev_*.deb
- pkg-config --list-all
- apt-get install -y default-libmysqlclient-dev default-libmysqld-dev
2020-08-23 22:49:43 +02:00
- *test-verify-libs
2020-04-07 19:20:11 +02:00
except :
variables :
- $CI_COMMIT_TAG != null && $SALSA_CI_ENABLE_PIPELINE_ON_TAGS !~ /^(1|yes|true)$/
2020-08-23 22:49:43 +02:00
default-libmysqlclient-dev Sid upgrade :
2020-04-07 19:20:11 +02:00
stage : upgrade in Sid
2020-08-23 22:49:43 +02:00
needs :
- job : build
artifacts : true
image : debian:${RELEASE}
2020-04-07 19:20:11 +02:00
artifacts :
when : always
name : "$CI_BUILD_NAME"
paths :
- ${WORKING_DIR}/debug
script :
2020-08-23 22:49:43 +02:00
- *test-prepare-container
2020-04-07 19:20:11 +02:00
- apt-get install -y pkg-config default-libmysqlclient-dev default-libmysqld-dev
- pkg-config --list-all
2020-08-23 22:49:43 +02:00
- *test-install-all-libs
- *test-verify-libs
2020-04-07 19:20:11 +02:00
except :
variables :
- $CI_COMMIT_TAG != null && $SALSA_CI_ENABLE_PIPELINE_ON_TAGS !~ /^(1|yes|true)$/
2020-08-23 22:49:43 +02:00
default-libmysqlclient-dev Buster upgrade :
stage : upgrade from Buster/Stretch
needs :
- job : build
artifacts : true
2020-04-07 19:20:11 +02:00
image : debian:buster
artifacts :
when : always
name : "$CI_BUILD_NAME"
paths :
- ${WORKING_DIR}/debug
script :
2020-08-23 22:49:43 +02:00
- *test-prepare-container
2020-04-07 19:20:11 +02:00
- apt-get install -y pkg-config default-libmysqlclient-dev
- pkg-config --list-all
2020-08-23 22:49:43 +02:00
- *test-enable-sid-repos
- *test-install-all-libs
- *test-verify-libs
2020-04-07 19:20:11 +02:00
except :
variables :
- $CI_COMMIT_TAG != null && $SALSA_CI_ENABLE_PIPELINE_ON_TAGS !~ /^(1|yes|true)$/
2020-08-23 22:49:43 +02:00
default-libmysqlclient-dev Stretch upgrade :
stage : upgrade from Buster/Stretch
needs :
- job : build
artifacts : true
2020-04-07 19:20:11 +02:00
image : debian:stretch
artifacts :
when : always
name : "$CI_BUILD_NAME"
paths :
- ${WORKING_DIR}/debug
script :
2020-08-23 22:49:43 +02:00
- *test-prepare-container
2020-04-07 19:20:11 +02:00
- apt-get install -y pkg-config default-libmysqlclient-dev
- pkg-config --list-all
2021-09-06 05:22:45 +02:00
# Remove manpages 4.10 that conflicts with manpages-dev 5.10 on console_ioctl.4.gz
- apt-get remove -y manpages
2020-08-23 22:49:43 +02:00
- *test-enable-sid-repos
- *test-install-all-libs
- *test-verify-libs
2020-04-07 19:20:11 +02:00
except :
variables :
- $CI_COMMIT_TAG != null && $SALSA_CI_ENABLE_PIPELINE_ON_TAGS !~ /^(1|yes|true)$/
2020-08-23 22:49:43 +02:00
# 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.
2021-01-04 09:52:32 +01:00
mysql-8.0 Sid to mariadb-10.6 upgrade :
2020-08-23 22:49:43 +02:00
stage : upgrade in Sid
needs :
- job : build
artifacts : true
image : debian:sid
2020-04-07 19:20:11 +02:00
artifacts :
when : always
name : "$CI_BUILD_NAME"
paths :
- ${WORKING_DIR}/debug
script :
2020-08-23 22:49:43 +02:00
- *test-prepare-container
2021-03-11 21:04:22 +01:00
# The postinst fails often if 'ps' is missing from system, so install procps
- apt-get install -y procps mysql-server 'libmysqlc*'
2020-08-23 22:49:43 +02:00
- *test-verify-initial
- *test-install
2020-04-07 19:20:11 +02:00
- service mysql status
2020-08-23 22:49:43 +02:00
- sleep 5 # Give the mysql_upgrade a bit of time to complete before querying the server
- *test-verify-final
2020-04-07 19:20:11 +02:00
variables :
2020-08-23 22:49:43 +02:00
GIT_STRATEGY : none
2020-04-07 19:20:11 +02:00
except :
variables :
- $CI_COMMIT_TAG != null && $SALSA_CI_ENABLE_PIPELINE_ON_TAGS !~ /^(1|yes|true)$/
# 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.
2021-01-04 09:52:32 +01:00
mysql-8.0 Focal to mariadb-10.6 upgrade :
2020-04-07 19:20:11 +02:00
stage : upgrade extras
2020-08-23 22:49:43 +02:00
needs :
- job : build buster-backports
artifacts : true
image : debian:buster
2020-04-07 19:20:11 +02:00
artifacts :
when : always
name : "$CI_BUILD_NAME"
paths :
- ${WORKING_DIR}/debug
script :
2020-08-23 22:49:43 +02:00
- *test-prepare-container
2020-04-07 19:20:11 +02:00
# Add Ubuntu Focal archive keys and repository
- apt-get install --no-install-recommends --yes 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 871920D1991BC93C 3B4FE6ACC0B21F32
- echo 'deb http://archive.ubuntu.com/ubuntu/ focal main restricted' > /etc/apt/sources.list.d/ubuntu.list
- apt-get update
2020-08-23 22:49:43 +02:00
# First install often fail due to bug in mysql-8.0
- apt-get install -y mysql-server 'libmysqlc*' || true
- sleep 10 && apt-get install -f
- *test-verify-initial
# Enable backports to make galera-4 available
- echo 'deb http://deb.debian.org/debian buster-backports main' > /etc/apt/sources.list.d/backports.list && apt-get update
- *test-install
2020-04-07 19:20:11 +02:00
- service mysql status
2020-08-23 22:49:43 +02:00
- sleep 5 # Give the mysql_upgrade a bit of time to complete before querying the server
- *test-verify-final
variables :
GIT_STRATEGY : none
except :
variables :
- $CI_COMMIT_TAG != null && $SALSA_CI_ENABLE_PIPELINE_ON_TAGS !~ /^(1|yes|true)$/
2021-01-04 09:52:32 +01:00
mariadb.org-10.5 to mariadb-10.6 upgrade :
2020-04-07 19:20:11 +02:00
stage : upgrade extras
2020-08-23 22:49:43 +02:00
needs :
- job : build
artifacts : true
2020-04-07 19:20:11 +02:00
image : debian:sid
artifacts :
when : always
name : "$CI_BUILD_NAME"
paths :
- ${WORKING_DIR}/debug
script :
2020-08-23 22:49:43 +02:00
- *test-prepare-container
2020-07-11 11:12:34 +02:00
- apt install -y curl
2020-05-14 17:00:13 +02:00
- curl -sS https://mariadb.org/mariadb_release_signing_key.asc -o /etc/apt/trusted.gpg.d/mariadb.asc
2020-08-23 22:49:43 +02:00
- echo 'deb http://mirror.one.com/mariadb/repo/10.5/debian sid main' > /etc/apt/sources.list.d/mariadb.list
2020-04-07 19:20:11 +02:00
- apt-get update
2021-05-06 21:08:38 +02:00
# The 10.5.9 release is missing mariadb-plugin-columnstore, define all other packages but it to avoid hitting the error:
2021-03-11 21:04:22 +01:00
# The following packages have unmet dependencies:
# mariadb-plugin-columnstore : Depends: mariadb-server-10.5 (= 1:10.5.8+maria~sid) but 1:10.5.9+maria~sid is to be installed
- apt-get install -y libmariadb3 'libmariadb-*' 'libmariadbd*' 'mariadb-c*' 'mariadb-b*' 'mariadb-s*' 'mariadb-t*' 'mariadb-plugin-con*' 'mariadb-plugin-cr*' 'mariadb-plugin-g*' 'mariadb-plugin-m*' 'mariadb-plugin-o*' 'mariadb-plugin-s*'
# Once 10.5.10 is out, revert back to:
2021-05-06 21:08:38 +02:00
# Package libmariadbclient-dev from mariadb.org conflicts with libmariadb-dev in Sid, so cannot use wildcard that would include it
2021-03-11 21:04:22 +01:00
#- apt-get install -y 'mariadb*' libmariadb3 'libmariadb-*' 'libmariadbd*'
2020-08-23 22:49:43 +02:00
- *test-verify-initial
2020-04-07 19:20:11 +02:00
# Install MariaDB built in this commit
2020-08-23 22:49:43 +02:00
# Force downgrades so our version installs on top of upstream revision, e.g. 1:10.5.5-1 vs 1:10.5.5+mariadb~sid
- apt-get install -y --allow-downgrades ./*.deb
2020-04-07 19:20:11 +02:00
# Verify installation of MariaDB built in this commit
- dpkg -l | grep -iE 'maria|mysql|galera' || true # List installed
- mariadb --version # Client version
2020-08-23 22:49:43 +02:00
- service mariadb status # There is no init.d/mysql in MariaDB 10.5
- *test-verify-final
2020-04-07 19:20:11 +02:00
variables :
2020-08-23 22:49:43 +02:00
GIT_STRATEGY : none
2020-04-07 19:20:11 +02:00
except :
variables :
- $CI_COMMIT_TAG != null && $SALSA_CI_ENABLE_PIPELINE_ON_TAGS !~ /^(1|yes|true)$/
2020-05-14 17:00:13 +02:00
mariadb.org-10.4 to mariadb-10.6 upgrade :
2020-04-07 19:20:11 +02:00
stage : upgrade extras
2020-08-23 22:49:43 +02:00
needs :
- job : build
artifacts : true
2020-04-07 19:20:11 +02:00
image : debian:sid
artifacts :
when : always
name : "$CI_BUILD_NAME"
paths :
- ${WORKING_DIR}/debug
script :
2020-08-23 22:49:43 +02:00
- *test-prepare-container
2020-04-07 19:20:11 +02:00
- apt install -y curl systemctl # systemctl shim needed on platforms that don't have systemd
2020-05-14 17:00:13 +02:00
- curl -sS https://mariadb.org/mariadb_release_signing_key.asc -o /etc/apt/trusted.gpg.d/mariadb.asc
2020-08-23 22:49:43 +02:00
- echo 'deb http://mirror.one.com/mariadb/repo/10.4/debian sid main' > /etc/apt/sources.list.d/mariadb.list
2020-04-07 19:20:11 +02:00
- apt-get update
- apt-get install -y mariadb-server-10.4
2020-05-14 17:00:13 +02:00
# 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
2020-08-23 22:49:43 +02:00
- *test-verify-initial
- *test-install
- sleep 5 # Give the mysql_upgrade a bit of time to complete before querying the server
2020-05-14 17:00:13 +02:00
- service mysql status
2020-04-07 19:20:11 +02:00
- service mariadb status
2020-08-23 22:49:43 +02:00
- *test-verify-final
2020-04-07 19:20:11 +02:00
variables :
2020-08-23 22:49:43 +02:00
GIT_STRATEGY : none
2020-04-07 19:20:11 +02:00
except :
variables :
- $CI_COMMIT_TAG != null && $SALSA_CI_ENABLE_PIPELINE_ON_TAGS !~ /^(1|yes|true)$/
2020-05-14 17:00:13 +02:00
mariadb.org-10.3 to mariadb-10.6 upgrade :
2020-04-07 19:20:11 +02:00
stage : upgrade extras
2020-08-23 22:49:43 +02:00
needs :
- job : build
artifacts : true
2020-04-07 19:20:11 +02:00
image : debian:sid
artifacts :
when : always
name : "$CI_BUILD_NAME"
paths :
- ${WORKING_DIR}/debug
script :
2020-08-23 22:49:43 +02:00
- *test-prepare-container
2020-04-07 19:20:11 +02:00
- apt install -y curl
2020-05-14 17:00:13 +02:00
- curl -sS https://mariadb.org/mariadb_release_signing_key.asc -o /etc/apt/trusted.gpg.d/mariadb.asc
2020-08-23 22:49:43 +02:00
- echo 'deb http://mirror.one.com/mariadb/repo/10.3/debian sid main' > /etc/apt/sources.list.d/mariadb.list
2020-04-07 19:20:11 +02:00
- apt-get update
- apt-get install -y mariadb-server-10.3
2020-08-23 22:49:43 +02:00
# Verify initial state before upgrade
2020-04-07 19:20:11 +02:00
- 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"
2020-08-23 22:49:43 +02:00
- echo 'SHOW DATABASES;' | mysql --defaults-file=/etc/mysql/debian.cnf
2020-04-07 19:20:11 +02:00
- mysql --defaults-file=/etc/mysql/debian.cnf -e "SELECT Host,User,plugin,authentication_string FROM user;" mysql
- mysql --defaults-file=/etc/mysql/debian.cnf -e "SELECT * FROM plugin;" mysql
2020-08-23 22:49:43 +02:00
- *test-install
2020-04-07 19:20:11 +02:00
- service mysql status
- sleep 5 # Give the mysql_upgrade a bit of time to complete before querying the server
2020-08-23 22:49:43 +02:00
- *test-verify-final
2020-04-07 19:20:11 +02:00
variables :
2020-08-23 22:49:43 +02:00
GIT_STRATEGY : none
2020-04-07 19:20:11 +02:00
except :
variables :
- $CI_COMMIT_TAG != null && $SALSA_CI_ENABLE_PIPELINE_ON_TAGS !~ /^(1|yes|true)$/
2020-05-14 17:00:13 +02:00
mariadb.org-10.2 to mariadb-10.6 upgrade :
2020-04-07 19:20:11 +02:00
stage : upgrade extras
2020-08-23 22:49:43 +02:00
needs :
- job : build
artifacts : true
2020-04-07 19:20:11 +02:00
image : debian:sid
artifacts :
when : always
name : "$CI_BUILD_NAME"
paths :
- ${WORKING_DIR}/debug
script :
2020-08-23 22:49:43 +02:00
- *test-prepare-container
2020-04-07 19:20:11 +02:00
- apt install -y curl
2020-05-14 17:00:13 +02:00
- curl -sS https://mariadb.org/mariadb_release_signing_key.asc -o /etc/apt/trusted.gpg.d/mariadb.asc
2020-08-23 22:49:43 +02:00
- echo 'deb http://mirror.one.com/mariadb/repo/10.2/debian sid main' > /etc/apt/sources.list.d/mariadb.list
2020-04-07 19:20:11 +02:00
- apt-get update
- apt-get install -y mariadb-server-10.2
2020-08-23 22:49:43 +02:00
# Verify initial state before upgrade
2020-04-07 19:20:11 +02:00
- 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"
2020-08-23 22:49:43 +02:00
- echo 'SHOW DATABASES;' | mysql --defaults-file=/etc/mysql/debian.cnf
2021-09-06 05:22:45 +02:00
- mysql --defaults-file=/etc/mysql/debian.cnf -e "SELECT * FROM mysql.user; SHOW CREATE USER root@localhost"
2021-07-20 01:19:23 +02:00
- mysql --defaults-file=/etc/mysql/debian.cnf -e "SELECT * FROM mysql.plugin; SHOW PLUGINS"
2020-08-23 22:49:43 +02:00
- *test-install
- service mysql status
- sleep 5 # Give the mysql_upgrade a bit of time to complete before querying the server
- *test-verify-final
variables :
GIT_STRATEGY : none
except :
variables :
- $CI_COMMIT_TAG != null && $SALSA_CI_ENABLE_PIPELINE_ON_TAGS !~ /^(1|yes|true)$/
2021-01-04 09:52:32 +01:00
mysql.com-5.7 to mariadb-10.6 upgrade :
2020-08-23 22:49:43 +02:00
stage : upgrade extras
needs :
- job : build buster-backports
artifacts : true
image : debian:buster
artifacts :
when : always
name : "$CI_BUILD_NAME"
paths :
- ${WORKING_DIR}/debug
script :
- *test-prepare-container
- |
apt-get install --no-install-recommends --yes 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 8C718D3B5072E1F5
echo 'deb https://repo.mysql.com/apt/debian/ buster mysql-5.7' > /etc/apt/sources.list.d/mysql.list
apt-get update
apt-get install -y 'mysql*' 'libmysqlc*'
- *test-verify-initial
# Enable backports to make galera-4 available
- echo 'deb http://deb.debian.org/debian buster-backports main' >> /etc/apt/sources.list.d/backports.list && apt-get update
- *test-install
- service mysql status
- sleep 5 # Give the mysql_upgrade a bit of time to complete before querying the server
- *test-verify-final
variables :
GIT_STRATEGY : none
except :
variables :
- $CI_COMMIT_TAG != null && $SALSA_CI_ENABLE_PIPELINE_ON_TAGS !~ /^(1|yes|true)$/
2021-01-04 09:52:32 +01:00
percona-xtradb-5.7 to mariadb-10.6 upgrade (MDEV-22679) :
2020-08-23 22:49:43 +02:00
stage : upgrade extras
needs :
- job : build buster-backports
artifacts : true
image : debian:buster
artifacts :
when : always
name : "$CI_BUILD_NAME"
paths :
- ${WORKING_DIR}/debug
script :
- *test-prepare-container
- |
apt-get install --no-install-recommends --yes 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 9334A25F8507EFA5
echo 'deb https://repo.percona.com/apt/ buster main' > /etc/apt/sources.list.d/mysql.list
apt-get update
apt-get install -y percona-xtradb-cluster-full-57 percona-xtrabackup-24 percona-toolkit pmm2-client
- service mysql status
- *test-verify-initial
# Enable backports to make galera-4 available
- echo 'deb http://deb.debian.org/debian buster-backports main' >> /etc/apt/sources.list.d/backports.list && apt-get update
- *test-install
2020-04-07 19:20:11 +02:00
- service mysql status
- sleep 5 # Give the mysql_upgrade a bit of time to complete before querying the server
2020-08-23 22:49:43 +02:00
- *test-verify-final
2020-04-07 19:20:11 +02:00
variables :
2020-08-23 22:49:43 +02:00
GIT_STRATEGY : none
2020-04-07 19:20:11 +02:00
except :
variables :
- $CI_COMMIT_TAG != null && $SALSA_CI_ENABLE_PIPELINE_ON_TAGS !~ /^(1|yes|true)$/