feat: add agent exec
This commit is contained in:
+17
-8
@@ -54,22 +54,31 @@ ARG BUILD_TIME
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Copy agent source
|
||||
# Copy agent source and config example
|
||||
COPY agent/ ./agent/
|
||||
|
||||
# Download dependencies
|
||||
WORKDIR /app/agent
|
||||
RUN go env -w GOPROXY=https://goproxy.cn,direct && go mod download
|
||||
|
||||
# Build agent for all platforms (parallel)
|
||||
# Build agent for all platforms and package as tar.gz (sequential to avoid file conflicts)
|
||||
RUN mkdir -p /opt/agent && \
|
||||
echo "${VERSION}" > /opt/agent/version.txt && \
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w -X 'main.Version=${VERSION}' -X 'main.BuildTime=${BUILD_TIME}'" -o /opt/agent/baihu-agent-linux-amd64 . & \
|
||||
# CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags="-s -w -X 'main.Version=${VERSION}' -X 'main.BuildTime=${BUILD_TIME}'" -o /opt/agent/baihu-agent-linux-arm64 . & \
|
||||
# CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags="-s -w -X 'main.Version=${VERSION}' -X 'main.BuildTime=${BUILD_TIME}'" -o /opt/agent/baihu-agent-windows-amd64.exe . & \
|
||||
# CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -ldflags="-s -w -X 'main.Version=${VERSION}' -X 'main.BuildTime=${BUILD_TIME}'" -o /opt/agent/baihu-agent-darwin-amd64 . & \
|
||||
# CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w -X 'main.Version=${VERSION}' -X 'main.BuildTime=${BUILD_TIME}'" -o /opt/agent/baihu-agent-darwin-arm64 . & \
|
||||
wait
|
||||
# Linux amd64
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w -X 'main.Version=${VERSION}' -X 'main.BuildTime=${BUILD_TIME}'" -o baihu-agent . && \
|
||||
tar -czvf /opt/agent/baihu-agent-linux-amd64.tar.gz baihu-agent config.example.ini && rm baihu-agent && \
|
||||
# Linux arm64
|
||||
# CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags="-s -w -X 'main.Version=${VERSION}' -X 'main.BuildTime=${BUILD_TIME}'" -o baihu-agent . && \
|
||||
# tar -czvf /opt/agent/baihu-agent-linux-arm64.tar.gz baihu-agent config.example.ini && rm baihu-agent && \
|
||||
# # Windows amd64
|
||||
# CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags="-s -w -X 'main.Version=${VERSION}' -X 'main.BuildTime=${BUILD_TIME}'" -o baihu-agent.exe . && \
|
||||
# tar -czvf /opt/agent/baihu-agent-windows-amd64.tar.gz baihu-agent.exe config.example.ini && rm baihu-agent.exe && \
|
||||
# # Darwin amd64
|
||||
# CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -ldflags="-s -w -X 'main.Version=${VERSION}' -X 'main.BuildTime=${BUILD_TIME}'" -o baihu-agent . && \
|
||||
# tar -czvf /opt/agent/baihu-agent-darwin-amd64.tar.gz baihu-agent config.example.ini && rm baihu-agent && \
|
||||
# # Darwin arm64
|
||||
# CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w -X 'main.Version=${VERSION}' -X 'main.BuildTime=${BUILD_TIME}'" -o baihu-agent . && \
|
||||
# tar -czvf /opt/agent/baihu-agent-darwin-arm64.tar.gz baihu-agent config.example.ini && rm baihu-agent
|
||||
|
||||
# ================================
|
||||
# Stage 4: Final image
|
||||
|
||||
@@ -28,13 +28,19 @@ build-all: build-web build
|
||||
build-agent:
|
||||
@mkdir -p data/agent
|
||||
@echo "$(VERSION)" > data/agent/version.txt
|
||||
cd agent && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w -X 'main.Version=$(VERSION)' -X 'main.BuildTime=$(BUILD_TIME)'" -o ../data/agent/baihu-agent-linux-amd64 .
|
||||
cd agent && CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags="-s -w -X 'main.Version=$(VERSION)' -X 'main.BuildTime=$(BUILD_TIME)'" -o ../data/agent/baihu-agent-linux-arm64 .
|
||||
cd agent && CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags="-s -w -X 'main.Version=$(VERSION)' -X 'main.BuildTime=$(BUILD_TIME)'" -o ../data/agent/baihu-agent-windows-amd64.exe .
|
||||
cd agent && CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -ldflags="-s -w -X 'main.Version=$(VERSION)' -X 'main.BuildTime=$(BUILD_TIME)'" -o ../data/agent/baihu-agent-darwin-amd64 .
|
||||
cd agent && CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w -X 'main.Version=$(VERSION)' -X 'main.BuildTime=$(BUILD_TIME)'" -o ../data/agent/baihu-agent-darwin-arm64 .
|
||||
@echo "Agent binaries built in data/agent/ (for local dev)"
|
||||
@echo "In Docker, agents are built to /opt/agent/"
|
||||
@echo "Building and packaging agents..."
|
||||
cd agent && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w -X 'main.Version=$(VERSION)' -X 'main.BuildTime=$(BUILD_TIME)'" -o baihu-agent . && \
|
||||
tar -czvf ../data/agent/baihu-agent-linux-amd64.tar.gz baihu-agent config.example.ini && rm baihu-agent
|
||||
cd agent && CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags="-s -w -X 'main.Version=$(VERSION)' -X 'main.BuildTime=$(BUILD_TIME)'" -o baihu-agent . && \
|
||||
tar -czvf ../data/agent/baihu-agent-linux-arm64.tar.gz baihu-agent config.example.ini && rm baihu-agent
|
||||
cd agent && CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags="-s -w -X 'main.Version=$(VERSION)' -X 'main.BuildTime=$(BUILD_TIME)'" -o baihu-agent.exe . && \
|
||||
tar -czvf ../data/agent/baihu-agent-windows-amd64.tar.gz baihu-agent.exe config.example.ini && rm baihu-agent.exe
|
||||
cd agent && CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -ldflags="-s -w -X 'main.Version=$(VERSION)' -X 'main.BuildTime=$(BUILD_TIME)'" -o baihu-agent . && \
|
||||
tar -czvf ../data/agent/baihu-agent-darwin-amd64.tar.gz baihu-agent config.example.ini && rm baihu-agent
|
||||
cd agent && CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w -X 'main.Version=$(VERSION)' -X 'main.BuildTime=$(BUILD_TIME)'" -o baihu-agent . && \
|
||||
tar -czvf ../data/agent/baihu-agent-darwin-arm64.tar.gz baihu-agent config.example.ini && rm baihu-agent
|
||||
@echo "Agent packages built in data/agent/"
|
||||
@ls -lh data/agent/*.tar.gz
|
||||
|
||||
# Clean built files
|
||||
clean:
|
||||
@@ -77,14 +83,14 @@ docker-down:
|
||||
# Help
|
||||
help:
|
||||
@echo "Available targets:"
|
||||
@echo " all - Build the application (default)"
|
||||
@echo " build - Build the application"
|
||||
@echo " build-agent - Build agent for all platforms"
|
||||
@echo " clean - Clean built files"
|
||||
@echo " run - Run the application"
|
||||
@echo " deps - Install dependencies"
|
||||
@echo " docker-build - Build Docker image"
|
||||
@echo " docker-run - Run Docker container"
|
||||
@echo " docker-up - Start Docker Compose stack"
|
||||
@echo " docker-down - Stop Docker Compose stack"
|
||||
@echo " help - Show this help message"
|
||||
@echo " all - Build the application (default)"
|
||||
@echo " build - Build the application"
|
||||
@echo " build-agent - Build agent packages (tar.gz) for all platforms"
|
||||
@echo " clean - Clean built files"
|
||||
@echo " run - Run the application"
|
||||
@echo " deps - Install dependencies"
|
||||
@echo " docker-build - Build Docker image"
|
||||
@echo " docker-run - Run Docker container"
|
||||
@echo " docker-up - Start Docker Compose stack"
|
||||
@echo " docker-down - Stop Docker Compose stack"
|
||||
@echo " help - Show this help message"
|
||||
@@ -317,9 +317,9 @@ func (c *AgentController) Download(ctx *gin.Context) {
|
||||
}
|
||||
|
||||
ctx.Header("Content-Disposition", "attachment; filename="+filename)
|
||||
ctx.Header("Content-Type", "application/octet-stream")
|
||||
ctx.Header("Content-Type", "application/gzip")
|
||||
ctx.Header("Content-Length", strconv.Itoa(len(data)))
|
||||
ctx.Data(200, "application/octet-stream", data)
|
||||
ctx.Data(200, "application/gzip", data)
|
||||
}
|
||||
|
||||
// GetVersion 获取 Agent 最新版本信息
|
||||
|
||||
@@ -320,9 +320,11 @@ func (s *AgentService) GetAvailablePlatforms() []map[string]string {
|
||||
|
||||
for _, f := range files {
|
||||
name := f.Name()
|
||||
if strings.HasPrefix(name, "baihu-agent-") {
|
||||
// baihu-agent-linux-amd64, baihu-agent-windows-amd64.exe
|
||||
parts := strings.Split(strings.TrimSuffix(name, ".exe"), "-")
|
||||
// baihu-agent-linux-amd64.tar.gz
|
||||
if strings.HasPrefix(name, "baihu-agent-") && strings.HasSuffix(name, ".tar.gz") {
|
||||
// 去掉 .tar.gz 后缀
|
||||
baseName := strings.TrimSuffix(name, ".tar.gz")
|
||||
parts := strings.Split(baseName, "-")
|
||||
if len(parts) >= 4 {
|
||||
platforms = append(platforms, map[string]string{
|
||||
"os": parts[2],
|
||||
@@ -336,12 +338,9 @@ func (s *AgentService) GetAvailablePlatforms() []map[string]string {
|
||||
return platforms
|
||||
}
|
||||
|
||||
// GetAgentBinary 获取 Agent 二进制文件
|
||||
// GetAgentBinary 获取 Agent 压缩包
|
||||
func (s *AgentService) GetAgentBinary(osType, arch string) ([]byte, string, error) {
|
||||
filename := fmt.Sprintf("baihu-agent-%s-%s", osType, arch)
|
||||
if osType == "windows" {
|
||||
filename += ".exe"
|
||||
}
|
||||
filename := fmt.Sprintf("baihu-agent-%s-%s.tar.gz", osType, arch)
|
||||
|
||||
// 优先从 /opt/agent 读取(容器内)
|
||||
filePath := filepath.Join("/opt/agent", filename)
|
||||
|
||||
@@ -364,8 +364,8 @@ onUnmounted(() => {
|
||||
<div class="border-t pt-4">
|
||||
<p class="text-sm font-medium mb-2">使用说明</p>
|
||||
<div class="text-xs text-muted-foreground space-y-1.5">
|
||||
<p>1. 下载对应平台的 Agent 程序</p>
|
||||
<p>2. 创建 config.ini 配置文件,设置 server_url</p>
|
||||
<p>1. 下载对应平台的 Agent 压缩包并解压</p>
|
||||
<p>2. 修改 config.example.ini 为 config.ini,设置 server_url</p>
|
||||
<p>3. 运行 <code class="bg-muted px-1 rounded">./baihu-agent start</code> 启动</p>
|
||||
<p>4. 在本页面"未注册"标签中审核通过</p>
|
||||
<p>5. 可选: <code class="bg-muted px-1 rounded">./baihu-agent install</code> 设置开机自启</p>
|
||||
|
||||
Reference in New Issue
Block a user