Grundsätzlich ist das der Schritt sh
. Wenn Sie das Ergebnis in einer Variablen nicht erfassen, können Sie einfach laufen:
sh "./build"
Dies verlassen wird, wenn das Skript einen Nicht-Null-Exit-Code reurns.
Wenn Sie Sachen müssen zuerst tun, und müssen das Ergebnis erfassen, können Sie einen Shell-Schritt verwenden, um den Job
stage('Building') {
def result = sh returnStatus: true, script: './build.sh'
if (result != 0) {
echo '[FAILURE] Failed to build'
currentBuild.result = 'FAILURE'
// do more stuff here
// this will terminate the job if result is non-zero
// You don't even have to set the result to FAILURE by hand
sh "exit ${result}"
}
}
aber die folgenden beenden werden Ihnen das gleiche geben, scheinen aber mehr gesund zu tun
stage('Building') {
try {
sh './build.sh'
} finally {
echo '[FAILURE] Failed to build'
}
}
Es ist auch möglich, Rückkehr in Ihrem Code aufzurufen. Wenn Sie jedoch innerhalb eines stage
sind, wird es nur von dieser Stufe zurückkehren. So
stage('Building') {
def result = sh returnStatus: true, script: './build.sh'
if (result != 0) {
echo '[FAILURE] Failed to build'
currentBuild.result = 'FAILURE'
return
}
echo "This will not be displayed"
}
echo "The build will continue executing from here"
wird nicht den Job beenden, aber
stage('Building') {
def result = sh returnStatus: true, script: './build.sh'
}
if (result != 0) {
echo '[FAILURE] Failed to build'
currentBuild.result = 'FAILURE'
return
}
Willen.
Mit Jenkins 2.89.3 dies ist ein Fehler: 'org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Skripte nicht verwenden, um neue zulässig hudson.AbortException java.lang.String' –
Sieht so aus, als wäre der Sandbox-Modus aktiviert und verbietet das Auswerfen dieser Ausnahme. Etwas seltsam, aber deaktivieren Sandbox-Modus sollte den Trick tun. – Jazzschmidt
Alternativ können Sie die Verwendung über Jenkins verwalten> In-Prozess-Skriptgenehmigung zulassen – Jazzschmidt