mariadb/.travis.yml

242 lines
7.6 KiB
YAML
Raw Normal View History

# vim ft=yaml
# travis-ci.org definition
# NOTE TO MERGERS: Most of the contents in the Travis-CI configuration has been
# tailored for a specific release or MariaDB. As a general rule, do not merge
# changes in this file across MariaDB branches to avoid breaking the CI. Updates
# the the Travis-CI pipeline are most of the time better done manually.
dist: focal
git:
depth: 2
language: cpp
cache:
timeout: 500
apt: true
MDEV-16213: Improvements and adjustments to Travis config Several improvements have been made so that builds run faster and with fewer canceled jobs: * Set ccache max size to 1GB. Was 512MB for Linux (too low for MariaDB) and 5GB on macOS with defaults; * Don't install libasan in Travis if not necessary. Sicne ASAN is disabled for the time being, save time/resources for other steps; * Decrease number of parallel processes. To prevent resource exhaustion leading to poor performance. According to Travis docs, a max of 4 concurrent processses should be run per job: https://docs.travis-ci.com/user/common-build-problems/#My-build-script-is-killed-without-any-error * Reconsider tests exec order and split huge main and rocksdb test suites into their own job, decreasing the chance of going over the Travis job execution limit and getting killed; * Increase Travis testcase-timeout to 4 minutes. Occasionally on Ubuntu target and frequently on macOS, many tests in main, rpl, binlog suites take longer than 2 minutes, resulting in many jobs failing, when in reality the failing tests didn't get a chance to complete. From my testing, along with the other speedups, i.e. increasing ccache size, a timeout of 4 minutes should be Ok. Revert to 3 minutes of necessary. * Build with GCC and Clang version 5,6 only. * Rename GCC_VERSION to CC_VERSION for clarity. We are using two compilers after all, GCC and Clang. * Stop using somewhat obsolete Clang4 in Travis. Also, was the reason for the failing test suites in MDEV-15430.
2018-05-29 09:26:01 +02:00
ccache: true
2020-01-28 14:51:20 +01:00
addons:
apt:
sources: &add-sources
# Remember to document well what packages each extra repository is used for
- ubuntu-toolchain-r-test
# => gcc-9 and gcc-10 for Ubuntu Bionic
# https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test/+packages?field.name_filter=&field.status_filter=published&field.series_filter=bionic
- sourceline: 'ppa:maria-captains/travis-ci-helper-repo'
# => galera-4 for Ubuntu Bionic
# https://launchpad.net/~maria-captains/+archive/ubuntu/travis-ci-helper-repo/+packages?field.name_filter=&field.status_filter=published&field.series_filter=bionic
packages: &common-packages
# Remember to update this list if the Debian build dependencies are updated
2020-01-28 14:51:20 +01:00
- bison
- chrpath
- clang-7 # In suites: focal, bionic-updates
- clang-10 # In suites: focal, bionic
2020-01-28 14:51:20 +01:00
- cmake
- cracklib-runtime
- galera-4 # In suites: focal, bionic (via ppa:maria-captains/travis-ci-helper-repo)
- g++-7 # In suites: focal, bionic
- g++-10 # In suites: focal, bionic (via ppa:ubuntu-toolchain-r/test)
2020-01-28 14:51:20 +01:00
- gdb
- libaio-dev
- libarchive-dev
Deb: Misc ColumnStore Debian packaging improvements - Add 'libboost-all-dev' and 'libreadline-gplv2-dev' as they were was found to be a compulsory build dependency for columnstore plugin. - Add 'expect' as run-time dependencey for columnstore plugin as scripts use it: usr/bin/mcs_module_installer.sh: #!/usr/bin/expect usr/bin/remote_command.sh: #!/usr/bin/expect usr/bin/remote_command_verify.sh: #!/usr/bin/expect usr/bin/remote_scp_get.sh: #!/usr/bin/expect usr/bin/remote_scp_put.sh: #!/usr/bin/expect usr/bin/rsync.sh: #!/usr/bin/expect - Properly define depends on Python. No Python 2 support needs to be considered, Python 3 has been around long enough. Fixes Lintian errors E: mariadb-plugin-columnstore: python-script-but-no-python-dep usr/bin/mcs-loadbrm.py #!python E: mariadb-plugin-columnstore: python-script-but-no-python-dep usr/bin/mcs-start-storagemanager.py #!python - Partially revert undocumented and thus unjustified changes in commits d69a79da63287089efdc5f90a11ecd66ce55b471 and c0565666cfe6528b76bc53ce50d3690d13c92cf6. - Trigger ldconfig, otherwise Lintian complains: E: mariadb-plugin-columnstore: package-must-activate-ldconfig-trigger usr/lib/x86_64-linux-gnu/libwriteengineredistribute.so - Update postinst to be compatible with new server binary mariadbd name. - Properly detect systemd or fallback to sysv init in postrm script. - Only attempt to build ColumnStore on amd64 and i386. Test builds on Launchpad.net showed the CMake plugin configure step will prevent even attempts to build on other platforms. - Clean up and unify cmake build command in debian/rules. - Explicitly list files not installed. - Run 'wrap-and-sort -a -v'. - Truncate build logs on Salsa-CI to keep under 4 MB. This is now needed as the ColumnStore build is so verbose. See https://jira.mariadb.org/browse/MCOL-4111. - Update Travis-CI dependencies to match new debian/control.
2020-07-03 15:24:58 +02:00
- libboost-atomic-dev
- libboost-chrono-dev
- libboost-date-time-dev
2020-01-28 14:51:20 +01:00
- libboost-dev
Deb: Misc ColumnStore Debian packaging improvements - Add 'libboost-all-dev' and 'libreadline-gplv2-dev' as they were was found to be a compulsory build dependency for columnstore plugin. - Add 'expect' as run-time dependencey for columnstore plugin as scripts use it: usr/bin/mcs_module_installer.sh: #!/usr/bin/expect usr/bin/remote_command.sh: #!/usr/bin/expect usr/bin/remote_command_verify.sh: #!/usr/bin/expect usr/bin/remote_scp_get.sh: #!/usr/bin/expect usr/bin/remote_scp_put.sh: #!/usr/bin/expect usr/bin/rsync.sh: #!/usr/bin/expect - Properly define depends on Python. No Python 2 support needs to be considered, Python 3 has been around long enough. Fixes Lintian errors E: mariadb-plugin-columnstore: python-script-but-no-python-dep usr/bin/mcs-loadbrm.py #!python E: mariadb-plugin-columnstore: python-script-but-no-python-dep usr/bin/mcs-start-storagemanager.py #!python - Partially revert undocumented and thus unjustified changes in commits d69a79da63287089efdc5f90a11ecd66ce55b471 and c0565666cfe6528b76bc53ce50d3690d13c92cf6. - Trigger ldconfig, otherwise Lintian complains: E: mariadb-plugin-columnstore: package-must-activate-ldconfig-trigger usr/lib/x86_64-linux-gnu/libwriteengineredistribute.so - Update postinst to be compatible with new server binary mariadbd name. - Properly detect systemd or fallback to sysv init in postrm script. - Only attempt to build ColumnStore on amd64 and i386. Test builds on Launchpad.net showed the CMake plugin configure step will prevent even attempts to build on other platforms. - Clean up and unify cmake build command in debian/rules. - Explicitly list files not installed. - Run 'wrap-and-sort -a -v'. - Truncate build logs on Salsa-CI to keep under 4 MB. This is now needed as the ColumnStore build is so verbose. See https://jira.mariadb.org/browse/MCOL-4111. - Update Travis-CI dependencies to match new debian/control.
2020-07-03 15:24:58 +02:00
- libboost-filesystem-dev
- libboost-regex-dev
- libboost-system-dev
- libboost-thread-dev
- libcrack2-dev
- libcurl4-openssl-dev
2020-01-28 14:51:20 +01:00
- libdbd-mysql
- libedit-dev
- libjemalloc-dev
2020-01-28 14:51:20 +01:00
- libjudy-dev
- libkrb5-dev
- liblz4-dev
2020-01-28 14:51:20 +01:00
- libncurses5-dev
- libnuma-dev
2020-01-28 14:51:20 +01:00
- libpam0g-dev
- libpcre2-dev
Deb: Misc ColumnStore Debian packaging improvements - Add 'libboost-all-dev' and 'libreadline-gplv2-dev' as they were was found to be a compulsory build dependency for columnstore plugin. - Add 'expect' as run-time dependencey for columnstore plugin as scripts use it: usr/bin/mcs_module_installer.sh: #!/usr/bin/expect usr/bin/remote_command.sh: #!/usr/bin/expect usr/bin/remote_command_verify.sh: #!/usr/bin/expect usr/bin/remote_scp_get.sh: #!/usr/bin/expect usr/bin/remote_scp_put.sh: #!/usr/bin/expect usr/bin/rsync.sh: #!/usr/bin/expect - Properly define depends on Python. No Python 2 support needs to be considered, Python 3 has been around long enough. Fixes Lintian errors E: mariadb-plugin-columnstore: python-script-but-no-python-dep usr/bin/mcs-loadbrm.py #!python E: mariadb-plugin-columnstore: python-script-but-no-python-dep usr/bin/mcs-start-storagemanager.py #!python - Partially revert undocumented and thus unjustified changes in commits d69a79da63287089efdc5f90a11ecd66ce55b471 and c0565666cfe6528b76bc53ce50d3690d13c92cf6. - Trigger ldconfig, otherwise Lintian complains: E: mariadb-plugin-columnstore: package-must-activate-ldconfig-trigger usr/lib/x86_64-linux-gnu/libwriteengineredistribute.so - Update postinst to be compatible with new server binary mariadbd name. - Properly detect systemd or fallback to sysv init in postrm script. - Only attempt to build ColumnStore on amd64 and i386. Test builds on Launchpad.net showed the CMake plugin configure step will prevent even attempts to build on other platforms. - Clean up and unify cmake build command in debian/rules. - Explicitly list files not installed. - Run 'wrap-and-sort -a -v'. - Truncate build logs on Salsa-CI to keep under 4 MB. This is now needed as the ColumnStore build is so verbose. See https://jira.mariadb.org/browse/MCOL-4111. - Update Travis-CI dependencies to match new debian/control.
2020-07-03 15:24:58 +02:00
- libreadline-gplv2-dev
- libsnappy-dev
2020-01-28 14:51:20 +01:00
- libssl-dev
- libxml2-dev
- lsb-release
- perl
- psmisc
- uuid-dev
- zlib1g-dev
# libsystemd-daemon-dev # https://github.com/travis-ci/apt-package-whitelist/issues/3882
homebrew:
# OSX builds are not properly maintained on Travis-CI nor buildbot and
# thus this list of dependencies is likely to be inaccurate.
packages:
- bison
- boost
- ccache
- cmake
- cracklib
- curl
- gnutls
- groonga
- jemalloc
- libxml2
- lz4
- lzo
- ncurses
- openssl@1.1
- ossp-uuid
- pcre2
- perl
- pkg-config
- readline
- snappy
- xz
- zlib
- zstd
2020-01-28 14:51:20 +01:00
## Build jobs matrix
# The jobs matrix consists of all the combinations of 'arch', 'os', 'compiler'
# and 'env'. Ensure there is a good variation of architectures and at least the
# main suite is run on all architectures, as the main test suite needs to pass
# on all architectures (amd64, arm64, ppc64le, s390x) before a release is made.
#
# In gcc and clang use a fairly old version and one very recent and assume that
# if both of them built successfully all the intermediate version work as well.
arch: amd64
os: linux
compiler:
- gcc
- clang
env:
- CC_VERSION=7 TYPE=RelWithDebInfo MYSQL_TEST_SUITES=archive,optimizer_unfixed_bugs,parts,sys_vars,unit,vcol,innodb,innodb_gis,innodb_zip,innodb_fts
- CC_VERSION=7 TYPE=RelWithDebInfo MYSQL_TEST_SUITES=binlog,binlog_encryption,rocksdb,versioning,rpl
- CC_VERSION=7 TYPE=RelWithDebInfo MYSQL_TEST_SUITES=csv,federated,funcs_1,funcs_2,gcol,handler,heap,json,maria,perfschema,plugins,multi_source,roles,encryption
- CC_VERSION=10 TYPE=RelWithDebInfo MYSQL_TEST_SUITES=main
jobs:
# Define extra jobs that are run in addition to the main jobs matrix
include:
- os: linux
compiler: gcc
env: DebPackages=focal
addons: &deb-addons
apt:
sources: *add-sources
# make sure these match debian/control contents
packages:
- *common-packages
- debhelper
- devscripts
- dh-apparmor
- dh-exec
- dh-systemd
- fakeroot
- libsystemd-dev
- libzstd-dev
- po-debconf
- unixodbc-dev
script: &deb-script
- ${CC} --version ; ${CXX} --version
- apt-cache policy
MDEV-16213: Improvements and adjustments to Travis config Several improvements have been made so that builds run faster and with fewer canceled jobs: * Set ccache max size to 1GB. Was 512MB for Linux (too low for MariaDB) and 5GB on macOS with defaults; * Don't install libasan in Travis if not necessary. Sicne ASAN is disabled for the time being, save time/resources for other steps; * Decrease number of parallel processes. To prevent resource exhaustion leading to poor performance. According to Travis docs, a max of 4 concurrent processses should be run per job: https://docs.travis-ci.com/user/common-build-problems/#My-build-script-is-killed-without-any-error * Reconsider tests exec order and split huge main and rocksdb test suites into their own job, decreasing the chance of going over the Travis job execution limit and getting killed; * Increase Travis testcase-timeout to 4 minutes. Occasionally on Ubuntu target and frequently on macOS, many tests in main, rpl, binlog suites take longer than 2 minutes, resulting in many jobs failing, when in reality the failing tests didn't get a chance to complete. From my testing, along with the other speedups, i.e. increasing ccache size, a timeout of 4 minutes should be Ok. Revert to 3 minutes of necessary. * Build with GCC and Clang version 5,6 only. * Rename GCC_VERSION to CC_VERSION for clarity. We are using two compilers after all, GCC and Clang. * Stop using somewhat obsolete Clang4 in Travis. Also, was the reason for the failing test suites in MDEV-15430.
2018-05-29 09:26:01 +02:00
- env DEB_BUILD_OPTIONS="parallel=4" debian/autobake-deb.sh;
2020-01-28 14:51:20 +01:00
- os: linux
dist: bionic
2020-01-28 14:51:20 +01:00
arch: s390x
compiler: gcc
env: DebPackages=bionic
addons: *deb-addons
script: *deb-script
# Just one OS X build is enough
- os: osx
2020-09-04 17:44:44 +02:00
osx_image: xcode12u
compiler: clang
env: CC_VERSION=10 TYPE=RelWithDebInfo MYSQL_TEST_SUITES=main
# Some chosen ones with s390x and gcc
2020-01-28 14:51:20 +01:00
- os: linux
arch: s390x
compiler: gcc
env: CC_VERSION=10 TYPE=RelWithDebInfo MYSQL_TEST_SUITES=main
2020-01-28 14:51:20 +01:00
- os: linux
arch: s390x
compiler: gcc
env: CC_VERSION=7 TYPE=RelWithDebInfo MYSQL_TEST_SUITES=binlog,binlog_encryption,encryption,rocksdb,versioning,rpl
# Some chosen ones with s390x and clang
2020-01-28 14:51:20 +01:00
- os: linux
arch: s390x
compiler: clang
env: CC_VERSION=7 TYPE=RelWithDebInfo MYSQL_TEST_SUITES=archive,optimizer_unfixed_bugs,parts,sys_vars,unit,vcol,innodb,innodb_gis,innodb_zip,innodb_fts
2020-01-28 14:51:20 +01:00
- os: linux
arch: s390x
compiler: clang
env: CC_VERSION=10 TYPE=RelWithDebInfo MYSQL_TEST_SUITES=csv,federated,funcs_1,funcs_2,gcol,handler,heap,json,maria,perfschema,plugins,multi_source,roles
# Extra tests to ensure IBM Power and ARM 64 work
2020-01-28 14:51:20 +01:00
- os: linux
arch: ppc64le
compiler: gcc
env: CC_VERSION=7 TYPE=RelWithDebInfo MYSQL_TEST_SUITES=main
2020-01-28 14:51:20 +01:00
- os: linux
arch: arm64
compiler: gcc
env: CC_VERSION=7 TYPE=RelWithDebInfo MYSQL_TEST_SUITES=main
allow_failures:
# Permanently fails on main.column_compression 'innodb' test (MDEV-23954)
- os: linux
arch: s390x
compiler: gcc
env: CC_VERSION=10 TYPE=RelWithDebInfo MYSQL_TEST_SUITES=main
# Until OSX becomes a bit more stable
MDEV-16213: Improvements and adjustments to Travis config Several improvements have been made so that builds run faster and with fewer canceled jobs: * Set ccache max size to 1GB. Was 512MB for Linux (too low for MariaDB) and 5GB on macOS with defaults; * Don't install libasan in Travis if not necessary. Sicne ASAN is disabled for the time being, save time/resources for other steps; * Decrease number of parallel processes. To prevent resource exhaustion leading to poor performance. According to Travis docs, a max of 4 concurrent processses should be run per job: https://docs.travis-ci.com/user/common-build-problems/#My-build-script-is-killed-without-any-error * Reconsider tests exec order and split huge main and rocksdb test suites into their own job, decreasing the chance of going over the Travis job execution limit and getting killed; * Increase Travis testcase-timeout to 4 minutes. Occasionally on Ubuntu target and frequently on macOS, many tests in main, rpl, binlog suites take longer than 2 minutes, resulting in many jobs failing, when in reality the failing tests didn't get a chance to complete. From my testing, along with the other speedups, i.e. increasing ccache size, a timeout of 4 minutes should be Ok. Revert to 3 minutes of necessary. * Build with GCC and Clang version 5,6 only. * Rename GCC_VERSION to CC_VERSION for clarity. We are using two compilers after all, GCC and Clang. * Stop using somewhat obsolete Clang4 in Travis. Also, was the reason for the failing test suites in MDEV-15430.
2018-05-29 09:26:01 +02:00
- os: osx
# ppc64el builder frequently runs out of memory
- arch: ppc64le
before_install:
- if [[ "${TRAVIS_OS_NAME}" == 'osx' ]]; then
brew update;
2018-05-23 06:58:13 +02:00
brew install gnutls lz4 lzo xz snappy ccache jemalloc curl ossp-uuid pcre zstd;
brew link ccache;
export PATH="/usr/local/opt/ccache/libexec:$PATH";
fi
before_script:
- df -h
- ccache --version
MDEV-16213: Improvements and adjustments to Travis config Several improvements have been made so that builds run faster and with fewer canceled jobs: * Set ccache max size to 1GB. Was 512MB for Linux (too low for MariaDB) and 5GB on macOS with defaults; * Don't install libasan in Travis if not necessary. Sicne ASAN is disabled for the time being, save time/resources for other steps; * Decrease number of parallel processes. To prevent resource exhaustion leading to poor performance. According to Travis docs, a max of 4 concurrent processses should be run per job: https://docs.travis-ci.com/user/common-build-problems/#My-build-script-is-killed-without-any-error * Reconsider tests exec order and split huge main and rocksdb test suites into their own job, decreasing the chance of going over the Travis job execution limit and getting killed; * Increase Travis testcase-timeout to 4 minutes. Occasionally on Ubuntu target and frequently on macOS, many tests in main, rpl, binlog suites take longer than 2 minutes, resulting in many jobs failing, when in reality the failing tests didn't get a chance to complete. From my testing, along with the other speedups, i.e. increasing ccache size, a timeout of 4 minutes should be Ok. Revert to 3 minutes of necessary. * Build with GCC and Clang version 5,6 only. * Rename GCC_VERSION to CC_VERSION for clarity. We are using two compilers after all, GCC and Clang. * Stop using somewhat obsolete Clang4 in Travis. Also, was the reason for the failing test suites in MDEV-15430.
2018-05-29 09:26:01 +02:00
- ccache --show-stats
- ccache --max-size=5G
script:
MDEV-16213: Improvements and adjustments to Travis config Several improvements have been made so that builds run faster and with fewer canceled jobs: * Set ccache max size to 1GB. Was 512MB for Linux (too low for MariaDB) and 5GB on macOS with defaults; * Don't install libasan in Travis if not necessary. Sicne ASAN is disabled for the time being, save time/resources for other steps; * Decrease number of parallel processes. To prevent resource exhaustion leading to poor performance. According to Travis docs, a max of 4 concurrent processses should be run per job: https://docs.travis-ci.com/user/common-build-problems/#My-build-script-is-killed-without-any-error * Reconsider tests exec order and split huge main and rocksdb test suites into their own job, decreasing the chance of going over the Travis job execution limit and getting killed; * Increase Travis testcase-timeout to 4 minutes. Occasionally on Ubuntu target and frequently on macOS, many tests in main, rpl, binlog suites take longer than 2 minutes, resulting in many jobs failing, when in reality the failing tests didn't get a chance to complete. From my testing, along with the other speedups, i.e. increasing ccache size, a timeout of 4 minutes should be Ok. Revert to 3 minutes of necessary. * Build with GCC and Clang version 5,6 only. * Rename GCC_VERSION to CC_VERSION for clarity. We are using two compilers after all, GCC and Clang. * Stop using somewhat obsolete Clang4 in Travis. Also, was the reason for the failing test suites in MDEV-15430.
2018-05-29 09:26:01 +02:00
# following modules are disabled after sourcing .travis.compiler.sh:
# clang disabled: mroonga just generates too many warnings with clang and travis stops the job
# cland disabled: tokudb has fatal warnings
# gcc/rpl: tokudb and mroonga
- source .travis.compiler.sh
- cmake .
-DCMAKE_BUILD_TYPE=${TYPE}
${CMAKE_OPT}
-DWITH_SSL=system -DWITH_ZLIB=system
MDEV-16213: Improvements and adjustments to Travis config Several improvements have been made so that builds run faster and with fewer canceled jobs: * Set ccache max size to 1GB. Was 512MB for Linux (too low for MariaDB) and 5GB on macOS with defaults; * Don't install libasan in Travis if not necessary. Sicne ASAN is disabled for the time being, save time/resources for other steps; * Decrease number of parallel processes. To prevent resource exhaustion leading to poor performance. According to Travis docs, a max of 4 concurrent processses should be run per job: https://docs.travis-ci.com/user/common-build-problems/#My-build-script-is-killed-without-any-error * Reconsider tests exec order and split huge main and rocksdb test suites into their own job, decreasing the chance of going over the Travis job execution limit and getting killed; * Increase Travis testcase-timeout to 4 minutes. Occasionally on Ubuntu target and frequently on macOS, many tests in main, rpl, binlog suites take longer than 2 minutes, resulting in many jobs failing, when in reality the failing tests didn't get a chance to complete. From my testing, along with the other speedups, i.e. increasing ccache size, a timeout of 4 minutes should be Ok. Revert to 3 minutes of necessary. * Build with GCC and Clang version 5,6 only. * Rename GCC_VERSION to CC_VERSION for clarity. We are using two compilers after all, GCC and Clang. * Stop using somewhat obsolete Clang4 in Travis. Also, was the reason for the failing test suites in MDEV-15430.
2018-05-29 09:26:01 +02:00
- make -j 4
- cd mysql-test
- travis_wait 30 ./mtr --force --max-test-fail=20 --parallel=4 --testcase-timeout=${TEST_CASE_TIMEOUT}
--suite=${MYSQL_TEST_SUITES}
--skip-test-list=unstable-tests
--skip-test=binlog.binlog_unsafe
after_script:
- ccache --show-stats
- df -h
notifications:
irc:
channels:
- "chat.freenode.net#maria"
on_success: never # [always|never|change]
on_failure: never
template:
- "%{repository}/%{branch} (%{commit} - %{author}): %{build_url}: %{message}"