59 lines
2.3 KiB
Bash
59 lines
2.3 KiB
Bash
#!/usr/bin/env bash
|
||
# Tsecbench 镜像构建脚本(在 WSL 中执行)
|
||
#
|
||
# 用法:
|
||
# bash tencent/build.sh # 默认构建 tsecbench-agent:latest
|
||
# IMAGE_NAME=myagent bash tencent/build.sh # 自定义镜像名
|
||
#
|
||
# 前置条件:
|
||
# - Go 交叉编译已在 Windows 侧完成(tencent/agent-linux-amd64)
|
||
# 可在 PowerShell 中执行:
|
||
# $env:GOOS="linux"; $env:GOARCH="amd64"; $env:CGO_ENABLED="0"
|
||
# go build -trimpath -ldflags="-s -w" -o tencent/agent-linux-amd64 .
|
||
# - WSL 中已安装 docker
|
||
#
|
||
# 流程:
|
||
# 1. 检查预编译的 Go agent 二进制是否存在
|
||
# 2. docker build(构建上下文 = 项目根目录,.dockerignore 排除无关文件)
|
||
# 3. docker save | gzip 导出到 tencent/agent.tar.gz
|
||
set -euo pipefail
|
||
|
||
# ---- 配置 ----
|
||
PROJECT_ROOT="${PROJECT_ROOT:-/mnt/e/Code/Go/awesomeProject/agent}"
|
||
IMAGE_NAME="${IMAGE_NAME:-tsecbench-agent}"
|
||
IMAGE_TAG="${IMAGE_TAG:-latest}"
|
||
AGENT_BIN="$PROJECT_ROOT/tencent/agent-linux-amd64"
|
||
|
||
echo "==> 项目根目录: $PROJECT_ROOT"
|
||
echo "==> 镜像名称: $IMAGE_NAME:$IMAGE_TAG"
|
||
|
||
# ---- 1. 检查 Go agent 二进制 ----
|
||
echo "==> [1/3] 检查 Go agent 二进制..."
|
||
if [ ! -f "$AGENT_BIN" ]; then
|
||
echo " 未找到预编译二进制 $AGENT_BIN"
|
||
echo " 请先在 PowerShell 中执行交叉编译:"
|
||
echo ' $env:GOOS="linux"; $env:GOARCH="amd64"; $env:CGO_ENABLED="0"'
|
||
echo ' go build -trimpath -ldflags="-s -w" -o tencent/agent-linux-amd64 .'
|
||
exit 1
|
||
fi
|
||
echo " 二进制就绪: $(ls -lh "$AGENT_BIN" | awk '{print $5}')"
|
||
|
||
# ---- 2. docker build ----
|
||
# 构建上下文 = 项目根目录,.dockerignore 排除无关文件
|
||
# Dockerfile 路径通过 -f 指定
|
||
echo "==> [2/3] 构建 Docker 镜像 $IMAGE_NAME:$IMAGE_TAG..."
|
||
docker build -f "$PROJECT_ROOT/tencent/Dockerfile" -t "$IMAGE_NAME:$IMAGE_TAG" "$PROJECT_ROOT"
|
||
|
||
# ---- 3. 导出镜像 ----
|
||
echo "==> [3/3] 导出镜像到 tencent/agent.tar.gz..."
|
||
OUTPUT="$PROJECT_ROOT/tencent/agent.tar.gz"
|
||
docker save "$IMAGE_NAME:$IMAGE_TAG" | gzip > "$OUTPUT"
|
||
echo " 导出完成: $(ls -lh "$OUTPUT" | awk '{print $5}')"
|
||
|
||
echo ""
|
||
echo "==> 全部完成!"
|
||
echo " 镜像: $IMAGE_NAME:$IMAGE_TAG"
|
||
echo " 产物: tencent/agent.tar.gz"
|
||
echo ""
|
||
echo "上传到 Tsecbench 平台时直接选择 agent.tar.gz 即可。"
|