- docs/sql: organization_* 与 tenant_* 访客楼层策略脚本 - docs/testing: 访客邀约页初始化验证、pack 脚本与 README(忽略 dist/__pycache__) - maven-ninca-common-component-organization: CpImageStoreServiceImpl、starter、run-verify、releases 脚本与 javap 审计 JSON - docs/superpowers: component-org 生产问题修复计划 - scripts/test-env/prepare-db.sh 更新 Co-authored-by: Cursor <cursoragent@cursor.com>
5.6 KiB
releases/ 发布目录
目的
releases/ 用于存放 可交付的发布包(release bundle):从本 reactor 构建的 Spring Boot fat JAR、与现场/部署包一致的 配置文件、启动脚本 与 校验信息(SHA256) 的固定组合。
该目录是 对外或运维交付的“落盘点”,与单纯的 Maven target/ 构建输出区分开。
目录命名规范
每个发布包为一个子目录,命名格式:
ninca-common-component-organization-<maven-version>-<YYYYMMDD>/
<maven-version>:反应堆根pom.xml中<artifactId>ninca-common-component-organization-reactor</artifactId>对应的<version>(例如2.9.4-xinghewan)。<YYYYMMDD>:发布日期戳;默认取构建当日date +%Y%m%d,也可用环境变量覆盖(见脚本说明)。
示例:ninca-common-component-organization-2.9.4-xinghewan-YYYYMMDD/。
每个 bundle 应包含的内容
| 内容 | 说明 |
|---|---|
| Fat JAR | 从 cwos-component-organization-starter/target/ 拷贝的可执行 fat JAR(由 spring-boot-maven-plugin repackage,finalName 为 ninca-common-component-organization-${project.version}.jar)。 |
application-node.properties |
节点差异(Consul 主机、instance-id、management-suffix 等);公共项在 fat jar 内 application.properties。从 部署包/ 模板目录复制(见下文)。 |
bootstrap.properties |
引导配置;来源同上。 |
sql/ |
租户访客策略脚本(与 源码/docs/sql 一致):电梯库 tenant_visitor_floor_policy* + 组织库 organization_tenant_visitor_floor_policy*(含 organization_tenant_visitor_floor_policy_full_install.sql 一站式);内含 README.txt。 |
start.sh |
启动脚本:--spring.config.location=classpath:/,file:<发布目录>/ + --spring.config.name=application,application-node + --logging.path=<发布目录>/logs。 |
| 可选符号链接 | 运维友好别名:ninca-common-component-organization-V<主版本三元组>_<YYYYMMDD>.jar → 实际 fat JAR(例如 V2.9.4_20260506 对应版本 2.9.4-xinghewan)。 |
RELEASE.txt |
发布说明:版本、目录名、构建命令、文件清单、fat JAR 的 SHA256。 |
其中 application-node.properties / bootstrap.properties 的「权威模板」通常来自现场 部署包 目录(与运维目录对齐),路径示例:
星河湾星中星/部署包/ninca_common_component_organization_01-ninca_common_component_organization/
若该路径下不存在对应文件,脚本会 告警并跳过,不会中断构建(仍可从别处手工放入同名文件)。
前置条件
- JDK 8:与本 reactor 一致;默认使用
/usr/lib/jvm/java-8-openjdk-amd64(可通过JAVA_HOME覆盖)。 all-lib/:反应堆依赖的本地扁平库目录必须存在且齐全,否则mvn package可能失败(根pom.xml中all-lib.dir指向${maven.multiModuleProjectDirectory}/all-lib)。
JDK / JAVA_HOME 说明
- 脚本默认使用
/usr/lib/jvm/java-8-openjdk-amd64进行mvn clean package。 - 若交互式环境中
JAVA_HOME已指向 JDK 11+,仅写JAVA_HOME:-默认值不会覆盖已导出变量;脚本会检测并在非 JDK 8 时 发出 WARN 并强制改用上述 JDK8 路径,以保证与本 reactor 一致。 - 若需使用其他 JDK 8 安装路径,请先
export JAVA_HOME=/path/to/jdk8(确保java -version为 1.8),再执行脚本。
自动生成脚本
使用 create-release-bundle.sh(位于本目录,可执行)从反应堆根执行 mvn clean package -DskipTests,并生成符合上述规范的目录与 RELEASE.txt。
用法示例:
cd /path/to/maven-ninca-common-component-organization
./releases/create-release-bundle.sh
RELEASE_DATE=20260506 ./releases/create-release-bundle.sh
环境变量(可选):
RELEASE_DATE:目录后缀YYYYMMDD,默认当天。DEPLOY_TEMPLATE_ROOT:覆盖部署包模板目录(默认见上文「配置文件来源」)。DOCS_SQL_ROOT:覆盖sql/脚本来源目录(默认源码/docs/sql,即反应堆上一级目录下的docs/sql)。
与 deploy-implementation-package/ 的关系
构建产物路径、制品暂存等说明见同仓库:
../deploy-implementation-package/README.md
(若该文件不存在,请以反应堆根 pom.xml 与 starter 模块 target/ 为准。)
Git 与大文件
本目录下的 ninca-common-component-organization-*/ 发布子目录(含 fat jar)通过 releases/.gitignore 忽略,避免将大体积二进制提交入库;README.md 与 create-release-bundle.sh 仍正常跟踪。
手工 java -jar(不用 start.sh)时
若从其它工作目录直接启动,请显式指定配置目录与可写日志路径,例如:
--spring.config.location=file:<发布包绝对路径>/ 与 --logging.path=<同目录下 logs 或 /tmp/...>。
仅写 --spring.config.location 时若未覆盖 logging.path,且 application.properties 仍指向生产路径 /data/cwos/...,会因无法创建目录导致 Logback 初始化失败。
English (short): releases/ holds versioned, deployable bundles (fat JAR + config + start.sh + RELEASE.txt + optional symlink), named ninca-common-component-organization-<maven-version>-<YYYYMMDD>/. Build requires JDK 8 and all-lib/. Use create-release-bundle.sh to reproduce bundles consistently.