Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git Jenkins:使用来自另一个回购协议的Jenkins文件构建多分支管道_Git_Jenkins_Jenkins Pipeline - Fatal编程技术网

Git Jenkins:使用来自另一个回购协议的Jenkins文件构建多分支管道

Git Jenkins:使用来自另一个回购协议的Jenkins文件构建多分支管道,git,jenkins,jenkins-pipeline,Git,Jenkins,Jenkins Pipeline,所以我尝试为几个不同的项目建立一个多分支管道 这些是基本要求: 每个客户机有三个作业:开发、阶段和产品 对于每个作业,从每个回购中提取相应的分支并构建一个bot 如果作业正在使用的repo中有任何更改,则触发该环境的生成 所以这些要求非常简单 但还有第四个要求。我想弄清楚的是,我是否可以有一个回购协议,它可以保存我所有的Jenkins文件,然后构建另一个回购协议的所有分支。这可能吗?所有其他答案似乎都指向不推荐的解决方案,例如自由式多分支项目 是否可以使用来自另一个回购协议的Jenkins文件构

所以我尝试为几个不同的项目建立一个多分支管道

这些是基本要求:

  • 每个客户机有三个作业:开发、阶段和产品
  • 对于每个作业,从每个回购中提取相应的分支并构建一个bot
  • 如果作业正在使用的repo中有任何更改,则触发该环境的生成
  • 所以这些要求非常简单

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

    是否可以使用来自另一个回购协议的Jenkins文件构建多分支管道

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

    扩展答案: 为了或多或少实现您的要求,我将执行以下操作:

  • 使用自定义的
    jenkins文件创建回购协议(每个分支机构、每个客户、每个环境…随便什么)。
    每个
    Jenkinsfile
    将描述在每个特定情况下要执行的阶段。使用
  • 将另一个
    Jenkinfile
    添加到您的产品回购中,您可以使用自定义管道签出专用回购,加载管道并执行它
  • 为产品回购配置多分支管道
  • 示例

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

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


    非常感谢WindyFields,这非常有帮助。
    // Jenkinsfile-dev
    
    def stages() {
        stage ("Checkout") {
            checkout scm
        }
    
        stage ("Build") {
    
        }
    
        stage ("Test") {
    
        }
    }
    
    return this
    
    // 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()
    }