mirror of
https://github.com/hpd840321/starRiverProperty.git
synced 2026-06-09 16:30:29 +08:00
feat: add release build script for component-organization service
- release-component-organization.sh: Maven build + DDL + config + ZIP
- Includes organization-side active policy SQL (唯一策略维护点)
- Naming: ninca-common-component-organization-{ver}-xinghewan-{date}
This commit is contained in:
@@ -0,0 +1,139 @@
|
||||
#!/usr/bin/env bash
|
||||
# 构建 ninca-common-component-organization 指定版本发布包
|
||||
# 目录命名: ninca-common-component-organization-<版本>-xinghewan-<日期>
|
||||
# 用法: ./release-component-organization.sh [版本号]
|
||||
# 示例: ./release-component-organization.sh 2.9.5
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
||||
MAVEN_ROOT="${ROOT}/backend/ninca-common-component-organization"
|
||||
REL_VER="${1:-2.9.5}"
|
||||
RELEASE_DATE_LABEL="${RELEASE_DATE_LABEL:-$(date +%Y%m%d)}"
|
||||
JAR_NAME="ninca-common-component-organization-${REL_VER}.jar"
|
||||
BUNDLE_DIR_NAME="ninca-common-component-organization-${REL_VER}-xinghewan-${RELEASE_DATE_LABEL}"
|
||||
OUT_DIR="${MAVEN_ROOT}/releases/${BUNDLE_DIR_NAME}"
|
||||
|
||||
JAVA_HOME="${JAVA_HOME:-/usr/lib/jvm/java-8-openjdk-amd64}"
|
||||
export JAVA_HOME
|
||||
export PATH="${JAVA_HOME}/bin:${PATH}"
|
||||
|
||||
if ! java -version 2>&1 | grep -q 'version "1\.8\.'; then
|
||||
echo "ERROR: 需要 JDK 8(JAVA_HOME=${JAVA_HOME})。" >&2
|
||||
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
|
||||
}
|
||||
|
||||
# ── Step 1: Maven build ──
|
||||
echo "==> Set reactor version to ${REL_VER}"
|
||||
(cd "${MAVEN_ROOT}" && mvn -q versions:set -DnewVersion="${REL_VER}" -DgenerateBackupPoms=false)
|
||||
|
||||
echo "==> Package starter (fat jar)"
|
||||
(cd "${MAVEN_ROOT}" && mvn -q -pl cwos-component-organization-starter -am package -DskipTests)
|
||||
|
||||
SRC_JAR="${MAVEN_ROOT}/cwos-component-organization-starter/target/${JAR_NAME}"
|
||||
if [[ ! -f "${SRC_JAR}" ]]; then
|
||||
for candidate in $(ls -1t "${MAVEN_ROOT}/cwos-component-organization-starter/target"/*.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 制品" >&2; exit 1
|
||||
fi
|
||||
|
||||
# ── Step 2: Copy artifacts ──
|
||||
echo "==> Copy artifacts to ${OUT_DIR}"
|
||||
install -m0644 "${SRC_JAR}" "${OUT_DIR}/${JAR_NAME}"
|
||||
|
||||
# Config files
|
||||
for conf_name in bootstrap.properties application.properties recognition-logback.xml; do
|
||||
CONF_SRC="${MAVEN_ROOT}/cwos-component-organization-starter/deploy/run-verify/${conf_name}"
|
||||
if [[ -f "${CONF_SRC}" ]]; then
|
||||
install -m0644 "${CONF_SRC}" "${OUT_DIR}/${conf_name}"
|
||||
fi
|
||||
done
|
||||
|
||||
# ── Step 3: DDL/SQL (组织侧 — 活跃策略) ──
|
||||
DDL_DIR="${OUT_DIR}/ddl"
|
||||
mkdir -p "${DDL_DIR}"
|
||||
|
||||
ORG_DDL_SRC="${ROOT}/docs/sql/organization_tenant_visitor_floor_policy.sql"
|
||||
require_file "${ORG_DDL_SRC}" "组织库 DDL"
|
||||
install -m0644 "${ORG_DDL_SRC}" "${DDL_DIR}/organization_tenant_visitor_floor_policy.sql"
|
||||
|
||||
ORG_INIT_SRC="${ROOT}/docs/sql/organization_tenant_visitor_floor_policy_init_tenants.sql"
|
||||
require_file "${ORG_INIT_SRC}" "组织库策略种子"
|
||||
install -m0644 "${ORG_INIT_SRC}" "${DDL_DIR}/organization_tenant_visitor_floor_policy_init_tenants.sql"
|
||||
|
||||
# DDL 说明
|
||||
cat > "${DDL_DIR}/README_DDL.txt" << 'DDL_README'
|
||||
# tenant_visitor_floor_policy DDL 说明 (组织侧)
|
||||
#
|
||||
# 执行目标库: component-organization
|
||||
# 执行顺序:
|
||||
# 1. organization_tenant_visitor_floor_policy.sql — 建表 DDL
|
||||
# 2. organization_tenant_visitor_floor_policy_init_tenants.sql — 种子数据 (幂等)
|
||||
#
|
||||
# 策略语义: REPLACE_ALLOWLIST (替代, 非求交)
|
||||
# V2 唯一策略维护点, 电梯侧不再维护此表。
|
||||
DDL_README
|
||||
|
||||
# ── Step 4: Start script ──
|
||||
cat > "${OUT_DIR}/start.sh" << 'STARTSCRIPT'
|
||||
#!/usr/bin/env bash
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
JAVA_BIN="${JAVA_HOME:-/usr/lib/jvm/java-8-openjdk-amd64}/bin/java"
|
||||
JAR=$(ls "$SCRIPT_DIR"/ninca-common-component-organization-*.jar 2>/dev/null | head -1)
|
||||
exec "$JAVA_BIN" -jar "$JAR" \
|
||||
--spring.config.location="file:${SCRIPT_DIR}/" \
|
||||
--logging.config="file:${SCRIPT_DIR}/recognition-logback.xml" \
|
||||
"$@"
|
||||
STARTSCRIPT
|
||||
chmod 0755 "${OUT_DIR}/start.sh"
|
||||
|
||||
# ── Step 5: RELEASE.txt ──
|
||||
cat > "${OUT_DIR}/RELEASE.txt" << RELEASETXT
|
||||
component: ninca-common-component-organization
|
||||
version: ${REL_VER}-xinghewan
|
||||
date: ${RELEASE_DATE_LABEL}
|
||||
jar: ${JAR_NAME}
|
||||
RELEASETXT
|
||||
|
||||
# ── Step 6: BUILD_MANIFEST.txt ──
|
||||
{
|
||||
echo "artifact=${JAR_NAME}"
|
||||
echo "bundle_dir_name=${BUNDLE_DIR_NAME}"
|
||||
echo "built_at=$(date -Iseconds 2>/dev/null || date)"
|
||||
echo "java_home=${JAVA_HOME}"
|
||||
java -version 2>&1 | sed 's/^/java_version_line=/' || true
|
||||
echo -n "git_rev="
|
||||
(cd "${ROOT}" && git rev-parse HEAD 2>/dev/null) || echo "unknown"
|
||||
echo -n "git_branch="
|
||||
(cd "${ROOT}" && git rev-parse --abbrev-ref HEAD 2>/dev/null) || echo "unknown"
|
||||
} > "${OUT_DIR}/BUILD_MANIFEST.txt"
|
||||
|
||||
# ── Step 7: Zip ──
|
||||
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
|
||||
|
||||
# ── Restore version ──
|
||||
echo "==> Restore reactor version to 2.9.2-xinghewan"
|
||||
(cd "${MAVEN_ROOT}" && mvn -q versions:set -DnewVersion=2.9.2-xinghewan -DgenerateBackupPoms=false)
|
||||
|
||||
echo "==> Done."
|
||||
ls -la "${OUT_DIR}"
|
||||
Reference in New Issue
Block a user