feat: add service config templates and extraction script

Former-commit-id: 1de24b7eb79676d1aba9d799a58c5a753290cf52
This commit is contained in:
反编译工作区
2026-05-01 19:38:01 +08:00
parent 3175b7074b
commit 8b15445328
2433 changed files with 8322164 additions and 1604 deletions
+116 -20
View File
@@ -1,14 +1,19 @@
#!/usr/bin/env bash
# 构建 cw-elevator-application 指定版本发布包,输出到 maven 模块下 releases/<version>/
# 构建 cw-elevator-application 指定版本发布包,输出到 maven 模块下 releases/。
# 目录命名对齐历史运行包 cw-elevator-application-V1.0.0.20211103
# cw-elevator-application-V<版本>.<日期>(日期默认当天 YYYYMMDD,可用 RELEASE_DATE_LABEL 覆盖)。
# 用法:在仓库根执行 ./scripts/release-cw-elevator-application.sh [版本号]
# 默认版本与根 POM 中 elevator.release.finalName 后缀一致(当前 2.0.0)。
# 默认版本与根 POM 中 elevator.release.finalName 后缀一致(当前 2.0.8)。
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
MAVEN_ROOT="${ROOT}/maven-cw-elevator-application"
REL_VER="${1:-2.0.0}"
REL_VER="${1:-2.0.8}"
JAR_NAME="cw-elevator-application-${REL_VER}.jar"
OUT_DIR="${MAVEN_ROOT}/releases/v${REL_VER}"
RELEASE_DATE_LABEL="${RELEASE_DATE_LABEL:-$(date +%Y%m%d)}"
BUNDLE_DIR_NAME="cw-elevator-application-V${REL_VER}.${RELEASE_DATE_LABEL}"
OUT_DIR="${MAVEN_ROOT}/releases/${BUNDLE_DIR_NAME}"
DOC_FALLBACK_VER="${DOC_FALLBACK_VER:-2.0.6}"
JAVA_HOME="${JAVA_HOME:-/usr/lib/jvm/java-8-openjdk-amd64}"
export JAVA_HOME
@@ -20,8 +25,18 @@ if ! java -version 2>&1 | grep -q 'version "1\.8\.'; then
exit 1
fi
rm -rf "${OUT_DIR}"
mkdir -p "${OUT_DIR}"
require_file() {
local file_path="$1"
local hint="$2"
if [[ ! -f "${file_path}" ]]; then
echo "ERROR: 缺少必需文件: ${file_path} (${hint})" >&2
exit 1
fi
}
echo "==> Set reactor version to ${REL_VER}"
(cd "${MAVEN_ROOT}" && mvn -q org.codehaus.mojo:versions-maven-plugin:2.16.2:set \
-DnewVersion="${REL_VER}" -DprocessAllModules=true -DgenerateBackupPoms=false)
@@ -31,7 +46,16 @@ echo "==> Package starter (fat jar)"
SRC_JAR="${MAVEN_ROOT}/cw-elevator-application-starter/target/${JAR_NAME}"
if [[ ! -f "${SRC_JAR}" ]]; then
echo "ERROR: 未找到 ${SRC_JAR}" >&2
for candidate in $(ls -1t "${MAVEN_ROOT}/cw-elevator-application-starter/target"/cw-elevator-application-*.jar 2>/dev/null || true); do
if [[ "${candidate}" == *.jar.original ]]; then
continue
fi
SRC_JAR="${candidate}"
break
done
fi
if [[ -z "${SRC_JAR}" || ! -f "${SRC_JAR}" ]]; then
echo "ERROR: 未找到可用 starter 制品(期望 ${JAR_NAME}" >&2
exit 1
fi
@@ -41,36 +65,100 @@ install -m0644 "${SRC_JAR}" "${OUT_DIR}/${JAR_NAME}"
DDL_SRC="${ROOT}/docs/sql/tenant_visitor_floor_policy.sql"
DDL_DIR="${OUT_DIR}/ddl"
mkdir -p "${DDL_DIR}"
if [[ -f "${DDL_SRC}" ]]; then
install -m0644 "${DDL_SRC}" "${DDL_DIR}/tenant_visitor_floor_policy.sql"
else
echo "WARN: 未找到 ${DDL_SRC},发布包未含 DDL" >&2
fi
require_file "${DDL_SRC}" "DDL"
install -m0644 "${DDL_SRC}" "${DDL_DIR}/tenant_visitor_floor_policy.sql"
DDL_INIT_SRC="${ROOT}/docs/sql/tenant_visitor_floor_policy_init_guangfa_fund.sql"
require_file "${DDL_INIT_SRC}" "初始化 SQL"
install -m0644 "${DDL_INIT_SRC}" "${DDL_DIR}/tenant_visitor_floor_policy_init_guangfa_fund.sql"
UPGRADE_SRC="${ROOT}/docs/build/cw-elevator-application-v${REL_VER}-版本升级说明书.md"
if [[ -f "${UPGRADE_SRC}" ]]; then
install -m0644 "${UPGRADE_SRC}" "${OUT_DIR}/版本升级说明书.md"
else
echo "WARN: 未找到 ${UPGRADE_SRC},跳过 版本升级说明书.md" >&2
if [[ ! -f "${UPGRADE_SRC}" ]]; then
UPGRADE_SRC="${ROOT}/docs/build/cw-elevator-application-v${DOC_FALLBACK_VER}-版本升级说明书.md"
fi
require_file "${UPGRADE_SRC}" "版本升级说明书"
install -m0644 "${UPGRADE_SRC}" "${OUT_DIR}/版本升级说明书.md"
INDEX_SRC="${ROOT}/docs/build/cw-elevator-application-v${REL_VER}-发布说明.md"
if [[ -f "${INDEX_SRC}" ]]; then
install -m0644 "${INDEX_SRC}" "${OUT_DIR}/发布说明.md"
if [[ ! -f "${INDEX_SRC}" ]]; then
INDEX_SRC="${ROOT}/docs/build/cw-elevator-application-v${DOC_FALLBACK_VER}-发布说明.md"
fi
require_file "${INDEX_SRC}" "发布说明"
install -m0644 "${INDEX_SRC}" "${OUT_DIR}/发布说明.md"
CLIENT_SRC="${ROOT}/docs/build/cw-elevator-application-v${REL_VER}-甲方版本升级说明.md"
if [[ -f "${CLIENT_SRC}" ]]; then
install -m0644 "${CLIENT_SRC}" "${OUT_DIR}/甲方版本升级说明.md"
if [[ ! -f "${CLIENT_SRC}" ]]; then
CLIENT_SRC="${ROOT}/docs/build/cw-elevator-application-v${DOC_FALLBACK_VER}-甲方版本升级说明.md"
fi
require_file "${CLIENT_SRC}" "甲方版本升级说明"
install -m0644 "${CLIENT_SRC}" "${OUT_DIR}/甲方版本升级说明.md"
PLAN_SRC="${ROOT}/docs/build/cw-elevator-application-v${REL_VER}-升级计划.md"
if [[ -f "${PLAN_SRC}" ]]; then
install -m0644 "${PLAN_SRC}" "${OUT_DIR}/升级计划.md"
if [[ ! -f "${PLAN_SRC}" ]]; then
PLAN_SRC="${ROOT}/docs/build/cw-elevator-application-v${DOC_FALLBACK_VER}-升级计划.md"
fi
require_file "${PLAN_SRC}" "升级计划"
install -m0644 "${PLAN_SRC}" "${OUT_DIR}/升级计划.md"
# 与历史运行包 cw-elevator-application-V1.0.0.20211103 一致:bootstrap/application*.properties 仅置于发布根目录(与 JAR、start.sh 同层),不另建 config/ 重复一份。
for conf_name in bootstrap.properties application.properties application-access-control.properties; do
CONF_SRC="${MAVEN_ROOT}/deploy/v2-maven/${conf_name}"
require_file "${CONF_SRC}" "配置文件 ${conf_name}"
install -m0644 "${CONF_SRC}" "${OUT_DIR}/${conf_name}"
done
COMMON_JAVA_SRC="${MAVEN_ROOT}/deploy/common-java.sh"
require_file "${COMMON_JAVA_SRC}" "common-java.shrun.sh 依赖)"
install -m0644 "${COMMON_JAVA_SRC}" "${OUT_DIR}/common-java.sh"
RUNNER_SRC="${MAVEN_ROOT}/deploy/v2-maven/run.sh"
require_file "${RUNNER_SRC}" "启动脚本 run.sh"
install -m0755 "${RUNNER_SRC}" "${OUT_DIR}/run.sh"
TEMPLATE_DIR="${MAVEN_ROOT}/deploy/release-bundle-templates"
require_file "${TEMPLATE_DIR}/start.sh.template" "release-bundle start.sh.template"
require_file "${TEMPLATE_DIR}/stop.sh.template" "release-bundle stop.sh.template"
require_file "${TEMPLATE_DIR}/cw-elevator-application.service.template" "release-bundle service template"
DEPLOY_DIR_PLACEHOLDER="${DEPLOY_DIR_PLACEHOLDER:-/path/to/cw-elevator-application}"
sed -e "s/__JAR_NAME__/${JAR_NAME}/g" -e "s/__REL_VER__/${REL_VER}/g" \
"${TEMPLATE_DIR}/start.sh.template" > "${OUT_DIR}/start.sh"
chmod 0755 "${OUT_DIR}/start.sh"
sed -e "s/__JAR_NAME__/${JAR_NAME}/g" \
"${TEMPLATE_DIR}/stop.sh.template" > "${OUT_DIR}/stop.sh"
chmod 0755 "${OUT_DIR}/stop.sh"
sed -e "s/__JAR_NAME__/${JAR_NAME}/g" -e "s/__REL_VER__/${REL_VER}/g" \
-e "s|__DEPLOY_DIR__|${DEPLOY_DIR_PLACEHOLDER}|g" \
"${TEMPLATE_DIR}/cw-elevator-application.service.template" > "${OUT_DIR}/cw-elevator-application.service"
chmod 0644 "${OUT_DIR}/cw-elevator-application.service"
EVIDENCE_SRC="${ROOT}/scripts/collect_elevator_runtime_evidence.sh"
require_file "${EVIDENCE_SRC}" "collect_elevator_runtime_evidence.sh(现场证据采集)"
install -m0755 "${EVIDENCE_SRC}" "${OUT_DIR}/collect_elevator_runtime_evidence.sh"
DELIVERY_SRC="${ROOT}/docs/build/cw-elevator-application-v${REL_VER}-实施交付清单.md"
if [[ ! -f "${DELIVERY_SRC}" ]]; then
DELIVERY_SRC="${ROOT}/docs/build/cw-elevator-application-v${DOC_FALLBACK_VER}-实施交付清单.md"
fi
require_file "${DELIVERY_SRC}" "实施交付清单"
install -m0644 "${DELIVERY_SRC}" "${OUT_DIR}/实施交付清单.md"
ACCEPTANCE_SRC="${ROOT}/docs/build/cw-elevator-application-v${REL_VER}-实施验收记录模板.md"
if [[ ! -f "${ACCEPTANCE_SRC}" ]]; then
ACCEPTANCE_SRC="${ROOT}/docs/build/cw-elevator-application-v${DOC_FALLBACK_VER}-实施验收记录模板.md"
fi
require_file "${ACCEPTANCE_SRC}" "实施验收记录模板"
install -m0644 "${ACCEPTANCE_SRC}" "${OUT_DIR}/实施验收记录模板.md"
AUDIT_SRC="${ROOT}/docs/build/cw-elevator-application-v${REL_VER}-SQL与代码一致性审核记录.md"
if [[ ! -f "${AUDIT_SRC}" ]]; then
AUDIT_SRC="${ROOT}/docs/build/cw-elevator-application-v${DOC_FALLBACK_VER}-SQL与代码一致性审核记录.md"
fi
require_file "${AUDIT_SRC}" "SQL与代码一致性审核记录"
install -m0644 "${AUDIT_SRC}" "${OUT_DIR}/SQL与代码一致性审核记录.md"
{
echo "artifact=${JAR_NAME}"
echo "bundle_dir_name=${BUNDLE_DIR_NAME}"
echo "directory=${OUT_DIR}"
echo "built_at=$(date -Iseconds 2>/dev/null || date)"
echo "java_home=${JAVA_HOME}"
@@ -81,6 +169,14 @@ fi
(cd "${ROOT}" && git rev-parse --abbrev-ref HEAD 2>/dev/null) || echo "unknown"
} > "${OUT_DIR}/BUILD_MANIFEST.txt"
if [[ "${RELEASE_MAKE_ZIP:-1}" == "1" ]]; then
ZIP_NAME="${BUNDLE_DIR_NAME}.zip"
ZIP_OUT="${MAVEN_ROOT}/releases/${ZIP_NAME}"
rm -f "${ZIP_OUT}"
(cd "${MAVEN_ROOT}/releases" && zip -rq "${ZIP_NAME}" "${BUNDLE_DIR_NAME}")
echo "==> Zip artifact: ${ZIP_OUT}"
fi
echo "==> Restore reactor version to 2.0-SNAPSHOT"
(cd "${MAVEN_ROOT}" && mvn -q org.codehaus.mojo:versions-maven-plugin:2.16.2:set \
-DnewVersion=2.0-SNAPSHOT -DprocessAllModules=true -DgenerateBackupPoms=false)