Explorar el Código

流水线优化.

dujian hace 2 semanas
padre
commit
d1c9bf4256

+ 19 - 14
docs/jenkins/produ/_shared/k8s-produ-lib.groovy

@@ -1,31 +1,34 @@
 /**
- * Harbor ???? + ACK ??????? Jenkins ????
- * ????produ/<prodDir>/Jenkinsfile
- * ??/???produ/whole/Jenkinsfile ? produ/promote-image/Jenkinsfile
+ * Harbor image promote + optional ACK deploy (loaded from Jenkinsfile, not a job entry).
  */
 
-/** ???? tag */
 def resolveTargetTag(def script, String targetTagParam) {
     def t = (targetTagParam ?: '').trim()
     return t ?: "produ-${script.env.BUILD_NUMBER}"
 }
 
-/**
- * ?????????? Harbor ???pull ? tag ? tag ?? tag ? push?
- * cfg: harborRegistry, harborProject, sourceTag, targetTag, harborCredentialsId, dryRun
- * services: List<Map> ? prodDir
- */
+def requireSourceTag(def script, String sourceTag) {
+    def srcTag = (sourceTag ?: '').trim()
+    if (!srcTag) {
+        script.error('SOURCE_TAG is required (e.g. uat-build-42). Check Harbor for an existing tag.')
+    }
+    if (srcTag == 'uat-latest') {
+        script.echo 'WARNING: SOURCE_TAG=uat-latest is usually not in Harbor; use the real UAT build tag.'
+    }
+    return srcTag
+}
+
 def promoteHarborImages(def script, List services, Map cfg) {
     def regHost = cfg.harborRegistry.trim()
     def proj = cfg.harborProject.trim()
-    def srcTag = (cfg.sourceTag ?: 'uat-latest').trim()
+    def srcTag = requireSourceTag(script, cfg.sourceTag)
     def tgtTag = cfg.targetTag
     def dryRun = cfg.dryRun == true
 
     services.each { s ->
         def src = "${regHost}/${proj}/${s.prodDir}:${srcTag}"
         def tgt = "${regHost}/${proj}/${s.prodDir}:${tgtTag}"
-        echo ">>> ???? ${s.prodDir}: ${src} ? ${tgt}"
+        echo ">>> promote ${s.prodDir}: ${src} -> ${tgt}"
         if (dryRun) {
             return
         }
@@ -39,7 +42,10 @@ def promoteHarborImages(def script, List services, Map cfg) {
         usernameVariable: 'HARBOR_USER',
         passwordVariable: 'HARBOR_PASS',
     )]) {
-        script.sh "echo \${HARBOR_PASS} | docker login ${regHost} -u \${HARBOR_USER} --password-stdin"
+        script.sh """
+            set -e
+            echo "\${HARBOR_PASS}" | docker login ${regHost} -u "\${HARBOR_USER}" --password-stdin
+        """
         services.each { s ->
             def src = "${regHost}/${proj}/${s.prodDir}:${srcTag}"
             def tgt = "${regHost}/${proj}/${s.prodDir}:${tgtTag}"
@@ -81,11 +87,10 @@ def deployToAck(def script, Map cfg) {
     }
 }
 
-/** ?????? + ?? ACK */
 def promoteOneServiceToAck(def script, Map svc, Map params, Map env) {
     def regHost = params.HARBOR_REGISTRY.trim()
     def proj = params.HARBOR_PROJECT.trim()
-    def srcTag = (params.SOURCE_TAG ?: 'uat-latest').trim()
+    def srcTag = requireSourceTag(script, params.SOURCE_TAG)
     def tgtTag = resolveTargetTag(script, params.TARGET_TAG)
     def dryRun = params.DRY_RUN == true
     def strategy = params.DEPLOY_STRATEGY ?: 'rolling'

+ 1 - 1
docs/jenkins/produ/dining/Jenkinsfile

@@ -9,7 +9,7 @@ pipeline {
     agent any
     options { buildDiscarder(logRotator(numToKeepStr: '15')); timestamps(); timeout(time: 45, unit: 'MINUTES') }
     parameters {
-        string(name: 'SOURCE_TAG', defaultValue: 'uat-latest', trim: true)
+        string(name: 'SOURCE_TAG', defaultValue: '', trim: true)
         string(name: 'TARGET_TAG', defaultValue: '', trim: true)
         string(name: 'HARBOR_REGISTRY', defaultValue: '39.105.153.68', trim: true)
         string(name: 'HARBOR_PROJECT', defaultValue: 'alien_cloud', trim: true)

+ 2 - 2
docs/jenkins/produ/gateway/Jenkinsfile

@@ -29,8 +29,8 @@ pipeline {
         timeout(time: 45, unit: 'MINUTES')
     }
     parameters {
-        string(name: 'SOURCE_TAG', defaultValue: 'uat-latest', trim: true,
-            description: '预生产 Harbor tag,如 uat-build-42')
+        string(name: 'SOURCE_TAG', defaultValue: '', trim: true,
+            description: '必填:Harbor 已有 UAT tag,如 uat-build-42')
         string(name: 'TARGET_TAG', defaultValue: '', trim: true,
             description: '留空则 produ-${BUILD_NUMBER}')
         string(name: 'HARBOR_REGISTRY', defaultValue: '39.105.153.68', trim: true)

+ 1 - 1
docs/jenkins/produ/job/Jenkinsfile

@@ -9,7 +9,7 @@ pipeline {
     agent any
     options { buildDiscarder(logRotator(numToKeepStr: '15')); timestamps(); timeout(time: 45, unit: 'MINUTES') }
     parameters {
-        string(name: 'SOURCE_TAG', defaultValue: 'uat-latest', trim: true)
+        string(name: 'SOURCE_TAG', defaultValue: '', trim: true)
         string(name: 'TARGET_TAG', defaultValue: '', trim: true)
         string(name: 'HARBOR_REGISTRY', defaultValue: '39.105.153.68', trim: true)
         string(name: 'HARBOR_PROJECT', defaultValue: 'alien_cloud', trim: true)

+ 1 - 1
docs/jenkins/produ/lawyer/Jenkinsfile

@@ -9,7 +9,7 @@ pipeline {
     agent any
     options { buildDiscarder(logRotator(numToKeepStr: '15')); timestamps(); timeout(time: 45, unit: 'MINUTES') }
     parameters {
-        string(name: 'SOURCE_TAG', defaultValue: 'uat-latest', trim: true)
+        string(name: 'SOURCE_TAG', defaultValue: '', trim: true)
         string(name: 'TARGET_TAG', defaultValue: '', trim: true)
         string(name: 'HARBOR_REGISTRY', defaultValue: '39.105.153.68', trim: true)
         string(name: 'HARBOR_PROJECT', defaultValue: 'alien_cloud', trim: true)

+ 1 - 1
docs/jenkins/produ/second/Jenkinsfile

@@ -9,7 +9,7 @@ pipeline {
     agent any
     options { buildDiscarder(logRotator(numToKeepStr: '15')); timestamps(); timeout(time: 45, unit: 'MINUTES') }
     parameters {
-        string(name: 'SOURCE_TAG', defaultValue: 'uat-latest', trim: true)
+        string(name: 'SOURCE_TAG', defaultValue: '', trim: true)
         string(name: 'TARGET_TAG', defaultValue: '', trim: true)
         string(name: 'HARBOR_REGISTRY', defaultValue: '39.105.153.68', trim: true)
         string(name: 'HARBOR_PROJECT', defaultValue: 'alien_cloud', trim: true)

+ 1 - 1
docs/jenkins/produ/store-platform/Jenkinsfile

@@ -9,7 +9,7 @@ pipeline {
     agent any
     options { buildDiscarder(logRotator(numToKeepStr: '15')); timestamps(); timeout(time: 45, unit: 'MINUTES') }
     parameters {
-        string(name: 'SOURCE_TAG', defaultValue: 'uat-latest', trim: true)
+        string(name: 'SOURCE_TAG', defaultValue: '', trim: true)
         string(name: 'TARGET_TAG', defaultValue: '', trim: true)
         string(name: 'HARBOR_REGISTRY', defaultValue: '39.105.153.68', trim: true)
         string(name: 'HARBOR_PROJECT', defaultValue: 'alien_cloud', trim: true)

+ 1 - 1
docs/jenkins/produ/store/Jenkinsfile

@@ -9,7 +9,7 @@ pipeline {
     agent any
     options { buildDiscarder(logRotator(numToKeepStr: '15')); timestamps(); timeout(time: 45, unit: 'MINUTES') }
     parameters {
-        string(name: 'SOURCE_TAG', defaultValue: 'uat-latest', trim: true)
+        string(name: 'SOURCE_TAG', defaultValue: '', trim: true)
         string(name: 'TARGET_TAG', defaultValue: '', trim: true)
         string(name: 'HARBOR_REGISTRY', defaultValue: '39.105.153.68', trim: true)
         string(name: 'HARBOR_PROJECT', defaultValue: 'alien_cloud', trim: true)

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

@@ -47,8 +47,8 @@ pipeline {
         booleanParam(name: 'MULTI_lawyer', defaultValue: false)
         booleanParam(name: 'MULTI_job', defaultValue: false)
         booleanParam(name: 'MULTI_dining', defaultValue: false)
-        string(name: 'SOURCE_TAG', defaultValue: 'uat-latest', trim: true,
-            description: '七个服务共用的预生产 Harbor tag')
+        string(name: 'SOURCE_TAG', defaultValue: '', trim: true,
+            description: '必填:Harbor 上已存在的 UAT tag,如 uat-build-42(勿用 uat-latest)')
         string(name: 'TARGET_TAG', defaultValue: '', trim: true,
             description: '留空则 produ-${BUILD_NUMBER}')
         string(name: 'HARBOR_REGISTRY', defaultValue: '39.105.153.68', trim: true)