jenkins - 如何将变量传递到在 Jenkins 管道参数中执行的 Groovy 脚本中?
问题描述
我有一个领事密钥 AAA/BBB/test-key,如“1,2,3”,AAA/CCC/test-key,如“4,5,6”等。
我在几个工作之间有一个共享的 Jenkinsfile。
我不想为每个工作制作 Jenkinsfile。我想按作业名称访问密钥,但无法使其正常工作。
如果我在 URL 中硬编码密钥,它就可以工作,例如
node('master') {
properties([parameters([
[ $class: 'ChoiceParameter',
name: 'GROUPS',
description: 't2',
randomName: 't3',
script: [
$class: 'GroovyScript',
fallbackScript: [
classpath: [], sandbox: false, script: ''
],
script: [
classpath: [], sandbox: false, script:
'''
def text = new URL('http://consul.local:8500/v1/kv/AAA/BBB/test-key?raw').getText()
return text.split(",").collect{ (it=~/\\d+|\\D+/).findAll() }.sort().collect{ it.join() } as List
'''
]
],
choiceType: "PT_RADIO", //PT_SINGLE_SELECT,PT_MULTI_SELECT,PT_RADIO,PT_CHECKBOX
filterable: true,
filterLength: 1
]
])])
}
但是,当我尝试env.JOB_NAME
在 URL 中使用时,它不起作用:
node('master') {
properties([parameters([
[ $class: 'ChoiceParameter',
name: 'GROUPS',
description: 't2',
randomName: 't3',
script: [
$class: 'GroovyScript',
fallbackScript: [
classpath: [], sandbox: false, script: ''
],
script: [
classpath: [], sandbox: false, script:
'''
def text = new URL('http://consul.local:8500/v1/kv/AAA/'+ env.JOB_NAME + '/test-key?raw').getText()
return text.split(",").collect{ (it=~/\\d+|\\D+/).findAll() }.sort().collect{ it.join() } as List
'''
]
],
choiceType: "PT_RADIO", //PT_SINGLE_SELECT,PT_MULTI_SELECT,PT_RADIO,PT_CHECKBOX
filterable: true,
filterLength: 1
]
])])
}
如何访问使用 Groovy 脚本定义的选择参数中的环境变量?
解决方案
如果要传递env.JOB_NAME
给脚本内容,则必须用 替换'''
并"""
引用变量${env.JOB_NAME}
。像这样的东西:
script: [
classpath: [], sandbox: false, script:
"""
def text = new URL('http://consul.local:8500/v1/kv/AAA/${env.JOB_NAME}/test-key?raw').getText()
return text.split(",").collect{ (it=~/\\d+|\\D+/).findAll() }.sort().collect{ it.join() } as List
"""
]
推荐阅读
- python - 截取屏幕截图并将其作为电子邮件附件发送
- binary-search - 二分查找实现条件混淆
- angular-in-memory-web-api - “集合 id 类型为非数字或未知。只能生成数字 id。”
- python - Python 3 中有效源字符的范围是多少?
- swift - 下载 CoreData 的图像
- javascript - 如何使用 JavaScript 从 Mule API html 响应中选择特定标签?
- java - How to check if username exists in my firebase database already?
- python - Pyramid 找不到子模块的包含函数
- java - Can't make payments with PayPal Android SDK
- python - Python json API 格式到数据框