.net核心“ dotnet build”命令不会在发生错误时中断Azure buid管道(bash)

时间:2019-07-17 10:31:32

标签: bash azure asp.net-core .net-core azure-devops

我有一个带有CentOS代理的Azure管道。在构建失败时,管道不会中断。这是管道yaml配置的一部分:

    return (
      <View style={{flex: 1, flexDirection: 'row', justifyContent: "center"}} key={location.id}>
        <Text style={{width: "80%", height: 20}}>{location.name}</Text>
        <Button
          style={{width: "20%", height: 20}}
          title="x"
          onPress={() => this.removeLocationFromDevice(location)}
        />
      </View>
    )

如何使它在构建错误时失败?

构建日志:

- bash: |
   dotnet --version
   dotnet build $(Build.Repository.LocalPath)/ProjA -c Release -r linux-x64
   dotnet build $(Build.Repository.LocalPath)/ProjB -c Release -r linux-x64  
  failOnStderr: true
  displayName: build
  env:
   DOTNET_CLI_HOME: /tmp

1 个答案:

答案 0 :(得分:0)

是的,我已经看到在Linux代理上运行的构建也发生了类似的事情。

Windows具有%ERRORLEVEL%来捕获最后执行的命令或脚本的返回/退出代码,在查询后您将知道是否继续执行其余的命令或脚本。同样,您可以尝试从CentOS计算机(echo $?)上执行的命令中获取正确的退出代码,并在确实出现问题的情况下将输出通过管道传输到stderr

这将意味着由于将failOnStderr arg设置为true,该任务将失败,从而导致构建中断。还有一些任务控制选项,例如continueOnError,我们可以用来定义此行为:

task control options

以下是一些有趣的相关读物:

希望这会有所帮助。