私はパイプラインの助けが必要です。私はおそらくここで簡単な情報を欠場するでしょう。ジェンキンスパイプラインはPHP linterエラーで中止しません
だから私は、次の例のパイプラインがあります:テスト、私は意図的に作成された壊れたPHPコードとして
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')
}
}
}
を、と私は私のコードベースに手動で行find . -type f -name "*.php" -exec php56 -l {} \\;
を実行したとき、私はそれがエラーを検出していることがわかります。 また、Jenkinsジョブのコンソール出力では、同じことが表示されます。エラーが検出されます。
しかし、私の成功ブロックが次にトリガされます。成功/失敗ブロックを正しく使用していませんか? findステートメント自体に構文エラーを追加すると(たとえば、\\;
部分を破棄する)、エラーがトリガーされ、予期したとおりにエラーが発生します。
編集(重複質問について)
この質問はanother questionの重複としてマークされましたが、私は実際に必要な情報は、ステップまたはSH-ステップが失敗した事実についてだったので。この投稿と回答には、探している他の人のための関連情報が含まれているので、私はこのように保ちます。
[ファイルの1つで失敗した場合、find -execを終了する方法](https://stackoverflow.com/questions/14871147/how-to-exit-from-find-exec-if-それはファイルの1つに失敗します) – StephenKing