如何将JetBrains TeamCity与Atlassian Stash集成

6

Stash 2.1版本带有一个新的REST API,可以让您告诉Stash与特定变更集相关的构建信息。如何在TeamCity中让Stash知道我的构建信息呢?

3个回答

13

8
JetBrains现在有一个名为“Commit Status Publisher”的官方插件,可以将构建状态发送到Atlassian Stash或Gerrit Code Review工具中。查看插件详情源码在GitHub上

注意:安装插件后,请将“Commit status publisher”构建特性添加到您的TeamCity构建中。


7
对于任何安装了此插件并花费45分钟在谷歌上搜索如何使用它的人,您必须添加一个构建特性,称为“提交状态发布者”。 - BigJoe714
这就是问题所在,你几乎找不到任何关于如何使用它的教程。你安装了插件,然后呢?感谢@BigJoe714的澄清。 - Daniel B

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知道某个代码变更集的构建成功或失败。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接