gpt4 book ai didi

git - 通过轮询 Jenkinsfile 中的多个 GIT 存储库来触发作业

转载 作者:太空狗 更新时间:2023-10-29 13:39:56 25 4
gpt4 key购买 nike

Jenkinsfile with two git repositories这些是在单个 Jenkins 作业中使用多个 GIT 存储库的示例:

node {
dir('RepoOne') {
git url: 'https://github.com/somewhere/RepoOne.git'
}
dir('RepoTwo') {
git url: 'https://github.com/somewhere/RepoTwo.git'
}

sh('. RepoOne/build.sh')
sh('. RepoTwo/build.sh')
}

我如何配置此作业以跟踪这 2 个存储库的 SCM 更改,以便每次至少有一个存储库有更新时触发该作业?

问题是作业不是在轮询 Jenkinsfile 中提到的存储库,而是在 GUI 配置中提到的 Jenkinsfile 本身的存储库(它存储在一个特殊的存储库中,不与源代码一起)工作。

使用旧的 Jenkins(没有编码管道)和 SVN 插件非常容易,因为所有 N 个存储库都可以在 GUI 配置中提及, check out 到单个工作区的单独子目录并同时轮询。

如何使用 GIT + Jenkins Pipeline-As-Code 达到相同的结果?我也尝试在 Jenkinsfile 中使用“poll: true”选项,但没有帮助。这个选项有什么作用?

更新 1:这是我实际使用但不起作用的管道脚本:

properties([
pipelineTriggers([
scm('H/5 * * * *')
])
])

node {
stage ('Checkout') {
dir('cplib') {
git(
poll: true,
url: 'ssh://git@<server>:<port>/base/cplib.git',
credentialsId: 'BlueOceanMsl',
branch: 'master'
)
}
dir('cpmffmeta') {
git(
poll: true,
url: 'ssh://git@<server>:<port>/base/cpmffmeta.git',
credentialsId: 'BlueOceanMsl',
branch: 'master'
)
}
}

stage ('Build') {
...
}

最佳答案

我找到了问题的原因。这是 https://issues.jenkins-ci.org/browse/JENKINS-37731 描述的故障.我使用了错误的语法。正确的看起来是这样的:

properties([
pipelineTriggers([
[$class: "SCMTrigger", scmpoll_spec: "H/5 * * * *"],
])
])

关于git - 通过轮询 Jenkinsfile 中的多个 GIT 存储库来触发作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47439718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com