forked from iov-one/starnamed
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.travis.yml
129 lines (104 loc) · 4.1 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
sudo: required
language: go
services:
- docker
os:
- linux
dist: xenial
go:
- 1.16.8
- master
addons:
apt:
packages:
- docker-ce
- apt-cacher-ng
install:
- . $HOME/.nvm/nvm.sh
- nvm install 'lts/*'
- nvm use 'lts/*'
cache:
directories:
- $HOME/.cache/go-build
- $HOME/gopath/pkg/mod
- $TRAVIS_BUILD_DIR/.gitian-builder-cache
- /var/cache/apt-cacher-ng
- scripts/genesis/node_modules
- scripts/integration/node_modules
env:
global:
- GO111MODULE=on
- BUILD_VERSION=$(echo ${TRAVIS_COMMIT} | cut -c 1-10)
- GORACE="halt_on_error=1"
- MAIN_GO_VERSION=1.16.8
- VERSION=$(git describe --tags | sed 's/^v//')
- COMMIT=$(git log -1 --format='%H')
- IMAGE_APP="iov1/starnamed"
- IMAGE_FAUCET="iov1/faucet"
before_script:
- go install golang.org/x/tools/cmd/goimports@latest
script:
- set -eo pipefail
# avoid failed builds due to rate limiting, see https://stackoverflow.com/a/25683955/5887599
- curl https://api.github.com/?access_token=$GITHUB_API_KEY
# TODO enable dangerbot
- echo TODO docker run -it --rm -v "$(pwd):/usr/src/app" iov1ops/danger:latest > danger.out; cat danger.out
# test
- make test-unit test-race test-cover
- make install
# perform more tests before...
- ( cd scripts/integration && yarn install && node -r dotenv/config setup.js && ./setup.sh )
- starnamed start --minimum-gas-prices='1.0tiov' --log_level error > /dev/null &
- ( cd scripts/integration && yarn install && yarn test && killall starnamed )
# ...potential docker pushes
- printenv TRAVIS_COMMIT_MESSAGE > commit.msg
- unset TRAVIS_COMMIT_MESSAGE && printenv | grep -Ev "PATH|path|GEM" > env.list
- export TRAVIS_COMMIT_MESSAGE=`cat commit.msg` && rm -rf commit.msg
- if [[ "$TRAVIS_GO_VERSION" == "$MAIN_GO_VERSION" && "$TRAVIS_OS_NAME" == "linux" ]]; then
release_latest=$( [[ "$TRAVIS_BRANCH" == "master" && "$TRAVIS_TAG" == "" && "$TRAVIS_PULL_REQUEST_BRANCH" == "" ]] && echo "yes" || echo "no" );
release_tag=$( [[ "$TRAVIS_TAG" != "" ]] && echo "yes" || echo "no" );
if [[ $release_latest == "yes" || $release_tag == "yes" ]]; then
docker login -u "$DOCKER_USERNAME" -p "$DOCKER_PASSWORD" ;
./contrib/gitian-build.sh linux ;
mkdir -p ${TRAVIS_BUILD_DIR}/build && tar -zxf $TRAVIS_BUILD_DIR/starnamed-build-linux/build/out/starnamed-${VERSION}-linux-amd64.tar.gz -C ${TRAVIS_BUILD_DIR}/build ;
docker build --pull --tag "${IMAGE_APP}:${BUILD_VERSION}" . ;
( cd cmd/faucet && IMAGE_FAUCET="${IMAGE_FAUCET}:${BUILD_VERSION}" make docker ) ;
docker logout ;
fi;
if [[ $release_latest == "yes" ]]; then
docker login -u "$DOCKER_USERNAME" -p "$DOCKER_PASSWORD";
docker tag "${IMAGE_APP}:${BUILD_VERSION}" "${IMAGE_APP}:latest" ;
docker push "${IMAGE_APP}:latest" ;
docker tag "${IMAGE_FAUCET}:${BUILD_VERSION}" "${IMAGE_FAUCET}:latest" ;
docker push "${IMAGE_FAUCET}:latest" ;
docker logout ;
fi;
if [[ $release_tag == "yes" ]]; then
docker login -u "$DOCKER_USERNAME" -p "$DOCKER_PASSWORD";
docker tag "${IMAGE_APP}:${BUILD_VERSION}" "${IMAGE_APP}:$TRAVIS_TAG" ;
docker push "${IMAGE_APP}:$TRAVIS_TAG" ;
docker tag "${IMAGE_FAUCET}:${BUILD_VERSION}" "${IMAGE_FAUCET}:$TRAVIS_TAG" ;
docker push "${IMAGE_FAUCET}:$TRAVIS_TAG" ;
docker logout ;
fi;
fi;
notifications:
email: false
# whitelist long living branches to avoid testing feature branches twice (as branch and as pull request)
branches:
only:
- master
- /^v[0-9]+\.[0-9]+\.x$/
- /^v[0-9]+\.[0-9]+\.[0-9]+$/
deploy:
provider: releases
api_key:
${GITHUB_API_KEY}
file:
- ${TRAVIS_BUILD_DIR}/starnamed-build-linux/build/out/starnamed-${VERSION}-linux-amd64.tar.gz
- ${TRAVIS_BUILD_DIR}/starnamed-build-linux/build/out/src/starnamed-${VERSION}.tar.gz
- ${TRAVIS_BUILD_DIR}/starnamed-build-linux/result/starnamed-linux-res.yml
skip_cleanup: true
on:
tags: true
condition: $TRAVIS_TAG =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ && $TRAVIS_GO_VERSION =~ ^[0-9]+\.[0-9]+\.[0-9]+$