即使testing失败,TravisCI构build也能成功

这是我在travis.yml运行我的testing的travis.yml

 # Run tests script: # Test application in Docker container - ./tools/docker-test.sh 

shell脚本docker-test.sh看起来像这样:

 #!/usr/bin/env bash githash="$(git rev-parse --short HEAD)" echo "-------------------------------------------------" echo "| Running unit tests |" echo "-------------------------------------------------" docker create -it --name test eu.gcr.io/test/test:$githash docker start test docker exec test /bin/sh -c "go test ./..." docker stop test docker rm -fv test 

即使testing失败,TravisCI构build也是成功的。

我怎样才能让TravisCI知道testing是否失败? 我不知道这是否是一个错误没有从Docker传播的问题,从shell脚本不传播错误或TravisCI不知道什么时候testing成功或失败。

您的脚本正在以最后一个命令docker rm -fv test的状态码退出。

您需要捕获testing的状态代码,然后清理docker,然后退出。

这个代码示例来自于稍微不同的问题,但它是相同的解决scheme。

 #!/usr/bin/env bash set -e # Set a default return code RC=2 # Cleanup function cleanup { echo "Removing container" docker stop test || true docker rm -f test || true exit $RC } trap cleanup EXIT # Test steps docker create -it --name test path docker start test docker exec test /bin/sh -c "go test ./..." RC=$?