• Ukieweb

    佳的博客

    曾梦想仗剑天涯,后来工作忙没去。

jenkins pipeline 给 变量 parameters 或使用 三元运算符 给 环境变量 赋初值

jenkins pipeline 中我们可以自定义两种变量: 环境变量 environment 和 一般变量 parameters

这些变量,我们会在模板中大量使用,但有时候某些 job 可能会微调这些参数,下面就说下具体方法

1. parameters 赋予初值

用下面的方法,会在 jenkins 中创建 大量的 parameters 参数

运行 job 时你可以更改 parameters 的值,但是运行完后,他的值就又还原到 脚本内的 defaultValue

pipeline {

    agent any
    
    parameters {
        string(name: 'PERSON', defaultValue: 'Mr Jenkins', description: 'Who should I say hello to?')
        text(name: 'BIOGRAPHY', defaultValue: '', description: 'Enter some information about the person')
        booleanParam(name: 'TOGGLE', defaultValue: true, description: 'Toggle this value')
        choice(name: 'CHOICE', choices: ['One', 'Two', 'Three'], description: 'Pick something')
        password(name: 'PASSWORD', defaultValue: 'SECRET', description: 'Enter a password')
    }
    
    stages {
        stage('Example') {
            steps {
                echo "Hello ${params.PERSON}"
                echo "Biography: ${params.BIOGRAPHY}"
                echo "Toggle: ${params.TOGGLE}"
                echo "Choice: ${params.CHOICE}"
                echo "Password: ${params.PASSWORD}"
            }
        }
    }
    
}

默认 jenkins 每次启动,在 parameters 中设置都会覆盖 jenkins 中的选项(如果有更改)

例如: string 类型的,我们手动修改为 其他值(不和 defaultValue 一样),默认是不会保存的,即使设置 defaultValue为""或者去掉defaultValue

解决方法如下:将 defaultValue 设置为变量  params.open_log

 更高级的:设置 defaultValue 为 params.open_log != null ? "${params.open_log}" : "log-off" 即: 如果变量不存在,就给一个初始值 log-ff

pipeline {
    
    //创建 jenkins 参数
    parameters {

        string(name: 'open_log', defaultValue: params.open_log, description: 'log-on: 加入 online ; log-off: 不加 online')

    }

    agent {
        node {
            label ' yunwei-node'
        }
    }

    stages {
        stage('init params') {
            steps {

                sh "echo ${params.open_log}"
                
                script {

                    if (params.open_log.trim() == "log-on") {  # trim() 去除变量中的空格
                        env.RUN_CMD = "on"
                    } else {
                        env.RUN_CMD = "off"
                    }
                }

                sh "echo ${env.RUN_CMD}"

            }
        }

    }

}



2. 用 三元运算 给 environment 赋予初值 

用下面的方法,我们仅在需要的时候创建这个参数即可

pipeline {

    //定义环境变量
    environment {
        PLOYMENT_FILE = "deployment-prod.yaml" 
        HPA_CONFI_FILE = "hpa-prd.yaml"  
    }
    
    agent any
    
    stages {
        stage('get git code') {
            steps {
            
                // 设置具有默认值的变量环境变量
               script {
                   env.LIMIT_MEMORY = params.limit_memory != null  ? "${params.limit_memory}" : 512  // 在 script 块 params.limit_memory 是取 params.limit_memory 的值
                   env.LIMIT_CPU = params.limit_cpu != null  ? "${params.limit_cpu}" : "500m"  // 数字和字母混合,要加 " " 引号
               }
		
              echo "LIMIT_MEMORY: ${env.LIMIT_MEMORY}"
              echo "LIMIT_CPU: ${env.LIMIT_CPU}"
              
            }
            
        }
        
    }
    
}


  • 如果没有参数 limit_cpu 那么 ${params.limit_cpu} 的值为 null

  • 这里注意在 script 中:  params.limit_cpu  "${params.limit_cpu}" 的写法


env.LIMIT_CPU = params.limit_cpu != null  ? "${params.limit_cpu}" : "500m" 

这句的意思是:

当 limit_cpu 参数 不为 null 的时候,LIMIT_CPU 的值为  limit_cpu ,否则使用默认值 500m



参考:

jenkins 官网 pipeline 语法 之 parameters

Jenkins Pipeline Environment Variables - The Definitive Guide

Jenkins Pipeline 环境变量 的 查看,读取,设置,覆盖

0
0
下一篇:Jenkins Pipeline 环境变量 的 查看,读取,设置,覆盖

0 条评论

老佳啊

85后,大专学历,中原人士,家里没矿。

由于年轻时长的比较帅气,导致在别人眼里,我一直不谈恋爱的原因是清高,实则是自己的小自卑。最大的人生目标就是找一个相知相爱相容的人,共度余生。

和人相处时如果能感受到真诚,会非常注重彼此的关系,对别人没有什么心机,即使有利益冲突,一般也会以和为贵,因为在这个世界上,物质的东西,从来不会吸引到我。

特别迷恋那些大山大水,如果现在还能隐居,可能早就去了。对那些宏伟的有底蕴的人文景观比较不感冒。

从事于IT行业,却一直对厨房念念不忘,由于身材魁梧,总觉得自己上辈子是个将军,可惜这辈子没当兵,也不会打架。