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
共 0 条评论