f3e380659a
* GCC-7 and glibc-2.27 compat code * Statically link libstdc++ for GCC based builds Makes sure binaries which are built on a newer build host still work on older distros. * Use python3 when installing MacOS native tools * Move actual build logic out of Travis and upgrade to gcc-7 Travis will now simply call a few scripts which do the actual work. These scripts will first create a "builder image" which contains the necessary environment for the actual build. Then scripts are called inside this builder image to do the build. This should make us more independant from Travis and also allows us to do local CI testing. The build matrix is also moved out of .travis.yml and instead moved into ci/matrix.sh. This script is sourced with only "BUILD_TARGET" being set so that it internally can figure out which other environment variables need to be set. This commit also upgrades the used GCC version to 7. This is due to the use of ubuntu:bionic as base image for the builder image. * Add Jenkinsfiles for regular CI and nightly gitian builds * Automatically download OSX SDK in gitian-build.sh * Remove bogus "export MAKEJOBS=-j5" * Forward cache/src dirs into builder container Fixes caching issues on Travis. * fix * Fail build immediately when building depends took too long
88 lines
4.8 KiB
YAML
88 lines
4.8 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
|
|
|
|
addons:
|
|
apt:
|
|
packages:
|
|
# Use more recent docker version
|
|
- docker-ce
|
|
# Can be removed if Travis ever upgrades to Bionic
|
|
- realpath
|
|
|
|
services:
|
|
- docker
|
|
|
|
cache:
|
|
apt: true
|
|
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
|
|
|
|
matrix:
|
|
- BUILD_TARGET=arm-linux
|
|
- BUILD_TARGET=win32
|
|
- BUILD_TARGET=win64
|
|
- BUILD_TARGET=linux32
|
|
- BUILD_TARGET=linux64
|
|
- BUILD_TARGET=linux64_nowallet
|
|
- BUILD_TARGET=linux64_release DOCKER_BUILD=true
|
|
- BUILD_TARGET=mac
|
|
|
|
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:
|
|
# 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
|
|
- 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
|
|
- docker build --pull -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);'
|
|
script:
|
|
- export TRAVIS_COMMIT_LOG=`git log --format=fuller -1`
|
|
# Our scripts try to be Travis agnostic
|
|
- $DOCKER_RUN_IN_BUILDER ./ci/build_depends.sh;
|
|
# Skip Dash Core build if depends build take more than 20 mins.
|
|
- if [ $SECONDS -lt 1200 ]; then $DOCKER_RUN_IN_BUILDER ./ci/build_src.sh && export SRC_BUILT="true"; fi
|
|
- |
|
|
if [ "$SRC_BUILT" = "true" ]; then
|
|
travis_wait 30 $DOCKER_RUN_IN_BUILDER ./ci/test_unittests.sh;
|
|
$DOCKER_RUN_IN_BUILDER ./ci/test_integrationtests.sh;
|
|
if [ "$DOCKER_BUILD" = "true" ]; then BUILD_DIR=build-ci/dashcore-$BUILD_TARGET ./docker/build-docker.sh; fi;
|
|
else
|
|
# Let the build fail immediately. Caches are still uploaded even after failure. The next Travis run should then
|
|
# use the caches and thus be much faster, causing the build to succeed
|
|
false
|
|
fi;
|
|
after_script:
|
|
- echo $TRAVIS_COMMIT_RANGE
|
|
- echo $TRAVIS_COMMIT_LOG
|
|
after_success:
|
|
- if [ "$TRAVIS_PULL_REQUEST" = "false" -a "$TRAVIS_BRANCH" = "develop" -a "$DOCKER_BUILD" = "true" ]; then docker login -u $DOCKER_HUB_USER -p $DOCKER_HUB_PASSWORD && ./docker/push-docker.sh; fi
|