fucai-server/deploy/deploy.sh

97 lines
3.9 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
set -euo pipefail
# 配置:服务器地址与目标目录
SERVER="${SERVER:-root@101.35.149.39}"
TARGET_DIR="${TARGET_DIR:-/opt/fucai}"
# JVM 与 Spring Profile如需改为 prod可将 PROFILE 改为 prod并准备对应配置
JAVA_OPTS="${JAVA_OPTS:--Xms256m -Xmx512m}"
PROFILE="${PROFILE:-dev}"
# 模块路径与打包后的 JAR 通配(适配当前模块的 finalName 差异)
ADMIN_JAR_PATTERN="com-admin-client/target/*-SNAPSHOT.jar"
KAIJIANG_JAR_PATTERN="com-kaijiang-client/target/*-SNAPSHOT.jar"
MARRY_JAR_PATTERN="com-marriage-client/target/*-SNAPSHOT.jar"
echo "==> 步骤1Maven 打包(跳过测试)"
mvn -T 1C -pl com-admin-client,com-kaijiang-client,com-marriage-client -am clean package -DskipTests
echo "==> 步骤2定位打包产物"
ADMIN_JAR_LOCAL=$(ls ${ADMIN_JAR_PATTERN} | head -n 1)
KAIJIANG_JAR_LOCAL=$(ls ${KAIJIANG_JAR_PATTERN} | head -n 1)
MARRY_JAR_LOCAL=$(ls ${MARRY_JAR_PATTERN} | head -n 1)
if [[ -z "${ADMIN_JAR_LOCAL}" || -z "${KAIJIANG_JAR_LOCAL}" || -z "${MARRY_JAR_LOCAL}" ]]; then
echo "打包后的 JAR 未找到,请检查 target 目录。" >&2
echo "ADMIN: ${ADMIN_JAR_LOCAL}" >&2
echo "KAIJIANG: ${KAIJIANG_JAR_LOCAL}" >&2
echo "MARRY: ${MARRY_JAR_LOCAL}" >&2
exit 1
fi
echo "ADMIN JAR: ${ADMIN_JAR_LOCAL}"
echo "KAIJIANG JAR: ${KAIJIANG_JAR_LOCAL}"
echo "MARRY JAR: ${MARRY_JAR_LOCAL}"
# 计算原始文件名(保留原始 jar 文件名)
ADMIN_JAR_NAME=$(basename "${ADMIN_JAR_LOCAL}")
KAIJIANG_JAR_NAME=$(basename "${KAIJIANG_JAR_LOCAL}")
MARRY_JAR_NAME=$(basename "${MARRY_JAR_LOCAL}")
echo "==> 步骤3创建远端目录 ${TARGET_DIR}"
ssh "${SERVER}" "mkdir -p ${TARGET_DIR}"
echo "==> 步骤4上传 JAR 到远端(保留原始文件名)"
scp "${ADMIN_JAR_LOCAL}" "${SERVER}:${TARGET_DIR}/${ADMIN_JAR_NAME}"
scp "${KAIJIANG_JAR_LOCAL}" "${SERVER}:${TARGET_DIR}/${KAIJIANG_JAR_NAME}"
scp "${MARRY_JAR_LOCAL}" "${SERVER}:${TARGET_DIR}/${MARRY_JAR_NAME}"
echo "==> 步骤5生成/更新各服务的 EnvironmentFile"
ssh "${SERVER}" "printf '%s\n' \
'JAVA_OPTS=\"${JAVA_OPTS}\"' \
'PROFILE=\"${PROFILE}\"' \
'JAR_PATH=\"${TARGET_DIR}/${ADMIN_JAR_NAME}\"' \
> ${TARGET_DIR}/admin.env"
ssh "${SERVER}" "printf '%s\n' \
'JAVA_OPTS=\"${JAVA_OPTS}\"' \
'PROFILE=\"${PROFILE}\"' \
'JAR_PATH=\"${TARGET_DIR}/${KAIJIANG_JAR_NAME}\"' \
> ${TARGET_DIR}/kaijiang.env"
ssh "${SERVER}" "printf '%s\n' \
'JAVA_OPTS=\"${JAVA_OPTS}\"' \
'PROFILE=\"${PROFILE}\"' \
'JAR_PATH=\"${TARGET_DIR}/${MARRY_JAR_NAME}\"' \
> ${TARGET_DIR}/marry.env"
echo "==> 步骤6上传 systemd 单元文件"
scp deploy/systemd/fucai-admin.service "${SERVER}:/etc/systemd/system/fucai-admin.service"
scp deploy/systemd/fucai-kaijiang.service "${SERVER}:/etc/systemd/system/fucai-kaijiang.service"
scp deploy/systemd/fucai-marry.service "${SERVER}:/etc/systemd/system/fucai-marry.service"
echo "==> 步骤7重载并启用服务"
ssh "${SERVER}" "systemctl daemon-reload && systemctl enable fucai-admin.service fucai-kaijiang.service fucai-marry.service"
echo "==> 步骤8以指定 Profile 重启服务"
ssh "${SERVER}" "\
echo '使用 JAVA_OPTS: ${JAVA_OPTS}, PROFILE: ${PROFILE}'; \
systemctl restart fucai-admin.service; \
systemctl restart fucai-kaijiang.service; \
systemctl restart fucai-marry.service; \
systemctl status fucai-admin.service --no-pager -n 0 || true; \
systemctl status fucai-kaijiang.service --no-pager -n 0 || true; \
systemctl status fucai-marry.service --no-pager -n 0 || true; \
"
echo "==> 完成JAR 已部署到 ${SERVER}:${TARGET_DIR} 并重启服务"
cat <<EOF
可选环境变量:
- SERVER=root@101.35.149.39 # 覆盖目标服务器
- TARGET_DIR=/opt/fucai # 覆盖远端部署目录
- JAVA_OPTS="-Xms512m -Xmx1024m" # 调整 JVM 参数
- PROFILE=dev # 切换 Spring Profile
使用示例:
SERVER=root@101.35.149.39 PROFILE=dev bash deploy/deploy.sh
EOF