|
|
@@ -1,6 +1,8 @@
|
|
|
/**
|
|
|
* 整体 / 单服务 / 多选:仅晋升 Harbor 镜像 + 可选 ACK。
|
|
|
* Script Path:docs/jenkins/produ/whole/Jenkinsfile
|
|
|
+ *
|
|
|
+ * 注意:load / checkout 必须在 agent 的 stage 内执行,禁止在 pipeline 外顶层 load。
|
|
|
*/
|
|
|
def sparseCheckoutProduShared() {
|
|
|
checkout scm: [
|
|
|
@@ -16,8 +18,13 @@ def sparseCheckoutProduShared() {
|
|
|
]
|
|
|
}
|
|
|
|
|
|
-def k8s
|
|
|
-def reg
|
|
|
+/** 在 node 内稀疏检出并加载共享库(每个 stage 可重复调用) */
|
|
|
+def getProduLibs() {
|
|
|
+ sparseCheckoutProduShared()
|
|
|
+ def k8s = load 'docs/jenkins/produ/_shared/k8s-produ-lib.groovy'
|
|
|
+ def reg = load 'docs/jenkins/produ/_shared/service-registry.groovy'
|
|
|
+ return [k8s, reg]
|
|
|
+}
|
|
|
|
|
|
pipeline {
|
|
|
agent any
|
|
|
@@ -60,9 +67,7 @@ pipeline {
|
|
|
stage('Plan') {
|
|
|
steps {
|
|
|
script {
|
|
|
- sparseCheckoutProduShared()
|
|
|
- k8s = load 'docs/jenkins/produ/_shared/k8s-produ-lib.groovy'
|
|
|
- reg = load 'docs/jenkins/produ/_shared/service-registry.groovy'
|
|
|
+ def (k8s, reg) = getProduLibs()
|
|
|
def services = reg.filterServices(reg.getServiceRegistry(), params)
|
|
|
env.PROMOTE_LIST = services*.prodDir.join(',')
|
|
|
env.TARGET_TAG_RESOLVED = k8s.resolveTargetTag(this, params.TARGET_TAG)
|
|
|
@@ -74,6 +79,7 @@ pipeline {
|
|
|
stage('Promote images') {
|
|
|
steps {
|
|
|
script {
|
|
|
+ def (k8s, reg) = getProduLibs()
|
|
|
def services = reg.filterServices(reg.getServiceRegistry(), params)
|
|
|
k8s.promoteHarborImages(this, services, [
|
|
|
harborRegistry: params.HARBOR_REGISTRY,
|
|
|
@@ -90,6 +96,7 @@ pipeline {
|
|
|
when { expression { return params.DEPLOY_STRATEGY != 'skip' && !params.DRY_RUN } }
|
|
|
steps {
|
|
|
script {
|
|
|
+ def (k8s, reg) = getProduLibs()
|
|
|
def services = reg.filterServices(reg.getServiceRegistry(), params)
|
|
|
def regHost = params.HARBOR_REGISTRY.trim()
|
|
|
def proj = params.HARBOR_PROJECT.trim()
|