JenkinsFile |多种环境的声明阶段

时间:2018-12-05 11:09:41

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

我下面有一个JenkinsFile声明性管道是结构-

pipeline{
  agent{}
    stages{
      stage(dev_one){
       steps{
        }
       }
      stage(dev_two){
       steps{
        }
       }
      stage(test_one){
       steps{
        }
       }
      stage(test_two){
       steps{
        }
       }
    }
}

我看到JPL脚本中存在冗余,因为您看到stage(dev_one)和stage(test_one)将具有相同的步骤。 如何重用stage(dev_one),以便一个阶段可用于不同的环境。

2 个答案:

答案 0 :(得分:0)

您可以将重复代码包装到一个函数中,然后在具有不同参数的多个阶段中调用该函数。

pipeline{
  agent{}
    stages{
      stage(dev_one){
       steps{
          workOnEnv(this, 'dev_one', <next param>)
        }
       }
      stage(dev_two){
       steps{
          workOnEnv(this, 'dev_two', <next param>)
        }
       }
      stage(test_one){
       steps{
        }
       }
      stage(test_two){
       steps{
        }
       }
    }
}

void workOnEnv(Script script, String env, String param2, ...) {
    script.echo "work on env: $env"

    script.sh ""

    script.step()
}

答案 1 :(得分:0)

void ENV_DEV_Deploy_and_Test(){
sshagent(credentials: ['iamcredentials']) {
                  sh '''
                   my script
                  '''
                }
}
    pipeline{
      agent{}
        stages{
          stage('ENV-DEV Deploy and Test') {
            steps {
               ENV_DEV_Deploy_and_Test() 
            }
        }
          stage(dev_two){
           steps{
            }
           }
          stage(test_one){
           steps{
            }
           }
          stage(test_two){
           steps{
            }
           }
        }
    }