mirror of
https://github.com/dashpay/dash.git
synced 2024-12-25 03:52:49 +01:00
ad1891581c
b0a01299ed8cc2026e91a8dcad880b700e462cee test: Disable s390 build on travis (Wladimir J. van der Laan)
Pull request description:
Travis is consistently failing on s390 due to out of disk space issues,
which causes false positives. Disable the s390 build for now until
this is fixed some other way.
ACKs for top commit:
MarcoFalke:
ACK b0a01299ed8cc2026e91a8dcad880b700e462cee 🍠
jonasschnelli:
ACK b0a01299ed8cc2026e91a8dcad880b700e462cee
Tree-SHA512: ae8a78fa03bc620d802e4992d46929a0a4b801b50a6066d8f093f93fc5ebbc010d221c04787cbfc75436a2c40f9292257bf85fbb251593e21afff11756b6d8d4
285 lines
12 KiB
YAML
285 lines
12 KiB
YAML
# errata:
|
|
# - sudo/dist/group are set so as to get Blue Box VMs, necessary for [loopback]
|
|
# IPv6 support
|
|
|
|
# The test build matrix (stage: test) is constructed to test a wide range of
|
|
# configurations, rather than a single pass/fail. This helps to catch build
|
|
# failures and logic errors that present on platforms other than the ones the
|
|
# author has tested.
|
|
#
|
|
# Some builders use the dependency-generator in `./depends`, rather than using
|
|
# apt-get to install build dependencies. This guarantees that the tester is
|
|
# using the same versions as Gitian, so the build results are nearly identical
|
|
# to what would be found in a final release.
|
|
#
|
|
# In order to avoid rebuilding all dependencies for each build, the binaries
|
|
# are cached and re-used when possible. Changes in the dependency-generator
|
|
# will trigger cache-invalidation and rebuilds as necessary.
|
|
#
|
|
|
|
dist: xenial
|
|
|
|
os: linux
|
|
language: minimal
|
|
arch: amd64
|
|
|
|
services:
|
|
- docker
|
|
|
|
cache:
|
|
ccache: true
|
|
directories:
|
|
- $BASE_BUILD_DIR/ci/scratch/.ccache
|
|
# macOS
|
|
- $HOME/Library/Caches/Homebrew
|
|
- /usr/local/Homebrew
|
|
before_cache:
|
|
- if [ "${TRAVIS_OS_NAME}" = "osx" ]; then brew cleanup; fi
|
|
env:
|
|
global:
|
|
# DOCKER_HUB_USER
|
|
- secure: "J0T+zrRBBzBnxoioCD378cRSJUF8Vms32QMmrENVVfuJl03oBQv0QxSatLEiD4PtRPrN00mJ8/k/HdqFQ0SN1yg6a00duOZ6C9jk6t/fExBO1LNhp3Z7lcaMUrNEyRN6sgfVeznDVTGj9jBQU2HNlwHk0UD9BNp/k+Bjhrtw7Njp9JTLZKBgxrXk0WZmfk0d75Q+9DajA1j2tSfWVpwzv6HMGfqIH1wsVEakBY+tnaE6EO3IdzdWHhf/iV+Tx0tL0Qz/6mejgSuoGLTJLmeTrceTTmsDlN3B95y+XfcYDs6EP7gpzN8Ffg/mLV8xJ2Myj7+b1o+smMJZE5tLuPIeAu0YsfkPNa/tNLotOlDxF72per0kXyNYbRf+JrpxiOu9pLCtdtd40V2SsiNhpQqHVy+b+wkkqo2syTHT+9UNkqEi3WFm6TqFuOeQNtDm6R0hRl/Talw/ZEeKs68z1Cf6VyBrZG5LqtOurtWlKwXCe/Tr1i2g4BEAcbywphtCCcfgMK9YSGQnjKkGk6k9gVEa2bneYLZz1RSh2OpXnIsIJOX7X0hNd5xtQDLgbpSUlKwVcEriWeGe12GCszKNX9gdEo2bHeq4xAJ6BE+ot745z9dc+nC2BJ6Su+I5L6zBg4m2FWn0TWhPvz/6JR26t6ls/E7m+hkwJTCHnIUiFmmzpEw="
|
|
# DOCKER_HUB_PASSWORD
|
|
- secure: "RLzlMhfLqwSBrZqJOVOd61suXBn+HtUR3vOZfuFYF/Qmjjj5TE41+rObZmzc54hP/ZL+OH6blnibpvfDXlX+eN38ivFQfuxkJIGL68SJsEwNBRwW39Yw6Hl5RdI41MLCH7ByN15wifLp1JKBilHJ7XGMOUjI7P0yl7JjX8GBXUCtJbVLRugo80/yn+XQ1NdnlpbpYHNjMEQFWSODPa3pSK5McWvyQjDZDgS+IkdrZmIYJPMa7bmKH5I/edUPSmXQT905FgEwq9u8XR0SyBopli21EK9l6GkXIIvmDTYz5vT26Apvi2B4Aoazlklg+KNRUJuLGerpt6kbnU0gMSUChVkFfFhOk6GRSN3a/AUfD2FOudvMhet2QvlPHx+GYdEUr5XVo5HW42pHsqfD6eDtHd8VLTsHP0q4C8V85fNMv21lkkehy2ry8fx/RRy6x4O2wg2mua+79UkGKXp75gMKzWEcth34PCFCOu37l2F8R/ANnrQ52K/8vIQ88TtU2OpYX89fHjLojBxu+WKEBGZH2LRPsZBOUHeeO5C/xKDrhZU24ORnMW8wg66Qg5GIX1KI4a8yp73Mpues5hzpJ6wkMuRrQt40ymKndLCjv8KSd+5BfP6Or/KIrzDNYdZaasjk7JNi6rcZmm9d3fTAo+Ja/mjpUCIOo3SX14luzVCJIig="
|
|
- DOCKER_BUILD=false
|
|
|
|
stages:
|
|
- build depends
|
|
- build src
|
|
- run tests
|
|
- build docker
|
|
|
|
builddepends: &builddepends
|
|
stage: build depends
|
|
script:
|
|
- $DOCKER_RUN_IN_BUILDER ./ci/dash/build_depends.sh
|
|
|
|
buildsrc: &buildsrc
|
|
stage: build src
|
|
script:
|
|
- $DOCKER_RUN_IN_BUILDER ./ci/dash/build_depends.sh
|
|
- $DOCKER_RUN_IN_BUILDER ./ci/dash/build_src.sh
|
|
|
|
runtests: &runtests
|
|
stage: run tests
|
|
script:
|
|
- $DOCKER_RUN_IN_BUILDER ./ci/dash/build_depends.sh
|
|
- $DOCKER_RUN_IN_BUILDER ./ci/dash/build_src.sh
|
|
- $DOCKER_RUN_IN_BUILDER ./ci/dash/test_unittests.sh
|
|
- if [ "$TRAVIS_EVENT_TYPE" = "cron" ]; then extended="--extended --exclude feature_pruning,feature_dbcrash"; fi
|
|
- $DOCKER_RUN_IN_BUILDER ./ci/test_integrationtests.sh --quiet --jobs=3 ${extended}
|
|
|
|
builddocker: &builddocker
|
|
stage: build docker
|
|
script:
|
|
# no need to run tests again here
|
|
- if [ "$DOCKER_BUILD" = "true" ]; then $DOCKER_RUN_IN_BUILDER ./ci/dash/build_depends.sh && $DOCKER_RUN_IN_BUILDER ./ci/dash/build_src.sh && BUILD_DIR=build-ci/dashcore-$BUILD_TARGET ./ci/dash/build-docker.sh; fi
|
|
- CI_RETRY_EXE="travis_retry"
|
|
- CI_WAIT="while sleep 500; do echo .; done"
|
|
- CACHE_ERR_MSG="Error! Initial build successful, but not enough time remains to run later build stages and tests. See https://docs.travis-ci.com/user/customizing-the-build#build-timeouts . Please manually re-run this job by using the travis restart button. The next run should not time out because the build cache has been saved."
|
|
before_install:
|
|
- set -o errexit; source ./ci/test/00_setup_env.sh
|
|
- set -o errexit; source ./ci/test/03_before_install.sh
|
|
install:
|
|
- set -o errexit; source ./ci/test/04_install.sh
|
|
before_script:
|
|
- set -o errexit; source ./ci/test/05_before_script.sh
|
|
script:
|
|
- if [ $SECONDS -gt 1200 ]; then set +o errexit; echo "Travis early exit to cache current state"; false; else set -o errexit; source .travis/test_06_script.sh; fi
|
|
after_script:
|
|
- echo $TRAVIS_COMMIT_RANGE
|
|
jobs:
|
|
include:
|
|
# build depends
|
|
- <<: *builddepends
|
|
name: depends-arm-linux
|
|
env: BUILD_TARGET=arm-linux
|
|
- <<: *builddepends
|
|
name: depends-win64
|
|
env: BUILD_TARGET=win64
|
|
- <<: *builddepends
|
|
name: depends-linux32
|
|
env: BUILD_TARGET=linux32
|
|
- <<: *builddepends
|
|
name: depends-linux64
|
|
env: BUILD_TARGET=linux64
|
|
- <<: *builddepends
|
|
name: depends-linux64_nowallet
|
|
env: BUILD_TARGET=linux64_nowallet
|
|
- <<: *builddepends
|
|
name: depends-linux64_release
|
|
env:
|
|
- BUILD_TARGET=linux64_release
|
|
- DOCKER_BUILD=true
|
|
- <<: *builddepends
|
|
name: depends-mac
|
|
env: BUILD_TARGET=mac
|
|
# build source
|
|
- <<: *buildsrc
|
|
name: src-arm-linux
|
|
env: BUILD_TARGET=arm-linux
|
|
- <<: *buildsrc
|
|
name: src-win64
|
|
env: BUILD_TARGET=win64
|
|
- <<: *buildsrc
|
|
name: src-linux32
|
|
env: BUILD_TARGET=linux32
|
|
- <<: *buildsrc
|
|
name: src-linux64
|
|
env: BUILD_TARGET=linux64
|
|
- <<: *buildsrc
|
|
name: src-linux64_nowallet
|
|
env: BUILD_TARGET=linux64_nowallet
|
|
- <<: *buildsrc
|
|
name: src-linux64_release
|
|
env:
|
|
- BUILD_TARGET=linux64_release
|
|
- DOCKER_BUILD=true
|
|
- <<: *buildsrc
|
|
name: src-mac
|
|
env: BUILD_TARGET=mac
|
|
# run tests (no tests for arm-linux and mac)
|
|
- <<: *runtests
|
|
name: tests-win64
|
|
env: BUILD_TARGET=win64
|
|
- <<: *runtests
|
|
name: tests-linux32
|
|
env: BUILD_TARGET=linux32
|
|
- <<: *runtests
|
|
name: tests-linux64
|
|
env: BUILD_TARGET=linux64
|
|
- <<: *runtests
|
|
name: tests-linux64_nowallet
|
|
env: BUILD_TARGET=linux64_nowallet
|
|
- <<: *runtests
|
|
name: tests-linux64_release
|
|
env:
|
|
- BUILD_TARGET=linux64_release
|
|
- DOCKER_BUILD=true
|
|
# build docker
|
|
- <<: *builddocker
|
|
name: docker-linux64_release
|
|
env:
|
|
- BUILD_TARGET=linux64_release
|
|
- DOCKER_BUILD=true
|
|
|
|
before_cache:
|
|
# Save builder image
|
|
- docker save dash-builder-$BUILD_TARGET-$TRAVIS_JOB_NUMBER $(docker history -q dash-builder-$BUILD_TARGET-$TRAVIS_JOB_NUMBER | grep -v \<missing\>) | gzip -2 > $HOME/cache/docker/dash-builder-$BUILD_TARGET.tar.gz
|
|
|
|
install:
|
|
# Fix annoying Travis bug: a branch with a single commit has an empty TRAVIS_COMMIT_RANGE sometimes
|
|
- if [ -z "$TRAVIS_COMMIT_RANGE" ]; then export TRAVIS_COMMIT_RANGE="HEAD~..HEAD"; fi
|
|
# Our scripts try to be Travis agnostic
|
|
- export PULL_REQUEST="$TRAVIS_PULL_REQUEST"
|
|
- export COMMIT_RANGE="$TRAVIS_COMMIT_RANGE"
|
|
- export JOB_NUMBER="$TRAVIS_JOB_NUMBER"
|
|
- export HOST_SRC_DIR=$BASE_BUILD_DIR
|
|
- export HOST_CACHE_DIR=$HOME/cache
|
|
- export TRAVIS_COMMIT_LOG=`git log --format=fuller -1`
|
|
- source ./ci/matrix.sh
|
|
- mkdir -p $HOST_CACHE_DIR/docker && mkdir -p $HOST_CACHE_DIR/ccache && mkdir -p $HOST_CACHE_DIR/depends && mkdir -p $HOST_CACHE_DIR/sdk-sources
|
|
# Keep this as it makes caching related debugging easier
|
|
- ls -lah $HOST_CACHE_DIR && ls -lah $HOST_CACHE_DIR/depends && ls -lah $HOST_CACHE_DIR/ccache && ls -lah $HOST_CACHE_DIR/docker
|
|
# Load cached builder image
|
|
- if [ -f $HOST_CACHE_DIR/docker/dash-builder-$BUILD_TARGET.tar.gz ]; then zcat $HOST_CACHE_DIR/docker/dash-builder-$BUILD_TARGET.tar.gz | docker load || true; fi
|
|
- travis_retry docker pull ubuntu:focal
|
|
- travis_retry docker build -t $BUILDER_IMAGE_NAME --build-arg=USER_ID=$UID --build-arg=GROUP_ID=$UID --build-arg=BUILD_TARGET=$BUILD_TARGET -f contrib/containers/ci/Dockerfile ci
|
|
before_script:
|
|
# Make sure stdout is in blocking mode. Otherwise builds will fail due to large writes to stdout
|
|
# See https://github.com/travis-ci/travis-ci/issues/4704. If this gets fixed, this line can also be removed.
|
|
- python3 -c 'import os,sys,fcntl; flags = fcntl.fcntl(sys.stdout, fcntl.F_GETFL); fcntl.fcntl(sys.stdout, fcntl.F_SETFL, flags&~os.O_NONBLOCK);'
|
|
# Build docker image only for develop branch of the main repo
|
|
- if [ "$TRAVIS_REPO_SLUG" != "dashpay/dash" -o "$TRAVIS_BRANCH" != "develop" -o "$TRAVIS_PULL_REQUEST" != "false" ]; then export DOCKER_BUILD="false"; echo DOCKER_BUILD=$DOCKER_BUILD; fi
|
|
# TODO(ignore if don't use travis): Check keys and signed commits
|
|
#- if [ "$TRAVIS_REPO_SLUG" = "dashpay/dash" -a "$TRAVIS_PULL_REQUEST" = "false" ]; then travis_retry gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys $(<contrib/verify-commits/trusted-keys); fi
|
|
#- if [ "$TRAVIS_REPO_SLUG" = "dashpay/dash" -a "$TRAVIS_EVENT_TYPE" = "cron" ]; then travis_wait 30 contrib/verify-commits/verify-commits.py; fi
|
|
after_script:
|
|
- echo $TRAVIS_COMMIT_RANGE
|
|
- echo $TRAVIS_COMMIT_LOG
|
|
after_success:
|
|
- if [ "$DOCKER_BUILD" = "true" ]; then docker login -u $DOCKER_HUB_USER -p $DOCKER_HUB_PASSWORD && ./ci/dash/push-docker.sh; fi
|
|
- stage: lint
|
|
name: 'lint'
|
|
env:
|
|
cache: false
|
|
language: python
|
|
python: '3.8' # Oldest supported version according to doc/dependencies.md
|
|
install:
|
|
- set -o errexit; source ./ci/lint/04_install.sh
|
|
before_script:
|
|
- set -o errexit; source ./ci/lint/05_before_script.sh
|
|
script:
|
|
- set -o errexit; source ./ci/lint/06_script.sh
|
|
|
|
- stage: test
|
|
name: 'ARM [GOAL: install] [focal] [unit tests, functional tests]'
|
|
arch: arm64
|
|
env: >-
|
|
FILE_ENV="./ci/test/00_setup_env_arm.sh"
|
|
QEMU_USER_CMD="" # Can run the tests natively without qemu
|
|
|
|
# s390 build was disabled temporarily because of disk space issues on the Travis VM
|
|
#
|
|
# - stage: test
|
|
# name: 'S390x [GOAL: install] [focal] [unit tests, functional tests]'
|
|
# arch: s390x
|
|
# env: >-
|
|
# FILE_ENV="./ci/test/00_setup_env_s390x.sh"
|
|
# QEMU_USER_CMD="" # Can run the tests natively without qemu
|
|
|
|
- stage: test
|
|
name: 'Win64 [GOAL: deploy] [unit tests, no gui, no functional tests]'
|
|
env: >-
|
|
FILE_ENV="./ci/test/00_setup_env_win64.sh"
|
|
|
|
- stage: test
|
|
name: '32-bit + dash [GOAL: install] [CentOS 7] [GUI]'
|
|
env: >-
|
|
FILE_ENV="./ci/test/00_setup_env_i686_centos.sh"
|
|
|
|
- stage: test
|
|
name: 'x86_64 Linux [GOAL: install] [focal] [uses qt5 dev package instead of depends Qt to speed up build and avoid timeout] [unsigned char]'
|
|
env: >-
|
|
FILE_ENV="./ci/test/00_setup_env_native_qt5.sh"
|
|
# x86_64 Linux (xenial, no depends, only system libs, sanitizers: thread (TSan))
|
|
- stage: test
|
|
name: 'x86_64 Linux [GOAL: install] [xenial] [no depends, only system libs, sanitizers: thread (TSan), no wallet]'
|
|
env: >-
|
|
FILE_ENV="./ci/test/00_setup_env_native_tsan.sh"
|
|
TEST_RUNNER_EXTRA="--exclude feature_block" # Not enough memory on travis machines
|
|
# x86_64 Linux (no depends, only system libs, sanitizers: address/leak (ASan + LSan) + undefined (UBSan) + integer)
|
|
- stage: test
|
|
name: 'x86_64 Linux [GOAL: install] [focal] [no depends, only system libs, sanitizers: address/leak (ASan + LSan) + undefined (UBSan) + integer]'
|
|
env: >-
|
|
FILE_ENV="./ci/test/00_setup_env_native_asan.sh"
|
|
|
|
- stage: test
|
|
name: 'x86_64 Linux [GOAL: install] [focal] [no wallet]'
|
|
env: >-
|
|
FILE_ENV="./ci/test/00_setup_env_native_fuzz.sh"
|
|
|
|
- stage: test
|
|
name: 'x86_64 Linux [GOAL: install] [focal] [no depends, only system libs, fuzzers under valgrind]'
|
|
env: >-
|
|
FILE_ENV="./ci/test/00_setup_env_native_fuzz_with_valgrind.sh"
|
|
|
|
- stage: test
|
|
env: >-
|
|
FILE_ENV="./ci/test/00_setup_env_native_nowallet.sh"
|
|
|
|
- stage: test
|
|
name: 'macOS 10.12 [GOAL: deploy] [no functional tests]'
|
|
env: >-
|
|
FILE_ENV="./ci/test/00_setup_env_mac.sh"
|
|
|
|
- stage: test
|
|
name: 'macOS 10.14 native [GOAL: install] [GUI] [no depends]'
|
|
os: osx
|
|
# Use the most recent version:
|
|
# Xcode 11, macOS 10.14, JDK 12.0.1
|
|
# https://docs.travis-ci.com/user/reference/osx/#macos-version
|
|
osx_image: xcode11
|
|
env: >-
|
|
FILE_ENV="./ci/test/00_setup_env_mac_host.sh"
|