根据Gemini建议的优化方案: **Dockerfile修复**: - 修复FROM语句大小写警告 (as -> AS) - 修复Maven settings.xml中的XML标签错误 (<n> -> <name>) - 优化健康检查端点支持Actuator标准 - 统一使用mvnw执行命令 **Jenkinsfile优化**: - 简化Docker buildx命令,移除可能导致网络问题的参数 - 添加备用构建方案:Buildx失败时自动切换到传统Docker构建 - 移除复杂的缓存配置,先确保基本构建正常 - 优化错误处理和重试逻辑 - 减少重试次数避免无谓等待 **工具脚本**: - setup-docker-mirrors.sh: 配置Docker镜像加速器 - test-docker-build.sh: 测试Docker构建环境 - 包含网络优化和构建器验证 **主要解决问题**: - Docker Hub网络超时问题 - Buildx配置复杂性 - 构建失败时的降级策略 下一步建议在服务器运行 scripts/setup-docker-mirrors.sh 配置镜像加速器
88 lines
2.2 KiB
Bash
88 lines
2.2 KiB
Bash
#!/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 "🎉 测试完成!"
|