4.6 KiB
4.6 KiB
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 |
前置条件
- 两个 Docker 容器已准备好:
- Ubuntu 容器:用于构建 admin 及标准 amd64 节点包
- AWS (Amazon Linux 2023) 容器:用于构建 amzn2023 节点包
- 两个容器均已挂载项目源码目录
- Go 编译环境已就绪(两个容器中均已配置)
打包流程(3 步)
第 1 步:构建 amzn2023 节点包
在 AWS Docker 容器中执行:
cd /项目挂载路径/deploy
chmod +x build-amzn2023.sh
./build-amzn2023.sh
脚本会自动:
- 构建
edge-node(linux/amd64/plus) - 构建
edge-dns(linux/amd64) - 构建
edge-httpdns(linux/amd64) - 将每个包复制一份并加上
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 容器中执行:
cd /项目挂载路径/EdgeAdmin/build
./build.sh linux amd64 plus
此步骤与原有流程完全一致,无需任何改动。
产出文件:
EdgeAdmin/dist/edge-admin-linux-amd64-v{ver}.zip
注意:此 zip 中已包含 3 个标准 amd64 节点包。
第 3 步:合并生成最终发布包
在任意终端(能访问项目目录即可)中执行:
cd /项目路径/deploy
chmod +x merge-release.sh
./merge-release.sh
脚本会自动:
- 检查 admin zip 和 3 个 amzn2023 zip 是否都存在
- 解压 admin zip
- 将 3 个 amzn2023 包复制到
edge-admin/edge-api/deploy/目录 - 重新打包为最终 zip
- 清理临时文件
最终产出:
EdgeAdmin/dist/edge-admin-linux-amd64-v{ver}.zip
验证
打包完成后,可以用以下命令验证最终 zip 中包含 6 个节点包:
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 |
| 出错风险 | 高(文件名易写错) | 低(版本号自动提取) |