如何阻止Travis在Codecov上传失败时仍执行部署?
解决Travis中Codecov上传失败仍执行部署的问题
你的问题核心在于Travis的after_success阶段默认不会因为命令失败而终止整个构建流程,所以即使Codecov上传失败,后续的部署步骤还是会照常运行。下面给你两种简单有效的解决方法,结合你的.travis.yml配置来修改:
方法一:将Codecov命令移至script阶段
把Codecov的上传命令和测试命令放在script里,用&&连接,这样只要其中任何一步失败,整个构建就会标记为失败,部署步骤也就不会触发了。修改后的script部分如下:
script: - tox -r && codecov --commit=$TRAVIS_COMMIT
注意:你原来的Codecov命令末尾多了一个多余的双引号,一定要去掉,否则命令本身就会执行出错。
方法二:让after_success阶段的失败触发构建失败
如果你想保留after_success的结构,可以强制让Codecov命令的失败导致整个构建终止。有两种写法:
写法1:使用set -e开启严格模式
after_success: - set -e - codecov --commit=$TRAVIS_COMMIT
set -e会让脚本在遇到任何命令返回非0状态时立即退出,从而让Travis标记构建为失败。
写法2:直接指定失败时退出
after_success: - codecov --commit=$TRAVIS_COMMIT || exit 1
这种写法更直接,意思是如果Codecov命令执行失败(返回非0),就立即以状态码1退出,触发构建失败。
不管用哪种方法,只要构建被标记为失败,你的deploy步骤就不会运行了,因为Travis的部署默认只在构建成功时执行。
内容的提问来源于stack exchange,提问作者thclark
相关产品推荐
相关产品推荐

