6

Stash 2.1 带有一个新的 REST API,允许您告诉 Stash 与特定变更集相关的构建。如何让 Stash 知道我在 TeamCity 中的构建?

4

3 回答 3

13

您可以使用这个TeamCity 插件,该插件将构建状态发布到 REST API。

注:我是开发者

编辑:Jetbrains 也有一个做同样事情的插件,见这里:

http://confluence.jetbrains.com/display/TW/Commit+Status+Publisher

于 2013-03-04T23:34:06.263 回答
8

JetBrains 现在有一个名为“ Commit Status Publisher ”的官方插件,可以将构建状态发送到 Atlassian Stash 或 Gerrit Code Review 工具。

源代码在 GitHub 上

注意:安装插件后,将名为“提交状态发布者”的构建功能添加到您的 TeamCity 构建中。

于 2014-07-25T14:22:08.680 回答
7

在您的构建配置中,插入此 Powershell 脚本作为第一个构建步骤:

curl -v -H "Content-Type: application/json" -X POST -d '{ \"state\": \"INPROGRESS\", \"key\": \"%teamcity.build.id%\", \"name\": \"#%build.number%: %system.teamcity.buildConfName%; %system.teamcity.projectName%\", \"url\": \"http://TEAMCITY-HOSTNAME/viewLog.html?buildId=%teamcity.build.id%\", \"description\": \"Revision: %build.vcs.number%; Triggered by: %build.triggeredBy%\" }' http://USERNAME:PASSWORD@STASH-HOSTNAME/rest/build-status/1.0/commits/%build.vcs.number%

这会让 Stash 知道某个变更集的构建已经开始。

作为最后一个构建步骤,插入此 Powershell 脚本并选择即使构建失败也执行它的选项:

$xml = [xml](curl --request GET http://USERNAME:PASSWORD@TEAMCITY-HOSTNAME/httpAuth/app/rest/builds/%teamcity.build.id%)
Microsoft.PowerShell.Utility\Select-Xml $xml -XPath "/build" | %% { $status = $_.Node.status }
switch ($status) {
 "SUCCESS" { $stashStatus = "SUCCESSFUL"; }
 default { $stashStatus = "FAILED"; }
}
$do = @'
curl -v -H "Content-Type: application/json" -X POST -d '{ \"state\": \"$stashStatus\", \"key\": \"%teamcity.build.id%\", \"name\": \"#%build.number%: %system.teamcity.buildConfName%; %system.teamcity.projectName%\", \"url\": \"http://TEAMCITY-HOSTNAME/viewLog.html?buildId=%teamcity.build.id%\", \"description\": \"Revision: %build.vcs.number%; Triggered by: %build.triggeredBy%\" }' http://USERNAME:PASSWORD@STASH-HOSTNAME/rest/build-status/1.0/commits/%build.vcs.number%
'@
$do = $do -Replace '\$stashStatus', "$stashStatus"
Invoke-Expression $do

这将使 Stash 知道某个变更集的构建成功或失败。

于 2013-02-12T09:05:58.340 回答