2017-04-01 39 views
0

我在Jenkins作业中使用上述插件,但想要传递调用的作业某些参数,这些参数是从一些自定义源计算和/或获取的。除了没有任何内置的Add Parameters选项允许执行这种动态计算的方法之外,在shell脚本中足够容易。Jenkins 2.x参数化触发器插件计算参数

我找到了EnvInject插件,但问题在于计算的参数是一个秘密,需要避免存储在磁盘上的任何位置。我唯一可以在EnvInject插件中找到的方法是首先将计算出来的密码写入磁盘,然后使用EnvInject插件在随后的步骤中将其作为环境变量从磁盘文件中读取。

所以问题是,是否有参数化触发插件的任何已知参数源(文档说参数源本身是可插入的),这将允许我动态计算参数?

回答

0

所以我发现EnvInject插件可以从评估Groovy脚本中注入环境变量。比简单的shell脚本稍微方便一些,特别是因为在线或插件文档中找不到很多示例,但它很有用。

一个示例脚本,你可以把在Build Environment部分通过检查“注入环境变量”复选框:

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