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

4.6 KiB
Raw Permalink Blame History

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 容器中执行:

cd /项目挂载路径/deploy
chmod +x build-amzn2023.sh
./build-amzn2023.sh

脚本会自动:

  1. 构建 edge-nodelinux/amd64/plus
  2. 构建 edge-dnslinux/amd64
  3. 构建 edge-httpdnslinux/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 容器中执行:

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

脚本会自动:

  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 个节点包:

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 中执行,并确保系统已安装 zipunzip 命令。


流程对比

旧流程(手动 6+ 步) 新流程3 条命令)
AWS 构建 分别 3 次 cd + build ./build-amzn2023.sh
Ubuntu 构建 不变 不变
合并 手动解压 → 改名 → 复制 → 重新 zip ./merge-release.sh
出错风险 高(文件名易写错) 低(版本号自动提取)