特定のブランチの場合にのみ、ビルドステップ/ステージを実行する方法。
I.E.プルリクエスト/ブランチごとにすべてを実行しますが、ビルドするブランチの名前がdeploymentである場合、展開手順も実行しますか?
宣言的なパイプライン構文で同じことを行うと、いくつかの例を以下に示します。
stage('master-branch-stuff'){
agent any
when{
branch 'master'
}
steps {
echo 'run this stage - ony if the branch = master branch'
}
}
stage('feature-branch-stuff') {
agent label:'test-node'
when { branch "feature/*" }
steps {
echo 'run this stage - only if the branch name started with feature/'
}
}
stage('expression-branch') {
agent label:'some-node'
when {
expression {
return env.BRANCH_NAME != 'master';
}
}
steps {
echo 'run this stage - when branch is not equal to master'
}
}
stage('env-specific-stuff') {
agent label:'test-node'
when {
environment name: 'NAME', value: 'this'
}
steps {
echo 'run this stage - only if the env name and value matches'
}
}
より効果的な方法 https://issues.jenkins-ci.org/browse/JENKINS-41187
もご覧ください- https://jenkins.io/doc/book/pipeline/syntax/#when
UPDATE
新しいWHEN句
REF: https://jenkins.io/blog/2018/04/09/whats-in-declarative
等しい-2つの値(文字列、変数、数値、ブール値)を比較し、等しい場合はtrueを返します。正直に言うと、これを以前に追加するのを忘れていたのです! not {equals ...}の組み合わせも使用して、「等しくない」比較を行うことができます。
changeRequest-最も単純な形式では、このPipelineがGitHubプルリクエストなどの変更リクエストを作成している場合、trueを返します。変更要求に対してより詳細なチェックを行うこともでき、「これはmasterブランチに対する変更要求ですか?」と尋ねることができます。などなど。
buildingTag-ブランチまたは特定のコミット参照ではなく、SCMのタグに対してPipelineが実行されているかどうかを確認するだけの単純な条件。
tag-buildingTagのより詳細な同等物。タグ名自体をチェックできます。
if
とenv.BRANCH_NAME
を使用するだけです。例:
if (env.BRANCH_NAME == "deployment") {
... do some build ...
} else {
... do something else ...
}