gpt4 book ai didi

Jenkins 管道代码通过 GitHub 组织文件夹插件自动触发多个存储库

转载 作者:行者123 更新时间:2023-12-03 22:35:27 31 4
gpt4 key购买 nike

此问题与具有多个存储库的 Jenkins 作业自动触发器有关。

定义了 3 个要在 Jenkinsfile 中结帐的 repo。

 node('slave'){
git clone github.com/owner/abc.git -b ${env.BRANCH_NAME}
git clone github.com/owner/def.git -b ${env.BRANCH_NAME}
git clone github.com/owner/ghi.git -b ${env.BRANCH_NAME}
}

使用 Github 组织插件配置 Jenkins 作业。

在这种情况下,我的 Jenkinsfile 在 abc 存储库中,并且 Jenkins 自动触发器对于 abc 存储库工作正常。它不适用于其他 repo 。

有没有为 2 个或更多 repo 定义自动触发器?

是否有任何插件可以自动触发 2 个或更多存储库的作业?

我是否需要在 Jenkinsfile 中以不同的方式定义“checkout scm”?

最佳答案

是的,您可以使用 Pipeline script from SCM 做到这一点。通过指定多个存储库(单击 Add Repository 按钮)来选择管道作业中的选项,假设您可以查看 3 个存储库的相同分支,这似乎是您的情况。

enter image description here

使用此配置(当然还有 Poll SCM 选项已激活),每次对三个存储库之一进行更改时都会触发构建。

关于此解决方案的更多提示:

  • 您需要 Jenkinsfile在每个存储库中
  • 如果您在两个项目之间提交了多个项目 SCM polls结果将是不可预测的(您刚刚提交的两个项目中的一个最终可以构建)所以您应该不取决于构建哪个项目 .
  • 为了解决上一点并避免代码重复,您可能应该从每个 Jenkinsfile 中加载一个通用脚本,例如:

  • abc/def/ghi 中的 Jenkinsfile:
    node {
    // --- Load the generic pipeline ---
    checkout scm: [$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'http://github/owner/pipeline-repo.git']]]
    load 'common-pipeline.groovy'
    }()
    common-pipeline.groovy脚本:
    { ->
    node() {
    git clone github.com/owner/abc.git
    git clone github.com/owner/def.git
    git clone github.com/owner/ghi.git

    // Whatever you do with your 3 repos...
    }
    }

    关于Jenkins 管道代码通过 GitHub 组织文件夹插件自动触发多个存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38821362/

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