2018-05-31 19:03:40 -07:00
version : 2
2018-03-20 16:55:55 -07:00
2018-12-19 09:02:56 -08:00
defaults : &linux_defaults
2018-03-20 16:55:55 -07:00
working_directory : /go/src/github.com/cosmos/cosmos-sdk
docker :
2019-05-15 08:17:20 -07:00
- image : circleci/golang:1.12.5
2018-03-20 16:55:55 -07:00
2018-12-19 09:02:56 -08:00
############
#
# Configure docs deployment
2018-11-14 13:11:34 -08:00
docs_update : &docs_deploy
working_directory : ~/repo
docker :
2019-03-08 09:03:01 -08:00
- image : tendermintdev/jq_curl
2018-11-14 13:11:34 -08:00
environment :
AWS_REGION : us-east-1
2019-01-04 07:40:39 -08:00
jobs :
2018-03-20 16:55:55 -07:00
setup_dependencies :
2018-12-19 09:02:56 -08:00
<< : *linux_defaults
2018-03-20 16:55:55 -07:00
steps :
- run : mkdir -p /tmp/workspace/bin
- run : mkdir -p /tmp/workspace/profiles
- checkout
2019-03-19 09:52:43 -07:00
- restore_cache :
keys :
- go-mod-v1-{{ checksum "go.sum" }}
2018-03-20 16:55:55 -07:00
- run :
name : tools
command : |
2019-05-18 01:42:24 -07:00
make runsim tools TOOLS_DESTDIR=/tmp/workspace/bin
cp $GOPATH/bin/runsim /tmp/workspace/bin
2019-05-28 06:46:26 -07:00
cp $GOPATH/bin/statik /tmp/workspace/bin
2018-03-20 16:55:55 -07:00
- run :
2019-05-18 01:42:24 -07:00
name : cache go modules
2018-03-20 16:55:55 -07:00
command : |
2019-03-18 05:45:25 -07:00
make go-mod-cache
2019-03-19 09:52:43 -07:00
- save_cache :
key : go-mod-v1-{{ checksum "go.sum" }}
paths :
- "/go/pkg/mod"
2019-05-18 01:42:24 -07:00
- run :
name : build
command : |
make build
2018-03-20 16:55:55 -07:00
- persist_to_workspace :
root : /tmp/workspace
paths :
- bin
- profiles
2019-05-18 01:42:24 -07:00
test_sim_app_nondeterminism :
2018-12-19 09:02:56 -08:00
<< : *linux_defaults
2018-08-17 07:19:33 -07:00
parallelism : 1
steps :
- attach_workspace :
at : /tmp/workspace
2018-08-21 14:01:17 -07:00
- checkout
2019-03-19 09:52:43 -07:00
- restore_cache :
keys :
- go-mod-v1-{{ checksum "go.sum" }}
2018-08-17 07:19:33 -07:00
- run :
name : Test individual module simulations
command : |
2019-05-18 01:42:24 -07:00
make test_sim_app_nondeterminism
2018-08-17 07:19:33 -07:00
2019-05-18 01:42:24 -07:00
test_sim_app_fast :
2018-12-19 09:02:56 -08:00
<< : *linux_defaults
2018-08-16 08:36:15 -07:00
parallelism : 1
steps :
- attach_workspace :
at : /tmp/workspace
2018-08-21 14:01:17 -07:00
- checkout
2019-03-19 09:52:43 -07:00
- restore_cache :
keys :
- go-mod-v1-{{ checksum "go.sum" }}
2018-08-16 08:36:15 -07:00
- run :
2019-05-18 01:42:24 -07:00
name : Test full application simulation
2018-08-16 08:36:15 -07:00
command : |
2019-05-18 01:42:24 -07:00
make test_sim_app_fast
2018-07-11 13:44:21 -07:00
2019-05-18 01:42:24 -07:00
test_sim_app_import_export :
2018-12-19 09:02:56 -08:00
<< : *linux_defaults
2018-11-08 16:28:28 -08:00
parallelism : 1
steps :
- attach_workspace :
at : /tmp/workspace
- checkout
2019-03-19 09:52:43 -07:00
- restore_cache :
keys :
- go-mod-v1-{{ checksum "go.sum" }}
2018-11-08 16:28:28 -08:00
- run :
2019-05-18 01:42:24 -07:00
name : Test application import/export simulation
2018-11-08 16:28:28 -08:00
command : |
2019-05-15 22:54:07 -07:00
export GO111MODULE=on
2019-05-18 01:42:24 -07:00
/tmp/workspace/bin/runsim -j 4 github.com/cosmos/cosmos-sdk/simapp 50 5 TestAppImportExport
2018-11-08 16:28:28 -08:00
2019-05-18 01:42:24 -07:00
test_sim_app_simulation_after_import :
2018-12-19 09:02:56 -08:00
<< : *linux_defaults
2018-11-26 04:21:23 -08:00
parallelism : 1
steps :
- attach_workspace :
at : /tmp/workspace
- checkout
2019-03-19 09:52:43 -07:00
- restore_cache :
keys :
- go-mod-v1-{{ checksum "go.sum" }}
2018-11-26 04:21:23 -08:00
- run :
2019-05-18 01:42:24 -07:00
name : Test application import/export simulation
2018-11-26 04:21:23 -08:00
command : |
2019-05-15 22:54:07 -07:00
export GO111MODULE=on
2019-05-18 01:42:24 -07:00
/tmp/workspace/bin/runsim -j 4 github.com/cosmos/cosmos-sdk/simapp 50 5 TestAppSimulationAfterImport
2018-11-26 04:21:23 -08:00
2019-05-18 01:42:24 -07:00
test_sim_app_multi_seed_long :
2018-12-19 09:02:56 -08:00
<< : *linux_defaults
2018-10-05 05:33:46 -07:00
parallelism : 1
steps :
- attach_workspace :
at : /tmp/workspace
- checkout
2019-03-19 09:52:43 -07:00
- restore_cache :
keys :
- go-mod-v1-{{ checksum "go.sum" }}
2018-10-05 05:33:46 -07:00
- run :
2019-05-18 01:42:24 -07:00
name : Test multi-seed application simulation long
2018-10-05 05:33:46 -07:00
command : |
2019-03-18 05:45:25 -07:00
export GO111MODULE=on
2019-05-18 01:42:24 -07:00
/tmp/workspace/bin/runsim -j 4 github.com/cosmos/cosmos-sdk/simapp 500 50 TestFullAppSimulation
2019-01-04 07:40:39 -08:00
2019-05-18 01:42:24 -07:00
test_sim_app_multi_seed :
2019-01-04 07:40:39 -08:00
<< : *linux_defaults
parallelism : 1
steps :
- attach_workspace :
at : /tmp/workspace
- checkout
2019-03-19 09:52:43 -07:00
- restore_cache :
keys :
- go-mod-v1-{{ checksum "go.sum" }}
2018-10-05 05:33:46 -07:00
- run :
2019-05-18 01:42:24 -07:00
name : Test multi-seed application simulation short
2018-10-05 05:33:46 -07:00
command : |
2019-03-18 05:45:25 -07:00
export GO111MODULE=on
2019-05-18 01:42:24 -07:00
/tmp/workspace/bin/runsim -j 4 github.com/cosmos/cosmos-sdk/simapp 50 10 TestFullAppSimulation
2018-10-05 05:33:46 -07:00
2018-03-20 16:55:55 -07:00
test_cover :
2018-12-19 09:02:56 -08:00
<< : *linux_defaults
2018-07-13 13:46:14 -07:00
parallelism : 4
2018-03-20 16:55:55 -07:00
steps :
- attach_workspace :
at : /tmp/workspace
2018-08-21 14:01:17 -07:00
- checkout
2018-06-30 16:32:52 -07:00
- run : mkdir -p /tmp/logs
2019-03-19 09:52:43 -07:00
- restore_cache :
keys :
- go-mod-v1-{{ checksum "go.sum" }}
2018-03-20 16:55:55 -07:00
- run :
name : Run tests
command : |
2018-09-19 09:03:04 -07:00
export VERSION="$(git describe --tags --long | sed 's/v\(.*\)/\1/')"
2019-03-18 05:45:25 -07:00
export GO111MODULE=on
2019-05-18 01:42:24 -07:00
for pkg in $(go list ./... | grep -v '/simulation' | circleci tests split --split-by=timings); do
2019-02-07 11:30:18 -08:00
id=$(echo "$pkg" | sed 's|[/.]|_|g')
2019-03-19 09:52:43 -07:00
go test -mod=readonly -timeout 8m -race -coverprofile=/tmp/workspace/profiles/$id.out -covermode=atomic -tags='ledger test_ledger_mock' "$pkg" | tee "/tmp/logs/$id-$RANDOM.log"
2018-03-20 16:55:55 -07:00
done
- persist_to_workspace :
root : /tmp/workspace
paths :
- "profiles/*"
2018-06-30 16:32:52 -07:00
- store_artifacts :
path : /tmp/logs
2018-03-20 16:55:55 -07:00
upload_coverage :
2018-12-19 09:02:56 -08:00
<< : *linux_defaults
2018-06-29 20:34:55 -07:00
parallelism : 1
2018-03-20 16:55:55 -07:00
steps :
- attach_workspace :
at : /tmp/workspace
2018-08-21 14:01:17 -07:00
- checkout
2018-03-20 16:55:55 -07:00
- run :
name : gather
command : |
set -ex
2019-02-07 11:30:18 -08:00
echo "--> Concatenating profiles:"
ls /tmp/workspace/profiles/
2018-03-20 16:55:55 -07:00
echo "mode: atomic" > coverage.txt
for prof in $(ls /tmp/workspace/profiles/); do
tail -n +2 /tmp/workspace/profiles/"$prof" >> coverage.txt
done
2019-02-08 13:45:41 -08:00
- run :
name : filter out DONTCOVER
command : |
excludelist="$(find ./ -type f -name '*.go' | xargs grep -l 'DONTCOVER' | xargs realpath --relative-to=$GOPATH/src)"
for filename in ${excludelist}; do
echo "Excluding ${filename} ..."
sed -i "\%${filename}:%d" coverage.txt
done
2018-03-20 16:55:55 -07:00
- run :
name : upload
command : bash <(curl -s https://codecov.io/bash) -f coverage.txt
2018-11-14 13:11:34 -08:00
deploy_docs :
<< : *docs_deploy
steps :
- checkout
- run :
name : Trigger website build
command : |
2019-03-08 09:03:01 -08:00
curl --silent \
--show-error \
-X POST \
--header "Content-Type: application/json" \
-d "{\"branch\": \"$CIRCLE_BRANCH\"}" \
"https://circleci.com/api/v1.1/project/github/$CIRCLE_PROJECT_USERNAME/$WEBSITE_REPO_NAME/build?circle-token=$TENDERBOT_API_TOKEN" > response.json
RESULT=`jq -r '.status' response.json`
MESSAGE=`jq -r '.message' response.json`
if [[ ${RESULT} == "null" ]] || [[ ${RESULT} -ne "200" ]]; then
echo "CircleCI API call failed: $MESSAGE"
exit 1
else
echo "Website build started"
fi
2018-08-16 11:23:57 -07:00
2019-05-28 06:46:26 -07:00
check_statik :
<< : *linux_defaults
parallelism : 1
steps :
- attach_workspace :
at : /tmp/workspace
- checkout
- restore_cache :
keys :
- go-mod-v1-{{ checksum "go.sum" }}
- run :
name : check if statik.go is up-to-date
command : |
set -ex
export PATH=/tmp/workspace/bin:$PATH
make update-swagger-docs
if [ -n "$(git status --porcelain)" ]; then
echo "swagger docs out of sync";
exit 1
else
echo "swagger docs are in sync";
fi
2018-03-20 16:55:55 -07:00
workflows :
version : 2
test-suite :
jobs :
2019-05-28 06:46:26 -07:00
- check_statik :
requires :
- setup_dependencies
2018-11-30 07:15:04 -08:00
- deploy_docs :
filters :
branches :
only :
- master
- develop
2019-03-11 10:23:09 -07:00
- setup_dependencies :
# filters here are needed to enable this job also for tags
filters :
tags :
only :
- /^v.*/
2019-05-18 01:42:24 -07:00
- test_sim_app_nondeterminism :
2018-08-17 07:19:33 -07:00
requires :
- setup_dependencies
2019-05-18 01:42:24 -07:00
- test_sim_app_fast :
2018-07-11 13:44:21 -07:00
requires :
- setup_dependencies
2019-05-18 01:42:24 -07:00
- test_sim_app_import_export :
2018-11-08 16:28:28 -08:00
requires :
- setup_dependencies
2019-05-18 01:42:24 -07:00
- test_sim_app_simulation_after_import :
2018-11-26 04:21:23 -08:00
requires :
- setup_dependencies
2019-05-18 01:42:24 -07:00
- test_sim_app_multi_seed :
2018-10-05 05:41:12 -07:00
requires :
- setup_dependencies
2019-05-18 01:42:24 -07:00
- test_sim_app_multi_seed_long :
2019-01-04 07:40:39 -08:00
requires :
- setup_dependencies
filters :
branches :
only :
- master
- develop
2018-03-20 16:55:55 -07:00
- test_cover :
requires :
- setup_dependencies
- upload_coverage :
requires :
- test_cover