Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jenkins 2.x参数化触发器插件计算参数_Jenkins_Plugins_Parameters - Fatal编程技术网

Jenkins 2.x参数化触发器插件计算参数

Jenkins 2.x参数化触发器插件计算参数,jenkins,plugins,parameters,Jenkins,Plugins,Parameters,我在Jenkins作业中使用上述插件,但希望将一些参数传递给调用的作业,这些参数是从某个自定义源计算和/或获取的。在shell脚本中很容易做到,只是内置的addparameters选项都不允许进行这种动态计算 我找到了EnvInject插件,但这里的问题是,计算的参数是一个秘密,需要避免存储在磁盘上的任何位置。我在Envinjet插件中找到的唯一方法是首先将计算出的机密写入磁盘,然后在后续步骤中使用Envinjet插件将其作为环境变量从磁盘文件中读取 因此,问题是,参数化触发器插件是否有任何已知

我在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;
}