fix(ci): 隔离 release 部署变量文件
Some checks are pending
Java CI with Maven / build (11) (push) Waiting to run
Java CI with Maven / build (17) (push) Waiting to run
Java CI with Maven / build (8) (push) Waiting to run

This commit is contained in:
lzh
2026-04-30 10:04:34 +08:00
parent 6213f6e693
commit 082eee0edf

53
Jenkinsfile vendored
View File

@@ -350,20 +350,19 @@ 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 = '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 <<EOF
if (env.BRANCH_NAME == 'release/next') {
echo "Writing release CI env file to deploy host..."
sh """
ssh -o StrictHostKeyChecking=no -i ${env.SSH_KEY} root@${env.DEPLOY_HOST} '
set -e
cd ${env.DEPLOY_PATH}
cat > .env.release.ci <<EOF
REGISTRY_HOST=${env.REGISTRY}
IMAGE_TAG=${env.IMAGE_TAG}
COMPOSE_PROJECT_NAME=${composeProjectName}
TZ=Asia/Shanghai
EOF
'
"""
'
"""
}
// Release 环境额外同步 ZLM 配置文件
if (env.BRANCH_NAME == 'release/next') {
@@ -852,18 +851,24 @@ def rollbackDeployment(def services) {
# 设置回滚镜像标签
export REGISTRY_HOST=${env.REGISTRY}
export IMAGE_TAG=${env.PREVIOUS_IMAGE_TAG}
cat > .env <<EOF
COMPOSE_ARGS="-f ${env.COMPOSE_FILE}"
if [ "${env.BRANCH_NAME}" = "release/next" ]; then
case "${env.PREVIOUS_IMAGE_TAG}" in
release-next-*) ;;
*) echo "Invalid release rollback IMAGE_TAG: ${env.PREVIOUS_IMAGE_TAG}"; exit 1 ;;
esac
cat > .env.release.ci <<EOF
REGISTRY_HOST=${env.REGISTRY}
IMAGE_TAG=${env.PREVIOUS_IMAGE_TAG}
COMPOSE_PROJECT_NAME=${composeProjectName}
TZ=Asia/Shanghai
EOF
COMPOSE_ARGS="--env-file .env.release.ci -p aiot-platform -f ${env.COMPOSE_FILE}"
fi
# 拉取旧版本镜像
docker compose -f ${env.COMPOSE_FILE} pull ${service}
# Pull previous image
docker compose \$COMPOSE_ARGS pull ${service}
# 重启服务
docker compose -f ${env.COMPOSE_FILE} up -d ${service}
# Restart service
docker compose \$COMPOSE_ARGS up -d ${service}
echo "✅ ${service} rolled back to ${env.PREVIOUS_IMAGE_TAG}"
'
@@ -1000,12 +1005,20 @@ def deployService(String service) {
# 关键:注入本次构建的镜像 tag否则 docker compose 会 fallback 到 yml 的 :latest拉到 prod 镜像)
export IMAGE_TAG=${env.IMAGE_TAG}
export REGISTRY_HOST=${env.REGISTRY}
COMPOSE_ARGS="-f ${env.COMPOSE_FILE}"
if [ "${env.BRANCH_NAME}" = "release/next" ]; then
case "${env.IMAGE_TAG}" in
release-next-*) ;;
*) echo "Invalid release IMAGE_TAG: ${env.IMAGE_TAG}"; exit 1 ;;
esac
COMPOSE_ARGS="--env-file .env.release.ci -p aiot-platform -f ${env.COMPOSE_FILE}"
fi
echo "📥 Pulling ${service} (tag=${env.IMAGE_TAG})..."
docker compose -f ${env.COMPOSE_FILE} pull ${service}
docker compose \$COMPOSE_ARGS pull ${service}
echo "🔄 Restarting ${service}..."
docker compose -f ${env.COMPOSE_FILE} up -d ${service}
docker compose \$COMPOSE_ARGS up -d ${service}
echo "⏳ Waiting for container to start..."
sleep 5