Jenkinsfile 根据环境变量定义变量
Jenkinsfile define variable based on environment variable
如果我的环境变量之一等于字符串,我想将布尔变量设置为 true。如果此 RUN_TESTS
var 为真,我只想 运行 我的测试阶段。
pipeline{
environment {
RUN_TESTS = expression { "${env.JOB_BASE_NAME}" == 'Test Pipeline' }
}
stages{
stage('test'){
when {
expression { RUN_TESTS }
}
steps{
// run my tests.......
}
}
}
虽然上面的方法不起作用。
如何根据环境变量的值设置一个布尔变量,然后我可以使用它有条件地运行一个管道阶段?
在这种情况下,您似乎不必设置环境变量。您可以直接在您的舞台上评估表达式:
pipeline{
stages{
stage('test'){
when {
expression { "${env.JOB_BASE_NAME}" == 'Test Pipeline' }
}
steps{
// run my tests.......
}
}
}
另一方面,如果您仍然需要设置环境变量,则有几种方法可以做到。詹金斯说:
Environment variable values must either be single quoted, double quoted, or function calls.
- 用双引号括起来:
environment {
RUN_TESTS = "${env.JOB_BASE_NAME == 'Test Pipeline'}"
}
- 在函数调用中包装这个表达式,像这样:
def run_tests() {
return "${env.JOB_BASE_NAME}" == 'Test Pipeline'
}
pipeline{
environment {
RUN_TESTS = run_tests()
}
stages{
stage('test'){
when {
expression { RUN_TESTS }
}
steps{
// run my tests.......
}
}
}
但总的来说我会选择第一种方法
如果我的环境变量之一等于字符串,我想将布尔变量设置为 true。如果此 RUN_TESTS
var 为真,我只想 运行 我的测试阶段。
pipeline{
environment {
RUN_TESTS = expression { "${env.JOB_BASE_NAME}" == 'Test Pipeline' }
}
stages{
stage('test'){
when {
expression { RUN_TESTS }
}
steps{
// run my tests.......
}
}
}
虽然上面的方法不起作用。
如何根据环境变量的值设置一个布尔变量,然后我可以使用它有条件地运行一个管道阶段?
在这种情况下,您似乎不必设置环境变量。您可以直接在您的舞台上评估表达式:
pipeline{
stages{
stage('test'){
when {
expression { "${env.JOB_BASE_NAME}" == 'Test Pipeline' }
}
steps{
// run my tests.......
}
}
}
另一方面,如果您仍然需要设置环境变量,则有几种方法可以做到。詹金斯说:
Environment variable values must either be single quoted, double quoted, or function calls.
- 用双引号括起来:
environment {
RUN_TESTS = "${env.JOB_BASE_NAME == 'Test Pipeline'}"
}
- 在函数调用中包装这个表达式,像这样:
def run_tests() {
return "${env.JOB_BASE_NAME}" == 'Test Pipeline'
}
pipeline{
environment {
RUN_TESTS = run_tests()
}
stages{
stage('test'){
when {
expression { RUN_TESTS }
}
steps{
// run my tests.......
}
}
}
但总的来说我会选择第一种方法