Ich bin eine deklarative Jenkins Pipeline erstellen, die wie folgt aussieht:Mark Jenkins Build als Erfolg, im Falle einer Zeitüberschreitung bei der Eingabe? (Deklarative Pipeline)
pipeline {
agent {
label 'mylabel'
}
stages {
stage('Install dependencies') {
milestone()
steps {
sh "yarn install"
}
}
stage('Lint files') {
steps {
sh "eslint src"
}
}
stage('Create bundle') {
steps {
sh "yarn run build:server"
sh "yarn run build:client"
}
}
stage('Publish') {
steps {
timeout(time: 15, unit: 'SECONDS') {
input(message: 'Deploy this build to QA?')
}
// deployment steps
}
}
}
}
Es funktioniert großartig, aber wenn der Timeout-Schritt fehlschlägt (weil wir nicht wollen, diese Build bereitstellen, oder niemand ist da, um den Knopf zu drücken, und so weiter), der Build ist mit Status "abgebrochen" markiert. Leider bedeutet dies, dass zum Beispiel Github unsere Pull-Anfragen als "Checks Failing" markiert.
Gibt es eine Möglichkeit, den Build mit dem Status zu deklarieren, den er vor dem timeout() - Schritt hatte? Z.B. Wenn der Build bis zum Timeout-Schritt erfolgreich war, sollte er als Erfolg markiert werden, auch wenn das Zeitlimit überschritten wird.
Es ist nicht wie diese Syntax scheinen für deklarative Pipelines verwendet werden, erhalte ich 'WorkflowScript: 38: Erwartete eine Stufe @ Zeile 38, Spalte 9.'. Zeile 38 ist der Versuchsblock. –
Ich denke, in der deklarativen Pipeline sollte der Versuch innerhalb der Bühne Block sein. Dieses Snippet wurde als Inline-Pipeline-Skript in einem Pipeline-Job getestet. –
Ich habe versucht, es zu verschieben, innerhalb der Stufe, in Schritten, keiner von ihnen funktioniert –