97 lines
3.9 KiB
Bash
97 lines
3.9 KiB
Bash
|
|
#!/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 "==> 步骤1:Maven 打包(跳过测试)"
|
|||
|
|
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
|