mirror of
https://github.com/fankes/komari-agent.git
synced 2025-10-18 02:29:22 +08:00
63 lines
1.7 KiB
Bash
63 lines
1.7 KiB
Bash
#!/bin/bash
|
|
|
|
# 定义颜色
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
WHITE='\033[0;37m'
|
|
NC='\033[0m' # 无颜色
|
|
|
|
# 定义操作系统和架构列表
|
|
OS_LIST=("windows" "linux" "darwin" "freebsd")
|
|
ARCH_LIST=("amd64" "arm64" "386" "arm")
|
|
|
|
# 创建构建目录
|
|
mkdir -p ./build
|
|
|
|
# 获取当前版本
|
|
VERSION=$(git describe --tags --abbrev=0 2>/dev/null || echo "dev")
|
|
|
|
# 初始化失败列表
|
|
FAILED_BUILDS=()
|
|
|
|
# 遍历操作系统和架构组合
|
|
for GOOS in "${OS_LIST[@]}"; do
|
|
for GOARCH in "${ARCH_LIST[@]}"; do
|
|
# 排除 windows/arm, darwin/386 和 darwin/arm
|
|
if { [ "$GOOS" = "windows" ] && [ "$GOARCH" = "arm" ]; } || \
|
|
{ [ "$GOOS" = "darwin" ] && { [ "$GOARCH" = "386" ] || [ "$GOARCH" = "arm" ]; }; }; then
|
|
continue
|
|
fi
|
|
|
|
echo -e "Building for $GOOS/$GOARCH..."
|
|
|
|
# 设置输出二进制文件名
|
|
BINARY_NAME="komari-agent-${GOOS}-${GOARCH}"
|
|
if [ "$GOOS" = "windows" ]; then
|
|
BINARY_NAME="${BINARY_NAME}.exe"
|
|
fi
|
|
|
|
# 构建二进制文件
|
|
env GOOS=$GOOS GOARCH=$GOARCH CGO_ENABLED=0 go build -trimpath -ldflags="-s -w -X github.com/komari-monitor/komari-agent/update.CurrentVersion=${VERSION}" -o "./build/$BINARY_NAME"
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo -e "${RED}Failed to build for $GOOS/$GOARCH${NC}"
|
|
FAILED_BUILDS+=("$GOOS/$GOARCH")
|
|
else
|
|
echo -e "${GREEN}Successfully built $BINARY_NAME${NC}"
|
|
fi
|
|
done
|
|
done
|
|
|
|
# 输出失败的构建
|
|
if [ ${#FAILED_BUILDS[@]} -ne 0 ]; then
|
|
echo -e "\n${RED}The following builds failed:${NC}"
|
|
for BUILD in "${FAILED_BUILDS[@]}"; do
|
|
echo -e "${RED}- $BUILD${NC}"
|
|
done
|
|
else
|
|
echo -e "\n${GREEN}All builds completed successfully.${NC}"
|
|
fi
|
|
|
|
# 提示构建完成
|
|
echo -e "\nBinaries are in the ./build directory."
|