Drone CI
容器原生 CI/CD,.drone.yml 和 Docker 流水线步骤。
CI/CD进阶
为什么
Drone 是容器原生 CI — 每步在 Docker 容器运行。.drone.yml 简单,集成 Gitea、GitHub、GitLab。
何时使用
自托管 Docker CI 用 Drone。托管避免(用 GH Actions)。
如何做
1. 安装 — Drone 服务器 + runner
2. 配置 — 仓库中 .drone.yml
3. 步骤 — Docker 镜像 + 命令
4. 流水线 — push/PR 触发
5. 密钥 — drone secret add
6. Volume — 挂载缓存 volume
7. 插件 — 预构建步骤(npm、docker)
示例
# .drone.yml
kind: pipeline
type: docker
name: default
steps:
- name: test
image: node:20
commands: [npm ci, npm test]
- name: build
image: node:20
commands: [npm run build]
- name: deploy
image: node:20
commands: [npx vercel --prod --token $VERCEL_TOKEN]
when: { branch: [main] }
trigger: { branch: [main, develop] }
常见问题
- ⚠Runner 未连接 — 检查 DRONE_RPC_SECRET 匹配服务器
- ⚠密钥不可用 — 经 drone CLI 或 UI 添加,非 yml
- ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致
最佳实践
- ✓常见步骤用插件 — drone-plugin-node、drone-plugin-docker
- ✓用 volume 缓存 — 挂载 node_modules volume 加速
- ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求