You need to enable JavaScript to run this app. 如何在GitHub单仓库实现Git持续部署及EFCore部署配置变更管理
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitHub单仓库实现Git持续部署及EFCore部署配置变更管理

可行实现方案

1. 固定分支权责划分

提前明确各分支的存储边界,避免不同类型代码混存:

  • development 开发主分支:仅存储业务代码、开发环境配置,永远不包含Migrations文件夹、正式环境数据库配置代码,Program.cs 中保留 Database.EnsureDeleted()/Database.EnsureCreated() 开发逻辑
  • live-config 部署配置专属分支:仅存储两类变更:① Program.cs 中替换为 Database.Migrate() 的正式环境数据库初始化代码;② 历史所有EFCore Migrations文件夹及文件,不存储任何业务代码变更
  • preparation 临时部署中转分支:每次部署时创建/重置,用完可删除,用于叠加配置、生成迁移
  • cd-test 持续集成测试分支:存储待测试的完整可部署代码
  • cd-live 生产环境部署分支:存储已验证的正式上线代码

2. 标准化部署操作流程

完全匹配你预期的流程,每步对应可直接执行的Git操作:

  1. 每次发起部署前,拉取最新开发分支代码,重置中转分支:
git checkout development
git pull origin development
git checkout -B preparation
  1. 叠加部署专属配置,合并时优先保留开发分支的业务代码,仅同步live-config的配置和迁移文件:
# 首次合并需要加--allow-unrelated-histories,后续不需要
git merge -X ours live-config --allow-unrelated-histories

合并完成后会自动完成两个操作:Program.cs 替换为带Database.Migrate()的正式版逻辑、Migrations文件夹自动恢复所有历史迁移文件,无需手动操作。
3. 在preparation分支运行Add-Migration [本次迁移名称],同步开发阶段的数据库变更,验证迁移逻辑无误即可。
4. 把新生成的迁移和配置变更同步回live-config分支,仅提交部署相关文件,不提交业务代码:

git checkout live-config
# 仅拣选preparation分支中的配置和迁移文件变更
git checkout preparation -- Program.cs Migrations/
git add Program.cs Migrations/
git commit -m "chore: 新增[本次迁移名称],更新部署配置"
git push origin live-config
  1. 把完整的可部署代码推送到测试分支验证:
git checkout preparation
git push -f origin preparation:cd-test
  1. 测试通过后合并到生产分支上线:
git checkout cd-live
git merge cd-test
git push origin cd-live
  1. 部署完成后可删除本地preparation分支,下次部署重新创建即可。

3. 注意事项

  • 开发分支可以配置提交校验规则,禁止提交Migrations文件夹和正式环境配置代码,避免误提交破坏分支隔离
  • live-config分支永远不要合并开发分支的代码,所有变更都只能从preparation分支拣选配置和迁移文件,保证该分支仅存部署相关增量变更
  • 注意修正拼写错误,正式环境的数据库初始化方法为Database.Migrate(),避免运行报错

内容的提问来源于stack exchange,提问作者John Mackerras

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 09:15:04