Jenkins 2.x参数化触发器插件计算参数
我在Jenkins作业中使用上述插件,但希望将一些参数传递给调用的作业,这些参数是从某个自定义源计算和/或获取的。在shell脚本中很容易做到,只是内置的addparameters选项都不允许进行这种动态计算 我找到了EnvInject插件,但这里的问题是,计算的参数是一个秘密,需要避免存储在磁盘上的任何位置。我在Envinjet插件中找到的唯一方法是首先将计算出的机密写入磁盘,然后在后续步骤中使用Envinjet插件将其作为环境变量从磁盘文件中读取Jenkins 2.x参数化触发器插件计算参数,jenkins,plugins,parameters,Jenkins,Plugins,Parameters,我在Jenkins作业中使用上述插件,但希望将一些参数传递给调用的作业,这些参数是从某个自定义源计算和/或获取的。在shell脚本中很容易做到,只是内置的addparameters选项都不允许进行这种动态计算 我找到了EnvInject插件,但这里的问题是,计算的参数是一个秘密,需要避免存储在磁盘上的任何位置。我在Envinjet插件中找到的唯一方法是首先将计算出的机密写入磁盘,然后在后续步骤中使用Envinjet插件将其作为环境变量从磁盘文件中读取 因此,问题是,参数化触发器插件是否有任何已知
因此,问题是,参数化触发器插件是否有任何已知的参数源(文档称参数源本身是可插入的)可以让我动态计算参数?因此我发现EnvInject插件可以通过评估Groovy脚本来注入环境变量。与简单的shell脚本相比有点不方便,特别是因为在线或插件文档中没有那么多示例,但它可以工作 示例脚本,您可以通过选中“注入环境变量”复选框将其放入构建环境部分:
try {
def json = /curl -s -H "X-Vault-Token:${VAULT_TOKEN}" -X GET https://xxx.yyy.zzz/v1/secret/oe/dmp/aws/mykey.key/.execute().text
def access_key_id = /echo '${json}' | jq -r '.data' | jq -r '.aws_access_key_id'/.execute().text>
def secret_access_key = /echo '${json}' | jq -r '.data' | jq -r '.aws_secret_access_key'/.execute().text
return ['AWS_SECRET_ACCESS_KEY' : secret_access_key, 'AWS_ACCESS_KEY_ID' : access_key_id]
} catch (Throwable t) {
println(t)
throw t;
}