1 个 Jenkins 作业和 2 个 Jenkinsfiles(声明性管道)

时间:2021-07-29 19:37:32

标签: groovy jenkins-pipeline jenkins-declarative-pipeline

我有 1 个工作,有 2 个声明性管道脚本,我从 1 个脚本调用另一个脚本

现在我收到此错误消息:

<块引用>

java.lang.IllegalStateException: 只有一个管道 { ... } 块可以 在一次运行中执行。

stage('Loading app Deployment File') {
    steps {
        script {
           def util = load './abcd/Jenkinsfile.groovy'
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您不能在一个作业中使用两个管道脚本,我看到两个选项

  1. 创建另一个作业并将其称为下游作业

build job: "path/to/jenkins_job",parameters:([string(name:'', value:'')]), propagate: false, wait: true

  1. 将文件作为 jenkins 文件中的闭包调用

    stage('foo'){
     options {
         timeout(time: 5, unit: "MINUTES")
     }
    
     steps{
         script{
             script1.call(arg1, arg2)
    
         }
     }
    

    }

并配置script1.groovy如下

script1.groovy

#!groovy

def call(arg1, arg2){
    try{
        <do something>
        return
    } catch (Exception){
        < something has failed >
    }

  // you can also add stages here

    stage('bar'){
      try{
          <do something>
          return
      } catch (Exception){
        < something has failed >
      } 
    }
}

需要注意的一点是,使用此方法也可以使用所有管道变量。