我需要管道帮助。我可能在这里想念一些简单的信息。
所以我有以下示例管道:
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的副本,但由于我实际需要的信息是关于步骤或步骤失败的事实。因为这篇文章和答案包含了寻找其他人的相关信息,所以我会保留这样的信息。
答案 0 :(得分:0)
如果命令以非零退出状态退出,则Jenkins会将sh
步骤的执行视为失败。所以你的问题归结为How to exit from find -exec if it fails on one of the files。