現在、maven-jobが不安定な場合(黄色)、パイプラインが失敗します(赤)。
node {
stage 'Unit/SQL-Tests'
parallel (
phase1: { build 'Unit-Tests' }, // maven
phase2: { build 'SQL-Tests' } // Shell
)
stage 'Integration-Tests'
build 'Integration-Tests' // maven
}
この例では、ジョブの単体テストの結果は不安定ですが、パイプラインでは失敗として表示されます。
ジョブ/パイプライン/ジェンキンを変更して、(1)失敗ではなくパイプラインステップを不安定にし、(2)失敗ではなくパイプラインのステータスを不安定にするにはどうすればよいですか。
MAVEN_OPTS
パラメーター-Dmaven.test.failure.ignore=true
を追加しようとしましたが、問題は解決しませんでした。 build 'Unit-Test'
を、結果をキャッチして処理できるロジックにラップする方法がわかりません。
このロジック を使用してサブパイプラインを追加しても、Subversionからチェックアウトするオプションがないため、トリックは実行されません(このオプションは通常のMavenジョブで使用可能です)。可能であれば、コマンドラインチェックアウトを使用したくありません。
ステップが不安定であっても失敗したとしても、スクリプトの最終ビルド結果は失敗します。
フローの失敗を回避するために、デフォルトで伝搬をfalseに追加できます。
def result = build job: 'test', propagate: false
フローの最後に、「結果」変数から得たものに基づいて最終結果を判断できます。
例えば
currentBuild.result='UNSTABLE'
詳細な例を次に示します 現在のビルド結果をパイプラインで設定する方法
Br、
ティム
学んだ教訓:
SUCCESS
、UNSTABLE
、またはFAILURE
( source )のいずれかであるcurrentBuild.result
値に従ってパイプラインを継続的に更新します。build job: <JOBNAME>
の結果は変数に保存できます。ビルドステータスはvariable.result
にあります。build job: <JOBNAME>, propagate: false
は、ビルド全体がすぐに失敗するのを防ぎます。currentBuild.result
悪化のみ可能 。その値が以前にFAILED
であり、currentBuild.result = 'SUCCESS'
を介して新しいステータスSUCCESS
を受け取った場合、FAILED
のままになりますこれは私が最終的に使用したものです:
node {
def result // define the variable once in the beginning
stage 'Unit/SQL-Tests'
parallel (
phase1: { result = build job: 'Unit', propagate: false }, // might be UNSTABLE
phase2: { build 'SQL-Tests' }
)
currentBuild.result = result.result // update the build status. jenkins will update the pipeline's current status accordingly
stage 'Install SQL'
build 'InstallSQL'
stage 'Deploy/Integration-Tests'
parallel (
phase1: { build 'Deploy' },
phase2: { result = build job: 'Integration-Tests', propagate: false }
)
currentBuild.result = result.result // should the Unit-Test be FAILED and Integration-Test SUCCESS, then the currentBuild.result will stay FAILED (it can only get worse)
stage 'Code Analysis'
build 'Analysis'
}