【问题标题】:How to detect a tag for a current code change in TeamCity?如何检测 TeamCity 中当前代码更改的标签?
【发布时间】:2016-08-03 23:33:44
【问题描述】:

我在 TeamCity 中使用 Git 作为 VCS。

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

【问题讨论】:

    标签: git teamcity


    【解决方案1】:

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

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

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

    git describe --tags <commit-id>
    

    在 TeamCity 中,您应该能够运行类似于此的 PowerShell 步骤

    如果没有标签,这将出错!您可以添加--always 开关,如果不存在标签,则返回一个短散列。

    设置团队城市变量

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

    必须已经定义了参数“MyParameterName”。

    希望对你有帮助

    【讨论】:

    • 谢谢!这很有帮助!但是如何将自定义脚本执行的输出放入 TeamCity ConfigutationParameter(或其他地方),以便我可以重用标签文本?就我而言,我想为 nuget 包版本号使用标签?
    • 这似乎比我的答案更准确。 +1
    • 我创建了名为 MyParameterName 的配置参数,然后将提供的脚本放入“自定义脚本”中 - 构建失败并显示消息“命令的语法不正确”。 :(
    • 我已将此修改为 PowerShell 脚本并确认它有效。对此感到抱歉。
    • 谢谢你们的帮助,这对我来说是这样的:
    【解决方案2】:

    你可以查看git describe的输出

    v1.0.4-14-g2414721
           ^^
    

    如果标签后没有看到'0',那么当前提交没有被标签引用。

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

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

    别忘了你可以有多个标签关联到一个提交。


    但是对于 TeamCity,请检查您是否可以使用 VCS branch trigger,它可以帮助仅构建带有

    的标签
    • VCS 根目录中的分支规范为“+:refs/tags/*”
    • VCS 将触发规则构建到:+:*-:&lt;default&gt;

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

    【讨论】:

    • 感谢您的回答,因为我知道这种方法仅适用于常规构建。抱歉,也许我应该在我的问题中提到它 - 我对自定义构建方案感兴趣 - 当您手动选择要进行构建的更改时。我可以使用 GIT DESCRIBE 来获取标签 - 但是如何获取我想要构建的提交标识符?
    猜你喜欢
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多