-
Notifications
You must be signed in to change notification settings - Fork 100
/
.travis.yml
194 lines (194 loc) · 10.9 KB
/
.travis.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
dist: trusty
os: linux
language: minimal
cache:
ccache: true
directories:
- "$HOME/.ccache"
- "$TRAVIS_BUILD_DIR/depends/built"
- "$TRAVIS_BUILD_DIR/depends/sdk-sources"
- "$TRAVIS_BUILD_DIR/ci/scratch/.ccache"
- "$TRAVIS_BUILD_DIR/releases/$HOST"
git:
depth: false # full clone for git subtree check, this works around issue #12388
stages:
- lint
- test
env:
global:
- MAKEJOBS=-j3
- RUN_TESTS=false
- RUN_BENCH=false # Set to true for any one job that has debug enabled, to quickly check bench is not crashing or hitting assertions
- DOCKER_NAME_TAG=ubuntu:18.04
- LC_ALL=C.UTF-8
- BOOST_TEST_RANDOM=1$TRAVIS_BUILD_ID
- CCACHE_SIZE=100M
- CCACHE_TEMPDIR=/tmp/.ccache-temp
- CCACHE_COMPRESS=1
- CCACHE_DIR=$HOME/.ccache
- BASE_OUTDIR=$TRAVIS_BUILD_DIR/releases/$HOST
- SDK_URL=https://bitcoincore.org/depends-sources/sdks
- WINEDEBUG=fixme-all
- DOCKER_PACKAGES="build-essential libtool autotools-dev automake pkg-config bsdmainutils curl git ca-certificates ccache"
before_install:
- export PATH=$(echo $PATH | tr ':' "\n" | sed '/\/opt\/python/d' | tr "\n" ":" | sed "s|::|:|g")
- BEGIN_FOLD () { echo ""; CURRENT_FOLD_NAME=$1; echo "travis_fold:start:${CURRENT_FOLD_NAME}"; }
- END_FOLD () { RET=$?; echo "travis_fold:end:${CURRENT_FOLD_NAME}"; return $RET; }
install:
- travis_retry docker pull $DOCKER_NAME_TAG
- env | grep -E '^(CCACHE_|WINEDEBUG|LC_ALL|BOOST_TEST_RANDOM|CONFIG_SHELL)' | tee /tmp/env
- if [[ $HOST = *-mingw32 ]]; then DOCKER_ADMIN="--cap-add SYS_ADMIN"; fi
- 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)
- DOCKER_EXEC () { docker exec $DOCKER_ID bash -c "cd $PWD && $*"; }
- if [ -n "$DPKG_ADD_ARCH" ]; then DOCKER_EXEC dpkg --add-architecture "$DPKG_ADD_ARCH"; fi
- travis_retry DOCKER_EXEC apt-get update
- travis_retry DOCKER_EXEC apt-get install --no-install-recommends --no-upgrade -qq $PACKAGES $DOCKER_PACKAGES
before_script:
- DOCKER_EXEC echo \> \$HOME/.bitcore # Make sure default datadir does not exist and is never read by creating a dummy file
- mkdir -p depends/SDKs depends/sdk-sources
- 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
- 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
- if [[ $HOST = *-mingw32 ]]; then DOCKER_EXEC update-alternatives --set $HOST-g++ \$\(which $HOST-g++-posix\); fi
- if [ -z "$NO_DEPENDS" ]; then DOCKER_EXEC CONFIG_SHELL= make $MAKEJOBS -C depends HOST=$HOST $DEP_OPTS; fi
script:
- export TRAVIS_COMMIT_LOG=`git log --format=fuller -1`
- OUTDIR=$BASE_OUTDIR
- BITCOIN_CONFIG_ALL="--disable-dependency-tracking --prefix=$TRAVIS_BUILD_DIR/depends/$HOST --bindir=$OUTDIR/bin --libdir=$OUTDIR/lib"
- if [ -z "$NO_DEPENDS" ]; then DOCKER_EXEC ccache --max-size=$CCACHE_SIZE; fi
- BEGIN_FOLD autogen; test -n "$CONFIG_SHELL" && DOCKER_EXEC "$CONFIG_SHELL" -c "./autogen.sh" || DOCKER_EXEC ./autogen.sh; END_FOLD
- BEGIN_FOLD configure; DOCKER_EXEC ./configure --cache-file=../config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false); END_FOLD
- BEGIN_FOLD build; DOCKER_EXEC make $MAKEJOBS $GOAL || ( echo "Build failure. Verbose build follows." && DOCKER_EXEC make $GOAL V=1 ; false ); END_FOLD
- 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
- 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
- if [ "$TRAVIS_EVENT_TYPE" = "cron" ]; then extended="--extended --exclude feature_pruning,feature_dbcrash"; fi
- 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
- if [ "$NAME" = "arm-linux-gnueabihf" ]; then cd $OUTDIR; pwd; tar -czf bitcore-$NAME.tar.gz -C $OUTDIR bin lib; sha256sum bitcore-$NAME.tar.gz > bitcore-$NAME.tar.gz.sha256.txt; ls $OUTDIR; fi
- if [ "$NAME" = "win32-daemon" ]; then cp ./src/*.exe $OUTDIR; cd $OUTDIR; pwd; zip -r bitcore-$NAME.zip ./*.exe; sha256sum bitcore-$NAME.zip > bitcore-$NAME.zip.sha256.txt; ls $OUTDIR; fi
- if [ "$NAME" = "win32-qt" ]; then ls; pwd; ls ./src; cp ./src/*.exe $OUTDIR; cd $OUTDIR; pwd; zip -r bitcore-$NAME.zip ./*.exe; sha256sum bitcore-$NAME.zip > bitcore-$NAME.zip.sha256.txt; ls $OUTDIR; fi
- if [ "$NAME" = "win64-daemon" ]; then cp ./src/*.exe $OUTDIR; cd $OUTDIR; pwd; zip -r bitcore-$NAME.zip ./*.exe; sha256sum bitcore-$NAME.zip > bitcore-$NAME.zip.sha256.txt; ls $OUTDIR; fi
- if [ "$NAME" = "i686-pc-linux-gnu" ]; then cd $OUTDIR; pwd; tar -czf bitcore-$NAME.tar.gz -C $OUTDIR bin lib; sha256sum bitcore-$NAME.tar.gz > bitcore-$NAME.tar.gz.sha256.txt; ls $OUTDIR; fi
- if [ "$NAME" = "x86_64-linux-gnu_qt5-dev" ]; then cd $OUTDIR; pwd; tar -czf bitcore-$NAME.tar.gz -C $OUTDIR bin lib; sha256sum bitcore-$NAME.tar.gz > bitcore-$NAME.tar.gz.sha256.txt; ls $OUTDIR; fi
- if [ "$NAME" = "x86_64-linux-gnu_qt5_with-libs" ]; then cd $OUTDIR; pwd; tar -czf bitcore-$NAME.tar.gz -C $OUTDIR bin lib; sha256sum bitcore-$NAME.tar.gz > bitcore-$NAME.tar.gz.sha256.txt; ls $OUTDIR; fi
- if [ "$NAME" = "x86_64-linux-gnu_no-wallet" ]; then cd $OUTDIR; pwd; tar -czf bitcore-$NAME.tar.gz -C $OUTDIR bin lib; sha256sum bitcore-$NAME.tar.gz > bitcore-$NAME.tar.gz.sha256.txt; ls $OUTDIR; fi
- if [ "$NAME" = "osx64" ]; then cp BitCore-BTX.dmg $OUTDIR/bitcore-$NAME.dmg; cd $OUTDIR; pwd; sha256sum bitcore-$NAME.dmg > bitcore-$NAME.dmg.sha256.txt; ls $OUTDIR; fi
after_script:
- echo $TRAVIS_COMMIT_RANGE
- echo $TRAVIS_COMMIT_LOG
jobs:
include:
# ARM
- stage: test
env: >-
HOST=arm-linux-gnueabihf
NAME="arm-linux-gnueabihf"
PACKAGES="g++-arm-linux-gnueabihf"
DEP_OPTS="NO_QT=1"
GOAL="install"
BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports"
# Win32
- stage: test
env: >-
HOST=i686-w64-mingw32
NAME="win32-daemon"
DPKG_ADD_ARCH="i386"
DEP_OPTS="NO_QT=1"
PACKAGES="python3 nsis g++-mingw-w64-i686 wine-binfmt wine32"
RUN_TESTS=false
GOAL="install"
BITCOIN_CONFIG="--enable-reduce-exports"
# Win64
- stage: test
env: >-
HOST=x86_64-w64-mingw32
NAME="win64-daemon"
DEP_OPTS="NO_QT=1"
PACKAGES="python3 nsis g++-mingw-w64-x86-64 wine-binfmt wine64"
RUN_TESTS=false
GOAL="install"
BITCOIN_CONFIG="--enable-reduce-exports"
# 32-bit + dash
- stage: test
env: >-
HOST=i686-pc-linux-gnu
NAME="i686-pc-linux-gnu"
PACKAGES="g++-multilib python3-zmq"
DEP_OPTS="NO_QT=1"
RUN_TESTS=false
GOAL="install"
BITCOIN_CONFIG="--enable-zmq --enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++"
CONFIG_SHELL="/bin/dash"
# x86_64 Linux (uses qt5 dev package instead of depends Qt to speed up build and avoid timeout)
- stage: test
env: >-
HOST=x86_64-unknown-linux-gnu
NAME="x86_64-linux-gnu_qt5-dev"
PACKAGES="python3-zmq qtbase5-dev qttools5-dev-tools protobuf-compiler libdbus-1-dev libharfbuzz-dev libprotobuf-dev"
DEP_OPTS="NO_QT=1 NO_UPNP=1 DEBUG=1 ALLOW_HOST_PACKAGES=1"
RUN_TESTS=false
RUN_BENCH=false
GOAL="install"
BITCOIN_CONFIG="--enable-zmq --with-gui=qt5 --enable-glibc-back-compat --enable-reduce-exports --enable-debug CXXFLAGS=\"-g0 -O2\""
# x86_64 Linux (Qt5 & system libs)
- stage: test
env: >-
HOST=x86_64-unknown-linux-gnu
NAME="x86_64-linux-gnu_qt5_with-libs"
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"
NO_DEPENDS=1
RUN_TESTS=false
GOAL="install"
BITCOIN_CONFIG="--enable-zmq --with-incompatible-bdb --enable-glibc-back-compat --enable-reduce-exports --with-gui=qt5 CPPFLAGS=-DDEBUG_LOCKORDER"
# x86_64 Linux, No wallet
- stage: test
env: >-
HOST=x86_64-unknown-linux-gnu
NAME="x86_64-linux-gnu_no-wallet"
PACKAGES="python3"
DEP_OPTS="NO_WALLET=1"
RUN_TESTS=false
GOAL="install"
BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports"
# Cross-Mac
- stage: test
env: >-
HOST=x86_64-apple-darwin14
NAME="osx64"
PACKAGES="cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools python-dev python3-setuptools-git"
OSX_SDK=10.11
GOAL="all deploy"
BITCOIN_CONFIG="--enable-gui --enable-reduce-exports --enable-werror"
- stage: lint
env:
cache: false
language: python
python: '3.6'
install:
- travis_retry pip install flake8==3.5.0
before_script:
# - git fetch --unshallow
- git fetch --depth=10000
script:
# - if [ "$TRAVIS_EVENT_TYPE" = "pull_request" ]; then test/lint/commit-script-check.sh $TRAVIS_COMMIT_RANGE; fi
# - test/lint/git-subtree-check.sh src/crypto/ctaes
# - test/lint/git-subtree-check.sh src/secp256k1
# - test/lint/git-subtree-check.sh src/univalue
# - test/lint/git-subtree-check.sh src/leveldb
- test/lint/check-doc.py
- test/lint/check-rpc-mappings.py .
- test/lint/lint-all.sh
deploy:
provider: releases
api_key:
secure: "E2PjkmjnN0AFzlaXlyrZUx4qh9bPBb15zTtNnOBSIcKlzVV6LtKQpiBxjws3HywLBXVRKMFSi+f/D/GfoHF0MeiOvcVtFaERWAXOjdxDcQm4fjQvTNei8kr07fk18pii2Rjq97X7GVF5pqHiTF6AsCCyvAlqRz+hsZxJO9Y/YJyDNwomSLvozuHJqC6kZi/2LyDBh7D7tztQsfSti9iNsUwV1oStenBlBQvHyjIgAnlvMIULtTqbybWjYUIjaKE2OnoAb+UmdXewT14gk00l6aLj8CH3t3j4YJIOSWnCYWjc251QD3DtGYs7ddY7lwwsnz6qJsiIJ5ANRrotT1LM9HRlFaLd/ll+q1z5wyZY6ezV1CHwD8Q09RvOWiBfLN1t8OT3XM2Ua+zkqjHO66IR6SWxW5wY125JLdy3Quz6xUUvvSawJCj6L4b/emz35ZDGVI/tPaVOIypwORDMHQw/xu/bahL87Lf4JYtjvHpqu7r1vQn/zfQXmR9y9Bxe/rxUN0btIUAt2uiBbm7AgpAtqqv7rs+B3tBTHoZ0mx444JIbThaBmeqg8vID3Sd1J1F6F35RljBk5mH6Furan1gUXVcaBJag8DprbCC48+cBC4YLyqMHUr2hogjeD1lgzjwE8sCbvCpUn1k74BHevHQvnyUrpMnyLqCQkI3YlaHxuPk="
file_glob: true
file:
- "$OUTDIR/*.tar.gz"
- "$OUTDIR/*.tar.gz.sha256.txt"
- "$OUTDIR/*.zip"
- "$OUTDIR/*.zip.sha256.txt"
- "$OUTDIR/*.dmg"
- "$OUTDIR/*.dmg.sha256.txt"
skip_cleanup: true
on:
tags: true
draft: true