背景を説明すると、20 近くのマイクサービスがあり、それぞれに独自のJenkinsfile
. 各マイクロ サービスは、追加の docker イメージのビルドなど、ビルドで追加の手順を実行する場合がありますが、これらの手順のほとんどは、すべてのマイクロ サービスで同じであり、各手順のパラメーター (リポジトリ パスなど) のみが異なります。
Jenkins の Multi Configuration プロジェクトを見ると、これらのジョブの 1 つを使用して、これらすべてのプロジェクトにビルド手順を適用するのは完璧に思えます。ただし、次のような疑問があります。
- マルチ構成を使用して、各マイクロサービスのマルチ ブランチ ジョブを作成できますか?
- マルチ構成によって共通のステップが生成されている間に、各マイクロ サービスが持つ可能性のある追加のステップをサポートできますか?
より明確にするために、例を挙げましょう。
micro-service-one:
|__ Jenkinsfile
|___ { step1: maven build
step2: docker build
step3: docker build (extra Dockerfile)
}
micro-service-two:
|__ Jenkinsfile
|___ { step1: maven build
step2: docker build
}
今私が考えているのは、私のマルチ構成は次のようになるということです:
軸:
name: micro-service-one micro-service-two
docker_repo: myrepo.com/micro-service-one myrepo.com/micro-service-two
DSL スクリプト:
multibranchPipelineJob("folder-build/${name}") {
branchSources {
git {
id = 'bitbucket-${name}'
remote('git@bitbucket.org:myproject/${name}.git')
credentialsId("some_cred_id")
}
}
orphanedItemStrategy {
discardOldItems {
daysToKeep(2)
numToKeep(10)
}
defaultOrphanedItemStrategy {
pruneDeadBranches(true)
daysToKeepStr("2")
numToKeepStr("10")
}
}
triggers {
periodic(5)
}
}
しかし、各アプリケーションの Jenkinsfile で軸変数を使用する方法がわかりませんか? Jenkinsfile をマルチ構成で生成することさえ可能ですか?
注: なぜこれが必要なのかと尋ねるかもしれません。その答えは、これらの Jenkinsfile の変更または更新に費やす時間を削減することです。変更が必要な場合は、ほぼ 20 以上のリポジトリをチェックアウトし、環境が進化し、新しい機能や修正が必要になるにつれて、1 つずつ変更する必要があります。