如何在标记更新

时间:2017-11-30 13:25:10

标签: git github jenkins

为了让开发人员能够轻松地在测试环境中测试某个版本,我希望jenkins在Github上(强制)更新时构建一个特定的标记。我知道强制更新标签不是推荐的,但至少它比删除和重新创建分支要小得多。

我正在使用带有this构建配置的管道构建。最重要的设置是:

  • 存储库 - 高级
    • 姓名:origin
    • Refspec:+refs/tags/build/test
  • 分支说明符:refs/tags/build/test
  • 其他行为 - 高级克隆行为:
    • 获取标签:是
    • 在初始克隆时尊重refspec:是
    • 浅克隆

它提取this管道脚本。它有两个阶段,基本上是:

  • 构建:mvn clean install
  • 部署:input message: 'Does the build work on the Testserver?', ok: 'Yes'

构建工作正常。问题出在Git polling / GitHub钩子上。如果我(强制)更新标记并且标记指向非主分支上的提交,则不会触发构建。或者,如果主数据的版本与标记不同,则在手动触发构建后进入无限构建循环。

这是我在手动触发构建后进入无限循环的Git Polling Log的示例。摘录:

[poll] Last Built Revision: Revision 81db8cff7aee624510cfe6a5c806bdc8653d423c (refs/tags/build/test)
Ignoring refs/heads/with-gwt as it doesn't match any of the configured refspecs
Ignoring refs/heads/new_financial as it doesn't match any of the configured refspecs
[poll] Latest remote head revision on refs/heads/master is: 5d5173ea8d8b2f0621e25de9dd3202c3c2a195c4
Done. Took 8.2 sec
Changes found

显示最后构建的修订版为81db8cf。此时build/test标记也指向81db8cf,而主要位于5d5173e

查看Git Polling Log

中的这一行
> git ls-remote -h git@github.com:fhackenberger/infostars.git # timeout=10
Found 3 remote heads on git@github.com:fhackenberger/infostars.git
很明显,Git Polling只关注分支。我希望它能做的是:

git ls-remote -t -h git@github.com:fhackenberger/infostars.git | grep 'refs/tags/build/test'

所以问题是:在检查构建的新修订时,如何告诉Jenkins轮询仅我的标记

PS:如果有人可以提出更好的策略来解决我想要实现的目标,请随意; - )

0 个答案:

没有答案