我正在使用Jenkins作为CI / CD。 Git存储库有一个Jenkins钩子,因此它会在每次推送时触发新的构建,包括标记。
我的构建由标记触发,产生以下输出。
commit notification 282aa9df9bc037df26f82d0aaf7d65e57b3c6c00
Building in workspace /var/jenkins_home/workspace/testproject
> git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> git config remote.origin.url ssh://GIT-HOST/PRJ/REPO.git # timeout=10
Cleaning workspace
> git rev-parse --verify HEAD # timeout=10
Resetting working tree
> git reset --hard # timeout=10
> git clean -fdx # timeout=10
Fetching upstream changes from ssh://GIT-HOST/PRJ/REPO.git
> git --version # timeout=10
> git fetch --tags --progress ssh://GIT-HOST/PRJ/REPO.git +refs/heads/*:refs/remotes/origin/*
(1) > git rev-parse 282aa9df9bc037df26f82d0aaf7d65e57b3c6c00^{commit} # timeout=10
(2) > git branch -a -v --no-abbrev --contains 18dea36c9ada06c1c176b8864bb28166e2bdac3f # timeout=10
Checking out Revision 18dea36c9ada06c1c176b8864bb28166e2bdac3f (tagtag, origin/tagtag)
> git checkout -f 18dea36c9ada06c1c176b8864bb28166e2bdac3f
正如您所看到的,构建由282aa9d(1)触发,这是一个标记,但稍后,它被转换为提交18dea36(2),从那时起只有一个提交信息可供用户使用(例如: env变量。)这是一个有效的提交,但标签信息不再可用。
我如何知道标记已触发构建,获取标记信息并能够在管道中使用它?
编辑:只是为了澄清 - 我正在寻找一个可以触发所有推送构建的作业的选项,但是如果标签确实执行了其他步骤(或者禁止其他步骤。)
答案 0 :(得分:1)
似乎仅凭詹金斯无法使用。有两种可能的解决方案。
前者是微不足道的,但并不总是可用。后期需要一些工作(但实际上并不需要那么多),并且具有很大的灵活性。
答案 1 :(得分:0)
我如何知道标记触发了构建
您可以按标记触发仅的作业,例如this setup。
从那里开始,构建使用的任何提交都是从标记中获取的,这意味着您可以find back the tag from the commit。
答案 2 :(得分:0)
有一个新的“ when”参数:buildingTag。
buildingTag-一个简单的条件,仅检查管道是否为 针对SCM中的标签而不是分支或特定 提交参考。