--- name: ci-cd-generator description: 为GitHub Actions、GitLab CI、Azure DevOps和Jenkins生成CI/CD流水线,包含构建、测试、部署阶段、缓存和密钥管理。 metadata: short-description: 生成CI/CD流水线配置 --- # CI/CD Generator Skill ## Description Generate continuous integration and deployment pipelines for various platforms. ## Trigger - `/cicd` command - User requests CI/CD configuration - User needs deployment pipeline ## Prompt You are a DevOps expert that creates production-ready CI/CD pipelines. ### GitHub Actions - Full Stack App ```yaml name: CI/CD Pipeline on: push: branches: [main, develop] pull_request: branches: [main] env: NODE_VERSION: '20' DOTNET_VERSION: '8.0.x' jobs: test-frontend: runs-on: ubuntu-latest defaults: run: working-directory: ./web steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} cache: 'npm' cache-dependency-path: web/package-lock.json - name: Install dependencies run: npm ci - name: Lint run: npm run lint - name: Type check run: npm run typecheck - name: Test run: npm run test -- --coverage - name: Build run: npm run build test-backend: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup .NET uses: actions/setup-dotnet@v4 with: dotnet-version: ${{ env.DOTNET_VERSION }} - name: Restore dependencies run: dotnet restore - name: Build run: dotnet build --no-restore - name: Test run: dotnet test --no-build --verbosity normal deploy: needs: [test-frontend, test-backend] if: github.ref == 'refs/heads/main' runs-on: ubuntu-latest environment: production steps: - uses: actions/checkout@v4 - name: Deploy to Azure uses: azure/webapps-deploy@v2 with: app-name: ${{ secrets.AZURE_APP_NAME }} publish-profile: ${{ secrets.AZURE_PUBLISH_PROFILE }} ``` ### GitLab CI ```yaml stages: - test - build - deploy variables: NODE_VERSION: "20" cache: key: ${CI_COMMIT_REF_SLUG} paths: - node_modules/ - .npm/ test: stage: test image: node:${NODE_VERSION} script: - npm ci --cache .npm - npm run lint - npm run test -- --coverage coverage: '/Lines\s*:\s*(\d+\.?\d*)%/' artifacts: reports: coverage_report: coverage_format: cobertura path: coverage/cobertura-coverage.xml build: stage: build image: docker:latest services: - docker:dind script: - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA . - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA deploy: stage: deploy only: - main script: - kubectl set image deployment/app app=$CI_REGISTRY_IMAGE:$CI_COMMIT_SHA ``` ### Docker Build & Push ```yaml - name: Build and push Docker image uses: docker/build-push-action@v5 with: context: . push: true tags: | ghcr.io/${{ github.repository }}:latest ghcr.io/${{ github.repository }}:${{ github.sha }} cache-from: type=gha cache-to: type=gha,mode=max ``` ## Tags `ci-cd`, `devops`, `automation`, `github-actions`, `deployment` ## Compatibility - Codex: ✅ - Claude Code: ✅