パブリケーションなど、GitタグをビルドしているときにのみJenkinsに実行させたい特定のビルドロジックがあります。 Jenkinの宣言型パイプラインを使用してこれをどのように達成できますか?
言い換えると、TravisCIのデプロイオンタグ機能と同等の機能を構築しようとしています。
deploy:
[...]
on:
tags: true
ブランチをチェックするための組み込み条件 がありますが、タグを示すものが表示されません。
更新:バージョン1.2.8以降 パイプラインモデル定義プラグイン 使用できるようになりました buldingTag()
:
stage('Deploy') {
when {
buildingTag()
}
steps {
echo 'Replace this with your actual deployment steps'
}
}
Multibranch Pipeline 構成を使用する場合、基礎となる Branch API Plugin によって提供されるTAG_NAME
環境変数とともにexpression
条件を使用できます。残念ながら、環境変数がGroovyレベル(API制限)で定義されているかどうかを直接確認することはできないため、シェルでテストする必要があります。
stage('Deploy') {
when { expression { sh([returnStdout: true, script: 'echo $TAG_NAME | tr -d \'\n\'']) } }
steps {
echo 'Replace this with your actual deployment steps'
}
}
上記は、Groovyで真実である空でない文字列を利用しています。
より簡単な方法は、将来のバージョンで導入される可能性があります。 jenkinsci/pipeline-model-definition-plugin#24 を参照してください。
ブランチ名を取得して処理したのと同様の状況がありました。タグの場合はrefs/tags/v101.0.0-beta8468
のようです。したがって、これを抽出/解析して、タグかどうかを確認する必要があります。そうでない場合は、pipeline
のようなブランチ名だけです。例えば。
if(env.gitlabBranch.contains("tags"))
{
isTag = true
echo "----------------true----------------"
branch = env.gitlabBranch.split("/")[2]
imageTag = branch
}
else
{
branch = "Origin/$env.gitlabBranch"
}
そして、チェックアウトのステップで、ブランチを次のように言及します
branches: [[name: "${branch}"]
同じプロジェクトからチェックアウトしたい場合。 isTag変数に基づいて、特定のステージを実行することを選択できます。お気に入り:
if(isTag) {
stage('Deploy') {
// your logic here
}
isTagをfalseとして初期化します:)