# 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 ccache: true 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 - bison - chrpath - clang-7 # In suites: focal, bionic-updates - clang-10 # In suites: focal, bionic - 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) - gdb - libaio-dev - libarchive-dev - libboost-atomic-dev - libboost-chrono-dev - libboost-date-time-dev - libboost-dev - libboost-filesystem-dev - libboost-regex-dev - libboost-system-dev - libboost-thread-dev - libcrack2-dev - libcurl4-openssl-dev - libdbd-mysql - libedit-dev - libjemalloc-dev - libjudy-dev - libkrb5-dev - liblz4-dev - libncurses5-dev - libnuma-dev - libpam0g-dev - libpcre2-dev - libpmem-dev - libreadline-gplv2-dev - libsnappy-dev - 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 ## 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 - env DEB_BUILD_OPTIONS="parallel=4" debian/autobake-deb.sh; - os: linux dist: bionic arch: s390x compiler: gcc env: DebPackages=bionic addons: *deb-addons script: *deb-script # Just one OS X build is enough - os: osx osx_image: xcode12u compiler: clang env: CC_VERSION=10 TYPE=RelWithDebInfo MYSQL_TEST_SUITES=main # Some chosen ones with s390x and gcc - os: linux arch: s390x compiler: gcc env: CC_VERSION=10 TYPE=RelWithDebInfo MYSQL_TEST_SUITES=main - 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 - 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 - 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 - os: linux arch: ppc64le compiler: gcc env: CC_VERSION=7 TYPE=RelWithDebInfo MYSQL_TEST_SUITES=main - 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 - os: osx # ppc64el builder frequently runs out of memory - arch: ppc64le before_install: - if [[ "${TRAVIS_OS_NAME}" == 'osx' ]]; then brew update; 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 - ccache --show-stats - ccache --max-size=5G script: # following modules are disabled after sourcing .travis.compiler.sh: # clang disabled: mroonga just generates too many warnings with clang and travis stops the job # gcc/rpl: mroonga - source .travis.compiler.sh - cmake . -DCMAKE_BUILD_TYPE=${TYPE} ${CMAKE_OPT} -DWITH_SSL=system -DWITH_ZLIB=system - 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=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}"