Jenkins管道不会因PHP linter错误而中止

时间:2017-07-20 13:45:36

标签: jenkins jenkins-pipeline

我需要管道帮助。我可能在这里想念一些简单的信息。

所以我有以下示例管道:

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的副本,但由于我实际需要的信息是关于步骤或步骤失败的事实。因为这篇文章和答案包含了寻找其他人的相关信息,所以我会保留这样的信息。

1 个答案:

答案 0 :(得分:0)

如果命令以非零退出状态退出,则Jenkins会将sh步骤的执行视为失败。所以你的问题归结为How to exit from find -exec if it fails on one of the files