特定のブランチをビルドする場合にのみビルド ステップ/ステージを実行するにはどうすればよいですか?
たとえば、ブランチが と呼ばれる場合にのみデプロイメント ステップを実行しdeployment
、他のすべてを同じままにします。
ベストアンサー1
宣言型パイプライン構文で同じことを実行すると、次のような例がいくつかあります。
stage('master-branch-stuff') {
when {
branch 'master'
}
steps {
echo 'run this stage - ony if the branch = master branch'
}
}
stage('feature-branch-stuff') {
when {
branch 'feature/*'
}
steps {
echo 'run this stage - only if the branch name started with feature/'
}
}
stage('expression-branch') {
when {
expression {
return env.BRANCH_NAME != 'master';
}
}
steps {
echo 'run this stage - when branch is not equal to master'
}
}
stage('env-specific-stuff') {
when {
environment name: 'NAME', value: 'this'
}
steps {
echo 'run this stage - only if the env name and value matches'
}
}
より効果的な方法が登場 -参考:
こちらもご覧ください -https://jenkins.io/doc/book/pipeline/syntax/#when
beforeAgent true
条件文が git state を実行して実行するかどうかを決定する必要がない場合は、条件文を実行するためにエージェントを起動しないようにディレクティブを設定できます。
when { beforeAgent true; expression { return isStageConfigured(config) } }
アップデート
新しい WHEN 句
REF:https://jenkins.io/blog/2018/04/09/whats-in-declarative
equals - 2 つの値 (文字列、変数、数値、ブール値) を比較し、等しい場合は true を返します。なぜこれを以前に追加しなかったのか、正直わかりません。not { equals ... } の組み合わせを使用して、「等しくない」比較を行うこともできます。
changeRequest - 最も単純な形式では、このパイプラインが GitHub プル リクエストなどの変更リクエストを作成している場合に true を返します。変更リクエストに対してより詳細なチェックを行うこともできます。これにより、「これはマスター ブランチに対する変更リクエストですか?」などを確認できます。
buildingTag - パイプラインがブランチや特定のコミット参照ではなく、SCM 内のタグに対して実行されているかどうかを確認する単純な条件。
tag - buildingTag のより詳細な同等物であり、タグ名自体に対してチェックを行うことができます。