这是我在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
即使测试失败,TravisCI构建也会成功。
如何使TravisCI知道测试是否失败?我不知道这是否是由于没有从Docker传播错误,没有从shell脚本传播错误或TravisCI不知道go测试何时成功或失败的问题。
最佳答案
您的脚本正在使用最后一个命令docker rm -fv test
的状态代码退出。
您需要捕获测试的状态码,然后清理docker,然后退出。
此代码示例来自略有不同的question over here,但解决方案相同。
#!/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=$?
关于bash - 即使测试失败,TravisCI构建也会成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38783751/