java_demo/scripts/jenkins-build-test.sh

88 lines
2.2 KiB
Bash
Raw Normal View History

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