version: 2
defaults: &defaults
working_directory: ~/ipfs/go-ipfs
shell: /bin/bash --login
environment:
TEST_NO_FUSE: 1
GOPATH: $HOME/.go_workspace
CIRCLE_TEST_REPORTS: /tmp/circleci-test-results
CIRCLE: 1
SERVICE: circle-ci
TEST_NO_DOCKER: 1
CIRCLE_ARTIFACTS: /tmp/circleci-artifacts
TEST_VERBOSE: 1
TRAVIS: 1
IMPORT_PATH: github.com/ipfs/go-ipfs
docker:
- image: circleci/build-image:ubuntu-14.04-XXL-upstart-1189-5614f37
command: /sbin/init
jobs:
gotest:
<<: *defaults
steps:
- checkout
- run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS
- run: 'sudo docker info >/dev/null 2>&1 || sudo service docker start; '
- run: sudo rm -rf /usr/local/go
- run: if [ ! -e go1.11.linux-amd64.tar.gz ]; then curl -o go1.11.linux-amd64.tar.gz https://storage.googleapis.com/golang/go1.11.linux-amd64.tar.gz; fi
- run: sudo tar -C /usr/local -xzf go1.11.linux-amd64.tar.gz
- restore_cache:
keys:
- v1-dep-{{ .Branch }}-
- v1-dep-master-
- run: sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=0 net.ipv6.conf.default.disable_ipv6=0 net.ipv6.conf.all.disable_ipv6=0
- run: rm -rf "$HOME/.go_workspace/src/$IMPORT_PATH"
- run: mkdir -p "$HOME/.go_workspace/src/$IMPORT_PATH"
- run: cp -aT . "$HOME/.go_workspace/src/$IMPORT_PATH"
- run: cd "$HOME/.go_workspace/src/$IMPORT_PATH" && make deps
- save_cache:
key: v1-dep-{{ .Branch }}-{{ epoch }}
paths:
- ~/.go_workspace
- ~/go1.11.linux-amd64.tar.gz
- ~/.go_workspace/src/gx/ipfs
- ./node_modules
- run: cd "$HOME/.go_workspace/src/$IMPORT_PATH" && curl -s https://codecov.io/bash > codecov
- run: cd "$HOME/.go_workspace/src/$IMPORT_PATH" && make -j 1 test/unit/gotest.junit.xml
- run: cd "$HOME/.go_workspace/src/$IMPORT_PATH" && bash codecov -cF unittests -X search -f coverage/unit_tests.coverprofile
- run: mv "$HOME/.go_workspace/src/${IMPORT_PATH}/test/unit/gotest.junit.xml" /tmp/circleci-test-results
- store_test_results:
path: /tmp/circleci-test-results
# Save artifacts
- store_artifacts:
path: /tmp/circleci-artifacts
- store_artifacts:
path: /tmp/circleci-test-results
sharness:
<<: *defaults
steps:
- checkout
- run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS
- run: 'sudo docker info >/dev/null 2>&1 || sudo service docker start; '
- run: sudo rm -rf /usr/local/go
- run: if [ ! -e go1.11.linux-amd64.tar.gz ]; then curl -o go1.11.linux-amd64.tar.gz https://storage.googleapis.com/golang/go1.11.linux-amd64.tar.gz; fi
- run: sudo tar -C /usr/local -xzf go1.11.linux-amd64.tar.gz
- restore_cache:
keys:
- v1-dep-{{ .Branch }}-
- v1-dep-master-
- run: sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=0 net.ipv6.conf.default.disable_ipv6=0 net.ipv6.conf.all.disable_ipv6=0
- run: rm -rf "$HOME/.go_workspace/src/$IMPORT_PATH"
- run: mkdir -p "$HOME/.go_workspace/src/$IMPORT_PATH"
- run: cp -aT . "$HOME/.go_workspace/src/$IMPORT_PATH"
- run: cd "$HOME/.go_workspace/src/$IMPORT_PATH" && make deps
- save_cache:
key: v1-dep-{{ .Branch }}-{{ epoch }}
paths:
- ~/.go_workspace
- ~/go1.11.linux-amd64.tar.gz
- ~/.go_workspace/src/gx/ipfs
- ./node_modules
- run: cd "$HOME/.go_workspace/src/$IMPORT_PATH" && curl -s https://codecov.io/bash > codecov
- run: cd "$HOME/.go_workspace/src/$IMPORT_PATH" && make -j 10 coverage/sharness_tests.coverprofile test/sharness/test-results/sharness.xml TEST_GENERATE_JUNIT=1 CONTINUE_ON_S_FAILURE=1
- run: cd "$HOME/.go_workspace/src/$IMPORT_PATH" && bash codecov -cF sharness -X search -f coverage/sharness_tests.coverprofile
- run: mv "$HOME/.go_workspace/src/${IMPORT_PATH}/test/sharness/test-results/sharness.xml" /tmp/circleci-test-results
# make sure we fail if there are test failures
- run: cd "$HOME/.go_workspace/src/$IMPORT_PATH" && ls test/sharness/test-results/t*-*.sh.*.counts | test/sharness/lib/sharness/aggregate-results.sh | grep 'failed\s*0'
- store_test_results:
path: /tmp/circleci-test-results
# Save artifacts
- store_artifacts:
path: /tmp/circleci-artifacts
- store_artifacts:
path: /tmp/circleci-test-results
workflows:
version: 2
test:
jobs:
- gotest
- sharness