63424fb26a
* Retry downloading of depends sources 3 times * Manually invoke apt-get update and install instead of using addon This allows us to use travis_retry on these operations. * Add exception for depends/Makefile in .gitignore * Remove --retry from curl call This avoids future confusion as we don't rely on curl anymore to properly retry downloads. curls does only retry on transient errors, while Travis might cause all kinds of errors which circumvent the retry logic of curl.
146 lines
6.4 KiB
YAML
146 lines
6.4 KiB
YAML
# errata:
|
|
# - sudo/dist/group are set so as to get Blue Box VMs, necessary for [loopback]
|
|
# IPv6 support
|
|
|
|
sudo: required
|
|
dist: trusty
|
|
|
|
os: linux
|
|
language: generic
|
|
|
|
services:
|
|
- docker
|
|
|
|
cache:
|
|
ccache: true
|
|
directories:
|
|
- $HOME/cache
|
|
|
|
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/build_depends.sh
|
|
|
|
buildsrc: &buildsrc
|
|
stage: build src
|
|
script:
|
|
- $DOCKER_RUN_IN_BUILDER ./ci/build_depends.sh
|
|
- $DOCKER_RUN_IN_BUILDER ./ci/build_src.sh
|
|
|
|
runtests: &runtests
|
|
stage: run tests
|
|
script:
|
|
- $DOCKER_RUN_IN_BUILDER ./ci/build_depends.sh
|
|
- $DOCKER_RUN_IN_BUILDER ./ci/build_src.sh
|
|
- $DOCKER_RUN_IN_BUILDER ./ci/test_unittests.sh
|
|
- if [ "$TRAVIS_EVENT_TYPE" = "cron" ]; then extended="--extended --exclude pruning,dbcrash"; fi
|
|
- $DOCKER_RUN_IN_BUILDER ./ci/test_integrationtests.sh --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/build_depends.sh && $DOCKER_RUN_IN_BUILDER ./ci/build_src.sh && BUILD_DIR=build-ci/dashcore-$BUILD_TARGET ./docker/build-docker.sh; fi
|
|
|
|
jobs:
|
|
include:
|
|
# build depends
|
|
- <<: *builddepends
|
|
env: BUILD_TARGET=arm-linux
|
|
- <<: *builddepends
|
|
env: BUILD_TARGET=win32
|
|
- <<: *builddepends
|
|
env: BUILD_TARGET=win64
|
|
- <<: *builddepends
|
|
env: BUILD_TARGET=linux32
|
|
- <<: *builddepends
|
|
env: BUILD_TARGET=linux64
|
|
- <<: *builddepends
|
|
env: BUILD_TARGET=linux64_nowallet
|
|
- <<: *builddepends
|
|
env: BUILD_TARGET=linux64_release DOCKER_BUILD=true
|
|
- <<: *builddepends
|
|
env: BUILD_TARGET=mac
|
|
# build source
|
|
- <<: *buildsrc
|
|
env: BUILD_TARGET=arm-linux
|
|
- <<: *buildsrc
|
|
env: BUILD_TARGET=win32
|
|
- <<: *buildsrc
|
|
env: BUILD_TARGET=win64
|
|
- <<: *buildsrc
|
|
env: BUILD_TARGET=linux32
|
|
- <<: *buildsrc
|
|
env: BUILD_TARGET=linux64
|
|
- <<: *buildsrc
|
|
env: BUILD_TARGET=linux64_nowallet
|
|
- <<: *buildsrc
|
|
env: BUILD_TARGET=linux64_release DOCKER_BUILD=true
|
|
- <<: *buildsrc
|
|
env: BUILD_TARGET=mac
|
|
# run tests (no tests for arm-linux and mac)
|
|
- <<: *runtests
|
|
env: BUILD_TARGET=win32
|
|
- <<: *runtests
|
|
env: BUILD_TARGET=win64
|
|
- <<: *runtests
|
|
env: BUILD_TARGET=linux32
|
|
- <<: *runtests
|
|
env: BUILD_TARGET=linux64
|
|
- <<: *runtests
|
|
env: BUILD_TARGET=linux64_nowallet
|
|
- <<: *runtests
|
|
env: BUILD_TARGET=linux64_release DOCKER_BUILD=true
|
|
# build docker
|
|
- <<: *builddocker
|
|
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
|
|
|
|
before_install:
|
|
- travis_retry travis_apt_get_update
|
|
- travis_retry sudo apt-get -yq --no-install-suggests --no-install-recommends install docker-ce realpath
|
|
|
|
install:
|
|
# Our scripts try to be Travis agnostic
|
|
- export PULL_REQUEST="$TRAVIS_PULL_REQUEST"
|
|
- export JOB_NUMBER="$TRAVIS_JOB_NUMBER"
|
|
- export HOST_SRC_DIR=$TRAVIS_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:bionic
|
|
- 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 ci/Dockerfile.builder 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
|
|
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 && ./docker/push-docker.sh; fi
|