# CloudWAF 多平台打包手册 本手册介绍如何使用自动化脚本完成 **Ubuntu (amd64)** + **Amazon Linux 2023 (amzn2023)** 双平台打包,最终生成包含 6 个节点包的 admin 发布包。 --- ## 概述 ### 背景 admin 发布包中需要包含两套节点安装包: - **amd64**:适用于标准 Ubuntu/Debian 服务器 - **amzn2023**:适用于 Amazon Linux 2023 服务器 ### 脚本说明 | 脚本 | 位置 | 用途 | |------|------|------| | `build-amzn2023.sh` | `deploy/` | 在 AWS Docker 中一键构建 3 个 amzn2023 节点包 | | `merge-release.sh` | `deploy/` | 将 amzn2023 包自动注入 admin zip,生成最终发布包 | ### 最终产物 `EdgeAdmin/dist/edge-admin-linux-amd64-v{版本号}.zip`,内含 6 个节点包: | 包名 | 平台 | |------|------| | `edge-node-linux-amd64-v{ver}.zip` | Ubuntu/Debian | | `edge-node-linux-amd64-amzn2023-v{ver}.zip` | Amazon Linux 2023 | | `edge-dns-linux-amd64-v{ver}.zip` | Ubuntu/Debian | | `edge-dns-linux-amd64-amzn2023-v{ver}.zip` | Amazon Linux 2023 | | `edge-httpdns-linux-amd64-v{ver}.zip` | Ubuntu/Debian | | `edge-httpdns-linux-amd64-amzn2023-v{ver}.zip` | Amazon Linux 2023 | --- ## 前置条件 1. **两个 Docker 容器**已准备好: - **Ubuntu 容器**:用于构建 admin 及标准 amd64 节点包 - **AWS (Amazon Linux 2023) 容器**:用于构建 amzn2023 节点包 2. 两个容器均已挂载项目源码目录 3. Go 编译环境已就绪(两个容器中均已配置) --- ## 打包流程(3 步) ### 第 1 步:构建 amzn2023 节点包 **在 AWS Docker 容器中执行:** ```bash cd /项目挂载路径/deploy chmod +x build-amzn2023.sh ./build-amzn2023.sh ``` 脚本会自动: 1. 构建 `edge-node`(linux/amd64/plus) 2. 构建 `edge-dns`(linux/amd64) 3. 构建 `edge-httpdns`(linux/amd64) 4. 将每个包复制一份并加上 `amzn2023` 后缀 **产出文件:** ``` EdgeNode/dist/edge-node-linux-amd64-amzn2023-v{ver}.zip EdgeDNS/dist/edge-dns-linux-amd64-amzn2023-v{ver}.zip EdgeHttpDNS/dist/edge-httpdns-linux-amd64-amzn2023-v{ver}.zip ``` ### 第 2 步:构建 admin 包(含标准 amd64 节点包) **在 Ubuntu Docker 容器中执行:** ```bash cd /项目挂载路径/EdgeAdmin/build ./build.sh linux amd64 plus ``` 此步骤与原有流程完全一致,无需任何改动。 **产出文件:** ``` EdgeAdmin/dist/edge-admin-linux-amd64-v{ver}.zip ``` > 注意:此 zip 中已包含 3 个标准 amd64 节点包。 ### 第 3 步:合并生成最终发布包 **在任意终端(能访问项目目录即可)中执行:** ```bash cd /项目路径/deploy chmod +x merge-release.sh ./merge-release.sh ``` 脚本会自动: 1. 检查 admin zip 和 3 个 amzn2023 zip 是否都存在 2. 解压 admin zip 3. 将 3 个 amzn2023 包复制到 `edge-admin/edge-api/deploy/` 目录 4. 重新打包为最终 zip 5. 清理临时文件 **最终产出:** ``` EdgeAdmin/dist/edge-admin-linux-amd64-v{ver}.zip ``` --- ## 验证 打包完成后,可以用以下命令验证最终 zip 中包含 6 个节点包: ```bash unzip -l EdgeAdmin/dist/edge-admin-linux-amd64-v*.zip | grep "deploy/edge-" ``` 预期输出(6 行): ``` ... edge-admin/edge-api/deploy/edge-node-linux-amd64-v{ver}.zip ... edge-admin/edge-api/deploy/edge-node-linux-amd64-amzn2023-v{ver}.zip ... edge-admin/edge-api/deploy/edge-dns-linux-amd64-v{ver}.zip ... edge-admin/edge-api/deploy/edge-dns-linux-amd64-amzn2023-v{ver}.zip ... edge-admin/edge-api/deploy/edge-httpdns-linux-amd64-v{ver}.zip ... edge-admin/edge-api/deploy/edge-httpdns-linux-amd64-amzn2023-v{ver}.zip ``` --- ## 常见问题 ### Q: merge-release.sh 报 MISSING 怎么办? 说明某个构建产物不存在。请确认: - 第 1 步(amzn2023)和第 2 步(admin)都已执行成功 - 两个 Docker 容器挂载的是同一份项目源码目录 ### Q: 版本号从哪里读取? 脚本自动从各组件的 `internal/const/const.go` 文件中提取 `Version` 常量,无需手动指定。 ### Q: 第 1 步和第 2 步的执行顺序可以换吗? 可以。两步互相独立,先后顺序不影响结果。只需确保第 3 步在前两步都完成后执行。 ### Q: Windows 上能执行 merge-release.sh 吗? 可以,需要在 Git Bash 或 WSL 中执行,并确保系统已安装 `zip` 和 `unzip` 命令。 --- ## 流程对比 | | 旧流程(手动 6+ 步) | 新流程(3 条命令) | |---|---|---| | AWS 构建 | 分别 3 次 cd + build | `./build-amzn2023.sh` | | Ubuntu 构建 | 不变 | 不变 | | 合并 | 手动解压 → 改名 → 复制 → 重新 zip | `./merge-release.sh` | | 出错风险 | 高(文件名易写错) | 低(版本号自动提取) |