Files
2026-08-14 23:41:57 +08:00

59 lines
2.3 KiB
Bash
Raw Permalink 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.
#!/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 即可。"