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