dujian 1 неделя назад
Родитель
Сommit
585bd0ffa2

+ 5 - 1
docs/jenkins/produ/_shared/k8s-produ-lib.groovy

@@ -2,15 +2,19 @@
  * Harbor image promote + optional ACK deploy (loaded from Jenkinsfile, not a job entry).
  */
 
+def DEFAULT_SOURCE_TAG = 'uat-latest'
+
 def resolveTargetTag(def script, String targetTagParam) {
     def t = (targetTagParam ?: '').trim()
     return t ?: "produ-${script.env.BUILD_NUMBER}"
 }
 
+/** Empty SOURCE_TAG (incl. old Job cached params) falls back to uat-latest. */
 def requireSourceTag(def script, String sourceTag) {
     def srcTag = (sourceTag ?: '').trim()
     if (!srcTag) {
-        script.error('SOURCE_TAG is required (e.g. uat-latest or uat-build-42). Check Harbor for an existing tag.')
+        script.echo ">>> SOURCE_TAG empty, using default: ${DEFAULT_SOURCE_TAG}"
+        return DEFAULT_SOURCE_TAG
     }
     return srcTag
 }

+ 3 - 2
docs/jenkins/produ/promote-image/Jenkinsfile

@@ -60,9 +60,10 @@ pipeline {
                 script {
                     def (k8s, reg) = getProduLibs()
                     def services = reg.filterServices(reg.getServiceRegistry(), params)
+                    env.SOURCE_TAG_RESOLVED = k8s.requireSourceTag(this, params.SOURCE_TAG)
                     env.PROMOTE_LIST = services*.prodDir.join(',')
                     env.TARGET_TAG_RESOLVED = k8s.resolveTargetTag(this, params.TARGET_TAG)
-                    echo ">>> 服务=${env.PROMOTE_LIST} ${params.SOURCE_TAG} → ${env.TARGET_TAG_RESOLVED}"
+                    echo ">>> 服务=${env.PROMOTE_LIST} ${env.SOURCE_TAG_RESOLVED} → ${env.TARGET_TAG_RESOLVED}"
                 }
             }
         }
@@ -74,7 +75,7 @@ pipeline {
                     k8s.promoteHarborImages(this, services, [
                         harborRegistry: params.HARBOR_REGISTRY,
                         harborProject: params.HARBOR_PROJECT,
-                        sourceTag: params.SOURCE_TAG,
+                        sourceTag: env.SOURCE_TAG_RESOLVED,
                         targetTag: env.TARGET_TAG_RESOLVED,
                         harborCredentialsId: env.HARBOR_CREDENTIALS,
                         dryRun: params.DRY_RUN == true,

+ 3 - 3
docs/jenkins/produ/whole/Jenkinsfile

@@ -69,11 +69,11 @@ pipeline {
                 script {
                     def (k8s, reg) = getProduLibs()
                     def services = reg.filterServices(reg.getServiceRegistry(), params)
-                    def srcTag = k8s.requireSourceTag(this, params.SOURCE_TAG)
+                    env.SOURCE_TAG_RESOLVED = k8s.requireSourceTag(this, params.SOURCE_TAG)
                     env.PROMOTE_LIST = services*.prodDir.join(',')
                     env.TARGET_TAG_RESOLVED = k8s.resolveTargetTag(this, params.TARGET_TAG)
                     echo ">>> DEPLOY_MODE=${params.DEPLOY_MODE} 服务=${env.PROMOTE_LIST}"
-                    echo ">>> ${srcTag} → ${env.TARGET_TAG_RESOLVED}"
+                    echo ">>> ${env.SOURCE_TAG_RESOLVED} → ${env.TARGET_TAG_RESOLVED}"
                 }
             }
         }
@@ -85,7 +85,7 @@ pipeline {
                     k8s.promoteHarborImages(this, services, [
                         harborRegistry: params.HARBOR_REGISTRY,
                         harborProject: params.HARBOR_PROJECT,
-                        sourceTag: params.SOURCE_TAG,
+                        sourceTag: env.SOURCE_TAG_RESOLVED,
                         targetTag: env.TARGET_TAG_RESOLVED,
                         harborCredentialsId: env.HARBOR_CREDENTIALS,
                         dryRun: params.DRY_RUN == true,