为了让开发人员能够轻松地在测试环境中测试某个版本,我希望jenkins在Github上(强制)更新时构建一个特定的标记。我知道强制更新标签不是推荐的,但至少它比删除和重新创建分支要小得多。
我正在使用带有this构建配置的管道构建。最重要的设置是:
origin
+refs/tags/build/test
refs/tags/build/test
它提取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 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:如果有人可以提出更好的策略来解决我想要实现的目标,请随意; - )