如何在TeamCity中检测当前代码更改的标记?

时间:2016-08-03 08:56:10

标签: git teamcity

我在TeamCity中使用Git作为VCS。

我想从我们正在构建的提交中提取git tag 知道怎么做吗?

2 个答案:

答案 0 :(得分:1)

你可以这样做,但不是本地的。

您需要在构建代理上安装git,并确保在代理上签出代码。有关为何需要这样做的更多信息,请参阅TeamCity Checkout Mode Documentation

enter image description here

这将确保在代理上创建git存储库,然后您可以本机运行git命令。你需要的是

git describe --tags <commit-id>

在TeamCity中,您应该能够运行类似于此

的PowerShell步骤

enter image description here

如果没有标签,这将会出错!您可以添加--always开关,如果没有标签,则返回短路哈希值。

SET TEAMCITY VARIABLE

$tag = git describe --tags %build.vcs.number% --always
Write-Host "##teamcity[setParameter name='MyParameterName' value='$tag']"

必须已定义参数“MyParameterName”。

希望这有帮助

答案 1 :(得分:0)

您可以查看git describe

的输出
v1.0.4-14-g2414721
       ^^

如果您在标记后没有看到“0”,那么标记引用的当前提交

获取当前提交的所有标记:

 git log -n1 --pretty=format:%h%d @

不要忘记你可以有多个与提交相关联的标签。

但对于TeamCity,请检查您是否可以使用VCS branch trigger,这有助于仅为标记构建

  • VCS Root中的分支规范为“+:refs / tags / *”
  • VCS构建触发器规则:+:*-:<default>

(来源:“How to run a TeamCity build only for tags?”)