40-Jenkins-环境变量的使用

Posted 爱学习de测试小白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了40-Jenkins-环境变量的使用相关的知识,希望对你有一定的参考价值。

环境变量的使用


前言

  • 本篇来学习下Jenkins中环境变量的使用

环境变量

  • 环境变量可以被看作是pipeline与Jenkins交互的媒介,环境变量可以分为Jenkins内置变量和自定义变量。

内置环境变量

查看内置环境变量

  • 内置全局变量页面: $YOUR_JENKINS_HOST/env-vars.html
    • $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-环境变量的使用的主要内容,如果未能解决你的问题,请参考以下文章

计算机网络-网络传输媒介之“陆地无线电信道”

计算机网络-网络传输媒介之“陆地无线电信道”

计算机网络-网络传输媒介之“双绞铜线”

计算机网络-网络传输媒介之“双绞铜线”

使用 Pyads 库时如何等待变量更改?

2.3文字媒介系统构成