Procházet zdrojové kódy

流水线优化-whole

dujian před 2 týdny
rodič
revize
c13b117ee1
1 změnil soubory, kde provedl 12 přidání a 5 odebrání
  1. 12 5
      docs/jenkins/produ/whole/Jenkinsfile

+ 12 - 5
docs/jenkins/produ/whole/Jenkinsfile

@@ -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()