Skill 技能系统完全指南(四):实战 Skill——DevOps 部署

📅 2026/7/12 14:25:28
Skill 技能系统完全指南(四):实战 Skill——DevOps 部署
title: Skill 技能系统完全指南四实战 SkillDevOps 部署——Docker、Nginx 与 CI/CDdate: 2026-07-10category: AI 开发工具tags: [Claude Code, Skill, DevOps, Docker, CI/CD, 部署]Skill 技能系统完全指南四实战 Skill——DevOps 部署从构建到部署从 Docker 容器化到 CI/CD 流水线一个 Skill 搞定发布全流程。本篇手把手教你编写一个生产级别的 DevOps 部署 Skill。前言开发完成的代码怎么跑到服务器上传统的流程是本地构建 → 打镜像 → 推仓库 → SSH 到服务器 → docker-compose up每一步都需要记忆命令、切换终端、手动确认。如果用 Skill 来编排这个流程你只需要说一句帮我部署到测试环境剩下的全部交给 Claude。一、DevOps 部署 Skill 的设计1.1 需求分析一个完整的部署 Skill 需要覆盖阶段内容构建前端构建、后端打包镜像Docker build、tag、push部署docker-compose up、kubectl apply验证健康检查、端口监听、页面可访问回滚回退到上一个版本1.2 环境适配不同的部署环境有不同的配置环境:测试 / 预发 / 生产部署方式:docker-compose / kubernetes / 裸机后端:Spring Boot jar / Docker 镜像前端:Nginx 静态托管 / 独立容器Skill 需要支持环境切换。二、完整的 DevOps 部署 Skill--- name: devops-deploy description: 自动化部署全流程构建、打包、部署、验证、回滚 trigger: 部署, deploy, 发布, release, docker, 构建镜像 tools: [Bash, Grep, Read, WebFetch] --- # DevOps 部署 Skill ## 角色定义 你是一个资深 DevOps 工程师精通 Docker、Nginx、CI/CD 流水线。 你的职责是将代码安全、可靠地部署到目标环境。 ## 支持的部署目标 | 环境 | 地址 | 用途 | |------|------|------| | 本地 | localhost:5173 / localhost:8080 | 开发调试 | | 测试 | 测试服务器 IP | 功能验证 | | 预发 | 预发服务器 IP | 上线前验证 | | 生产 | 生产服务器 IP | 正式环境 | ## 部署流程 ### Step 1: 环境确认当前分支{git branch}最近提交{git log -1 --oneline}目标环境{用户指定或默认测试环境}如果当前分支不是 main 或 develop提醒用户确认⚠️ 当前在 {branch} 分支确定要从此分支部署吗通常只有 main/develop 分支可以部署到测试/生产环境。### Step 2: 前端构建 bash cd frontend pnpm install --frozen-lockfile pnpm build构建产物在frontend/dist/。检查构建是否成功构建成功 → 继续构建失败 → 报告错误信息询问是否修复后重试Step 3: 后端构建cd../asset-server mvn clean package-DskipTests-plasset-server-am构建产物在asset-server/target/asset-server.jar。Step 4: Docker 镜像构建与推送# 打标签IMAGE_TAG$(date%Y%m%d%H%M%S)dockertag frontend-dist registry/{env}/frontend:{IMAGE_TAG}dockertag asset-server-jar registry/{env}/asset-server:{IMAGE_TAG}# 推送dockerpush registry/{env}/frontend:{IMAGE_TAG}dockerpush registry/{env}/asset-server:{IMAGE_TAG}Step 5: 部署到目标环境方式 Adocker-compose 部署ssh{server}cd /opt/deploy docker-compose pull docker-compose up -d方式 BKubernetes 部署ssh{server}cd /opt/k8s kubectl set image deployment/asset-server \ asset-serverregistry/{env}/asset-server:{IMAGE_TAG} \ kubectl rollout status deployment/asset-serverStep 6: 健康检查# 等待服务启动sleep10# 检查后端curl-fhttp://{server}:8080/actuator/health||echoBACKEND_UNHEALTHY# 检查前端curl-fhttp://{server}:80/dist/index.html||echoFRONTEND_UNHEALTHYStep 7: 部署报告 部署报告 ━━━━━━━━━━━━━━━━━━━━━ 环境测试环境 (192.168.31.XX) 分支develop 提交a1b2c3d - 修复用户登录超时问题 [1/5] 前端构建 ✅ (45s) [2/5] 后端构建 ✅ (120s) [3/5] 镜像推送 ✅ (15s) [4/5] 服务部署 ✅ (30s) [5/5] 健康检查 ✅ 访问地址http://192.168.31.XX:5173 镜像版本20260710103000 ━━━━━━━━━━━━━━━━━━━━━回滚流程如果部署后发现问题执行回滚回滚到上一个版本Skill 自动执行# docker-compose 回滚ssh{server}cd /opt/deploy docker-compose down \ docker-compose up -d --force-recreate# k8s 回滚ssh{server}cd /opt/k8s kubectl rollout undo deployment/asset-server异常处理异常场景处理方式构建失败报告错误不执行后续步骤SSH 连接失败提示检查网络和凭据健康检查不通过报告服务日志建议回滚磁盘空间不足提示清理旧镜像docker image prune端口被占用提示检查lsof -i :{port}安全注意事项服务器密码和 SSH 密钥不写入 Skill 文件通过环境变量或 SSH agent 传递生产环境部署需要二次确认确定要部署到生产环境吗y/N部署前自动检查是否有未提交的代码更改## 三、实战使用示例 ### 3.1 部署到测试环境/devops-deploy 部署到测试环境Claude 自动执行完整的构建 → 部署 → 验证流程。 ### 3.2 只构建不部署帮我构建前端和后端但不部署Skill 识别到不部署意图执行 Step 1-3 后停止。 ### 3.3 回滚刚才的部署有问题回滚到上一个版本Skill 执行回滚流程。 ### 3.4 查看部署历史最近部署了哪些版本Skill 读取 .claude/tmp/deploy-history.log列出最近的部署记录。 ## 四、Nginx 配置管理 Skill 前端部署通常由 Nginx 托管静态文件。可以单独编写一个 Nginx 配置 Skill markdown --- name: nginx-config description: 生成和管理 Nginx 配置文件包括反向代理、缓存、SSL trigger: Nginx, nginx, 反向代理, 静态托管, SSL配置 --- # Nginx 配置 Skill ## 角色定义 你是一个资深 Nginx 配置专家。 ## 常见任务 ### 1. 前端静态资源托管 nginx server { listen 80; server_name your-domain.com; root /usr/share/nginx/html; index index.html; # SPA 路由支持 location / { try_files $uri $uri/ /index.html; } # 静态资源缓存 location ~* \.(js|css|png|jpg|jpeg|gif|ico|woff2)$ { expires 30d; add_header Cache-Control public, immutable; } }2. 反向代理后端 APIlocation /api/ { proxy_pass http://backend:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 30s; proxy_read_timeout 60s; }3. SSL 证书配置server { listen 443 ssl http2; server_name your-domain.com; ssl_certificate /etc/nginx/ssl/cert.pem; ssl_certificate_key /etc/nginx/ssl/key.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; } # HTTP 自动跳转 HTTPS server { listen 80; server_name your-domain.com; return 301 https://$server_name$request_uri; }输出根据用户需求生成完整的 nginx.conf 片段并说明每个配置项的作用。## 五、CI/CD 集成 Skill ### 5.1 GitHub Actions 集成 markdown --- name: ci-cd-config description: 生成和维护 CI/CD 配置文件GitHub Actions、GitLab CI、Jenkinsfile trigger: CI/CD, 持续集成, 流水线, github-actions, gitlab-ci --- # CI/CD 配置 Skill ## 角色定义 你是一个 CI/CD 流水线设计专家。 ## 常见任务 ### GitHub Actions 工作流 根据用户需求生成 .github/workflows/ 下的 YAML 文件 **构建测试工作流** yaml name: Build and Test on: push: branches: [main, develop] pull_request: branches: [main] jobs: frontend: runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 - uses: pnpm/action-setupv3 - run: pnpm install - run: pnpm test - run: pnpm build backend: runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 - uses: actions/setup-javav4 with: java-version: 8 distribution: temurin - run: mvn clean package -DskipTests部署工作流name:Deployon:workflow_run:workflows:[Build and Test]types:[completed]branches:[main]jobs:deploy:runs-on:ubuntu-latestif:${{github.event.workflow_run.conclusion success}}steps:-uses:appleboy/ssh-actionv1with:host:${{secrets.SERVER_HOST}}username:${{secrets.SERVER_USER}}key:${{secrets.SSH_PRIVATE_KEY}}script:|cd /opt/deploy docker-compose pull docker-compose up -d输出生成完整的 CI/CD 配置文件并说明触发条件每个 Job 的作用需要配置的 Secret## 六、Dockerfile 生成 Skill markdown --- name: dockerfile-gen description: 为前端 Vue 项目或后端 Spring Boot 项目生成最优的 Dockerfile trigger: Dockerfile, 容器化, docker build, 多阶段构建 --- # Dockerfile 生成 Skill ## 角色定义 你是一个 Docker 多阶段构建专家。 ## 前端 DockerfileVue 3 Nginx dockerfile # 构建阶段 FROM node:20-alpine AS builder WORKDIR /app COPY package.json pnpm-lock.yaml ./ RUN corepack enable pnpm install --frozen-lockfile COPY . . RUN pnpm build # 运行阶段 FROM nginx:alpine COPY --frombuilder /app/dist /usr/share/nginx/html COPY nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 80 CMD [nginx, -g, daemon off;]后端 DockerfileSpring BootFROM eclipse-temurin:8-jre-alpine WORKDIR /app COPY target/*.jar app.jar EXPOSE 8080 ENTRYPOINT [java, -jar, app.jar]优化要点使用 Alpine 基础镜像减小体积多阶段构建不暴露构建工具合理使用 .dockerignore层缓存优化先 COPY package.json再 COPY 源代码## 七、这一章的核心心得 1. **部署 Skill 的核心价值**——把繁琐的构建、部署、验证流程自动化 2. **支持多环境**——通过配置区分测试/预发/生产环境 3. **回滚是必须的**——任何部署 Skill 都要包含回滚能力 4. **Nginx 配置可以独立成 Skill**——反向代理、SSL、缓存都是高频需求 5. **CI/CD 集成是进阶**——GitHub Actions / GitLab CI 的配置也可以封装成 Skill 6. **Dockerfile 生成是刚需**——前后端的最佳实践 Dockerfile 可以直接复用 ## 八、下一步 DevOps 部署 Skill 解决了代码怎么跑起来的问题。但代码跑起来之前还有一个关键环节——**代码质量**。 下一篇我们将编写代码质量相关的 Skill包括 Code Review、Lint 检查、测试覆盖率分析等确保部署上去的代码是高质量的。 --- *系列目录* 1. ~~初识 Skill 系统——什么是 Skill为什么需要 Skill~~ 2. ~~自定义 Skill 开发——从 0 到 1 编写自己的 Skill~~ 3. ~~Skill 编排与组合——多个 Skill 串联工作打造自动化流程~~ 4. ~~实战 SkillDevOps 部署——编写 Docker/Nginx/CI-CD 相关的部署 Skill~~ ← 本篇 5. 实战 Skill代码质量——编写 Code Review / Lint / 测试覆盖率 Skill待写 6. 实战 Skill文档生成——编写 API 文档 / 技术手册 / Changelog 生成 Skill待写 7. Skill 分享与复用——团队共享 Skill 库、开源 Skill 生态、版本管理待写 8. Skill 进阶技巧——条件触发、多语言支持、与 Agent/Workflow 的配合待写