配置VSTS以在发生错误时正确中止

时间:2018-09-03 15:15:07

标签: azure-devops azure-pipelines

给出以下.vsts-ci.yml文件

queue: Hosted Linux Preview

steps:
- script: |
    false
    true

预期行为与实际行为不同。

预期的行为:在false命令处生成失败,true将不会执行。

实际行为:构建成功,在true命令之后执行false

详细信息:

我希望VSTS构建在第一个命令false上失败。 但是,VSTS也执行第二个命令true并报告成功。 这意味着对于构建系统,外壳设置不正确。正确的设置是设置pipefailerrexit。但是似乎未设置errexit,也可能未设置pipefail

是否有一种方法可以在YAML文件中获得正确的行为,即pipefailerrexit,而无需在脚本部分中使用bash -c?我知道我可以通过将命令序列移动到Shell脚本或Makefile中来轻松解决,我只是想知道是否存在一种配置可能性,以使YAML文件在使用{{1}的Shell中执行Shell命令}和errexit集,最好是pipefail shell。

1 个答案:

答案 0 :(得分:0)

似乎VSTS创建的bash shell没有设置pipefailerrexit标志。有关此问题,请参见GitHub上的以下问题:https://github.com/Microsoft/vsts-agent/issues/1803

但是可以在YAML文件中设置它们,如下所示:

queue: Hosted Linux Preview

steps:
- script: |
    set -e ; set -o pipefail
    false
    true