gpt4 book ai didi

Jenkins 多分支管道与来自不同存储库的 Jenkinsfile

转载 作者:行者123 更新时间:2023-12-03 11:58:48 35 4
gpt4 key购买 nike

我有一个包含我想构建的代码的 Git 存储库,但我“不允许”添加 Jenkinsfile在其根目录中(它是一个 Debian 软件包,因此我无法将文件添加到上游源)。有没有办法存储 Jenkinsfile在一个存储库中并让它从另一个存储库构建代码?由于我的代码存储库有多个分支要构建(每个 Debian 版本一个),这应该是一个多分支管道。在代码或 Jenkinsfile 中提交存储库应该触发构建。

奖励复杂度:我有几个这样的代码/打包存储库,我想重用相同的 Jenkinsfile对于他们所有人。因此,它应该以某种方式动态获取要使用的正确 Git URL。要构建的分支在所有存储库中具有相同的名称。

最佳答案

简短的回答是:你 不能 multibranch pipeline 做到这一点.多分支管道仅设计(至少现在)来执行 Pipeline script from SCM 中的特定管道款式,带固定Jenkinsfile在项目的根。

但是,您可以使用 Multi-Branch Project为多分支制作的插件 自由泳项目。首先,您需要定义您的 multibranch freestyle configuration就像使用 multibranch pipeline configuration 一样.
选择这个新项目,如下所示:

New Freestyle multi-branch project

此类配置的行为与 multibranch pipeline 完全相同。类型,即它将为您创建一个文件夹,其中包含您的配置名称和它自动检测到的每个分支的子项目。

实现应该是小菜一碟:

  • 指定您的 SCM多分支配置中的存储库
  • 调用另一个构建作为构建/后构建的一部分,就像您在标准自由式项目中所做的那样,除了您必须调用参数化作业(我们称之为 build-job)并为其提供您的存储库信息,即 Git URL 和当前分支(您可以为此使用预定义的变量 $GIT_URL$GIT_BRANCH)
  • 在您的 build-job ,只需定义内联管道或从 SCM check out 的管道脚本,并在此脚本中执行 SCM check out 并继续执行您需要构建的步骤。 build-job 的示例管道内容:

  • .

    node() {
    stage 'Checkout'
    checkout scm: [$class: 'GitSCM', branches: [[name: '*/${GIT_BRANCH}']], userRemoteConfigs: [[url: '${GIT_URL}']]]

    stage 'Build'
    // Build steps...
    }

    当然,如果您需要对不同的多分支项目进行一些不同的处理,您也可以使用中间项目(比如 build-project-Abuild-project-B 、...),它们依次调用通用 build-job管道)

    此解决方案的一个主要缺点是,您将只有一项工作负责所有构建,这使得调试变得更加困难。如果成功/错误,您的多分支项目仍然会变为蓝色/红色,但您必须返回到名为 build-job找到您构建的真正问题。

    关于Jenkins 多分支管道与来自不同存储库的 Jenkinsfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39041342/

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