v0.0.3 published

This commit is contained in:
2025-06-02 11:27:10 +08:00
commit dca4f11e0d
61 changed files with 16453 additions and 0 deletions

View File

@@ -0,0 +1,118 @@
#!/bin/bash
# Hexo Container v0.0.3 构建测试脚本 (Linux)
# build_test.sh
# 确保脚本在正确的目录下执行
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
# 参数设置
TAG=${1:-"hexo-test:v0.0.3"}
PLATFORM=${2:-"linux/amd64"}
echo "=== Hexo Container v0.0.3 构建测试 ==="
echo "镜像标签: $TAG"
echo "平台架构: $PLATFORM"
echo "工作目录: $SCRIPT_DIR"
# Dockerfile 路径 (相对于测试脚本目录)
DOCKERFILE_PATH="../../../Dockerfile_v0.0.3"
# 检查 Dockerfile 是否存在
if [ ! -f "$DOCKERFILE_PATH" ]; then
echo "❌ 错误: Dockerfile 不存在: $DOCKERFILE_PATH"
echo "完整路径: $(realpath "$DOCKERFILE_PATH" 2>/dev/null || echo "路径无法解析")"
exit 1
fi
# 创建日志目录 (在测试脚本目录下)
LOG_DIR="./logs"
mkdir -p "$LOG_DIR"
# 记录开始时间
START_TIME=$(LC_ALL=C date)
LOG_FILE="$LOG_DIR/build_$(date +%Y%m%d_%H%M%S).log"
echo "构建开始时间: $START_TIME"
echo "日志文件: $LOG_FILE"
# 执行构建
echo ""
echo "开始构建镜像..."
# 获取 Dockerfile 所在目录的绝对路径
DOCKERFILE_DIR="$(cd "$(dirname "$DOCKERFILE_PATH")" && pwd)"
DOCKERFILE_NAME=$(basename "$DOCKERFILE_PATH")
echo "Dockerfile 目录: $DOCKERFILE_DIR"
echo "Dockerfile 文件: $DOCKERFILE_NAME"
# 切换到 Dockerfile 所在目录进行构建
cd "$DOCKERFILE_DIR" || exit 1
BUILD_CMD="docker build -f $DOCKERFILE_NAME -t $TAG --platform $PLATFORM ."
echo "执行命令: $BUILD_CMD"
# 执行构建并记录日志
if $BUILD_CMD 2>&1 | tee "$SCRIPT_DIR/$LOG_FILE"; then
END_TIME=$(LC_ALL=C date)
# 计算构建时间
START_TIMESTAMP=$(date -d "$START_TIME" +%s)
END_TIMESTAMP=$(date -d "$END_TIME" +%s)
DURATION=$((END_TIMESTAMP - START_TIMESTAMP))
DURATION_MIN=$(echo "scale=2; $DURATION / 60" | bc 2>/dev/null || echo "$(($DURATION / 60))")
echo ""
echo "=== 构建成功 ==="
echo "构建结束时间: $END_TIME"
echo "构建耗时: ${DURATION_MIN} 分钟"
# 显示镜像信息
echo ""
echo "=== 镜像信息 ==="
docker images "$TAG"
# 显示镜像详细信息
echo ""
echo "=== 镜像详细信息 ==="
if command -v jq > /dev/null 2>&1; then
IMAGE_SIZE=$(docker inspect "$TAG" | jq -r '.[0].Size')
IMAGE_SIZE_MB=$(echo "scale=2; $IMAGE_SIZE / 1024 / 1024" | bc 2>/dev/null || echo "$(($IMAGE_SIZE / 1024 / 1024))")
IMAGE_CREATED=$(docker inspect "$TAG" | jq -r '.[0].Created')
IMAGE_ARCH=$(docker inspect "$TAG" | jq -r '.[0].Architecture')
echo "镜像大小: ${IMAGE_SIZE_MB} MB"
echo "创建时间: $IMAGE_CREATED"
echo "架构: $IMAGE_ARCH"
else
echo "镜像大小: $(docker inspect "$TAG" --format='{{.Size}}' | awk '{print int($1/1024/1024) " MB"}')"
echo "创建时间: $(docker inspect "$TAG" --format='{{.Created}}')"
echo "架构: $(docker inspect "$TAG" --format='{{.Architecture}}')"
fi
# 输出构建统计
echo ""
echo "=== 构建统计 ==="
LAYER_COUNT=$(grep -c "^Step [0-9]*/" "$SCRIPT_DIR/$LOG_FILE" 2>/dev/null || echo "未知")
echo "构建步骤数: $LAYER_COUNT"
cd "$SCRIPT_DIR"
exit 0
else
echo ""
echo "=== 构建失败 ==="
echo "详细日志请查看: $LOG_FILE"
# 显示最后几行日志
echo ""
echo "=== 最后10行构建日志 ==="
tail -10 "$SCRIPT_DIR/$LOG_FILE"
cd "$SCRIPT_DIR"
exit 1
fi
echo ""
echo "构建测试完成。"
echo "详细日志保存在: $LOG_FILE"