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
...
}
}
我是 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
...
}
}