Release/test 合并上生产 #1

Merged
admin merged 236 commits from release/test into main 2026-09-17 11:51:50 +08:00
2 changed files with 62 additions and 2 deletions
Showing only changes of commit a2463865da - Show all commits
Vendored
+51 -2
View File
@@ -1,6 +1,12 @@
pipeline {
agent any
environment {
DEVELOPMENT_SSH_TARGET = 'deploy@172.31.198.8'
DEVELOPMENT_SSH_KEY = '/var/jenkins_home/.ssh/dev_deploy'
DEVELOPMENT_DEPLOY_DIR = '/opt/firstleg/frontend/client-web'
}
options {
timestamps()
disableConcurrentBuilds()
@@ -9,12 +15,16 @@ pipeline {
stages {
stage('确认提交版本') {
steps {
sh 'echo "Jenkins 已拉取 release/test 分支代码"'
script {
env.IS_DEVELOPMENT = env.JOB_BASE_NAME?.endsWith('-dev') ? 'true' : 'false'
env.SOURCE_TAG = sh(script: 'git rev-parse --short=12 HEAD', returnStdout: true).trim()
}
sh 'git log -1 --oneline'
}
}
stage('构建并部署测试前端') {
when { expression { env.IS_DEVELOPMENT != 'true' } }
steps {
sh '''
set -eu
@@ -24,7 +34,39 @@ pipeline {
}
}
stage('构建并部署开发前端') {
when { expression { env.IS_DEVELOPMENT == 'true' } }
steps {
sh '''
set -eu
image="client-web-development:${SOURCE_TAG}"
ssh_args="-i ${DEVELOPMENT_SSH_KEY} -o BatchMode=yes -o StrictHostKeyChecking=yes -o ConnectTimeout=10"
docker build \
--build-arg VITE_ADMIN_WEB_ORIGIN=http://8.163.49.32:9001 \
-t "$image" .
docker save "$image" | gzip -1 | ssh $ssh_args "$DEVELOPMENT_SSH_TARGET" 'gzip -dc | docker load'
ssh $ssh_args "$DEVELOPMENT_SSH_TARGET" "install -d -m 750 '$DEVELOPMENT_DEPLOY_DIR'"
scp $ssh_args docker-compose.development.yml \
"$DEVELOPMENT_SSH_TARGET:$DEVELOPMENT_DEPLOY_DIR/docker-compose.yml.tmp"
ssh $ssh_args "$DEVELOPMENT_SSH_TARGET" \
"mv -f '$DEVELOPMENT_DEPLOY_DIR/docker-compose.yml.tmp' '$DEVELOPMENT_DEPLOY_DIR/docker-compose.yml'"
ssh $ssh_args "$DEVELOPMENT_SSH_TARGET" sh -s -- "$DEVELOPMENT_DEPLOY_DIR" "$SOURCE_TAG" <<'REMOTE'
set -eu
cd "$1"
export IMAGE_TAG="$2"
docker compose -f docker-compose.yml up -d --remove-orphans --pull never
docker compose -f docker-compose.yml ps
docker compose -f docker-compose.yml exec -T client-web wget -qO- http://127.0.0.1/healthz
REMOTE
'''
}
}
stage('部署检查') {
when { expression { env.IS_DEVELOPMENT != 'true' } }
steps {
sh '''
set -eu
@@ -37,7 +79,14 @@ pipeline {
post {
failure {
sh 'docker compose -f docker-compose.test.yml logs --tail=100 || true'
sh '''
if [ "${IS_DEVELOPMENT:-false}" = "true" ]; then
ssh -i "$DEVELOPMENT_SSH_KEY" -o BatchMode=yes -o StrictHostKeyChecking=yes \
"$DEVELOPMENT_SSH_TARGET" 'docker logs --tail=100 client-web-development || true' || true
else
docker compose -f docker-compose.test.yml logs --tail=100 || true
fi
'''
}
}
}
+11
View File
@@ -0,0 +1,11 @@
services:
client-web:
image: client-web-development:${IMAGE_TAG:?IMAGE_TAG is required}
container_name: client-web-development
restart: unless-stopped
ports:
- "9002:80"
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
API_UPSTREAM: "http://host.docker.internal:9000"