【问题标题】:Jenkins pipeline doesn't abort on PHP linter errorJenkins 管道不会因 PHP linter 错误而中止
【发布时间】: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 步骤失败的事实。因为这个帖子和答案包含其他人正在寻找的相关信息,所以我会保持这样。

【问题讨论】:

标签: jenkins jenkins-pipeline


【解决方案1】:

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

【讨论】:

  • 谢谢 :) 又是很棒的信息
猜你喜欢
  • 2020-04-01
  • 2012-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多