首页 > 解决方案 > 如何拥有模块化的 Jenkins 流水线?

问题描述

我想创建一个 Jenkins 声明式管道,并希望管道结构如下:

  mainPipeline.groovy
  stage1.groovy
  stage2.groovy
  stage3.groovy

mainPipeline如下所示:

 pipeline {

      stages {
         stage('stage1') {
            // Call method from the file Stage1.groovy
         }
         stage('stage2') {
            // Call method from the file Stage2.groovy
         }
      }
 }

我有两个主要问题:

  1. 如何将这些文件链接到库?
  2. 如何配置 Jenkins Pipeline,让 Jenkins 不仅知道主 JenkinsFile,mainPipeline还知道子模块?

标签: jenkinsgroovyjenkins-pipeline

解决方案


我不建议将您的 Jenkinsfile 分成单独的文件,因为有更好的选择:

  • 您可以使用Pipeline: Build Step 插件在您的管道中执行作业。使用它来执行将被多个作业使用的阶段。例如,我使用它在一个常见的部署作业中部署我的应用程序。
  • 您可以使用自己的库扩展 Jenkins,您可以为每个作业或所有作业加载这些库。请参阅:使用共享库进行扩展

对于这两种方法,定义 Jenkinsfiles/Groovy 脚本都可以来自 SCM。

如果您真的想从项目路径加载脚本,请检查此问题。如果您想使用项目路径中的多个 Jenkinsfiles,您可以在配置作业时添加更多 Jenkinsfiles 作为“项目识别器”。


推荐阅读