v0.0.3 published
This commit is contained in:
118
test/v0.0.3/linux/build_test.sh
Normal file
118
test/v0.0.3/linux/build_test.sh
Normal 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"
|
||||
Reference in New Issue
Block a user