换成单集群模式
This commit is contained in:
61
deploy/build-amzn2023.sh
Normal file
61
deploy/build-amzn2023.sh
Normal file
@@ -0,0 +1,61 @@
|
||||
#!/usr/bin/env bash
|
||||
# 在 AWS (Amazon Linux) Docker 容器中执行
|
||||
# 一键构建 edge-node、edge-dns、edge-httpdns 的 amzn2023 版本
|
||||
set -e
|
||||
|
||||
ROOT=$(cd "$(dirname "$0")/.." && pwd)
|
||||
|
||||
# 从 const.go 提取版本号
|
||||
lookup_version() {
|
||||
local file=$1
|
||||
local re='Version[ ]+=[ ]+"([0-9.]+)"'
|
||||
local data=$(cat "$file")
|
||||
if [[ $data =~ $re ]]; then
|
||||
echo "${BASH_REMATCH[1]}"
|
||||
else
|
||||
echo "error: cannot extract version from $file" >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
echo "==============================="
|
||||
echo " Building amzn2023 packages"
|
||||
echo "==============================="
|
||||
|
||||
# --- edge-node ---
|
||||
echo ""
|
||||
echo "[1/3] Building edge-node ..."
|
||||
cd "$ROOT/EdgeNode/build"
|
||||
./build.sh linux amd64 plus
|
||||
NODE_VER=$(lookup_version "$ROOT/EdgeNode/internal/const/const.go")
|
||||
SRC="$ROOT/EdgeNode/dist/edge-node-linux-amd64-v${NODE_VER}.zip"
|
||||
DST="$ROOT/EdgeNode/dist/edge-node-linux-amd64-amzn2023-v${NODE_VER}.zip"
|
||||
cp "$SRC" "$DST"
|
||||
echo " → $DST"
|
||||
|
||||
# --- edge-dns ---
|
||||
echo ""
|
||||
echo "[2/3] Building edge-dns ..."
|
||||
cd "$ROOT/EdgeDNS/build"
|
||||
./build.sh linux amd64
|
||||
DNS_VER=$(lookup_version "$ROOT/EdgeDNS/internal/const/const.go")
|
||||
SRC="$ROOT/EdgeDNS/dist/edge-dns-linux-amd64-v${DNS_VER}.zip"
|
||||
DST="$ROOT/EdgeDNS/dist/edge-dns-linux-amd64-amzn2023-v${DNS_VER}.zip"
|
||||
cp "$SRC" "$DST"
|
||||
echo " → $DST"
|
||||
|
||||
# --- edge-httpdns ---
|
||||
echo ""
|
||||
echo "[3/3] Building edge-httpdns ..."
|
||||
cd "$ROOT/EdgeHttpDNS/build"
|
||||
./build.sh linux amd64
|
||||
HTTPDNS_VER=$(lookup_version "$ROOT/EdgeHttpDNS/internal/const/const.go")
|
||||
SRC="$ROOT/EdgeHttpDNS/dist/edge-httpdns-linux-amd64-v${HTTPDNS_VER}.zip"
|
||||
DST="$ROOT/EdgeHttpDNS/dist/edge-httpdns-linux-amd64-amzn2023-v${HTTPDNS_VER}.zip"
|
||||
cp "$SRC" "$DST"
|
||||
echo " → $DST"
|
||||
|
||||
echo ""
|
||||
echo "==============================="
|
||||
echo " All amzn2023 packages built!"
|
||||
echo "==============================="
|
||||
70
deploy/merge-release.sh
Normal file
70
deploy/merge-release.sh
Normal file
@@ -0,0 +1,70 @@
|
||||
#!/usr/bin/env bash
|
||||
# 合并 admin 包和 amzn2023 节点包
|
||||
# 无需手动解压/复制/改名
|
||||
set -e
|
||||
|
||||
ROOT=$(cd "$(dirname "$0")/.." && pwd)
|
||||
|
||||
lookup_version() {
|
||||
local file=$1
|
||||
local re='Version[ ]+=[ ]+"([0-9.]+)"'
|
||||
local data=$(cat "$file")
|
||||
if [[ $data =~ $re ]]; then
|
||||
echo "${BASH_REMATCH[1]}"
|
||||
else
|
||||
echo "error: cannot extract version from $file" >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
ADMIN_VER=$(lookup_version "$ROOT/EdgeAdmin/internal/const/const.go")
|
||||
NODE_VER=$(lookup_version "$ROOT/EdgeNode/internal/const/const.go")
|
||||
DNS_VER=$(lookup_version "$ROOT/EdgeDNS/internal/const/const.go")
|
||||
HTTPDNS_VER=$(lookup_version "$ROOT/EdgeHttpDNS/internal/const/const.go")
|
||||
|
||||
ADMIN_ZIP="$ROOT/EdgeAdmin/dist/edge-admin-linux-amd64-v${ADMIN_VER}.zip"
|
||||
AMZN_NODE="$ROOT/EdgeNode/dist/edge-node-linux-amd64-amzn2023-v${NODE_VER}.zip"
|
||||
AMZN_DNS="$ROOT/EdgeDNS/dist/edge-dns-linux-amd64-amzn2023-v${DNS_VER}.zip"
|
||||
AMZN_HTTPDNS="$ROOT/EdgeHttpDNS/dist/edge-httpdns-linux-amd64-amzn2023-v${HTTPDNS_VER}.zip"
|
||||
|
||||
echo "Checking required files ..."
|
||||
MISSING=0
|
||||
for f in "$ADMIN_ZIP" "$AMZN_NODE" "$AMZN_DNS" "$AMZN_HTTPDNS"; do
|
||||
if [ ! -f "$f" ]; then
|
||||
echo " [MISSING] $f"
|
||||
MISSING=1
|
||||
else
|
||||
echo " [OK] $(basename "$f")"
|
||||
fi
|
||||
done
|
||||
if [ "$MISSING" -ne 0 ]; then
|
||||
echo ""
|
||||
echo "ERROR: Missing files. Build both Ubuntu and amzn2023 packages first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
WORK_DIR="$ROOT/EdgeAdmin/dist"
|
||||
cd "$WORK_DIR"
|
||||
|
||||
echo ""
|
||||
echo "Extracting admin package ..."
|
||||
rm -rf edge-admin
|
||||
unzip -q "$(basename "$ADMIN_ZIP")"
|
||||
|
||||
DEPLOY_DIR="edge-admin/edge-api/deploy"
|
||||
echo "Injecting amzn2023 packages ..."
|
||||
cp "$AMZN_NODE" "$DEPLOY_DIR/edge-node-linux-amd64-amzn2023-v${NODE_VER}.zip"
|
||||
cp "$AMZN_DNS" "$DEPLOY_DIR/edge-dns-linux-amd64-amzn2023-v${DNS_VER}.zip"
|
||||
cp "$AMZN_HTTPDNS" "$DEPLOY_DIR/edge-httpdns-linux-amd64-amzn2023-v${HTTPDNS_VER}.zip"
|
||||
|
||||
echo "Re-packaging ..."
|
||||
FINAL_ZIP="edge-admin-linux-amd64-v${ADMIN_VER}.zip"
|
||||
rm -f "$FINAL_ZIP"
|
||||
zip -r -X -q "$FINAL_ZIP" edge-admin/
|
||||
rm -rf edge-admin
|
||||
|
||||
SIZE=$(du -h "$FINAL_ZIP" | cut -f1)
|
||||
echo ""
|
||||
echo "==============================="
|
||||
echo " Done! → $WORK_DIR/$FINAL_ZIP ($SIZE)"
|
||||
echo "==============================="
|
||||
163
deploy/多平台打包手册.md
Normal file
163
deploy/多平台打包手册.md
Normal file
@@ -0,0 +1,163 @@
|
||||
# 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` |
|
||||
| 出错风险 | 高(文件名易写错) | 低(版本号自动提取) |
|
||||
Reference in New Issue
Block a user