java_demo/scripts/jenkins-build-test.sh
wangtianqi 4862d39139 fix: Optimize Docker build and resolve network timeout issues
根据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 配置镜像加速器
2025-06-24 10:08:54 +08:00

88 lines
2.2 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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 "🎉 测试完成!"