Files
waf-platform/deploy/多平台打包手册.md
2026-03-02 20:07:53 +08:00

164 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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` |
| 出错风险 | 高(文件名易写错) | 低(版本号自动提取) |