Files
agent_management/agent_templates/scripts/build_all_agents.sh
T

133 lines
3.7 KiB
Bash
Executable File

#!/bin/bash
# 批量构建所有更新的 Agent 并推送到 ACR (ARM64)
# 使用方法: ./build_all_agents.sh
set -e
# 默认配置
ACR_NAME="${ACR_NAME:-agnettaiji.azurecr.io}"
TAG="${1:-latest}"
PLATFORM="linux/arm64"
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
echo -e "${BLUE}========================================${NC}"
echo -e "${BLUE} 批量构建 Agent Templates (ARM64)${NC}"
echo -e "${BLUE}========================================${NC}"
echo ""
# 登录 ACR
echo -e "${GREEN}==> 登录到 ACR...${NC}"
az acr login --name $(echo ${ACR_NAME} | cut -d'.' -f1)
# 检查 Docker buildx
if ! docker buildx version > /dev/null 2>&1; then
echo -e "${RED}错误: Docker buildx 未安装${NC}"
exit 1
fi
# 创建 builder
if ! docker buildx ls | grep -q multiarch-builder; then
echo -e "${YELLOW}创建 multiarch-builder...${NC}"
docker buildx create --name multiarch-builder --use
fi
docker buildx use multiarch-builder
# Agent 列表(更新路径)
declare -A AGENTS=(
["search-agent"]="agents/search_agent/search_agent.Dockerfile"
["search-agent-a2a"]="agents/search_agent/search_agent_A2A/search_agent_A2A.Dockerfile"
["search-agent-mcp"]="agents/search_agent/search_agent_MCP/search_agent_MCP.Dockerfile"
["azure-blob-agent"]="agents/azure_blob_agent/azure_blob_agent.Dockerfile"
["azure-blob-agent-a2a"]="agents/azure_blob_agent_a2a/azure_blob_agent_a2a.Dockerfile"
["azure-blob-agent-mcp"]="agents/azure_blob_agent_mcp/azure_blob_agent_mcp.Dockerfile"
["a2a-litellm-agent"]="agents/a2a_litellm_agent/a2a_litellm_agent.Dockerfile"
["mysql-agent"]="agents/mysql_agent/mysql_agent.Dockerfile"
["postgresql-agent"]="agents/postgresql_agent/postgresql_agent.Dockerfile"
["jina-search-agent"]="agents/jina_search_agent/jina_search_agent.Dockerfile"
["echo-agent"]="agents/echo_agent/echo_agent.Dockerfile"
)
# 构建函数
build_agent() {
local name=$1
local dockerfile=$2
local image="${ACR_NAME}/ai-agents/${name}:${TAG}"
echo ""
echo -e "${BLUE}========================================${NC}"
echo -e "${BLUE}构建: ${name}${NC}"
echo -e "${BLUE}========================================${NC}"
echo "Dockerfile: ${dockerfile}"
echo "镜像: ${image}"
echo "平台: ${PLATFORM}"
echo ""
# 构建并推送
docker buildx build \
--platform ${PLATFORM} \
-f ${dockerfile} \
-t ${image} \
--push \
.
if [ $? -eq 0 ]; then
echo -e "${GREEN}✅ ${name} 构建成功${NC}"
else
echo -e "${RED}❌ ${name} 构建失败${NC}"
return 1
fi
}
# 构建所有 Agent
SUCCESS_COUNT=0
FAIL_COUNT=0
FAILED_AGENTS=()
for name in "${!AGENTS[@]}"; do
dockerfile="${AGENTS[$name]}"
if [ -f "${dockerfile}" ]; then
if build_agent "${name}" "${dockerfile}"; then
((SUCCESS_COUNT++))
else
((FAIL_COUNT++))
FAILED_AGENTS+=("${name}")
fi
else
echo -e "${YELLOW}⚠️ 跳过 ${name}: Dockerfile ${dockerfile} 不存在${NC}"
fi
done
# 总结
echo ""
echo -e "${BLUE}========================================${NC}"
echo -e "${BLUE} 构建总结${NC}"
echo -e "${BLUE}========================================${NC}"
echo -e "${GREEN}成功: ${SUCCESS_COUNT}${NC}"
echo -e "${RED}失败: ${FAIL_COUNT}${NC}"
if [ ${FAIL_COUNT} -gt 0 ]; then
echo -e "${RED}失败的 Agents:${NC}"
for agent in "${FAILED_AGENTS[@]}"; do
echo -e " - ${agent}"
done
exit 1
fi
echo ""
echo -e "${GREEN}✅ 所有 Agent 构建成功!${NC}"
echo ""
echo "已推送的镜像:"
for name in "${!AGENTS[@]}"; do
echo " - ${ACR_NAME}/ai-agents/${name}:${TAG}"
done