fix(ci): 隔离 release 部署变量文件
This commit is contained in:
53
Jenkinsfile
vendored
53
Jenkinsfile
vendored
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user