JenkinsFile,接近环境依赖

JenkinsFile, aproaching to enviroment dependent

我是 Jenkins 的新手,我不知道如何处理多环境 jenkinsfile。

注意:我正在使用多分支管道

首先,我考虑根据分支编写 3 个不同的 Jenkins 文件。但是,我认为必须有另一种方法可以只用 1 个 Jenkinsfile 来完成它,它可以根据你正在处理的分支执行不同的过程。

类似于:

if branch == 'master' then
  procces to do
else if branch == 'test' then
  other proccess
else
  process for developer branch

编辑:

我发现可以使用环境变量。我试过了:

echo "$BRANCH_NAME"
echo "$env.BRANCH_NAME"
echo 'BRANCH NAME: ' + env.BRANCH_NAME
echo ${env.BRANCH_NAME}
echo "${env.BRANCH_NAME}"
...

但没有任何效果。

在 Jenkins 中,您使用 when 子句来定义阶段何时应该 运行

pipeline {
    agent any
    stages {
      stage("Release if Required") {
            when {
                anyOf {
                    branch 'master'
                    branch 'main'
                }
            }
            steps {
                script {
                    publishRelease()
                }
            }
        }
    }
}

如果您需要在步骤中进行检查,您可以使用环境变量

script {
    if(env.BRANCH_NAME =~ 'master' || env.BRANCH_NAME =~ 'main') {
        echo "On the main branch"            
    }
}

问题是没有在 script { 部分使用它。

stage('Checkout code') {
  script {
   echo "${env.BRANCH_NAME}"
   if ("master" == env.BRANCH_NAME) {
    do something
    ...
   } else if ("Test" == env.BRANCH_NAME) {
    do something
    ...
   } else {
    do something
    ...
   }
}