From 1f1f6c17a646aa3ea0aab5c468b1cfdf6d8e0628 Mon Sep 17 00:00:00 2001 From: dxin Date: Wed, 26 Nov 2025 18:02:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BA=86java=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E7=A7=81=E6=9C=8D=E6=9E=84=E5=BB=BA=E5=90=8E=E7=9A=84?= =?UTF-8?q?=E6=B5=81=E6=B0=B4=E7=BA=BF=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SCM/旧的二进制部署形式/Jenkinsfile | 255 +++++++++++ .../admin.jar/prod_fly_moon_admin_new.groovy | 265 ++++++++++++ .../admin.jar/sit_fly_moon_admin_new.groovy | 265 ++++++++++++ .../agent.jar/prod_flymoon_agent_new.groovy | 397 ++++++++++++++++++ .../agent.jar/sit_flymoon_agent_new.groovy | 265 ++++++++++++ .../payment.jar/prod_flymoon_payment_new.groovy | 265 ++++++++++++ .../payment.jar/sit_flymoon_payment_new.groovy | 265 ++++++++++++ SCM/旧的二进制部署形式/test.groovy | 72 ++++ 8 files changed, 2049 insertions(+) create mode 100644 SCM/旧的二进制部署形式/Jenkinsfile create mode 100644 SCM/旧的二进制部署形式/admin.jar/prod_fly_moon_admin_new.groovy create mode 100644 SCM/旧的二进制部署形式/admin.jar/sit_fly_moon_admin_new.groovy create mode 100644 SCM/旧的二进制部署形式/agent.jar/prod_flymoon_agent_new.groovy create mode 100644 SCM/旧的二进制部署形式/agent.jar/sit_flymoon_agent_new.groovy create mode 100644 SCM/旧的二进制部署形式/payment.jar/prod_flymoon_payment_new.groovy create mode 100644 SCM/旧的二进制部署形式/payment.jar/sit_flymoon_payment_new.groovy create mode 100644 SCM/旧的二进制部署形式/test.groovy diff --git a/SCM/旧的二进制部署形式/Jenkinsfile b/SCM/旧的二进制部署形式/Jenkinsfile new file mode 100644 index 0000000..9c4c68b --- /dev/null +++ b/SCM/旧的二进制部署形式/Jenkinsfile @@ -0,0 +1,255 @@ +pipeline { + agent any + + tools { + maven 'mvn3.8.8' + jdk 'jdk21' + } + + parameters { + choice( + name: 'ENV', + choices: ['sit'], + description: '部署环境' + ) + gitParameter( + branchFilter: 'origin/(.*)', + defaultValue: 'code/1118_java_re', + name: 'GIT_BRANCH', + type: 'PT_BRANCH_TAG', + selectedValue: 'DEFAULT', + sortMode: 'NONE', + description: '选择代码分支: ', + quickFilterEnabled: true, + tagFilter: '*', + listSize: "1" + ) + string( + name: 'TARGET_JDK_HOME', + defaultValue: '/data/jdk-21.0.7', + description: '目标机器 JDK 路径' + ) + string( + name: 'TARGET_HOST', + defaultValue: '192.168.70.18', + description: '目标服务器地址' + ) + string( + name: 'DEPLOY_DIR', + defaultValue: '/data/webapps/flymoon_agent', + description: '部署目录' + ) + } + + environment { + APP_NAME = 'flymoon-agent' + GIT_REPO = 'http://172.24.16.20/root/fly_moon_agent.git' + GIT_CREDS = 'fly_gitlab_auth' + BUILD_DIR = "${WORKSPACE}/flymoon-agent-provider" + } + + stages { + stage('01-代码检出') { + steps { + script { + echo "==========================================" + echo "Git 仓库: ${env.GIT_REPO}" + echo "分支: ${params.GIT_BRANCH}" + echo "==========================================" + + git branch: "${params.GIT_BRANCH}", + credentialsId: 'fly_gitlab_auth', + url: "${env.GIT_REPO}" + } + } + } + + stage('02-Maven 构建') { + steps { + echo "==========================================" + echo "执行 Maven 打包..." + echo "构建目录: ${env.BUILD_DIR}" + echo "==========================================" + + sh """ + cd ${env.BUILD_DIR}/bin/ + sh package.sh + """ + } + } + + stage('03-上传构建产物') { + steps { + echo "==========================================" + echo "上传到: ${params.TARGET_HOST}:${params.DEPLOY_DIR}" + echo "==========================================" + + sh """ + scp ${env.BUILD_DIR}/target/${env.APP_NAME}.jar \ + ${params.TARGET_HOST}:${params.DEPLOY_DIR}/${env.APP_NAME}-new.jar + + scp ${env.BUILD_DIR}/bin/start.sh \ + ${params.TARGET_HOST}:${params.DEPLOY_DIR}/ + + scp ${env.BUILD_DIR}/bin/stop.sh \ + ${params.TARGET_HOST}:${params.DEPLOY_DIR}/ + """ + } + } + + stage('04-备份与替换') { + steps { + echo "==========================================" + echo "备份旧版本并替换 JAR 包..." + echo "==========================================" + + sh """ + ssh ${params.TARGET_HOST} ' + cd ${params.DEPLOY_DIR} && + + if [ -f ${env.APP_NAME}.jar ]; then + echo "备份: ${env.APP_NAME}.jar -> ${env.APP_NAME}-backup.jar" + cp ${env.APP_NAME}.jar ${env.APP_NAME}-backup.jar + fi && + + echo "替换: ${env.APP_NAME}-new.jar -> ${env.APP_NAME}.jar" + mv ${env.APP_NAME}-new.jar ${env.APP_NAME}.jar && + + echo "设置脚本执行权限" + chmod +x start.sh stop.sh && + + echo "JAR 替换完成" + ' + """ + } + } + + stage('05-停止旧服务') { + steps { + echo "==========================================" + echo "停止旧版本服务..." + echo "==========================================" + + sh """ + ssh ${params.TARGET_HOST} ' + cd ${params.DEPLOY_DIR} && + + if [ -f stop.sh ]; then + sh stop.sh || true + echo "等待服务完全停止..." + sleep 3 + else + echo "未找到 stop.sh,跳过停止步骤" + fi + ' + """ + } + } + + stage('06-启动新服务') { + steps { + echo "==========================================" + echo "启动新版本服务..." + echo "环境: ${params.ENV}" + echo "JDK: ${params.TARGET_JDK_HOME}" + echo "==========================================" + + sh """ + ssh ${params.TARGET_HOST} ' + cd ${params.DEPLOY_DIR} && + + echo "执行启动命令: sh start.sh ${params.ENV} ${params.TARGET_JDK_HOME}" + sh start.sh ${params.ENV} ${params.TARGET_JDK_HOME} && + + echo "等待启动完成..." + sleep 5 && + + if [ -f app.pid ]; then + PID=\$(cat app.pid) + if ps -p \$PID > /dev/null 2>&1; then + echo "✅ 服务启动成功 (PID: \$PID)" + else + echo "❌ 服务启动失败" + tail -50 logs/${env.APP_NAME}/app.log + exit 1 + fi + else + echo "❌ PID 文件不存在" + exit 1 + fi + ' + """ + } + } + + stage('07-健康检查') { + steps { + echo "==========================================" + echo "执行服务健康检查..." + echo "==========================================" + + sh """ + ssh ${params.TARGET_HOST} ' + cd ${params.DEPLOY_DIR} && + + echo "等待服务完全启动..." + sleep 10 && + + if [ -f app.pid ]; then + PID=\$(cat app.pid) + + if ps -p \$PID > /dev/null 2>&1; then + echo "✅ 服务运行正常 (PID: \$PID)" + echo "" + echo "==================== 最新日志 ====================" + tail -n 30 logs/${env.APP_NAME}/app.log || echo "日志文件暂未生成" + echo "==================================================" + else + echo "❌ 服务进程已退出" + tail -100 logs/${env.APP_NAME}/app.log + exit 1 + fi + else + echo "❌ PID 文件不存在" + exit 1 + fi + ' + """ + } + } + } + + post { + success { + echo "" + echo "==================================================" + echo " ✅ 部署成功 " + echo "==================================================" + echo "环境: ${params.ENV}" + echo "服务器: ${params.TARGET_HOST}" + echo "部署路径: ${params.DEPLOY_DIR}" + echo "JDK 路径: ${params.TARGET_JDK_HOME}" + echo "Git 分支: ${params.GIT_BRANCH}" + echo "==================================================" + } + + failure { + echo "" + echo "==================================================" + echo " ❌ 部署失败 " + echo "==================================================" + echo "请检查上述日志排查问题" + echo "常见问题:" + echo "1. 检查目标服务器 JDK 路径是否正确" + echo "2. 检查 SSH 连接是否正常" + echo "3. 查看应用启动日志" + echo "==================================================" + } + + always { + echo "" + echo "流水线状态: ${currentBuild.currentResult}" + echo "执行耗时: ${currentBuild.durationString}" + } + } +} diff --git a/SCM/旧的二进制部署形式/admin.jar/prod_fly_moon_admin_new.groovy b/SCM/旧的二进制部署形式/admin.jar/prod_fly_moon_admin_new.groovy new file mode 100644 index 0000000..4acebf5 --- /dev/null +++ b/SCM/旧的二进制部署形式/admin.jar/prod_fly_moon_admin_new.groovy @@ -0,0 +1,265 @@ +pipeline { + agent any + + tools { + maven 'mvn3.8.8' + jdk 'jdk21' + } + + parameters { + choice( + name: 'ENV', + choices: ['sit'], + description: '部署环境' + ) + gitParameter( + branchFilter: 'origin/(.*)', + defaultValue: 'code/1118_java_re', + name: 'GIT_BRANCH', + type: 'PT_BRANCH_TAG', + selectedValue: 'DEFAULT', + sortMode: 'NONE', + description: '选择代码分支: ', + quickFilterEnabled: true, + tagFilter: '*', + listSize: "5" + ) + string( + name: 'TARGET_JDK_HOME', + defaultValue: '/data/jdk-21.0.7', + description: '目标机器 JDK 路径' + ) + string( + name: 'TARGET_HOST', + defaultValue: '43.153.21.64', + description: '目标服务器地址' + ) + string( + name: 'DEPLOY_DIR', + defaultValue: '/data/webapps/flymoon_admin', + description: '部署目录' + ) + } + + environment { + APP_NAME = 'flymoon-admin' + GIT_REPO = 'http://172.24.16.20/root/fly_moon_admin.git' + GIT_CREDS = 'fly_gitlab_auth' + BUILD_DIR = "${WORKSPACE}" + } + + stages { + stage('代码检出') { + steps { + script { + echo "==========================================" + echo "Git 仓库: ${env.GIT_REPO}" + echo "分支: ${params.GIT_BRANCH}" + echo "==========================================" + + git branch: "${params.GIT_BRANCH}", + credentialsId: "${env.GIT_CREDS}", + url: "${env.GIT_REPO}" + } + } + } + + stage('Maven 构建') { + steps { + echo "==========================================" + echo "执行 Maven 打包..." + echo "构建目录: ${env.BUILD_DIR}" + echo "==========================================" + + sh """ + cd ${env.BUILD_DIR}/bin/ + sh package.sh + """ + } + } + + stage('上传产物') { + steps { + echo "==========================================" + echo "上传到: ${params.TARGET_HOST}:${params.DEPLOY_DIR}" + echo "==========================================" + + sh """ + scp ${env.BUILD_DIR}/target/${env.APP_NAME}.jar \ + ${params.TARGET_HOST}:${params.DEPLOY_DIR}/${env.APP_NAME}-new.jar + + scp ${env.BUILD_DIR}/bin/start.sh \ + ${params.TARGET_HOST}:${params.DEPLOY_DIR}/ + + scp ${env.BUILD_DIR}/bin/stop.sh \ + ${params.TARGET_HOST}:${params.DEPLOY_DIR}/ + """ + } + } + + stage('备份与替换') { + steps { + echo "==========================================" + echo "备份旧版本并替换 JAR 包..." + echo "==========================================" + + sh """ + ssh ${params.TARGET_HOST} ' + cd ${params.DEPLOY_DIR} && + + if [ -f ${env.APP_NAME}.jar ]; then + echo "[INFO] 备份: ${env.APP_NAME}.jar -> ${env.APP_NAME}-backup.jar" + cp ${env.APP_NAME}.jar ${env.APP_NAME}-backup.jar + fi && + + echo "[INFO] 替换: ${env.APP_NAME}-new.jar -> ${env.APP_NAME}.jar" + mv ${env.APP_NAME}-new.jar ${env.APP_NAME}.jar && + + echo "[INFO] 设置脚本执行权限" + chmod +x start.sh stop.sh && + + echo "[SUCCESS] JAR 替换完成" + ' + """ + } + } + + stage('停止旧服务') { + steps { + echo "==========================================" + echo "停止旧版本服务..." + echo "==========================================" + + sh """ + ssh ${params.TARGET_HOST} ' + cd ${params.DEPLOY_DIR} && + + if [ -f stop.sh ]; then + sh stop.sh || true + echo "[INFO] 等待服务完全停止..." + sleep 3 + else + echo "[WARN] 未找到 stop.sh,跳过停止步骤" + fi + ' + """ + } + } + + stage('启动新服务') { + steps { + echo "==========================================" + echo "启动新版本服务..." + echo "环境: ${params.ENV}" + echo "JDK: ${params.TARGET_JDK_HOME}" + echo "==========================================" + + sh """ + ssh ${params.TARGET_HOST} ' + cd ${params.DEPLOY_DIR} && + + echo "[INFO] 执行启动命令: sh start.sh ${params.ENV} ${params.TARGET_JDK_HOME}" + sh start.sh ${params.ENV} ${params.TARGET_JDK_HOME} && + + echo "[INFO] 等待启动完成..." + sleep 5 && + + if [ -f app.pid ]; then + PID=\$(cat app.pid) + if ps -p \$PID > /dev/null 2>&1; then + echo "[SUCCESS] 服务启动成功 (PID: \$PID)" + else + echo "[ERROR] 服务启动失败" + tail -50 /root/logs/${env.APP_NAME}/app.log + exit 1 + fi + else + echo "[ERROR] PID 文件不存在" + exit 1 + fi + ' + """ + } + } + + stage('健康检查') { + steps { + echo "==========================================" + echo "执行服务健康检查..." + echo "==========================================" + + sh """ + ssh ${params.TARGET_HOST} ' + cd ${params.DEPLOY_DIR} && + + echo "[INFO] 等待服务完全启动..." + sleep 10 && + + if [ -f app.pid ]; then + PID=\$(cat app.pid) + + if ps -p \$PID > /dev/null 2>&1; then + echo "[SUCCESS] 服务运行正常 (PID: \$PID)" + echo "" + + # 显示进程信息 + echo "==================== 进程信息 ====================" + ps -p \$PID -o pid,etime,cmd --no-headers + echo "" + + # 显示日志位置 + echo "==================== 日志位置 ====================" + echo "[INFO] 管道日志: /root/logs/${env.APP_NAME}/app.log" + echo "[INFO] 应用日志目录: ${params.DEPLOY_DIR}/logs" + echo "==================================================" + else + echo "[ERROR] 服务进程已退出" + echo "==================== 错误日志 ====================" + tail -100 /root/logs/${env.APP_NAME}/app.log + echo "==================================================" + exit 1 + fi + else + echo "[ERROR] PID 文件不存在" + exit 1 + fi + ' + """ + } + } + } + + post { + success { + echo "" + echo "==================================================" + echo " 部署成功 " + echo "==================================================" + echo "环境: ${params.ENV}" + echo "服务器: ${params.TARGET_HOST}" + echo "部署路径: ${params.DEPLOY_DIR}" + echo "JDK 路径: ${params.TARGET_JDK_HOME}" + echo "Git 分支: ${params.GIT_BRANCH}" + echo "==================================================" + } + + failure { + echo "" + echo "==================================================" + echo " 部署失败 " + echo "==================================================" + echo "请检查上述日志排查问题" + echo "常见问题:" + echo "1. 检查目标服务器 JDK 路径是否正确" + echo "2. 检查 SSH 连接是否正常" + echo "3. 查看应用启动日志" + echo "==================================================" + } + + always { + echo "" + echo "流水线状态: ${currentBuild.currentResult}" + echo "执行耗时: ${currentBuild.durationString}" + } + } +} diff --git a/SCM/旧的二进制部署形式/admin.jar/sit_fly_moon_admin_new.groovy b/SCM/旧的二进制部署形式/admin.jar/sit_fly_moon_admin_new.groovy new file mode 100644 index 0000000..24f10e9 --- /dev/null +++ b/SCM/旧的二进制部署形式/admin.jar/sit_fly_moon_admin_new.groovy @@ -0,0 +1,265 @@ +pipeline { + agent any + + tools { + maven 'mvn3.8.8' + jdk 'jdk21' + } + + parameters { + choice( + name: 'ENV', + choices: ['sit'], + description: '部署环境' + ) + gitParameter( + branchFilter: 'origin/(.*)', + defaultValue: 'code/1118_java_re', + name: 'GIT_BRANCH', + type: 'PT_BRANCH_TAG', + selectedValue: 'DEFAULT', + sortMode: 'NONE', + description: '选择代码分支: ', + quickFilterEnabled: true, + tagFilter: '*', + listSize: "1" + ) + string( + name: 'TARGET_JDK_HOME', + defaultValue: '/data/jdk-21.0.7', + description: '目标机器 JDK 路径' + ) + string( + name: 'TARGET_HOST', + defaultValue: '192.168.70.18', + description: '目标服务器地址' + ) + string( + name: 'DEPLOY_DIR', + defaultValue: '/data/webapps/flymoon_admin', + description: '部署目录' + ) + } + + environment { + APP_NAME = 'flymoon-admin' + GIT_REPO = 'http://172.24.16.20/root/fly_moon_admin.git' + GIT_CREDS = 'fly_gitlab_auth' + BUILD_DIR = "${WORKSPACE}" + } + + stages { + stage('01-代码检出') { + steps { + script { + echo "==========================================" + echo "Git 仓库: ${env.GIT_REPO}" + echo "分支: ${params.GIT_BRANCH}" + echo "==========================================" + + git branch: "${params.GIT_BRANCH}", + credentialsId: "${env.GIT_CREDS}", + url: "${env.GIT_REPO}" + } + } + } + + stage('02-Maven 构建') { + steps { + echo "==========================================" + echo "执行 Maven 打包..." + echo "构建目录: ${env.BUILD_DIR}" + echo "==========================================" + + sh """ + cd ${env.BUILD_DIR}/bin/ + sh package.sh + """ + } + } + + stage('03-上传构建产物') { + steps { + echo "==========================================" + echo "上传到: ${params.TARGET_HOST}:${params.DEPLOY_DIR}" + echo "==========================================" + + sh """ + scp ${env.BUILD_DIR}/target/${env.APP_NAME}.jar \ + ${params.TARGET_HOST}:${params.DEPLOY_DIR}/${env.APP_NAME}-new.jar + + scp ${env.BUILD_DIR}/bin/start.sh \ + ${params.TARGET_HOST}:${params.DEPLOY_DIR}/ + + scp ${env.BUILD_DIR}/bin/stop.sh \ + ${params.TARGET_HOST}:${params.DEPLOY_DIR}/ + """ + } + } + + stage('04-备份与替换') { + steps { + echo "==========================================" + echo "备份旧版本并替换 JAR 包..." + echo "==========================================" + + sh """ + ssh ${params.TARGET_HOST} ' + cd ${params.DEPLOY_DIR} && + + if [ -f ${env.APP_NAME}.jar ]; then + echo "[INFO] 备份: ${env.APP_NAME}.jar -> ${env.APP_NAME}-backup.jar" + cp ${env.APP_NAME}.jar ${env.APP_NAME}-backup.jar + fi && + + echo "[INFO] 替换: ${env.APP_NAME}-new.jar -> ${env.APP_NAME}.jar" + mv ${env.APP_NAME}-new.jar ${env.APP_NAME}.jar && + + echo "[INFO] 设置脚本执行权限" + chmod +x start.sh stop.sh && + + echo "[SUCCESS] JAR 替换完成" + ' + """ + } + } + + stage('05-停止旧服务') { + steps { + echo "==========================================" + echo "停止旧版本服务..." + echo "==========================================" + + sh """ + ssh ${params.TARGET_HOST} ' + cd ${params.DEPLOY_DIR} && + + if [ -f stop.sh ]; then + sh stop.sh || true + echo "[INFO] 等待服务完全停止..." + sleep 3 + else + echo "[WARN] 未找到 stop.sh,跳过停止步骤" + fi + ' + """ + } + } + + stage('06-启动新服务') { + steps { + echo "==========================================" + echo "启动新版本服务..." + echo "环境: ${params.ENV}" + echo "JDK: ${params.TARGET_JDK_HOME}" + echo "==========================================" + + sh """ + ssh ${params.TARGET_HOST} ' + cd ${params.DEPLOY_DIR} && + + echo "[INFO] 执行启动命令: sh start.sh ${params.ENV} ${params.TARGET_JDK_HOME}" + sh start.sh ${params.ENV} ${params.TARGET_JDK_HOME} && + + echo "[INFO] 等待启动完成..." + sleep 5 && + + if [ -f app.pid ]; then + PID=\$(cat app.pid) + if ps -p \$PID > /dev/null 2>&1; then + echo "[SUCCESS] 服务启动成功 (PID: \$PID)" + else + echo "[ERROR] 服务启动失败" + tail -50 /root/logs/${env.APP_NAME}/app.log + exit 1 + fi + else + echo "[ERROR] PID 文件不存在" + exit 1 + fi + ' + """ + } + } + + stage('07-健康检查') { + steps { + echo "==========================================" + echo "执行服务健康检查..." + echo "==========================================" + + sh """ + ssh ${params.TARGET_HOST} ' + cd ${params.DEPLOY_DIR} && + + echo "[INFO] 等待服务完全启动..." + sleep 10 && + + if [ -f app.pid ]; then + PID=\$(cat app.pid) + + if ps -p \$PID > /dev/null 2>&1; then + echo "[SUCCESS] 服务运行正常 (PID: \$PID)" + echo "" + + # 显示进程信息 + echo "==================== 进程信息 ====================" + ps -p \$PID -o pid,etime,cmd --no-headers + echo "" + + # 显示日志位置 + echo "==================== 日志位置 ====================" + echo "[INFO] 管道日志: /root/logs/${env.APP_NAME}/app.log" + echo "[INFO] 应用日志目录: ${params.DEPLOY_DIR}/logs" + echo "==================================================" + else + echo "[ERROR] 服务进程已退出" + echo "==================== 错误日志 ====================" + tail -100 /root/logs/${env.APP_NAME}/app.log + echo "==================================================" + exit 1 + fi + else + echo "[ERROR] PID 文件不存在" + exit 1 + fi + ' + """ + } + } + } + + post { + success { + echo "" + echo "==================================================" + echo " 部署成功 " + echo "==================================================" + echo "环境: ${params.ENV}" + echo "服务器: ${params.TARGET_HOST}" + echo "部署路径: ${params.DEPLOY_DIR}" + echo "JDK 路径: ${params.TARGET_JDK_HOME}" + echo "Git 分支: ${params.GIT_BRANCH}" + echo "==================================================" + } + + failure { + echo "" + echo "==================================================" + echo " 部署失败 " + echo "==================================================" + echo "请检查上述日志排查问题" + echo "常见问题:" + echo "1. 检查目标服务器 JDK 路径是否正确" + echo "2. 检查 SSH 连接是否正常" + echo "3. 查看应用启动日志" + echo "==================================================" + } + + always { + echo "" + echo "流水线状态: ${currentBuild.currentResult}" + echo "执行耗时: ${currentBuild.durationString}" + } + } +} diff --git a/SCM/旧的二进制部署形式/agent.jar/prod_flymoon_agent_new.groovy b/SCM/旧的二进制部署形式/agent.jar/prod_flymoon_agent_new.groovy new file mode 100644 index 0000000..a7f2c64 --- /dev/null +++ b/SCM/旧的二进制部署形式/agent.jar/prod_flymoon_agent_new.groovy @@ -0,0 +1,397 @@ +pipeline { + agent any + + tools { + maven 'mvn3.8.8' + jdk 'jdk21' + } + + parameters { + choice( + name: 'ENV', + choices: ['prod'], + description: '部署环境' + ) + gitParameter( + branchFilter: 'origin/(.*)', + defaultValue: 'master', + name: 'GIT_BRANCH', + type: 'PT_BRANCH_TAG', + selectedValue: 'DEFAULT', + sortMode: 'NONE', + description: '选择代码分支: ', + quickFilterEnabled: true, + tagFilter: '*', + listSize: "5" + ) + } + + environment { + APP_NAME = 'flymoon-agent' + GIT_REPO = 'http://172.24.16.20/root/fly_moon_agent.git' + GIT_CREDS = 'fly_gitlab_auth' + BUILD_DIR = "${WORKSPACE}/flymoon-agent-provider" + TARGET_JDK_HOME = "/data/jdk-21.0.7" + TARGET_HOST_A = "43.153.98.191" + TARGET_HOST_B = "49.51.41.243" + DEPLOY_DIR = "/data/webapps/flymoon_agent" + } + + stages { + stage('代码检出') { + steps { + script { + echo "==========================================" + echo "Git 仓库: ${env.GIT_REPO}" + echo "分支: ${params.GIT_BRANCH}" + echo "==========================================" + + git branch: "${params.GIT_BRANCH}", + credentialsId: "${env.GIT_CREDS}", + url: "${env.GIT_REPO}" + } + } + } + + stage('Maven 构建') { + steps { + echo "==========================================" + echo "执行 Maven 打包..." + echo "构建目录: ${env.BUILD_DIR}" + echo "==========================================" + + sh """ + cd ${env.BUILD_DIR}/bin/ + sh package.sh + """ + } + } + + stage('上传构建产物A') { + steps { + echo "==========================================" + echo "上传到: ${env.TARGET_HOST_A}:${env.DEPLOY_DIR}" + echo "==========================================" + + sh """ + scp ${env.BUILD_DIR}/target/${env.APP_NAME}.jar \ + ${env.TARGET_HOST_A}:${env.DEPLOY_DIR}/${env.APP_NAME}-new.jar + + scp ${env.BUILD_DIR}/bin/start.sh \ + ${env.TARGET_HOST_A}:${env.DEPLOY_DIR}/ + + scp ${env.BUILD_DIR}/bin/stop.sh \ + ${env.TARGET_HOST_A}:${env.DEPLOY_DIR}/ + """ + } + } + + stage('上传构建产物B') { + steps { + echo "==========================================" + echo "上传到: ${env.TARGET_HOST_B}:${env.DEPLOY_DIR}" + echo "==========================================" + + sh """ + scp ${env.BUILD_DIR}/target/${env.APP_NAME}.jar \ + ${env.TARGET_HOST_B}:${env.DEPLOY_DIR}/${env.APP_NAME}-new.jar + + scp ${env.BUILD_DIR}/bin/start.sh \ + ${env.TARGET_HOST_B}:${env.DEPLOY_DIR}/ + + scp ${env.BUILD_DIR}/bin/stop.sh \ + ${env.TARGET_HOST_B}:${env.DEPLOY_DIR}/ + """ + } + } + + + stage('备份与替换') { + steps { + echo "==========================================" + echo "备份旧版本并替换 JAR 包..." + echo "==========================================" + + sh """ + ssh ${env.TARGET_HOST_A} ' + cd ${env.DEPLOY_DIR} && + + if [ -f ${env.APP_NAME}.jar ]; then + echo "[INFO] 备份: ${env.APP_NAME}.jar -> ${env.APP_NAME}-backup.jar" + cp ${env.APP_NAME}.jar ${env.APP_NAME}-backup.jar + fi && + + echo "[INFO] 替换: ${env.APP_NAME}-new.jar -> ${env.APP_NAME}.jar" + mv ${env.APP_NAME}-new.jar ${env.APP_NAME}.jar && + + echo "[INFO] 设置脚本执行权限" + chmod +x start.sh stop.sh && + + echo "[SUCCESS] ${env.TARGET_HOST_A} JAR 替换完成" + ' + """ + + sh """ + ssh ${env.TARGET_HOST_B} ' + cd ${env.DEPLOY_DIR} && + + if [ -f ${env.APP_NAME}.jar ]; then + echo "[INFO] 备份: ${env.APP_NAME}.jar -> ${env.APP_NAME}-backup.jar" + cp ${env.APP_NAME}.jar ${env.APP_NAME}-backup.jar + fi && + + echo "[INFO] 替换: ${env.APP_NAME}-new.jar -> ${env.APP_NAME}.jar" + mv ${env.APP_NAME}-new.jar ${env.APP_NAME}.jar && + + echo "[INFO] 设置脚本执行权限" + chmod +x start.sh stop.sh && + + echo "[SUCCESS] ${env.TARGET_HOST_B} JAR 替换完成" + ' + """ + } + } + + stage('停止旧服务A') { + steps { + echo "==========================================" + echo "停止旧版本服务A..." + echo "==========================================" + + sh """ + ssh ${env.TARGET_HOST_A} ' + cd ${env.DEPLOY_DIR} && + + if [ -f stop.sh ]; then + sh stop.sh || true + echo "[INFO] 等待服务完全停止..." + sleep 3 + else + echo "[WARN] 未找到 stop.sh,跳过停止步骤" + fi + ' + """ + } + } + + stage('启动新服务A') { + steps { + echo "==========================================" + echo "启动新版本服务..." + echo "环境: ${params.ENV}" + echo "JDK: ${env.TARGET_JDK_HOME}" + echo "==========================================" + + sh """ + ssh ${env.TARGET_HOST_A} ' + cd ${env.DEPLOY_DIR} && + + echo "[INFO] 执行启动命令: sh start.sh ${params.ENV} ${env.TARGET_JDK_HOME}" + sh start.sh ${params.ENV} ${env.TARGET_JDK_HOME} && + + echo "[INFO] 等待启动完成..." + sleep 5 && + + if [ -f app.pid ]; then + PID=\$(cat app.pid) + if ps -p \$PID > /dev/null 2>&1; then + echo "[SUCCESS] 服务启动成功 (PID: \$PID)" + else + echo "[ERROR] 服务启动失败" + tail -50 /root/logs/${env.APP_NAME}/app.log + exit 1 + fi + else + echo "[ERROR] PID 文件不存在" + exit 1 + fi + ' + """ + } + } + + stage('健康检查A') { + steps { + echo "==========================================" + echo "执行服务健康检查..." + echo "==========================================" + + sh """ + ssh ${env.TARGET_HOST_A} ' + cd ${env.DEPLOY_DIR} && + + echo "[INFO] 等待服务完全启动..." + sleep 10 && + + if [ -f app.pid ]; then + PID=\$(cat app.pid) + + if ps -p \$PID > /dev/null 2>&1; then + echo "[SUCCESS] 服务运行正常 (PID: \$PID)" + echo "" + + # 显示进程信息 + echo "==================== 进程信息 ====================" + ps -p \$PID -o pid,etime,cmd --no-headers + echo "" + + # 显示日志位置 + echo "==================== 日志位置 ====================" + echo "[INFO] 管道日志: /root/logs/${env.APP_NAME}/app.log" + echo "[INFO] 应用日志目录: ${env.DEPLOY_DIR}/logs" + echo "==================================================" + else + echo "[ERROR] 服务进程已退出" + echo "==================== 错误日志 ====================" + tail -100 /root/logs/${env.APP_NAME}/app.log + echo "==================================================" + exit 1 + fi + else + echo "[ERROR] PID 文件不存在" + exit 1 + fi + ' + """ + } + } + + stage('停止旧服务B') { + steps { + echo "==========================================" + echo "停止旧版本服务B..." + echo "==========================================" + + sh """ + ssh ${env.TARGET_HOST_B} ' + cd ${env.DEPLOY_DIR} && + + if [ -f stop.sh ]; then + sh stop.sh || true + echo "[INFO] 等待服务完全停止..." + sleep 3 + else + echo "[WARN] 未找到 stop.sh,跳过停止步骤" + fi + ' + """ + } + } + + stage('启动新服务A') { + steps { + echo "==========================================" + echo "启动新版本服务..." + echo "环境: ${params.ENV}" + echo "JDK: ${env.TARGET_JDK_HOME}" + echo "==========================================" + + sh """ + ssh ${env.TARGET_HOST_B} ' + cd ${env.DEPLOY_DIR} && + + echo "[INFO] 执行启动命令: sh start.sh ${params.ENV} ${env.TARGET_JDK_HOME}" + sh start.sh ${params.ENV} ${env.TARGET_JDK_HOME} && + + echo "[INFO] 等待启动完成..." + sleep 5 && + + if [ -f app.pid ]; then + PID=\$(cat app.pid) + if ps -p \$PID > /dev/null 2>&1; then + echo "[SUCCESS] 服务启动成功 (PID: \$PID)" + else + echo "[ERROR] 服务启动失败" + tail -50 /root/logs/${env.APP_NAME}/app.log + exit 1 + fi + else + echo "[ERROR] PID 文件不存在" + exit 1 + fi + ' + """ + } + } + + stage('健康检查A') { + steps { + echo "==========================================" + echo "执行服务健康检查..." + echo "==========================================" + + sh """ + ssh ${env.TARGET_HOST_B} ' + cd ${env.DEPLOY_DIR} && + + echo "[INFO] 等待服务完全启动..." + sleep 10 && + + if [ -f app.pid ]; then + PID=\$(cat app.pid) + + if ps -p \$PID > /dev/null 2>&1; then + echo "[SUCCESS] 服务运行正常 (PID: \$PID)" + echo "" + + # 显示进程信息 + echo "==================== 进程信息 ====================" + ps -p \$PID -o pid,etime,cmd --no-headers + echo "" + + # 显示日志位置 + echo "==================== 日志位置 ====================" + echo "[INFO] 管道日志: /root/logs/${env.APP_NAME}/app.log" + echo "[INFO] 应用日志目录: ${env.DEPLOY_DIR}/logs" + echo "==================================================" + else + echo "[ERROR] 服务进程已退出" + echo "==================== 错误日志 ====================" + tail -100 /root/logs/${env.APP_NAME}/app.log + echo "==================================================" + exit 1 + fi + else + echo "[ERROR] PID 文件不存在" + exit 1 + fi + ' + """ + } + } + + } + + post { + success { + echo "" + echo "==================================================" + echo " 部署成功 " + echo "==================================================" + echo "环境: ${params.ENV}" + echo "部署路径: ${env.DEPLOY_DIR}" + echo "JDK 路径: ${env.TARGET_JDK_HOME}" + echo "Git 分支: ${params.GIT_BRANCH}" + echo "==================================================" + } + + failure { + echo "" + echo "==================================================" + echo " 部署失败 " + echo "==================================================" + echo "请检查上述日志排查问题" + echo "常见问题:" + echo "1. 检查目标服务器 JDK 路径是否正确" + echo "2. 检查 SSH 连接是否正常" + echo "3. 查看应用启动日志" + echo "==================================================" + } + + always { + echo "" + echo "流水线状态: ${currentBuild.currentResult}" + echo "执行耗时: ${currentBuild.durationString}" + } + } +} diff --git a/SCM/旧的二进制部署形式/agent.jar/sit_flymoon_agent_new.groovy b/SCM/旧的二进制部署形式/agent.jar/sit_flymoon_agent_new.groovy new file mode 100644 index 0000000..25b9e4d --- /dev/null +++ b/SCM/旧的二进制部署形式/agent.jar/sit_flymoon_agent_new.groovy @@ -0,0 +1,265 @@ +pipeline { + agent any + + tools { + maven 'mvn3.8.8' + jdk 'jdk21' + } + + parameters { + choice( + name: 'ENV', + choices: ['sit'], + description: '部署环境' + ) + gitParameter( + branchFilter: 'origin/(.*)', + defaultValue: 'code/1118_java_re', + name: 'GIT_BRANCH', + type: 'PT_BRANCH_TAG', + selectedValue: 'DEFAULT', + sortMode: 'NONE', + description: '选择代码分支: ', + quickFilterEnabled: true, + tagFilter: '*', + listSize: "1" + ) + string( + name: 'TARGET_JDK_HOME', + defaultValue: '/data/jdk-21.0.7', + description: '目标机器 JDK 路径' + ) + string( + name: 'TARGET_HOST', + defaultValue: '192.168.70.18', + description: '目标服务器地址' + ) + string( + name: 'DEPLOY_DIR', + defaultValue: '/data/webapps/flymoon_agent', + description: '部署目录' + ) + } + + environment { + APP_NAME = 'flymoon-agent' + GIT_REPO = 'http://172.24.16.20/root/fly_moon_agent.git' + GIT_CREDS = 'fly_gitlab_auth' + BUILD_DIR = "${WORKSPACE}/flymoon-agent-provider" + } + + stages { + stage('01-代码检出') { + steps { + script { + echo "==========================================" + echo "Git 仓库: ${env.GIT_REPO}" + echo "分支: ${params.GIT_BRANCH}" + echo "==========================================" + + git branch: "${params.GIT_BRANCH}", + credentialsId: "${env.GIT_CREDS}", + url: "${env.GIT_REPO}" + } + } + } + + stage('02-Maven 构建') { + steps { + echo "==========================================" + echo "执行 Maven 打包..." + echo "构建目录: ${env.BUILD_DIR}" + echo "==========================================" + + sh """ + cd ${env.BUILD_DIR}/bin/ + sh package.sh + """ + } + } + + stage('03-上传构建产物') { + steps { + echo "==========================================" + echo "上传到: ${params.TARGET_HOST}:${params.DEPLOY_DIR}" + echo "==========================================" + + sh """ + scp ${env.BUILD_DIR}/target/${env.APP_NAME}.jar \ + ${params.TARGET_HOST}:${params.DEPLOY_DIR}/${env.APP_NAME}-new.jar + + scp ${env.BUILD_DIR}/bin/start.sh \ + ${params.TARGET_HOST}:${params.DEPLOY_DIR}/ + + scp ${env.BUILD_DIR}/bin/stop.sh \ + ${params.TARGET_HOST}:${params.DEPLOY_DIR}/ + """ + } + } + + stage('04-备份与替换') { + steps { + echo "==========================================" + echo "备份旧版本并替换 JAR 包..." + echo "==========================================" + + sh """ + ssh ${params.TARGET_HOST} ' + cd ${params.DEPLOY_DIR} && + + if [ -f ${env.APP_NAME}.jar ]; then + echo "[INFO] 备份: ${env.APP_NAME}.jar -> ${env.APP_NAME}-backup.jar" + cp ${env.APP_NAME}.jar ${env.APP_NAME}-backup.jar + fi && + + echo "[INFO] 替换: ${env.APP_NAME}-new.jar -> ${env.APP_NAME}.jar" + mv ${env.APP_NAME}-new.jar ${env.APP_NAME}.jar && + + echo "[INFO] 设置脚本执行权限" + chmod +x start.sh stop.sh && + + echo "[SUCCESS] JAR 替换完成" + ' + """ + } + } + + stage('05-停止旧服务') { + steps { + echo "==========================================" + echo "停止旧版本服务..." + echo "==========================================" + + sh """ + ssh ${params.TARGET_HOST} ' + cd ${params.DEPLOY_DIR} && + + if [ -f stop.sh ]; then + sh stop.sh || true + echo "[INFO] 等待服务完全停止..." + sleep 3 + else + echo "[WARN] 未找到 stop.sh,跳过停止步骤" + fi + ' + """ + } + } + + stage('06-启动新服务') { + steps { + echo "==========================================" + echo "启动新版本服务..." + echo "环境: ${params.ENV}" + echo "JDK: ${params.TARGET_JDK_HOME}" + echo "==========================================" + + sh """ + ssh ${params.TARGET_HOST} ' + cd ${params.DEPLOY_DIR} && + + echo "[INFO] 执行启动命令: sh start.sh ${params.ENV} ${params.TARGET_JDK_HOME}" + sh start.sh ${params.ENV} ${params.TARGET_JDK_HOME} && + + echo "[INFO] 等待启动完成..." + sleep 5 && + + if [ -f app.pid ]; then + PID=\$(cat app.pid) + if ps -p \$PID > /dev/null 2>&1; then + echo "[SUCCESS] 服务启动成功 (PID: \$PID)" + else + echo "[ERROR] 服务启动失败" + tail -50 /root/logs/${env.APP_NAME}/app.log + exit 1 + fi + else + echo "[ERROR] PID 文件不存在" + exit 1 + fi + ' + """ + } + } + + stage('07-健康检查') { + steps { + echo "==========================================" + echo "执行服务健康检查..." + echo "==========================================" + + sh """ + ssh ${params.TARGET_HOST} ' + cd ${params.DEPLOY_DIR} && + + echo "[INFO] 等待服务完全启动..." + sleep 10 && + + if [ -f app.pid ]; then + PID=\$(cat app.pid) + + if ps -p \$PID > /dev/null 2>&1; then + echo "[SUCCESS] 服务运行正常 (PID: \$PID)" + echo "" + + # 显示进程信息 + echo "==================== 进程信息 ====================" + ps -p \$PID -o pid,etime,cmd --no-headers + echo "" + + # 显示日志位置 + echo "==================== 日志位置 ====================" + echo "[INFO] 管道日志: /root/logs/${env.APP_NAME}/app.log" + echo "[INFO] 应用日志目录: ${params.DEPLOY_DIR}/logs" + echo "==================================================" + else + echo "[ERROR] 服务进程已退出" + echo "==================== 错误日志 ====================" + tail -100 /root/logs/${env.APP_NAME}/app.log + echo "==================================================" + exit 1 + fi + else + echo "[ERROR] PID 文件不存在" + exit 1 + fi + ' + """ + } + } + } + + post { + success { + echo "" + echo "==================================================" + echo " 部署成功 " + echo "==================================================" + echo "环境: ${params.ENV}" + echo "服务器: ${params.TARGET_HOST}" + echo "部署路径: ${params.DEPLOY_DIR}" + echo "JDK 路径: ${params.TARGET_JDK_HOME}" + echo "Git 分支: ${params.GIT_BRANCH}" + echo "==================================================" + } + + failure { + echo "" + echo "==================================================" + echo " 部署失败 " + echo "==================================================" + echo "请检查上述日志排查问题" + echo "常见问题:" + echo "1. 检查目标服务器 JDK 路径是否正确" + echo "2. 检查 SSH 连接是否正常" + echo "3. 查看应用启动日志" + echo "==================================================" + } + + always { + echo "" + echo "流水线状态: ${currentBuild.currentResult}" + echo "执行耗时: ${currentBuild.durationString}" + } + } +} diff --git a/SCM/旧的二进制部署形式/payment.jar/prod_flymoon_payment_new.groovy b/SCM/旧的二进制部署形式/payment.jar/prod_flymoon_payment_new.groovy new file mode 100644 index 0000000..b0fac28 --- /dev/null +++ b/SCM/旧的二进制部署形式/payment.jar/prod_flymoon_payment_new.groovy @@ -0,0 +1,265 @@ +pipeline { + agent any + + tools { + maven 'mvn3.8.8' + jdk 'jdk21' + } + + parameters { + choice( + name: 'ENV', + choices: ['prod'], + description: '部署环境' + ) + gitParameter( + branchFilter: 'origin/(.*)', + defaultValue: 'master', + name: 'GIT_BRANCH', + type: 'PT_BRANCH_TAG', + selectedValue: 'DEFAULT', + sortMode: 'NONE', + description: '选择代码分支: ', + quickFilterEnabled: true, + tagFilter: '*', + listSize: "5" + ) + string( + name: 'TARGET_JDK_HOME', + defaultValue: '/data/jdk-21.0.7', + description: '目标机器 JDK 路径' + ) + string( + name: 'TARGET_HOST', + defaultValue: '49.51.41.243', + description: '目标服务器地址' + ) + string( + name: 'DEPLOY_DIR', + defaultValue: '/data/webapps/flymoon_payment', + description: '部署目录' + ) + } + + environment { + APP_NAME = 'flymoon-payment' + GIT_REPO = 'http://172.24.16.20/root/fly_moon_payment.git' + GIT_CREDS = 'fly_gitlab_auth' + BUILD_DIR = "${WORKSPACE}/flymoon-payment-provider" + } + + stages { + stage('代码检出') { + steps { + script { + echo "==========================================" + echo "Git 仓库: ${env.GIT_REPO}" + echo "分支: ${params.GIT_BRANCH}" + echo "==========================================" + + git branch: "${params.GIT_BRANCH}", + credentialsId: "${env.GIT_CREDS}", + url: "${env.GIT_REPO}" + } + } + } + + stage('Maven 构建') { + steps { + echo "==========================================" + echo "执行 Maven 打包..." + echo "构建目录: ${env.BUILD_DIR}" + echo "==========================================" + + sh """ + cd ${env.BUILD_DIR}/bin/ + sh package.sh + """ + } + } + + stage('上传产物') { + steps { + echo "==========================================" + echo "上传到: ${params.TARGET_HOST}:${params.DEPLOY_DIR}" + echo "==========================================" + + sh """ + scp ${env.BUILD_DIR}/target/${env.APP_NAME}.jar \ + ${params.TARGET_HOST}:${params.DEPLOY_DIR}/${env.APP_NAME}-new.jar + + scp ${env.BUILD_DIR}/bin/start.sh \ + ${params.TARGET_HOST}:${params.DEPLOY_DIR}/ + + scp ${env.BUILD_DIR}/bin/stop.sh \ + ${params.TARGET_HOST}:${params.DEPLOY_DIR}/ + """ + } + } + + stage('备份与替换') { + steps { + echo "==========================================" + echo "备份旧版本并替换 JAR 包..." + echo "==========================================" + + sh """ + ssh ${params.TARGET_HOST} ' + cd ${params.DEPLOY_DIR} && + + if [ -f ${env.APP_NAME}.jar ]; then + echo "[INFO] 备份: ${env.APP_NAME}.jar -> ${env.APP_NAME}-backup.jar" + cp ${env.APP_NAME}.jar ${env.APP_NAME}-backup.jar + fi && + + echo "[INFO] 替换: ${env.APP_NAME}-new.jar -> ${env.APP_NAME}.jar" + mv ${env.APP_NAME}-new.jar ${env.APP_NAME}.jar && + + echo "[INFO] 设置脚本执行权限" + chmod +x start.sh stop.sh && + + echo "[SUCCESS] JAR 替换完成" + ' + """ + } + } + + stage('停止旧服务') { + steps { + echo "==========================================" + echo "停止旧版本服务..." + echo "==========================================" + + sh """ + ssh ${params.TARGET_HOST} ' + cd ${params.DEPLOY_DIR} && + + if [ -f stop.sh ]; then + sh stop.sh || true + echo "[INFO] 等待服务完全停止..." + sleep 3 + else + echo "[WARN] 未找到 stop.sh,跳过停止步骤" + fi + ' + """ + } + } + + stage('启动新服务') { + steps { + echo "==========================================" + echo "启动新版本服务..." + echo "环境: ${params.ENV}" + echo "JDK: ${params.TARGET_JDK_HOME}" + echo "==========================================" + + sh """ + ssh ${params.TARGET_HOST} ' + cd ${params.DEPLOY_DIR} && + + echo "[INFO] 执行启动命令: sh start.sh ${params.ENV} ${params.TARGET_JDK_HOME}" + sh start.sh ${params.ENV} ${params.TARGET_JDK_HOME} && + + echo "[INFO] 等待启动完成..." + sleep 5 && + + if [ -f app.pid ]; then + PID=\$(cat app.pid) + if ps -p \$PID > /dev/null 2>&1; then + echo "[SUCCESS] 服务启动成功 (PID: \$PID)" + else + echo "[ERROR] 服务启动失败" + tail -50 /root/logs/${env.APP_NAME}/app.log + exit 1 + fi + else + echo "[ERROR] PID 文件不存在" + exit 1 + fi + ' + """ + } + } + + stage('健康检查') { + steps { + echo "==========================================" + echo "执行服务健康检查..." + echo "==========================================" + + sh """ + ssh ${params.TARGET_HOST} ' + cd ${params.DEPLOY_DIR} && + + echo "[INFO] 等待服务完全启动..." + sleep 10 && + + if [ -f app.pid ]; then + PID=\$(cat app.pid) + + if ps -p \$PID > /dev/null 2>&1; then + echo "[SUCCESS] 服务运行正常 (PID: \$PID)" + echo "" + + # 显示进程信息 + echo "==================== 进程信息 ====================" + ps -p \$PID -o pid,etime,cmd --no-headers + echo "" + + # 显示日志位置 + echo "==================== 日志位置 ====================" + echo "[INFO] 管道日志: /root/logs/${env.APP_NAME}/app.log" + echo "[INFO] 应用日志目录: ${params.DEPLOY_DIR}/logs" + echo "==================================================" + else + echo "[ERROR] 服务进程已退出" + echo "==================== 错误日志 ====================" + tail -100 /root/logs/${env.APP_NAME}/app.log + echo "==================================================" + exit 1 + fi + else + echo "[ERROR] PID 文件不存在" + exit 1 + fi + ' + """ + } + } + } + + post { + success { + echo "" + echo "==================================================" + echo " 部署成功 " + echo "==================================================" + echo "环境: ${params.ENV}" + echo "服务器: ${params.TARGET_HOST}" + echo "部署路径: ${params.DEPLOY_DIR}" + echo "JDK 路径: ${params.TARGET_JDK_HOME}" + echo "Git 分支: ${params.GIT_BRANCH}" + echo "==================================================" + } + + failure { + echo "" + echo "==================================================" + echo " 部署失败 " + echo "==================================================" + echo "请检查上述日志排查问题" + echo "常见问题:" + echo "1. 检查目标服务器 JDK 路径是否正确" + echo "2. 检查 SSH 连接是否正常" + echo "3. 查看应用启动日志" + echo "==================================================" + } + + always { + echo "" + echo "流水线状态: ${currentBuild.currentResult}" + echo "执行耗时: ${currentBuild.durationString}" + } + } +} diff --git a/SCM/旧的二进制部署形式/payment.jar/sit_flymoon_payment_new.groovy b/SCM/旧的二进制部署形式/payment.jar/sit_flymoon_payment_new.groovy new file mode 100644 index 0000000..85d6f2a --- /dev/null +++ b/SCM/旧的二进制部署形式/payment.jar/sit_flymoon_payment_new.groovy @@ -0,0 +1,265 @@ +pipeline { + agent any + + tools { + maven 'mvn3.8.8' + jdk 'jdk21' + } + + parameters { + choice( + name: 'ENV', + choices: ['sit'], + description: '部署环境' + ) + gitParameter( + branchFilter: 'origin/(.*)', + defaultValue: 'code/1118_java_re', + name: 'GIT_BRANCH', + type: 'PT_BRANCH_TAG', + selectedValue: 'DEFAULT', + sortMode: 'NONE', + description: '选择代码分支: ', + quickFilterEnabled: true, + tagFilter: '*', + listSize: "1" + ) + string( + name: 'TARGET_JDK_HOME', + defaultValue: '/data/jdk-21.0.7', + description: '目标机器 JDK 路径' + ) + string( + name: 'TARGET_HOST', + defaultValue: '192.168.70.18', + description: '目标服务器地址' + ) + string( + name: 'DEPLOY_DIR', + defaultValue: '/data/webapps/flymoon_payment', + description: '部署目录' + ) + } + + environment { + APP_NAME = 'flymoon-payment' + GIT_REPO = 'http://172.24.16.20/root/fly_moon_payment.git' + GIT_CREDS = 'fly_gitlab_auth' + BUILD_DIR = "${WORKSPACE}/flymoon-payment-provider" + } + + stages { + stage('01-代码检出') { + steps { + script { + echo "==========================================" + echo "Git 仓库: ${env.GIT_REPO}" + echo "分支: ${params.GIT_BRANCH}" + echo "==========================================" + + git branch: "${params.GIT_BRANCH}", + credentialsId: "${env.GIT_CREDS}", + url: "${env.GIT_REPO}" + } + } + } + + stage('02-Maven 构建') { + steps { + echo "==========================================" + echo "执行 Maven 打包..." + echo "构建目录: ${env.BUILD_DIR}" + echo "==========================================" + + sh """ + cd ${env.BUILD_DIR}/bin/ + sh package.sh + """ + } + } + + stage('03-上传构建产物') { + steps { + echo "==========================================" + echo "上传到: ${params.TARGET_HOST}:${params.DEPLOY_DIR}" + echo "==========================================" + + sh """ + scp ${env.BUILD_DIR}/target/${env.APP_NAME}.jar \ + ${params.TARGET_HOST}:${params.DEPLOY_DIR}/${env.APP_NAME}-new.jar + + scp ${env.BUILD_DIR}/bin/start.sh \ + ${params.TARGET_HOST}:${params.DEPLOY_DIR}/ + + scp ${env.BUILD_DIR}/bin/stop.sh \ + ${params.TARGET_HOST}:${params.DEPLOY_DIR}/ + """ + } + } + + stage('04-备份与替换') { + steps { + echo "==========================================" + echo "备份旧版本并替换 JAR 包..." + echo "==========================================" + + sh """ + ssh ${params.TARGET_HOST} ' + cd ${params.DEPLOY_DIR} && + + if [ -f ${env.APP_NAME}.jar ]; then + echo "[INFO] 备份: ${env.APP_NAME}.jar -> ${env.APP_NAME}-backup.jar" + cp ${env.APP_NAME}.jar ${env.APP_NAME}-backup.jar + fi && + + echo "[INFO] 替换: ${env.APP_NAME}-new.jar -> ${env.APP_NAME}.jar" + mv ${env.APP_NAME}-new.jar ${env.APP_NAME}.jar && + + echo "[INFO] 设置脚本执行权限" + chmod +x start.sh stop.sh && + + echo "[SUCCESS] JAR 替换完成" + ' + """ + } + } + + stage('05-停止旧服务') { + steps { + echo "==========================================" + echo "停止旧版本服务..." + echo "==========================================" + + sh """ + ssh ${params.TARGET_HOST} ' + cd ${params.DEPLOY_DIR} && + + if [ -f stop.sh ]; then + sh stop.sh || true + echo "[INFO] 等待服务完全停止..." + sleep 3 + else + echo "[WARN] 未找到 stop.sh,跳过停止步骤" + fi + ' + """ + } + } + + stage('06-启动新服务') { + steps { + echo "==========================================" + echo "启动新版本服务..." + echo "环境: ${params.ENV}" + echo "JDK: ${params.TARGET_JDK_HOME}" + echo "==========================================" + + sh """ + ssh ${params.TARGET_HOST} ' + cd ${params.DEPLOY_DIR} && + + echo "[INFO] 执行启动命令: sh start.sh ${params.ENV} ${params.TARGET_JDK_HOME}" + sh start.sh ${params.ENV} ${params.TARGET_JDK_HOME} && + + echo "[INFO] 等待启动完成..." + sleep 5 && + + if [ -f app.pid ]; then + PID=\$(cat app.pid) + if ps -p \$PID > /dev/null 2>&1; then + echo "[SUCCESS] 服务启动成功 (PID: \$PID)" + else + echo "[ERROR] 服务启动失败" + tail -50 /root/logs/${env.APP_NAME}/app.log + exit 1 + fi + else + echo "[ERROR] PID 文件不存在" + exit 1 + fi + ' + """ + } + } + + stage('07-健康检查') { + steps { + echo "==========================================" + echo "执行服务健康检查..." + echo "==========================================" + + sh """ + ssh ${params.TARGET_HOST} ' + cd ${params.DEPLOY_DIR} && + + echo "[INFO] 等待服务完全启动..." + sleep 10 && + + if [ -f app.pid ]; then + PID=\$(cat app.pid) + + if ps -p \$PID > /dev/null 2>&1; then + echo "[SUCCESS] 服务运行正常 (PID: \$PID)" + echo "" + + # 显示进程信息 + echo "==================== 进程信息 ====================" + ps -p \$PID -o pid,etime,cmd --no-headers + echo "" + + # 显示日志位置 + echo "==================== 日志位置 ====================" + echo "[INFO] 管道日志: /root/logs/${env.APP_NAME}/app.log" + echo "[INFO] 应用日志目录: ${params.DEPLOY_DIR}/logs" + echo "==================================================" + else + echo "[ERROR] 服务进程已退出" + echo "==================== 错误日志 ====================" + tail -100 /root/logs/${env.APP_NAME}/app.log + echo "==================================================" + exit 1 + fi + else + echo "[ERROR] PID 文件不存在" + exit 1 + fi + ' + """ + } + } + } + + post { + success { + echo "" + echo "==================================================" + echo " 部署成功 " + echo "==================================================" + echo "环境: ${params.ENV}" + echo "服务器: ${params.TARGET_HOST}" + echo "部署路径: ${params.DEPLOY_DIR}" + echo "JDK 路径: ${params.TARGET_JDK_HOME}" + echo "Git 分支: ${params.GIT_BRANCH}" + echo "==================================================" + } + + failure { + echo "" + echo "==================================================" + echo " 部署失败 " + echo "==================================================" + echo "请检查上述日志排查问题" + echo "常见问题:" + echo "1. 检查目标服务器 JDK 路径是否正确" + echo "2. 检查 SSH 连接是否正常" + echo "3. 查看应用启动日志" + echo "==================================================" + } + + always { + echo "" + echo "流水线状态: ${currentBuild.currentResult}" + echo "执行耗时: ${currentBuild.durationString}" + } + } +} diff --git a/SCM/旧的二进制部署形式/test.groovy b/SCM/旧的二进制部署形式/test.groovy new file mode 100644 index 0000000..f09e45b --- /dev/null +++ b/SCM/旧的二进制部署形式/test.groovy @@ -0,0 +1,72 @@ +pipeline { + agent any + tools{ + maven 'mvn3.8.8' + jdk 'jdk21' + } + parameters { + gitParameter( + branchFilter: 'origin/(.*)', + defaultValue: 'dxin', + name: 'Code_branch', + type: 'PT_BRANCH_TAG', + selectedValue: 'DEFAULT', + sortMode: 'NONE', + description: '选择代码分支: ', + quickFilterEnabled: true, + tagFilter: '*', + listSize: "1" + ) + } + stages { + stage('checkout 代码') { + steps { + git branch: "${params.Code_branch}", credentialsId: 'fly_gitlab_auth', url: 'http://172.24.16.20/root/fly_moon_agent.git' + } + } + stage('Maven 编译') { + steps { + sh """ + cd ${WORKSPACE}flymoon-agent-provider/bin/ + sh package.sh + """ + } + } + stage('同步新jar') { + steps { + sh """ + scp ${WORKSPACE}/flymoon-agent-provider/target/flymoon-agent.jar 192.168.70.18:/data/webapps/flymoon_agent/flymoon-agent-new.jar + scp ${WORKSPACE}flymoon-agent-provider/bin/start.sh 192.168.70.18:/data/webapps/flymoon_agent + scp ${WORKSPACE}flymoon-agent-provider/bin/stop.sh 192.168.70.18:/data/webapps/flymoon_agent + """ + } + } + stage('替换旧jar') { + steps { + sh """ + ssh 192.168.70.18 ' + cd /data/webapps/flymoon_agent/ && + if [ -f flymoon-agent.jar ]; then + cp flymoon-agent.jar flymoon-agent-backup.jar + fi && + mv flymoon-agent-new.jar flymoon-agent.jar + ' + """ + } + } + stage('jar A下线') { + steps { + sh "ssh 192.168.70.18 'sh /data/webapps/flymoon_agent/stop.sh'" + } + } + stage('jar A启动') { + steps { + sh """ + ssh 192.168.70.18 ' + nohup /data/jdk-21.0.7/bin/java --spring.profiles.active=sit >/data/webapps/flymoon_agent/nohup.out 2>&1 & + ' + """ + } + } + } +}