Out当前Jenkins管道作业是建立一个分支从Git签出。为了进行检查,我们使用SCM插件:
triggers {
pollSCM scmpoll_spec: ''
}
checkout(
poll: true,
scm: [$class: 'GitSCM',
branches: [[name: 'refs/heads/develop']],
userRemoteConfigs: [
[url: 'https://git-server/repo.git',
name: 'origin',
refspec: '+refs/heads/develop:refs/remotes/origin/develop',
credentialsId: 'XXX']
],
extensions: [
[$class: 'WipeWorkspace'],
[$class: 'CloneOption', honorRefspec: true, noTags: true, reference: '', shallow: false],
[$class: 'LocalBranch', localBranch: 'develop']
],
browser: [$class: 'GitList', repoUrl: 'https://git-server/gitlist/repo.git']
]
)在构建过程中,有一个对npm version patch的调用,它在本地更新package.json文件、提交和创建一个标记。然后,我们将其推回服务器端git存储库。为了阻止Jenkins启动另一个构建,我们使用选项推送,post接收钩子忽略了这些推送:
git push origin develop --follow-tags --push-option=nobuild当用户不使用选项时,服务器上的post接收钩子只会向Jenkins发布:
"https://jenkins-server/git/notifyCommit?url=https://git-server/repo.git"然而,这一切都很好,问题是,当开发人员提交到feature分支时,develop分支的构建就启动了。我猜以下是问题的原因:
develop分支develop分支期间创建的标记feature分支branch上的新标记并启动了一个构建因此,我正在寻找一种方法来强迫Jenkins只考虑提交/推到特定的分支来触发特定的构建。或者强迫Jenkins在考虑开始构建时忽略作为标记一部分的更改。
注意,我找到了另一个这样的帖子:针对特定分支触发器的Jenkins git提交也为其他分支构建作业。
发布于 2021-02-08 06:04:23
虽然在文档中似乎没有找到答案,但我还是碰到了一张詹金斯票:忽略JENKINS-29574 - notifyCommit分支参数。。似乎您可以在URL中添加一个额外的参数:&branches=<branch-name>
作为Git post-receive钩子脚本的一部分,我可以找到分支名称并将其用作POST的一部分:
https://jenkins-server/git/notifyCommit?url=https://git-server/repo.git&branches=develop现在,这只会启动使用特定分支的构建。
https://stackoverflow.com/questions/64640148
复制相似问题