【问题标题】:Get Build Step exit code in TeamCity在 TeamCity 中获取构建步骤退出代码
【发布时间】:2012-02-16 10:31:32
【问题描述】:

我有一个包含多个构建步骤的构建,这些构建步骤通过 MSBuild 脚本使用 msdeploy 编译、运行测试和打包应用程序。 目前,如果我的任何测试失败,仍然会构建包,但是我希望构建在失败点停止,或者能够将变量传递给作为测试退出代码的 MSBuild 脚本/compile 阶段,并根据该变量的值创建包。 目前,我还没有找到任何包含此信息的变量..

【问题讨论】:

    标签: msbuild teamcity msdeploy


    【解决方案1】:

    设置StopOnFirstFailure=true

    如果为 true,则当其中一个项目无法构建时,不再有其他项目 将被建造。

    此外,定义build parameters 并有条件地设置TeamCitySetStatus

    【讨论】:

    • -对不起,应该解释我的设置。我有一个 sln runner 来进行编译,MSTest Runner 来运行测试,MSBuild 运行来做打包。我所追求的是 sln 运行器和/或 mstest 运行器的输出传递到 msbuild 运行器
    【解决方案2】:

    如果您有一个单独的步骤和每个步骤的单独构建脚本,这在 teamcity 中很容易做到。但是,如果您使用一个脚本来完成每件事(构建、测试、打包和部署)并且只有一个 teamcity 步骤来调用脚本,那么这将变得非常困难,因为您将不得不添加大量的 try 和 catch 哪个不适用于不可捕获的错误。

    我建议使用psake。要使用psake,您需要有 2 个脚本。第一个是由teamcity运行的。在第一个脚本中,您导入 psake 模块并调用为您完成所有工作的主脚本。如果第二个脚本在任何地方失败,它将停止脚本(前提是您的代理上有stoponfailure powershell 策略)。第二个脚本将停止并返回到第一个脚本。但是第一个脚本不会将其视为失败,而是将构建显示为成功。为了克服这个问题,您需要在第一个脚本中添加一段代码。

    Import-Module .\psake\psake.psm1
    
    Invoke-Psake .\build-steps.ps1 @args
    
    if($psake.build_success -eq $false){
        write-host "There was an error running psake script"
        exit 1
    }
    Remove-Module psake
    

    Powershell exit code is always 0 in teamcity build step

    【讨论】:

      猜你喜欢
      • 2015-12-12
      • 2011-12-11
      • 2017-01-24
      • 2014-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多