2017-04-01 76 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; 
}