当前位置: 首页 > 知识库问答 >
问题:

Jenkins:使用来自另一个存储库的 jenkins 文件构建多分支管道

习和通
2023-03-14

所以我正在尝试为几个不同的项目制作一个多分支管道。

这些是基本要求:

    < li >每个客户有三项工作开发、准备和生产 < li >对于每个作业,从每个回购中提取相应的分支,并构建一个bot < li >如果作业正在使用的存储库中发生任何变化,则触发该环境的构建

所以这些要求非常简单。

但是还有第四个要求。我想弄清楚的是,我是否可以有一个回购,它可以保存我所有的Jenkins文件,然后构建另一个回购的所有分支。这可能吗?所有其他答案似乎都指向被否决的解决方案,例如自由式多分支项目。

共有1个答案

姚臻
2023-03-14

是否可以使用来自另一个存储库的jenkinsfile构建多分支管道?

简单回答:不,不是,因为多分支管道中的每个作业总是引用配置为监视的同一分支(因此,来自同一个repo)的Jenkins文件。并且不包含Jenkinsfile的分支不被索引。

扩展答案:为了或多或少实现您的要求,我会做以下几点:

  1. 使用自定义Jenkinsfile(每个分支、每个客户端、每个环境...等等)创建一个存储库。每个Jenkinsfile将描述您要在每个特定情况下执行的阶段。使用脚本管道语法。
  2. 将另一个Jenkinfile添加到您的产品存储库中,您可以在其中:使用自定义管道签出专用存储库,加载管道并执行它。
  3. 为产品存储库配置多分支管道。

示例< br >

git @ github . com:your-org/custom-pipelines . git/Jenkins file-dev

// Jenkinsfile-dev

def stages() {
    stage ("Checkout") {
        checkout scm
    }

    stage ("Build") {

    }

    stage ("Test") {

    }
}

return this

git@github.com:您的org/product-repo.git/Jenkinsfile

// Jenkinsfile

node ("ubuntu") {
    // Checkout custom Jenkinsfiles
    stage ("Checkout pipelines") {
        git url: "git@github.com:your-org/custom-pipelines.git", 
            branch: "master", 
            credentialsId: "github-ssh"
    }

    load ("Jenkinsfile-${env.BRANCH_NAME}").stages()
}
 类似资料:
  • 我正在使用管道插件运行Jenkins 2。我已经设置了一个多分支管道项目,其中每个分支(主、开发等)在根目录中都有一个Jenkinsfile。设置这个很简单。但是,我不知道如何让每个分支定期运行(不是分支索引),即使代码没有改变。我需要在Jenkinsfile中放入什么来启用定期构建?

  • 我正试图在詹金斯建立一个多分支管道项目。理想情况下,我希望在开发人员推出新代码后构建分支管道。例如,如果开发人员推送到“dev”分支,那么“dev”管道将自动生成。 我知道在“扫描多分支管道触发器”选项下,您可以设置Jenkins查找更改的频率,但我更希望是相反的方式,这意味着一旦分支中有新代码,Jenkins将构建管道。 我配置了我的Jenkinsfile,并在我的GitHub项目中设置了Web

  • 目前,我们使用JJB编译Jenkins作业(大部分已经是管道),以便配置大约700个作业,但JJB2似乎无法很好地扩展以构建管道,我正在寻找一种方法将其从等式中删除。 我主要希望能够将所有这些管道存储在一个集中的存储库中。 请注意,在我们的用例中,将CI配置(jenkins文件)保存在每个存储库和分支中是不可能的,我们需要将所有管道保存在一个“jenkins jobs.git”repo中。

  • 我正在尝试创建一个定制的Jenkins管道,它将多个Jenkins作业生成的工件绑定在一起。每个作业都在不同的存储库上运行(基于它们自己的文件)。这些Jenkins文件的阶段完成了创建档案、编译代码等任务。 有人可能会说,我可以使用单个作业中的工件,然后将它们绑定在一起,但问题是这个高级管道将在特定的 ,因此它无法凭空创建存档。 由于我是詹金斯管道公司的新手,您对如何解决这个问题有什么建议吗? 最

  • 是否可以将多分支管道限制为一次只构建一个分支? 我有一个管道,它包含签出、构建、测试,然后部署的步骤。部署阶段在特定的机器上复制/执行一些文件,这些工作无法与其他分支作业并行完成。 我尝试过: 但这只限制了基于分支的并发,因此仍然有多个分支将并行运行。 此外,在常规非流水线Jenkins作业中,有一个选项复选框: “必要时执行并发生成” 但这在多分支配置中也不可用。 是否有其他配置来实现这一点,或

  • 我有一个Jenkins管道,我需要在其中登录到两个不同的docker存储库。我知道如何使用以下命令对一个存储库进行身份验证 但不知道如何为超过1次的回购做这件事?