Files
xgj/.gitea/workflows/quick-test.yml

170 lines
5.9 KiB
YAML

name: 快速测试 Setup Environment
on:
workflow_dispatch:
inputs:
quick_test_type:
description: '选择快速测试类型'
required: true
default: 'smoke'
type: choice
options:
- smoke # 烟雾测试 - 最基本功能
- docker # Docker 功能测试
- network # 网络连接测试
jobs:
smoke-test:
if: ${{ inputs.quick_test_type == 'smoke' }}
runs-on: ubuntu-node-20
steps:
- name: 检出代码
uses: actions/checkout@v4
- name: 烟雾测试 - 基本功能验证
id: smoke
uses: xgj/actions/setup-env@v1
with:
docker-password: ${{ secrets.DOCKER_PASSWORD }}
cache-key: 'smoke-test'
- name: 验证核心功能
run: |
echo "🚀 烟雾测试开始..."
# 验证 Docker
docker --version || exit 1
echo "✅ Docker 可用"
# 验证 kubectl
kubectl version --client || exit 1
echo "✅ kubectl 可用"
# 验证 Git 配置
[[ "$(git config --global user.name)" == "GiteaActions" ]] || exit 1
echo "✅ Git 配置正确"
# 验证输出
echo "缓存状态: ${{ steps.smoke.outputs.cache-hit }}"
echo "Docker 版本: ${{ steps.smoke.outputs.docker-version }}"
echo "kubectl 版本: ${{ steps.smoke.outputs.kubectl-version }}"
echo "🎉 烟雾测试通过!"
docker-test:
if: ${{ inputs.quick_test_type == 'docker' }}
runs-on: ubuntu-node-20
steps:
- name: 检出代码
uses: actions/checkout@v4
- name: Docker 功能测试
uses: xgj/actions/setup-env@v1
with:
docker-password: ${{ secrets.DOCKER_PASSWORD }}
skip-kubectl: 'true'
cache-key: 'docker-test'
- name: 测试 Docker 完整功能
run: |
echo "🐳 Docker 功能测试..."
# 基本 Docker 命令
docker info
docker version
# 测试镜像拉取
docker pull alpine:latest
echo "✅ 镜像拉取成功"
# 测试容器运行
docker run --rm alpine:latest echo "容器运行测试"
echo "✅ 容器运行成功"
# 测试 Docker Compose
docker compose version
echo "✅ Docker Compose 可用"
# 测试 Buildx
docker buildx version
echo "✅ Docker Buildx 可用"
echo "🎉 Docker 功能测试完成!"
network-test:
if: ${{ inputs.quick_test_type == 'network' }}
runs-on: ubuntu-node-20
steps:
- name: 检出代码
uses: actions/checkout@v4
- name: 网络连接测试配置
uses: xgj/actions/setup-env@v1
with:
docker-password: ${{ secrets.DOCKER_PASSWORD }}
use-aliyun-mirror: 'true'
cache-key: 'network-test'
- name: 测试网络连接
run: |
echo "🌐 网络连接测试..."
# 测试基本网络连通性
echo "测试 GitHub 连接..."
curl -I https://github.com --connect-timeout 10 || echo "❌ GitHub 连接失败"
echo "测试阿里云镜像源..."
curl -I https://mirrors.aliyun.com --connect-timeout 10 || echo "❌ 阿里云连接失败"
echo "测试 Docker Hub..."
curl -I https://hub.docker.com --connect-timeout 10 || echo "❌ Docker Hub 连接失败"
echo "测试私有仓库..."
curl -I https://docker-registry.bjxgj.com/v2/ --connect-timeout 10 || echo "❌ 私有仓库连接失败"
# 测试 DNS 解析
echo "测试 DNS 解析..."
nslookup github.com || echo "❌ DNS 解析失败"
# 测试 Docker 镜像拉取
echo "测试 Docker 镜像拉取..."
docker pull alpine:latest && echo "✅ Alpine 镜像拉取成功" || echo "❌ 镜像拉取失败"
echo "🎉 网络测试完成!"
quick-summary:
needs: [smoke-test, docker-test, network-test]
if: always()
runs-on: ubuntu-node-20
steps:
- name: 快速测试总结
run: |
echo "## ⚡ 快速测试报告" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### 测试类型: ${{ inputs.quick_test_type }}" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
if [[ "${{ needs.smoke-test.result }}" == "success" ]]; then
echo "✅ **烟雾测试通过** - 基本功能正常" >> $GITHUB_STEP_SUMMARY
elif [[ "${{ needs.smoke-test.result }}" == "failure" ]]; then
echo "❌ **烟雾测试失败** - 基本功能异常" >> $GITHUB_STEP_SUMMARY
fi
if [[ "${{ needs.docker-test.result }}" == "success" ]]; then
echo "✅ **Docker 测试通过** - Docker 功能正常" >> $GITHUB_STEP_SUMMARY
elif [[ "${{ needs.docker-test.result }}" == "failure" ]]; then
echo "❌ **Docker 测试失败** - Docker 功能异常" >> $GITHUB_STEP_SUMMARY
fi
if [[ "${{ needs.network-test.result }}" == "success" ]]; then
echo "✅ **网络测试通过** - 网络连接正常" >> $GITHUB_STEP_SUMMARY
elif [[ "${{ needs.network-test.result }}" == "failure" ]]; then
echo "❌ **网络测试失败** - 网络连接异常" >> $GITHUB_STEP_SUMMARY
fi
echo "" >> $GITHUB_STEP_SUMMARY
echo "### 下一步" >> $GITHUB_STEP_SUMMARY
echo "- 如果测试通过,可以在生产环境中使用" >> $GITHUB_STEP_SUMMARY
echo "- 如果测试失败,请检查错误日志和配置" >> $GITHUB_STEP_SUMMARY
echo "- 可以运行完整测试获取更多信息" >> $GITHUB_STEP_SUMMARY