40-Jenkins-环境变量的使用
Posted 爱学习de测试小白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了40-Jenkins-环境变量的使用相关的知识,希望对你有一定的参考价值。
环境变量的使用
前言
- 本篇来学习下Jenkins中环境变量的使用
环境变量
- 环境变量可以被看作是pipeline与Jenkins交互的媒介,环境变量可以分为Jenkins内置变量和自定义变量。
内置环境变量
查看内置环境变量
- 内置全局变量页面: $YOUR_JENKINS_HOST/env-vars.html
- $YOUR_JENKINS_HOST :为Jenkins的host
- $YOUR_JENKINS_HOST :为Jenkins的host
Pipeline中列出所有环境变量
pipeline
agent any
stages
stage("Env Variables")
steps
//sh "env" // linux 环境中使用
bat "set" // windows 环境中使用
读取内置环境变量
- 在pipeline执行时,Jenkins通过一个名为env的全局变量,将Jenkins内置环境变量暴露出来,默认env的属性可以直接在pipeline中引用
pipeline
agent any
stages
stage('Example')
steps
echo "Running $env.BUILD_NUMBER on $env.JENKINS_URL" // 方法1 推荐
echo "Running $env.BUILD_NUMBER on $env.JENKINS_URL" // 方法2
echo "Running $BUILD_NUMBER on $JENKINS_URL" // 方法3 不推荐,难排查
自定义环境变量
- 使用 environment block 来声明性地设置环境变量
- 使用 env.VARIABLE_NAME 设置环境变量
- 使用 withEnv([“VARIABLE_NAME=value”])
pipeline
agent any
environment
FOO = "bar"
stages
stage("Env Variables")
environment
NAME = "Alan"
steps
echo "FOO = $env.FOO"
echo "NAME = $env.NAME"
script
env.TEST_VARIABLE = "some test value"
echo "TEST_VARIABLE = $env.TEST_VARIABLE"
withEnv(["ANOTHER_ENV_VAR=here is some value"])
echo "ANOTHER_ENV_VAR = $env.ANOTHER_ENV_VAR"
自定义全局变量
- Manage Jenkins --> Confiure System --> Global properties --> 勾选"Environment variables"复选框,单击“Add”按钮,在输入框中输入变量名和变量值即可
pipeline
agent any
stages
stage('Hello')
steps
sh 'env' // linux 环境打印全部环境变量
echo "$env.USERNAME" // 使用上面自定义的全局环境变量
覆盖环境变量
- Jenkins Pipeline支持覆盖环境变量。您需要注意一些规则。
- 该withEnv(["env=value]) 块可以覆盖任何环境变量。
- 使用environment 块设置的变量不能使用命令式env.VAR = "value"赋值覆盖。
- 命令式env.VAR = "value"分配只能覆盖使用命令式创建的环境变量
pipeline
agent any
environment
FOO = "bar"
NAME = "Joe"
stages
stage("Env Variables")
environment
NAME = "Alan" // 覆盖上面定义的NAME
BUILD_NUMBER = "2" // 覆盖默认的build number值
steps
echo "FOO = $env.FOO" // FOO = bar
echo "NAME = $env.NAME" // NAME = Alan
echo "BUILD_NUMBER = $env.BUILD_NUMBER" // BUILD_NUMBER = 2
script
env.SOMETHING = "1" // creates env.SOMETHING variable
stage("Override Variables")
steps
script
env.FOO = "IT DOES NOT WORK!" // environment 块设置的变量不能使用命令式env.VAR = "value"赋值覆盖 --> bar
env.SOMETHING = "3" // env.VAR = "value"可以覆盖使用命令式创建的环境变量 --> 3
echo "FOO = $env.FOO" // FOO = bar
echo "SOMETHING = $env.SOMETHING" // SOMETHING = 3
withEnv(["FOO=foobar"]) // 可以覆盖任何环境变量
echo "FOO = $env.FOO" // FOO = foobar
withEnv(["BUILD_NUMBER=1"])
echo "BUILD_NUMBER = $env.BUILD_NUMBER" // BUILD_NUMBER = 1
布尔值环境变量
- 环境变量的每个值都将转换为String。当存储布尔false值时,它将转换为"false"。如果要在布尔表达式中正确使用该值,则需要调用"false".toBoolean() 方法
pipeline
agent any
environment
IS_BOOLEAN = false
stages
stage("Env Variables")
steps
script
if (env.IS_BOOLEAN)
echo "你可以看到这个信息, 因为 'false' 是字符串,布尔值判断为True"
if (env.IS_BOOLEAN.toBoolean() == false)
echo "你可以看到这个信息, 因为 'false'.toBoolean() 返回布尔值False"
使用sh捕获环境变量
- 使用sh(script: ‘cmd’, returnStdout:true)格式来强制sh步骤返回输出
pipeline
agent any
environment
LS = "$sh(script:'ls -lah', returnStdout: true)"
stages
stage('Hello')
steps
echo "LS = $env.LS"
以上是关于40-Jenkins-环境变量的使用的主要内容,如果未能解决你的问题,请参考以下文章