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