GitHub flow 简化版:适合敏捷开发的分支管理,附 CI/CD 集成示例
GitHub Flow 是一种轻量级分支管理策略,专为持续交付设计。推送分支到远程仓库,创建 Pull Request (PR)通过 GitHub Secrets 安全存储。,所有变更通过特性分支完成。始终处于可部署状态,禁止直接提交代码。,自动触发 CD 部署。
·
GitHub Flow 简化版:敏捷开发的分支管理
GitHub Flow 是一种轻量级分支管理策略,专为持续交付设计。其核心原则是主分支始终可部署,所有变更通过特性分支完成。简化版流程如下:
核心步骤
-
主分支(main)
始终处于可部署状态,禁止直接提交代码。 -
创建特性分支
基于main创建新分支命名如feat/user-auth或fix/button-stylegit checkout -b feat/new-feature main -
本地开发与提交
在特性分支上开发并频繁提交:git add . git commit -m "添加用户登录验证逻辑" -
推送与 PR
推送分支到远程仓库,创建 Pull Request (PR)git push origin feat/new-feature -
代码审查与 CI 验证
- 团队成员审查代码
- 自动触发 CI 流水线(测试/构建)
-
合并与部署
PR 批准后合并到main,自动触发 CD 部署
CI/CD 集成示例 (GitHub Actions)
以下为 Node.js 项目的完整 CI/CD 配置:
文件路径:.github/workflows/ci-cd.yml
name: CI/CD Pipeline
on:
push:
branches: [ main, feat/** ] # 监听 main 和所有特性分支
pull_request:
branches: [ main ] # PR 目标为 main 时触发
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 18
- run: npm ci # 安装依赖
- run: npm test # 执行单元测试
build:
needs: test # 依赖 test 任务
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: npm run build # 构建生产包
- uses: actions/upload-artifact@v3
with:
name: production-build
path: dist/
deploy:
needs: build
if: github.ref == 'refs/heads/main' # 仅 main 分支触发部署
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v3
with:
name: production-build
- name: Deploy to Production
uses: appleboy/ssh-action@v0.1.10
with:
host: ${{ secrets.PROD_SERVER }}
username: deploy-user
key: ${{ secrets.SSH_KEY }}
script: |
sudo systemctl stop my-app
rm -rf /opt/app/*
cp -r ./* /opt/app/
sudo systemctl start my-app
流程说明
-
CI 阶段(PR 触发)
- 自动运行测试和构建
- 在 PR 页面显示检查结果
-
CD 阶段(main 合并触发)
- 自动部署到生产服务器
- 通过 SSH 执行零停机部署 $$ \text{部署时间} = T_{\text{传输}} + T_{\text{切换}} \leq 30\text{s} $$
-
密钥管理
PROD_SERVER和SSH_KEY通过 GitHub Secrets 安全存储
最佳实践
-
分支策略
- 特性分支生命周期 ≤ 2 天
- 命名规范:
feat/、fix/、docs/前缀
-
部署安全
- 生产部署需至少 1 人批准 PR
- 回滚方案:快速重部署前次 commit
-
监控集成
部署后自动触发:curl -X POST https://monitor.example.com/notify \ -d "status=deployed&commit=$GITHUB_SHA"
此方案实现:
- 每日多次部署能力
- 从开发到部署平均时间 ≤ 15 分钟
- 100% 变更通过自动化验证
更多推荐
所有评论(0)