2017-04-01 1 views
0

Ich benutze das obige Plugin in einem Jenkins-Job, aber möchte den aufgerufenen Job einen Parameter übergeben, der aus einer benutzerdefinierten Quelle berechnet und/oder geholt wird. Es ist einfach genug, dies in einem Shell-Skript zu tun, außer dass keine der integrierten Optionen zum Hinzufügen von Parametern eine Möglichkeit bietet, diese Art von dynamischer Berechnung durchzuführen.Jenkins 2.x parametriertes Trigger-Plugin Berechneter Parameter

Ich habe das EnvInject-Plugin gefunden, aber das Problem hier ist, dass der berechnete Parameter ein Geheimnis ist und nicht irgendwo auf der Festplatte gespeichert werden muss. Die einzige Möglichkeit, die ich im EnvInject-Plugin herausfinden kann, besteht darin, zuerst das berechnete Geheimnis auf die Festplatte zu schreiben und es dann als Umgebungsvariable in einem späteren Schritt mit Hilfe des EnvInject-Plugins aus dieser Datei einzulesen.

Die Frage ist also, gibt es eine bekannte Parameterquelle für das parametrierte Trigger-Plugin (docs sagt, die Parameterquellen selbst sind steckbar), die es mir erlauben würde, den Parameter dynamisch zu berechnen?

Antwort

0

So fand ich, dass das EnvInject-Plugin Umgebungsvariablen aus der Auswertung eines Groovy-Skript injizieren kann. Ein wenig weniger praktisch als ein einfaches Shell-Skript, zumal es nicht so viele Beispiele online oder in den Plugin-Dokumenten gibt, aber es funktioniert.

Ein Beispielskript, die Sie im Build Environment Abschnitt durch Prüfen der „Umwelt Injizieren Variablen“ Checkbox setzen können:

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