【问题标题】:Teamcity interaction with powershell scriptTeamcity 与 powershell 脚本的交互
【发布时间】:2015-11-18 12:28:27
【问题描述】:

我有一个运行约 30 分钟的 powershell 脚本(等待各种进程完成)。最后,它将一条消息写入事件日志,确定该过程是成功还是失败。我计划在 teamcity 上托管此脚本并希望构建失败,但不知道如何处理脚本和 teamcity 之间的交互以实现此目的。

我正在寻找一种方法来制作远程运行的 powershell 脚本,以与 teamcity 进行通信,无论它是失败还是成功。我已经阅读了很多 teamcity 文档,但我仍然不确定如何开始。

【问题讨论】:

    标签: powershell teamcity


    【解决方案1】:

    您或许应该考虑使用 TeamCity Service Messages,或者特别是 Reporting Build Problems

    如何使用 PowerShell 发出服务消息的示例(假设您正在使用 PowerShell 构建步骤):

    Write-Output "##teamcity[buildStatus text='I am a successful build']"
    

    Write-Output "##teamcity[buildProblem description='$powershell_error_message']"
    

    您可以在其中注入捕获的 powershell 错误消息。

    【讨论】:

    • 对于看到这一点的其他人要注意的一点是,我必须在构建配置下添加特定的失败条件>匹配描述的失败条件才能使其失败。
    • @Speerian 这很有趣;我有一个没有失败条件的构建运行,并且它按预期失败并显示“buildProblem”服务消息;使用 Powershell 运行器构建步骤和内联源脚本。执行外部脚本时可能会有不同的行为。
    【解决方案2】:

    要故意使 teamcity 中的构建失败,您应该使用“[Environment] :: Exit (1)”而不是“Exit 1”。

    更多信息可以通过以下链接获得:

    https://confluence.jetbrains.com/display/TCD9/PowerShell

    【讨论】: