Die Verwendung von Parametern innerhalb eines shell-Befehls in Jenkinsfile für Jenkins pipeline
Will ich mit den vorgegebenen Parametern in Jenkinsfile
in mehrere shell-Befehle, aber ich bekomme eine exception. In meinem Beispiel möchte ich ausführen, einen einfachen Befehl Andockfenster. Der parameter definiert den Pfad zu Andockfenster ausführbare Datei.
Dies ist meine sehr kurze Jenkinsfile
:
pipeline {
agent any
parameters {
string(defaultValue: '/Applications/Docker.app/Contents/Resources/bin/docker', description: '', name: 'docker')
}
stages {
stage('Test') {
steps {
sh 'sudo ${params.docker} ps -a'
}
}
}
}
Und ich bekomme die folgende exception:
[e2e-web-tests_master-U4G4QJHPUACAEACYSISPVBCMQBR2LS5EZRVEKG47I2XHRI54NCCQ] Running shell script
/Users/Shared/Jenkins/Home/workspace/e2e-web-tests_master-U4G4QJHPUACAEACYSISPVBCMQBR2LS5EZRVEKG47I2XHRI54NCCQ@tmp/durable-e394f175/script.sh: line 2: ${params.docker}: bad substitution
Wenn ich das Jenkinsfile
ohne Verwendung der Parameter innerhalb der shell-Befehl übergibt er erfolgreich:
pipeline {
agent any
parameters {
string(defaultValue: '/Applications/Docker.app/Contents/Resources/bin/docker', description: '', name: 'docker')
}
stages {
stage('Test') {
steps {
sh 'sudo /Applications/Docker.app/Contents/Resources/bin/docker ps -a'
}
}
}
}
So, wie kann ich Parameter in einem shell-Befehl in Jenkinsfile? Ich habe versucht string
und text
als parameter-Typen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das Problem, das Sie haben, ist, dass single-quotes sind ein standard-java-String.
Anführungszeichen sind ein templatable String, der entweder zurückgeben GString, wenn es Vorlagen, oder sonst ein standard-Java-String.
So es Sie doppelte Anführungszeichen verwenden:
dann params.Andockfenster ersetzt das ${params.Andockfenster} innerhalb der 'sh' - script in der pipeline.
Wenn Sie wollen, um
"
innerhalb der"sudo ${params.docker} ps -a"
klappt es nicht so wie bash (das ist verwirrend) Sie verwenden die java-Stil entkommen, so"sudo \"${params.docker}\" ps -a"