Git 如何检测Jenkins通过标签推送开始工作?
我正在用詹金斯制作CI/CD。Git存储库有一个Jenkins钩子,所以它会在每次推送时触发新的构建,其中包括标记 我的构建由标记触发,生成以下输出Git 如何检测Jenkins通过标签推送开始工作?,git,jenkins,Git,Jenkins,我正在用詹金斯制作CI/CD。Git存储库有一个Jenkins钩子,所以它会在每次推送时触发新的构建,其中包括标记 我的构建由标记触发,生成以下输出 commit notification 282aa9df9bc037df26f82d0aaf7d65e57b3c6c00 Building in workspace /var/jenkins_home/workspace/testproject > git rev-parse --is-inside-work-tree
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)触发的,它是一个标记,但稍后,它被转换为commit 18dea36(2),从那时起,只有一个提交信息可供用户使用(例如:env变量)。这是一个有效的提交,但标记信息不再可用
我如何知道一个构建是由一个标记触发的,如何获取该标记信息并能够在管道中使用它
编辑:只是澄清一下-我正在寻找一个选项,可以让一个作业触发所有推送上的构建,但如果有标记,则会执行其他步骤(或抑制其他步骤)
我如何知道生成已由标记触发
只能由标记触发作业,如中所示
从这里开始,构建使用的任何提交都是从标记中获得的,这意味着您可以这样做。仅使用Jenkins似乎不可用。有两种可能的解决办法
谢谢你的回答,但我知道这一点。我会更新这个问题。我的意思是-获得一个作业,但在标记的情况下运行额外的步骤。@然后,我回答的第二部分应该是相关的:从提交中,您可以检查是否有标记。只有当您建议的,生成可以由标记推送触发时,它才是相关的。看看更新的问题-我需要始终触发构建。在这种情况下,在使用标记将新提交推送到master之后,Jenkins将触发两个构建。Git Descripte会让您知道这个提交上同时存在构建签出主提交和标记。你会如何区分?或者在提交推送时发布,但仅在标记推送时发送通知?现在,詹金斯确切地知道是哪个objectId启动了构建。如果詹金斯知道——我也想知道。