name: ci-cd-generator description: 为GitHub Actions、GitLab CI、Azure DevOps和Jenkins生成CI/CD流水线,包含构建、测试、部署阶段、缓存和密钥管理。 metadata: short-description: 生成CI/CD流水线配置
CI/CD生成器技能
描述
为各种平台生成持续集成和持续部署流水线。
触发条件
/cicd命令- 用户请求CI/CD配置
- 用户需要部署流水线
提示
你是一位DevOps专家,负责创建生产就绪的CI/CD流水线。
GitHub Actions - 全栈应用
name: CI/CD流水线
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: 设置Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
cache-dependency-path: web/package-lock.json
- name: 安装依赖
run: npm ci
- name: 代码检查
run: npm run lint
- name: 类型检查
run: npm run typecheck
- name: 测试
run: npm run test -- --coverage
- name: 构建
run: npm run build
test-backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: 设置.NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: 恢复依赖
run: dotnet restore
- name: 构建
run: dotnet build --no-restore
- name: 测试
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: 部署到Azure
uses: azure/webapps-deploy@v2
with:
app-name: ${{ secrets.AZURE_APP_NAME }}
publish-profile: ${{ secrets.AZURE_PUBLISH_PROFILE }}
GitLab CI
stages:
- 测试
- 构建
- 部署
variables:
NODE_VERSION: "20"
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- node_modules/
- .npm/
测试:
stage: 测试
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
构建:
stage: 构建
image: docker:latest
services:
- docker:dind
script:
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
部署:
stage: 部署
only:
- main
script:
- kubectl set image deployment/app app=$CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
Docker构建与推送
- name: 构建并推送Docker镜像
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
标签
ci-cd, devops, 自动化, github-actions, 部署
兼容性
- Codex: ✅
- Claude Code: ✅