Skip to content

Commit 2b67354

Browse files
author
MarcoFalke
committed
Merge #13849: travis: use only travis jobs: instead of mix of jobs+matrix
566f826 use only travis jobs: instead of mix of jobs+matrix (Julian Fleischer) Pull request description: This is extracted from bitcoin/bitcoin#13816 to make that one simpler. The travis `matrix` and `jobs` top level items are actually aliases for each other. The goal is to be able to specify not just the environment per job but also the `os` (for bitcoin/bitcoin#13816 ). So this PR moves the environment variables from the `env.matrix` section to `jobs.include`. `jobs` and build stages subsume the matrix functionality. IMHO this makes it clearer to add stages (as every item clearly references which stage it belongs to). The `before_install`, `install`, etc. steps default to belonging to the `test` stage and were moved up . Tree-SHA512: afd01e03d076c3ac6c2ab20facbe0fbbbc028c92880d02e866b077e9ca365a4e9e8c237a0d999234180c684bc4612c0bf6c3026b96d93b5f91c7e60e4de7775e
2 parents 1ef57a9 + 566f826 commit 2b67354

File tree

1 file changed

+58
-53
lines changed

1 file changed

+58
-53
lines changed

.travis.yml

Lines changed: 58 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,58 @@ env:
2626
- SDK_URL=https://bitcoincore.org/depends-sources/sdks
2727
- WINEDEBUG=fixme-all
2828
- DOCKER_PACKAGES="build-essential libtool autotools-dev automake pkg-config bsdmainutils curl git ca-certificates ccache"
29-
matrix:
29+
before_install:
30+
- export PATH=$(echo $PATH | tr ':' "\n" | sed '/\/opt\/python/d' | tr "\n" ":" | sed "s|::|:|g")
31+
- BEGIN_FOLD () { echo ""; CURRENT_FOLD_NAME=$1; echo "travis_fold:start:${CURRENT_FOLD_NAME}"; }
32+
- END_FOLD () { RET=$?; echo "travis_fold:end:${CURRENT_FOLD_NAME}"; return $RET; }
33+
install:
34+
- travis_retry docker pull $DOCKER_NAME_TAG
35+
- env | grep -E '^(CCACHE_|WINEDEBUG|BOOST_TEST_RANDOM|CONFIG_SHELL)' | tee /tmp/env
36+
- if [[ $HOST = *-mingw32 ]]; then DOCKER_ADMIN="--cap-add SYS_ADMIN"; fi
37+
- DOCKER_ID=$(docker run $DOCKER_ADMIN -idt --mount type=bind,src=$TRAVIS_BUILD_DIR,dst=$TRAVIS_BUILD_DIR --mount type=bind,src=$CCACHE_DIR,dst=$CCACHE_DIR -w $TRAVIS_BUILD_DIR --env-file /tmp/env $DOCKER_NAME_TAG)
38+
- DOCKER_EXEC () { docker exec $DOCKER_ID bash -c "cd $PWD && $*"; }
39+
- if [ -n "$DPKG_ADD_ARCH" ]; then DOCKER_EXEC dpkg --add-architecture "$DPKG_ADD_ARCH" ; fi
40+
- travis_retry DOCKER_EXEC apt-get update
41+
- travis_retry DOCKER_EXEC apt-get install --no-install-recommends --no-upgrade -qq $PACKAGES $DOCKER_PACKAGES
42+
before_script:
43+
- DOCKER_EXEC echo \> \$HOME/.bitcoin # Make sure default datadir does not exist and is never read by creating a dummy file
44+
- mkdir -p depends/SDKs depends/sdk-sources
45+
- if [ -n "$OSX_SDK" -a ! -f depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz ]; then curl --location --fail $SDK_URL/MacOSX${OSX_SDK}.sdk.tar.gz -o depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz; fi
46+
- if [ -n "$OSX_SDK" -a -f depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz ]; then tar -C depends/SDKs -xf depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz; fi
47+
- if [[ $HOST = *-mingw32 ]]; then DOCKER_EXEC update-alternatives --set $HOST-g++ \$\(which $HOST-g++-posix\); fi
48+
- if [ -z "$NO_DEPENDS" ]; then DOCKER_EXEC CONFIG_SHELL= make $MAKEJOBS -C depends HOST=$HOST $DEP_OPTS; fi
49+
script:
50+
- export TRAVIS_COMMIT_LOG=`git log --format=fuller -1`
51+
- OUTDIR=$BASE_OUTDIR/$TRAVIS_PULL_REQUEST/$TRAVIS_JOB_NUMBER-$HOST
52+
- BITCOIN_CONFIG_ALL="--disable-dependency-tracking --prefix=$TRAVIS_BUILD_DIR/depends/$HOST --bindir=$OUTDIR/bin --libdir=$OUTDIR/lib"
53+
- if [ -z "$NO_DEPENDS" ]; then DOCKER_EXEC ccache --max-size=$CCACHE_SIZE; fi
54+
- BEGIN_FOLD autogen; test -n "$CONFIG_SHELL" && DOCKER_EXEC "$CONFIG_SHELL" -c "./autogen.sh" || DOCKER_EXEC ./autogen.sh; END_FOLD
55+
- mkdir build && cd build
56+
- BEGIN_FOLD configure; DOCKER_EXEC ../configure --cache-file=config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false); END_FOLD
57+
- BEGIN_FOLD distdir; DOCKER_EXEC make distdir VERSION=$HOST; END_FOLD
58+
- cd bitcoin-$HOST
59+
- BEGIN_FOLD configure; DOCKER_EXEC ./configure --cache-file=../config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false); END_FOLD
60+
- BEGIN_FOLD build; DOCKER_EXEC make $MAKEJOBS $GOAL || ( echo "Build failure. Verbose build follows." && DOCKER_EXEC make $GOAL V=1 ; false ); END_FOLD
61+
- if [ "$RUN_TESTS" = "true" ]; then BEGIN_FOLD unit-tests; DOCKER_EXEC LD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/depends/$HOST/lib make $MAKEJOBS check VERBOSE=1; END_FOLD; fi
62+
- if [ "$RUN_BENCH" = "true" ]; then BEGIN_FOLD bench; DOCKER_EXEC LD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/depends/$HOST/lib $OUTDIR/bin/bench_bitcoin -scaling=0.001 ; END_FOLD; fi
63+
- if [ "$TRAVIS_EVENT_TYPE" = "cron" ]; then extended="--extended --exclude feature_pruning,feature_dbcrash"; fi
64+
- if [ "$RUN_TESTS" = "true" ]; then BEGIN_FOLD functional-tests; DOCKER_EXEC test/functional/test_runner.py --combinedlogslen=4000 --coverage --quiet --failfast ${extended}; END_FOLD; fi
65+
after_script:
66+
- echo $TRAVIS_COMMIT_RANGE
67+
- echo $TRAVIS_COMMIT_LOG
68+
jobs:
69+
include:
3070
# ARM
31-
- >-
71+
- stage: test
72+
env: >-
3273
HOST=arm-linux-gnueabihf
3374
PACKAGES="g++-arm-linux-gnueabihf"
3475
DEP_OPTS="NO_QT=1"
3576
GOAL="install"
3677
BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports"
3778
# Win32
38-
- >-
79+
- stage: test
80+
env: >-
3981
HOST=i686-w64-mingw32
4082
DPKG_ADD_ARCH="i386"
4183
DEP_OPTS="NO_QT=1"
@@ -44,15 +86,17 @@ env:
4486
GOAL="install"
4587
BITCOIN_CONFIG="--enable-reduce-exports"
4688
# Win64
47-
- >-
89+
- stage: test
90+
env: >-
4891
HOST=x86_64-w64-mingw32
4992
DEP_OPTS="NO_QT=1"
5093
PACKAGES="python3 nsis g++-mingw-w64-x86-64 wine-binfmt wine64"
5194
RUN_TESTS=true
5295
GOAL="install"
5396
BITCOIN_CONFIG="--enable-reduce-exports"
5497
# 32-bit + dash
55-
- >-
98+
- stage: test
99+
env: >-
56100
HOST=i686-pc-linux-gnu
57101
PACKAGES="g++-multilib python3-zmq"
58102
DEP_OPTS="NO_QT=1"
@@ -61,7 +105,8 @@ env:
61105
BITCOIN_CONFIG="--enable-zmq --enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++"
62106
CONFIG_SHELL="/bin/dash"
63107
# x86_64 Linux (uses qt5 dev package instead of depends Qt to speed up build and avoid timeout)
64-
- >-
108+
- stage: test
109+
env: >-
65110
HOST=x86_64-unknown-linux-gnu
66111
PACKAGES="python3-zmq qtbase5-dev qttools5-dev-tools protobuf-compiler libdbus-1-dev libharfbuzz-dev libprotobuf-dev"
67112
DEP_OPTS="NO_QT=1 NO_UPNP=1 DEBUG=1 ALLOW_HOST_PACKAGES=1"
@@ -70,71 +115,31 @@ env:
70115
GOAL="install"
71116
BITCOIN_CONFIG="--enable-zmq --with-gui=qt5 --enable-glibc-back-compat --enable-reduce-exports --enable-debug CXXFLAGS=\"-g0 -O2\""
72117
# x86_64 Linux (Qt5 & system libs)
73-
- >-
118+
- stage: test
119+
env: >-
74120
HOST=x86_64-unknown-linux-gnu
75121
PACKAGES="python3-zmq qtbase5-dev qttools5-dev-tools libssl1.0-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev libdb5.3++-dev libminiupnpc-dev libzmq3-dev libprotobuf-dev protobuf-compiler libqrencode-dev"
76122
NO_DEPENDS=1
77123
RUN_TESTS=true
78124
GOAL="install"
79125
BITCOIN_CONFIG="--enable-zmq --with-incompatible-bdb --enable-glibc-back-compat --enable-reduce-exports --with-gui=qt5 CPPFLAGS=-DDEBUG_LOCKORDER"
80126
# x86_64 Linux, No wallet
81-
- >-
127+
- stage: test
128+
env: >-
82129
HOST=x86_64-unknown-linux-gnu
83130
PACKAGES="python3"
84131
DEP_OPTS="NO_WALLET=1"
85132
RUN_TESTS=true
86133
GOAL="install"
87134
BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports"
88135
# Cross-Mac
89-
- >-
136+
- stage: test
137+
env: >-
90138
HOST=x86_64-apple-darwin14
91139
PACKAGES="cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools python-dev python3-setuptools-git"
92-
BITCOIN_CONFIG="--enable-gui --enable-reduce-exports --enable-werror"
93140
OSX_SDK=10.11
94141
GOAL="all deploy"
95-
96-
before_install:
97-
- export PATH=$(echo $PATH | tr ':' "\n" | sed '/\/opt\/python/d' | tr "\n" ":" | sed "s|::|:|g")
98-
- BEGIN_FOLD () { echo ""; CURRENT_FOLD_NAME=$1; echo "travis_fold:start:${CURRENT_FOLD_NAME}"; }
99-
- END_FOLD () { RET=$?; echo "travis_fold:end:${CURRENT_FOLD_NAME}"; return $RET; }
100-
install:
101-
- travis_retry docker pull $DOCKER_NAME_TAG
102-
- env | grep -E '^(CCACHE_|WINEDEBUG|BOOST_TEST_RANDOM|CONFIG_SHELL)' | tee /tmp/env
103-
- if [[ $HOST = *-mingw32 ]]; then DOCKER_ADMIN="--cap-add SYS_ADMIN"; fi
104-
- DOCKER_ID=$(docker run $DOCKER_ADMIN -idt --mount type=bind,src=$TRAVIS_BUILD_DIR,dst=$TRAVIS_BUILD_DIR --mount type=bind,src=$CCACHE_DIR,dst=$CCACHE_DIR -w $TRAVIS_BUILD_DIR --env-file /tmp/env $DOCKER_NAME_TAG)
105-
- DOCKER_EXEC () { docker exec $DOCKER_ID bash -c "cd $PWD && $*"; }
106-
- if [ -n "$DPKG_ADD_ARCH" ]; then DOCKER_EXEC dpkg --add-architecture "$DPKG_ADD_ARCH" ; fi
107-
- travis_retry DOCKER_EXEC apt-get update
108-
- travis_retry DOCKER_EXEC apt-get install --no-install-recommends --no-upgrade -qq $PACKAGES $DOCKER_PACKAGES
109-
before_script:
110-
- DOCKER_EXEC echo \> \$HOME/.bitcoin # Make sure default datadir does not exist and is never read by creating a dummy file
111-
- mkdir -p depends/SDKs depends/sdk-sources
112-
- if [ -n "$OSX_SDK" -a ! -f depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz ]; then curl --location --fail $SDK_URL/MacOSX${OSX_SDK}.sdk.tar.gz -o depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz; fi
113-
- if [ -n "$OSX_SDK" -a -f depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz ]; then tar -C depends/SDKs -xf depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz; fi
114-
- if [[ $HOST = *-mingw32 ]]; then DOCKER_EXEC update-alternatives --set $HOST-g++ \$\(which $HOST-g++-posix\); fi
115-
- if [ -z "$NO_DEPENDS" ]; then DOCKER_EXEC CONFIG_SHELL= make $MAKEJOBS -C depends HOST=$HOST $DEP_OPTS; fi
116-
script:
117-
- export TRAVIS_COMMIT_LOG=`git log --format=fuller -1`
118-
- OUTDIR=$BASE_OUTDIR/$TRAVIS_PULL_REQUEST/$TRAVIS_JOB_NUMBER-$HOST
119-
- BITCOIN_CONFIG_ALL="--disable-dependency-tracking --prefix=$TRAVIS_BUILD_DIR/depends/$HOST --bindir=$OUTDIR/bin --libdir=$OUTDIR/lib"
120-
- if [ -z "$NO_DEPENDS" ]; then DOCKER_EXEC ccache --max-size=$CCACHE_SIZE; fi
121-
- BEGIN_FOLD autogen; test -n "$CONFIG_SHELL" && DOCKER_EXEC "$CONFIG_SHELL" -c "./autogen.sh" || DOCKER_EXEC ./autogen.sh; END_FOLD
122-
- mkdir build && cd build
123-
- BEGIN_FOLD configure; DOCKER_EXEC ../configure --cache-file=config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false); END_FOLD
124-
- BEGIN_FOLD distdir; DOCKER_EXEC make distdir VERSION=$HOST; END_FOLD
125-
- cd bitcoin-$HOST
126-
- BEGIN_FOLD configure; DOCKER_EXEC ./configure --cache-file=../config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false); END_FOLD
127-
- BEGIN_FOLD build; DOCKER_EXEC make $MAKEJOBS $GOAL || ( echo "Build failure. Verbose build follows." && DOCKER_EXEC make $GOAL V=1 ; false ); END_FOLD
128-
- if [ "$RUN_TESTS" = "true" ]; then BEGIN_FOLD unit-tests; DOCKER_EXEC LD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/depends/$HOST/lib make $MAKEJOBS check VERBOSE=1; END_FOLD; fi
129-
- if [ "$RUN_BENCH" = "true" ]; then BEGIN_FOLD bench; DOCKER_EXEC LD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/depends/$HOST/lib $OUTDIR/bin/bench_bitcoin -scaling=0.001 ; END_FOLD; fi
130-
- if [ "$TRAVIS_EVENT_TYPE" = "cron" ]; then extended="--extended --exclude feature_pruning,feature_dbcrash"; fi
131-
- if [ "$RUN_TESTS" = "true" ]; then BEGIN_FOLD functional-tests; DOCKER_EXEC test/functional/test_runner.py --combinedlogslen=4000 --coverage --quiet --failfast ${extended}; END_FOLD; fi
132-
after_script:
133-
- echo $TRAVIS_COMMIT_RANGE
134-
- echo $TRAVIS_COMMIT_LOG
135-
136-
jobs:
137-
include:
142+
BITCOIN_CONFIG="--enable-gui --enable-reduce-exports --enable-werror"
138143
- stage: lint
139144
env:
140145
sudo: false

0 commit comments

Comments
 (0)