如何在多个项目之间共享声明式管道

2024-01-20

我在不同的存储库中有很多项目,它们共享相同的基本 CI 工作流程,我可以轻松地将其表达为声明式管道:

pipeline {
  agent any

  options {
    buildDiscarder(logRotator(numToKeepStr: '20'))
  }

  stages {
    stage('CI') {
      steps {
        echo 'Do CI'
      }
    }

    stage('QA') {
      steps {
        echo 'Do QA'
      }
    }
  }

  post {
    always {
      junit allowEmptyResults: true, testResults: '**/target/surefire-reports/TEST-*.xml'
      // etc...
    }

    failure {
      echo 'Failure mail'
      // etc
    }
  }
}

我希望在所有项目中使用相同的声明性管道,并且能够仅在一处更改管道的定义,并自动在所有项目中使用更改。

基本上我在项目的 Jenkinsfile 中要做的是:

loadPipelineFromScm 'repository', 'pipeline.groovy'

我已经可以使用共享库执行此操作,但是我无法再使用声明式管道功能。

有没有办法分享一下声明式跨多个存储库的管道?


虽然使用 noober01 的建议保持视图完好无损,但声明式管道将无法正常运行。例如。 When 子句将被忽略,因为管道元素应该是顶级的,这意味着它被解析为脚本化管道。

请参阅 Jenkins 背后的团队拒绝的以下问题:加载外部声明性管道问题 https://issues.jenkins-ci.org/browse/JENKINS-43576

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在多个项目之间共享声明式管道 的相关文章

随机推荐