2016-06-09 01:12:13 +03:00
|
|
|
language: go
|
2018-10-11 11:31:05 +03:00
|
|
|
cache:
|
|
|
|
directories:
|
2019-05-23 01:24:40 +03:00
|
|
|
- $DOWNLOAD_CACHE
|
2018-10-11 11:31:05 +03:00
|
|
|
- $GOCACHE
|
2018-11-29 04:18:21 +03:00
|
|
|
- $GOPATH/pkg/mod
|
2018-10-11 11:31:05 +03:00
|
|
|
- $GOPATH/src/github.com/btcsuite
|
|
|
|
- $GOPATH/src/github.com/golang
|
2019-05-23 01:24:40 +03:00
|
|
|
- $GOPATH/src/github.com/grpc-ecosystem
|
2018-10-11 11:31:05 +03:00
|
|
|
- $GOPATH/src/gopkg.in/alecthomas
|
2019-05-23 01:24:40 +03:00
|
|
|
- $GOPATH/src/google.golang.org
|
2018-10-11 11:31:05 +03:00
|
|
|
|
2020-02-20 22:18:43 +03:00
|
|
|
# Remove Travis' default flag --depth=50 from the git clone command to make sure
|
|
|
|
# we have the whole git history, including the commit we lint against.
|
|
|
|
git:
|
|
|
|
depth: false
|
|
|
|
|
2018-11-16 13:08:16 +03:00
|
|
|
go:
|
2020-08-21 03:07:05 +03:00
|
|
|
- "1.15.x"
|
2018-11-16 13:08:16 +03:00
|
|
|
|
|
|
|
env:
|
2018-10-11 11:31:05 +03:00
|
|
|
global:
|
|
|
|
- GOCACHE=$HOME/.go-build
|
2019-05-23 01:24:40 +03:00
|
|
|
- DOWNLOAD_CACHE=$HOME/download_cache
|
2020-10-08 15:58:49 +03:00
|
|
|
- BITCOIN_VERSION=0.20.1
|
2018-10-11 11:31:05 +03:00
|
|
|
|
2018-01-17 19:07:31 +03:00
|
|
|
sudo: required
|
2018-10-11 11:31:05 +03:00
|
|
|
|
travis: staged travis builds
This PR introduces staging to our travis pipeline. Currently all
instances perform:
- compilation of lnd
- linting
- compilation and installation of btcd binaries
- installation of bitcoind binaries
In total this adds about 3 minutes to each of our 5 instances, resulting in
roughly 12 minutes of redundant execution time. Additionally, if if a build
fails to compile or lint we detect this 5 separate times, consuming precious
instances from other builds.
We alleviate this by adding an initial Build phase, which runs a single
instance performing the actions above. This has the benefit of quickly sanity
checking the pr before moving on to the more expensive unit or integration test
suites, and failing faster for common mistakes. It also warms up the build
caches for the Test stage in one fell swoop.
For instance, if 5 people push changes at the same time, they can all get
immediate feedback regarding compilation or linting issues, and potentially
save hours waiting for other people's test to finish or fail before finding out
they had a spelling error. This doesn't alleviate all possible issues, e.g. the
5 instances may already be consumed by test suites, but it does make a sizable
step towards minimizing time-to-failure in common scenarios.
2019-12-05 06:53:20 +03:00
|
|
|
jobs:
|
|
|
|
include:
|
2020-07-29 10:50:37 +03:00
|
|
|
- stage: Sanity Check
|
|
|
|
name: Lint and compile
|
|
|
|
before_script:
|
|
|
|
# Install the RPC tools as a before step so Travis collapses the output
|
|
|
|
# after it's done.
|
|
|
|
- ./scripts/install_travis_proto.sh
|
|
|
|
|
|
|
|
script:
|
|
|
|
# Step 1: Make sure no diff is produced when compiling with the correct
|
|
|
|
# version.
|
|
|
|
- make rpc-check
|
|
|
|
|
|
|
|
# Step 2: Make sure the unit tests compile, but don't run them. They run
|
|
|
|
# in a GitHub Workflow.
|
|
|
|
- make unit pkg=... case=_NONE_
|
|
|
|
|
2020-09-04 15:10:03 +03:00
|
|
|
# Step 3: Lint go code. Invoke GC more often to reduce memory usage.
|
|
|
|
- GOGC=30 make lint
|
2020-07-29 10:50:37 +03:00
|
|
|
|
2020-07-23 16:06:05 +03:00
|
|
|
- stage: Integration Test
|
travis: staged travis builds
This PR introduces staging to our travis pipeline. Currently all
instances perform:
- compilation of lnd
- linting
- compilation and installation of btcd binaries
- installation of bitcoind binaries
In total this adds about 3 minutes to each of our 5 instances, resulting in
roughly 12 minutes of redundant execution time. Additionally, if if a build
fails to compile or lint we detect this 5 separate times, consuming precious
instances from other builds.
We alleviate this by adding an initial Build phase, which runs a single
instance performing the actions above. This has the benefit of quickly sanity
checking the pr before moving on to the more expensive unit or integration test
suites, and failing faster for common mistakes. It also warms up the build
caches for the Test stage in one fell swoop.
For instance, if 5 people push changes at the same time, they can all get
immediate feedback regarding compilation or linting issues, and potentially
save hours waiting for other people's test to finish or fail before finding out
they had a spelling error. This doesn't alleviate all possible issues, e.g. the
5 instances may already be consumed by test suites, but it does make a sizable
step towards minimizing time-to-failure in common scenarios.
2019-12-05 06:53:20 +03:00
|
|
|
name: Btcd Integration
|
2020-07-23 16:06:05 +03:00
|
|
|
script:
|
|
|
|
- make itest
|
|
|
|
|
2020-10-09 14:35:06 +03:00
|
|
|
- name: Bitcoind Integration (txindex enabled)
|
2020-07-23 16:06:05 +03:00
|
|
|
script:
|
|
|
|
- bash ./scripts/install_bitcoind.sh
|
|
|
|
- make itest backend=bitcoind
|
|
|
|
|
2020-10-09 14:35:06 +03:00
|
|
|
- name: Bitcoind Integration (txindex disabled)
|
|
|
|
script:
|
|
|
|
- bash ./scripts/install_bitcoind.sh
|
|
|
|
- make itest backend="bitcoind notxindex"
|
|
|
|
|
2020-07-23 16:06:05 +03:00
|
|
|
- name: Neutrino Integration
|
|
|
|
script:
|
|
|
|
- make itest backend=neutrino
|
|
|
|
|
2020-07-22 16:40:02 +03:00
|
|
|
- name: Btcd Integration ARM
|
|
|
|
script:
|
|
|
|
- GOARM=7 GOARCH=arm GOOS=linux CGO_ENABLED=0 make btcd build-itest
|
|
|
|
- file lnd-itest
|
|
|
|
- GOARM=7 GOARCH=arm GOOS=linux CGO_ENABLED=0 make itest-only
|
|
|
|
arch: arm64
|
2018-10-11 11:31:05 +03:00
|
|
|
|
2020-07-31 11:32:31 +03:00
|
|
|
- name: Btcd Integration Windows
|
|
|
|
script:
|
|
|
|
- make itest-windows
|
|
|
|
os: windows
|
|
|
|
before_install:
|
|
|
|
- choco upgrade --no-progress -y make netcat curl findutils
|
|
|
|
- export MAKE=mingw32-make
|
2020-09-16 16:16:10 +03:00
|
|
|
after_failure:
|
2020-07-31 11:32:31 +03:00
|
|
|
- |-
|
|
|
|
case $TRAVIS_OS_NAME in
|
|
|
|
windows)
|
|
|
|
echo "Uploading to termbin.com..."
|
|
|
|
for f in ./lntest/itest/*.log; do cat $f | nc termbin.com 9999 | xargs -r0 printf "$f"' uploaded to %s'; done
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2020-09-16 16:16:10 +03:00
|
|
|
after_failure:
|
2020-07-31 11:32:31 +03:00
|
|
|
- |-
|
|
|
|
case $TRAVIS_OS_NAME in
|
|
|
|
windows)
|
|
|
|
# Needs other commands, see after_script of the Windows build
|
|
|
|
;;
|
|
|
|
|
|
|
|
*)
|
|
|
|
LOG_FILES=./lntest/itest/*.log
|
|
|
|
echo "Uploading to termbin.com..." && find $LOG_FILES | xargs -I{} sh -c "cat {} | nc termbin.com 9999 | xargs -r0 printf '{} uploaded to %s'"
|
|
|
|
echo "Uploading to file.io..." && tar -zcvO $LOG_FILES | curl -s -F 'file=@-;filename=logs.tar.gz' https://file.io | xargs -r0 printf 'logs.tar.gz uploaded to %s\n'
|
|
|
|
;;
|
|
|
|
esac
|