【问题标题】:Can I cancel a TeamCity build from my msbuild script?我可以从我的 msbuild 脚本中取消 TeamCity 构建吗?
【发布时间】:2010-11-08 16:11:08
【问题描述】:

TeamCity 允许我使用 ##teamcity 交互从我的 MsBuild 脚本进行报告。我可以使用它来告诉 TeamCity 构建失败或确实成功,但是我想告诉它取消构建。有谁知道这样做的方法?

我可以用它来通知 TeamCity 失败...

<Message Text="##teamcity[buildStatus status='FAILURE']" Condition="Something==SomeCondition" />

我很想这样做......

<Message Text="##teamcity[buildStatus status='CANCEL']" Condition="Something==SomeCondition" />

我已经尝试了TeamCity Service Tasks,但目前还没有。

编辑:

所以这个功能似乎不可用,尽管workaround http request 可以用来取消构建。还有一个 feature request 用于取消构建 TC 网站。

【问题讨论】:

  • 查看我对 TeamCity 2019.1 的回答

标签: msbuild teamcity


【解决方案1】:

根据 JetBrains issue trackerrelease page,由于 TeamCity 2019.1 EAP 1 构建可以通过以下服务消息停止:

##teamcity[buildStop comment='canceling comment' readdToQueue='true']

【讨论】:

    【解决方案2】:

    您可以使用自 it was originally posted 以来已更改的未记录的 http 请求。您现在需要“operationKind=1”。我使用了这样的powershell runner:

    $buildId = %teamcity.build.id%
    $uri = "http://teamcity/ajax.html?guest=1&comment=Cancelling+build+for+some+reason&submit=Stop&buildId=$buildId&kill&operationKind=1"
    $response = Invoke-WebRequest -UseBasicParsing -Uri $uri
    

    另一个 SO 帖子可以告诉你如何make an http request from MSBuild

    “guest=1”表示我正在使用来宾帐户,对于您要取消的项目,该帐户至少需要“停止构建/从队列中删除”。

    【讨论】:

      【解决方案3】:

      从 Teamcity 8.1 (Source) 开始,可以通过 REST API 取消构建。

      取自 9.x Documentation,取消当前正在运行的构建

      curl -v -u user:password --request POST "http://teamcity:8111/app/rest/builds/<buildLocator>" --data "<buildCancelRequest comment='' readdIntoQueue='false' />" --header "Content-Type: application/xml"
      

      【讨论】:

        【解决方案4】:

        你能不能只使用Error task,这应该会导致构建的执行停止。

        【讨论】:

        • 是的,我目前使用它来停止构建,但我们希望 TC 中的行为与点击取消按钮相同。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多