From ef3be3934a996167203477870d464e2efb15e016 Mon Sep 17 00:00:00 2001 From: lzh Date: Thu, 30 Apr 2026 09:29:08 +0800 Subject: [PATCH] =?UTF-8?q?fix(ci):=20=E7=A6=81=E6=AD=A2=20release=20?= =?UTF-8?q?=E9=83=A8=E7=BD=B2=E5=9B=9E=E9=80=80=20latest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 33 ++++++++++++++++++++++++++++++--- docker-compose.release.yml | 14 +++++++------- 2 files changed, 37 insertions(+), 10 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 9e261f9f..9b100cae 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -350,6 +350,20 @@ pipeline { // 同步当前分支对应的 compose 文件到部署服务器(master→core、release/next→release) echo "📂 Syncing ${env.COMPOSE_FILE} to deploy host..." sh "scp -o StrictHostKeyChecking=no -i ${env.SSH_KEY} ${env.COMPOSE_FILE} root@${env.DEPLOY_HOST}:${env.DEPLOY_PATH}/" + def composeProjectName = env.BRANCH_NAME == 'release/next' ? 'aiot-platform-release' : 'aiot-platform' + echo "Writing compose env to deploy host..." + sh """ + ssh -o StrictHostKeyChecking=no -i ${env.SSH_KEY} root@${env.DEPLOY_HOST} ' + set -e + cd ${env.DEPLOY_PATH} + cat > .env </dev/null || echo "latest" + ' 2>/dev/null || true """, returnStdout: true ).trim() - return previousTag ?: 'latest' + return previousTag ?: '' } catch (Exception e) { echo "⚠️ Failed to get previous image tag: ${e.message}" - return 'latest' + return '' } } @@ -810,6 +824,11 @@ def backupCurrentDeployment(def services) { // 【优化7】回滚部署 def rollbackDeployment(def services) { + if (!env.PREVIOUS_IMAGE_TAG?.trim()) { + echo "No previous image tag available, skipping automatic rollback." + return + } + echo """ ========================================== 🔄 INITIATING ROLLBACK @@ -820,6 +839,7 @@ def rollbackDeployment(def services) { """ def sshOpts = "-o StrictHostKeyChecking=no -o ConnectTimeout=10 -i ${env.SSH_KEY}" + def composeProjectName = env.BRANCH_NAME == 'release/next' ? 'aiot-platform-release' : 'aiot-platform' try { services.each { service -> @@ -830,7 +850,14 @@ def rollbackDeployment(def services) { cd ${env.DEPLOY_PATH} # 设置回滚镜像标签 + export REGISTRY_HOST=${env.REGISTRY} export IMAGE_TAG=${env.PREVIOUS_IMAGE_TAG} + cat > .env <