mirror of
https://github.com/bitcoin-s/bitcoin-s.git
synced 2025-03-14 03:48:07 +01:00
* Build and CI improvements In this commit we: 1) Parallelize the Travis CI config, by splitting each project into its own Travis task 2) Download bitcoind binaries through sbt * Use binaries downloaded by sbt task * Make BitcoindRpcTestUtil work on Travis without bitcoind on PATH * Add new downloadEclair task to sbt * use sbt downloaded binaries in tests * Fix Eclair and Bitcoind tests
104 lines
3.9 KiB
YAML
104 lines
3.9 KiB
YAML
language: scala
|
|
|
|
env:
|
|
matrix:
|
|
- TEST_COMMAND="bitcoindRpcTest/test bitcoindRpc/coverageReport bitcoindRpc/coverageAggregate bitcoindRpc/coveralls"
|
|
- TEST_COMMAND="chainTest/test chain/coverageReport chain/coverageAggregate chain/coveralls"
|
|
- TEST_COMMAND="eclairRpcTest/test eclairRpc/coverageReport eclairRpc/coverageAggregate eclairRpc/coveralls"
|
|
- TEST_COMMAND="walletTest/test wallet/coverageReport wallet/coverageAggregate wallet/coveralls nodeTest/test node/coverageReport node/coverageAggregate node/coveralls"
|
|
- TEST_COMMAND="coreTest/test core/coverageReport core/coverageAggregate core/coveralls secp256k1jni/test zmq/test zmq/coverageReport zmq/coverageAggregate zmq/coveralls"
|
|
|
|
os: linux
|
|
scala:
|
|
- 2.12.9
|
|
- 2.13.0
|
|
|
|
# Fiddling with Travis config is not fun:-(
|
|
# To avoid spending too much time waiting on Travis, you
|
|
# can use this tool to parse the config file locally: https://github.com/travis-ci/travis-yml
|
|
# After getting it set up, do:
|
|
# $ curl -X POST --data-binary @.travis.yml localhost:9292/v1/parse | jq
|
|
# this should return a big JSON object, where especially
|
|
# config.matrix.include tells you a lot about what the build
|
|
# is going to look like
|
|
matrix:
|
|
include:
|
|
# this way of including jobs is not ideal... unfortunately it's not
|
|
# possible to nest env.matrix. could a better solution be to write
|
|
# a small script that generates a Travis config for us?
|
|
- os: linux
|
|
name: "Linux compile for 2.11"
|
|
env:
|
|
- TEST_COMMAND="test:compile"
|
|
scala:
|
|
- 2.11.12
|
|
- os: osx
|
|
name: "macOS bitcoind tests"
|
|
env:
|
|
- TEST_COMMAND="bitcoindRpcTest/test bitcoindRpc/coverageReport bitcoindRpc/coverageAggregate bitcoindRpc/coveralls"
|
|
scala:
|
|
- 2.13.0
|
|
- os: osx
|
|
name: "macOS Eclair tests"
|
|
env:
|
|
- TEST_COMMAND="eclairRpcTest/test eclairRpc/coverageReport eclairRpc/coverageAggregate eclairRpc/coveralls"
|
|
scala:
|
|
- 2.13.0
|
|
- os: osx
|
|
name: "macOS node and wallet tests"
|
|
env:
|
|
- TEST_COMMAND="walletTest/test wallet/coverageReport wallet/coverageAggregate wallet/coveralls nodeTest/test node/coverageReport node/coverageAggregate node/coveralls"
|
|
scala:
|
|
- 2.13.0
|
|
|
|
# compile website, to check for documentation regressions
|
|
- stage: test
|
|
name: Compile website
|
|
script: sbt docs/mdoc
|
|
|
|
# Release snapshots/versions of all libraries
|
|
# run ci-release only if previous stages passed
|
|
- stage: release
|
|
jdk: openjdk8
|
|
name: Publish library
|
|
script: sbt ci-release
|
|
|
|
# run website push only if website compilation passed
|
|
# we use custom sbt task that first compiles Scaladocs
|
|
# and then calls the docusaurusPublishGhpages task
|
|
- script: sbt docs/publishWebsite
|
|
name: Publish website
|
|
|
|
# These directories are cached to S3 at the end of the build
|
|
# https://www.scala-sbt.org/1.x/docs/Travis-CI-with-sbt.html#Caching
|
|
cache:
|
|
directories:
|
|
- $HOME/.ivy2/cache
|
|
- $HOME/.sbt/boot/
|
|
- $PWD/binaries/bitcoind/
|
|
- $PWD/binaries/eclair/
|
|
|
|
# https://www.scala-sbt.org/1.x/docs/Travis-CI-with-sbt.html#Caching
|
|
before_cache:
|
|
# Cleanup the cached directories to avoid unnecessary cache updates
|
|
- rm -fv $HOME/.ivy2/.sbt.ivy.lock
|
|
- find $HOME/.ivy2/cache -name "ivydata-*.properties" -print -delete
|
|
- find $HOME/.sbt -name "*.lock" -print -delete
|
|
|
|
before_script:
|
|
- git fetch --tags
|
|
|
|
stages:
|
|
- name: test
|
|
if:
|
|
commit_message !~ /^Docs:/ AND NOT
|
|
((branch = master AND type = push) OR (tag IS present))
|
|
# don't run tests on merge builds, just publish library
|
|
# and website
|
|
- name: release
|
|
if: ((branch = master AND type = push) OR (tag IS present)) AND NOT fork
|
|
|
|
script:
|
|
# Modify PATH to include binaries we are about to download
|
|
- export PATH=$PWD/binaries/bitcoind/bitcoin-0.17.0/bin/:$PATH
|
|
- sbt ++$TRAVIS_SCALA_VERSION downloadBitcoind downloadEclair coverage $TEST_COMMAND
|