54 lines
3.2 KiB
Markdown
54 lines
3.2 KiB
Markdown
> 历史记录:以下说明对应 2026-10-29 原始 UAT 构建及部署,当前仓库的构建入口和密钥配置请看根目录 README。
|
|
|
|
# syly2 UAT 编译工具
|
|
|
|
目标主机:`ubuntu@192.168.68.223`。这些工具用于隔离的源码编译,不包含数据库初始化或应用发布步骤。
|
|
|
|
## 本次目录
|
|
|
|
- 工具链:`/home/ubuntu/.local/opt/syly2-build`
|
|
- Maven 专用仓库:`/home/ubuntu/.local/share/syly2-build/m2`
|
|
- 构建记录:`/home/ubuntu/builds/syly2/20261029-01`
|
|
- 编译副本:上述构建目录下的 `source`
|
|
- 构建日志:上述构建目录下的 `logs`
|
|
- 本地传输包、原始文件哈希清单及回收证据:项目 `.local/uat-build/20261029-01`
|
|
|
|
## 工具职责
|
|
|
|
1. `prepare-toolchain.py`:安装固定版本 Corretto 8.512.09.1 与 Maven 3.9.11,验证官方 SHA-256/SHA-512 校验值;只写入当前用户的专用目录,不修改系统 Java 或 shell 配置。
|
|
2. `install-private-libs.py RUN_DIRECTORY`:将交接包中的 6 个旧 JAR 注册到专用 Maven 仓库,记录原文件哈希。JODConverter 使用原项目声明的坐标和交接包中的 JAR,其原嵌入坐标不同,未据此升级或替换组件。
|
|
3. `apply-compatibility.py RUN_DIRECTORY`:校验原始文件哈希,备份并修改编译副本中的三个文件:POM 的 Windows bootclasspath 分号改为 `${path.separator}`,两个统计 Controller 各删除一条未使用的 JDK 内部类 import。保留原换行符,并输出完整 `compatibility.patch`。`pom-linux.patch` 单独展示第一项差异。
|
|
4. `run-build.sh RUN_DIRECTORY PHASE`:在专用 JDK/仓库下执行 `clean package`,限制 JVM 内存、降低 CPU 调度优先级并记录退出码;显式跳过测试编译及执行。
|
|
5. `verify-build.py RUN_DIRECTORY PHASE`:校验构建退出码、WAR CRC、关键条目和 Java 字节码版本,核对源码差异,保存产物与哈希,并比较构建前后的共享 UAT 容器状态。需要构建目录中已有 `containers-before.json` 基线记录。
|
|
|
|
本次只打包外层工程的 `pom.xml`、`src`、`jar`,不带历史 `target` 或内层重复工程。传输包与展开后的 5,302 个文件均核验了 SHA-256。
|
|
|
|
## 重新编译当前 UAT 副本
|
|
|
|
```sh
|
|
ssh ubuntu@192.168.68.223 'bash /home/ubuntu/builds/syly2/20261029-01/scripts/run-build.sh /home/ubuntu/builds/syly2/20261029-01 repeat'
|
|
```
|
|
|
|
`repeat` 对应日志文件名;需要保留每次日志时请使用不同的阶段名。
|
|
|
|
仅使用编译工具链时:
|
|
|
|
```sh
|
|
source /home/ubuntu/.local/opt/syly2-build/env.sh
|
|
java -version
|
|
mvn -version
|
|
```
|
|
|
|
## 在新的构建目录复现
|
|
|
|
先建立当前用户所有、权限为 700 的独立目录,创建 `source`、`logs`、`artifacts`、`scripts` 子目录,复制并核验源码包、原始 `source-manifest.json` 与这些工具。然后执行:
|
|
|
|
```sh
|
|
python3 scripts/prepare-toolchain.py
|
|
python3 scripts/install-private-libs.py /absolute/path/to/build-run
|
|
python3 scripts/apply-compatibility.py /absolute/path/to/build-run
|
|
bash scripts/run-build.sh /absolute/path/to/build-run linux-build
|
|
```
|
|
|
|
源码包包含原有配置,构建目录、传输包和产物均应按受限资料管理。编译通过不代表应用启动、数据库恢复、JSP 运行或省级接口联调通过。
|