可以创建管道模板以便Jenkins自动构建管道吗?

可以创建管道模板以便Jenkins自动构建管道吗?,jenkins,groovy,jenkins-pipeline,Jenkins,Groovy,Jenkins Pipeline,我编写了以下管道: import groovy.transform.Field channel = '#jenkins-dev-alerts' @Field def stage_name, emailadd def docker_creds = 'XXXXXXXXX' def git_creds = 'XXXXXXXXX' fileLoader.withGit('git@bitbucket.org:company/pipeline_utils.git', 'master', git_cred

我编写了以下管道:

import groovy.transform.Field

channel = '#jenkins-dev-alerts'
@Field def stage_name, emailadd
def docker_creds = 'XXXXXXXXX'
def git_creds = 'XXXXXXXXX'

fileLoader.withGit('git@bitbucket.org:company/pipeline_utils.git', 'master', git_creds, ''){
    utils = fileLoader.load('functions.groovy');
}

def run_in_stage(String stage_name, Closure command){
    utils.run_in_stage(stage_name, command, emailadd)
}

node('docker') {
    timestamps {
    run_in_stage('Checkout', {
        checkout([$class: 'GitSCM',
            userRemoteConfigs: [[credentialsId: git_creds,
            extensions: [[$class: 'LocalBranch', localBranch: "**"]],
            url: 'git@bitbucket.org:fdnainc/research.git']]])
        currentBuild.displayName = "#${BUILD_NUMBER} | ${env.BRANCH}"
        })

    run_in_stage('Build', {
        withCredentials([
            [$class: 'UsernamePasswordMultiBinding', credentialsId: docker_creds, usernameVariable: 'D_USER', passwordVariable: 'D_PASS'],
        ]){
          sh """
            docker login company-docker.jfrog.io -u \${D_USER} -p \${D_PASS}
            export GIT_COMMIT=\$(git rev-parse --short HEAD)
            export GIT_BRANCH=\$(git rev-parse --abbrev-ref HEAD)
            docker-compose build
            """
          }
      })

    run_in_stage('Test', {
        sh """
          docker-compose down
          docker-compose up --abort-on-container-exit || true
          """
          junit 'reports/**/*.xml'
          sh 'docker volume prune -f'
    })

    if (currentBuild.result == 'UNSTABLE') {
        currentBuild.result = 'FAILURE'
    }
    if (currentBuild.result == null) {
      currentBuild.result = "SUCCESS"
    }
  }
}
if (currentBuild.result == "FAILURE") {
    utils.notifyOnFail(stage_name)

} else if (currentBuild.result == "SUCCESS") {
  node ('docker') {
    run_in_stage('Deploy', {
      sh 'docker-compose push'
      utils.notifyOnSuccess(stage_name)
    })
  }
}
这个管道构建了一个项目

我有大约10个项目需要使用与此管道相同的阶段进行建设

我可以将这个管道的框架复制并粘贴到其他项目中,但我知道一定有更好的方法来实现这一点,以便更容易管理


有人知道怎么做吗?

几周前,我问自己一个类似的问题。我已在此处发布了我的解决方案:

其思想是使用提供管道模板的全局变量创建一个。这并不是文档中广泛描述的内容,但最近我发现以下部分暗示了类似的解决方案: