#!/bin/bash # Jenkins构建测试脚本 # 模拟Jenkins环境测试Docker构建 echo "🚀 Jenkins构建环境测试" echo "====================" # 设置变量(模拟Jenkins环境变量) export IMAGE_NAME="jenkins-demo" export IMAGE_TAG="test" echo "📋 测试环境:" echo " 镜像名称: ${IMAGE_NAME}" echo " 镜像标签: ${IMAGE_TAG}" # 1. 清理旧镜像 echo "🧹 清理旧镜像..." docker image prune -f || true # 2. 检查Buildx echo "🔍 检查Buildx..." echo "✅ 使用已安装的 Docker Buildx $(docker buildx version)" # 3. 管理构建器 echo "🏗️ 管理构建器..." if ! docker buildx inspect jenkins-builder >/dev/null 2>&1; then echo "创建新的构建器实例..." docker buildx create --name jenkins-builder --use --bootstrap else echo "使用现有构建器实例..." docker buildx use jenkins-builder fi # 验证构建器状态 docker buildx inspect jenkins-builder # 4. 执行构建 echo "🐳 开始构建Docker镜像..." cd "$(dirname "$0")/.." docker buildx build \ --builder jenkins-builder \ --platform linux/amd64 \ --cache-from type=local,src=/tmp/.buildx-cache \ --cache-to type=local,dest=/tmp/.buildx-cache-new,mode=max \ --build-arg BUILDKIT_INLINE_CACHE=1 \ --load \ -t ${IMAGE_NAME}:${IMAGE_TAG} \ -t ${IMAGE_NAME}:latest \ . # 检查构建结果 if [ $? -eq 0 ]; then echo "✅ Docker镜像构建完成: ${IMAGE_NAME}:${IMAGE_TAG}" # 验证镜像 docker images ${IMAGE_NAME}:${IMAGE_TAG} # 测试运行 echo "🧪 测试运行镜像..." docker run --rm -d --name test-container -p 18080:8080 ${IMAGE_NAME}:${IMAGE_TAG} # 等待启动 sleep 10 # 健康检查 if curl -f http://localhost:18080/api/health 2>/dev/null; then echo "✅ 应用启动成功,健康检查通过" else echo "⚠️ 健康检查失败,但镜像构建成功" fi # 停止测试容器 docker stop test-container || true else echo "❌ Docker镜像构建失败" exit 1 fi # 5. 移动缓存 echo "📦 管理构建缓存..." rm -rf /tmp/.buildx-cache || true mv /tmp/.buildx-cache-new /tmp/.buildx-cache || true echo "🎉 测试完成!"