【发布时间】:2017-07-20 13:45:35
【问题描述】:
我需要一些有关管道的帮助。我可能在这里错过了一些琐碎的信息。
所以我有以下示例管道:
pipeline {
agent any
stages {
stage('Build') {
steps {
... some build steps (irrelevant) ...
}
}
stage('Test'){
steps {
sh 'find . -type f -name "*.php" -exec php56 -l {} \\;'
}
}
}
post {
success {
echo 'posting success to GitLab'
updateGitlabCommitStatus(name: 'jenkins-build', state: 'success')
}
failure {
echo 'posting failure to GitLab'
updateGitlabCommitStatus(name: 'jenkins-build', state: 'failed')
}
}
}
作为测试,我故意创建了损坏的 PHP 代码,当我在我的代码库中手动运行 find . -type f -name "*.php" -exec php56 -l {} \\; 行时,我看到它检测到了错误。
此外,在 Jenkins 作业的控制台输出中,我看到了相同的结果:它检测到错误。
但是,我的成功块随后被触发。我没有正确使用成功/失败块吗?
当我向 find 语句本身添加语法错误(例如丢弃 \\; 部分)时,将触发错误并按预期导致失败。
编辑(关于重复问题)
此问题已被标记为与another question 重复,但由于我实际需要的信息是关于步骤或 sh 步骤失败的事实。因为这个帖子和答案包含其他人正在寻找的相关信息,所以我会保持这样。
【问题讨论】: