Files
syly2/ops/uat-build

历史记录:以下说明对应 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 副本

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 对应日志文件名;需要保留每次日志时请使用不同的阶段名。

仅使用编译工具链时:

source /home/ubuntu/.local/opt/syly2-build/env.sh
java -version
mvn -version

在新的构建目录复现

先建立当前用户所有、权限为 700 的独立目录,创建 source、logs、artifacts、scripts 子目录,复制并核验源码包、原始 source-manifest.json 与这些工具。然后执行:

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 运行或省级接口联调通过。