Jenkinsfile - 捕获错误时停止管道
Jenkinsfile - stop pipeline when catch error
我在 Jenkins 中的流水线有问题。
我对具有指定扩展名的文件执行路径搜索。然后我用之前找到的文件执行 php -l 。
一切正常,但我想如果 php -l 发现错误然后构建并进入 UNSTABLE 状态并停止进一步执行管道。
我设法以这种方式做到了,但随后构建和步骤处于失败状态
} catch (Exception e) {
error("${e}")
我的管道的部分代码。
def check(){
stage('Validate files') {
try {
sh "find . -type f -iregex '.*\.\(php\)' | xargs -I % sh -c 'php -l \'%\''"
} catch (Exception e) {
error("${e}")
}
}
}
我希望更聪明的人可以指导我找到解决方案:)
有一个示例可以工作,但可能不是您想要的。我使用 unstable() 来标记阶段/构建,然后检查 sh 步骤的退出代码到 return 或继续管道。
有 2 个条件,因为您需要 return 离开舞台而不只是 return 离开舞台。
#!/usr/bin/env groovy
try {
node {
def exitCode = 0
exitCode = check()
if (exitCode != 0){
return
}
somethingelse()
}
} catch (Throwable err) { // catch all exceptions
throw err
} finally {}
def check(){
stage('Validate files') {
exitCode = sh script:"exit 1", returnStatus:true
if (exitCode !=0){
unstable('message')
}
}
return exitCode
}
def somethingelse(){
stage('Something'){
echo "somethingelse"
}
}
我在 Jenkins 中的流水线有问题。
我对具有指定扩展名的文件执行路径搜索。然后我用之前找到的文件执行 php -l 。 一切正常,但我想如果 php -l 发现错误然后构建并进入 UNSTABLE 状态并停止进一步执行管道。 我设法以这种方式做到了,但随后构建和步骤处于失败状态
} catch (Exception e) {
error("${e}")
我的管道的部分代码。
def check(){
stage('Validate files') {
try {
sh "find . -type f -iregex '.*\.\(php\)' | xargs -I % sh -c 'php -l \'%\''"
} catch (Exception e) {
error("${e}")
}
}
}
我希望更聪明的人可以指导我找到解决方案:)
有一个示例可以工作,但可能不是您想要的。我使用 unstable() 来标记阶段/构建,然后检查 sh 步骤的退出代码到 return 或继续管道。
有 2 个条件,因为您需要 return 离开舞台而不只是 return 离开舞台。
#!/usr/bin/env groovy
try {
node {
def exitCode = 0
exitCode = check()
if (exitCode != 0){
return
}
somethingelse()
}
} catch (Throwable err) { // catch all exceptions
throw err
} finally {}
def check(){
stage('Validate files') {
exitCode = sh script:"exit 1", returnStatus:true
if (exitCode !=0){
unstable('message')
}
}
return exitCode
}
def somethingelse(){
stage('Something'){
echo "somethingelse"
}
}