即使测试失败,TravisCI构建也会成功

时间:2016-08-05 07:40:13

标签: bash shell docker travis-ci

这是我在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不知道什么时候测试成功或失败。

1 个答案:

答案 0 :(得分:3)

您的脚本将以最后一个命令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=$?