2016-12-05 7 views
0

ich einen Shell-Skript, das für viele Projekte in Seiten Jenkins üblich ist, ist es richtig, es in die Ressourcen Ordner abzulegen und sie wie unten laden:Jenkins Pipeline CPS globale lib Ressourcendatei für Shell-Skript Zweck

def script = libraryResource 'build/package_indexes/build_push.sh' 

während dies funktioniert:

sh script 

aber sobald ich das build_push.sh Skript anfängst Argumente zu akzeptieren, wird es nicht funktionieren, da script keine Datei ist ...

Die zweite Frage ist, dass es die Ausgabe, dass script Variable in eine temporäre Datei korrekt ist wie

writeFile script '/tmp/tmp.sh' 
sh "/tmp/tmp.sh 'cmd_arg'" 

Antwort

1

bash -c den Trick. nur daran erinnern, dass die erste param $ 0 und nicht mehr als $ 1

zum Beispiel ist:

mein Skript -

echo hello $0! 

in Jenkinsfile

def script = libraryResource 'hello.sh' 
sh "bash -c '$script' world" 

und das Ergebnis ist Hallo Welt!