关于用 git 部署测试环境和生产环境,有点疑问纠结中。希望各位前辈指条明路。
我现在的做法: (第一种方法)
本地写代码,完成后 push 到 bitbucket 上。
然后在测试环境 pull bitbucket上的测试分支。
测试没有问题的话,在 bitbucket 创建一个拉取请求。把测试分支和主分支合并。
在生产环境中 pull bitbucket上的主分支。
第二种方法
之前看了很多文章,有人也用这种方法。
在测试环境和生产环境中分别建 git 仓库,
然后在本地的开发完直接 push 到测试环境上测试,
然后 push 到生产环境运行。
不知道这两种方法哪个更好?我现在有点纠结在这上面。
不知道哪种方式更科学效率更高呢?
总感觉我目前这种方式,有点麻烦。每次 push bitbucket 上面,然后登录测试服务器 pull 。又要在 bitbucket 合并,然后登录又要登录生产环境的服务器 pull 代码。
那如果用第二种方法的话,是不是 bitbucket 就完全没有必要了?。
另外如果用第一种方法的话,应该可以代码开发玩 push 到 bitbucket 后,如果 bitbucket 上开发分支有变化,测试环境自动同步 bitbucket 上的开发分支。 bitbucket 上的主分支有更新的话,生产环境自动同步 bitbucket 上主分支的代码。(应该用 git 的 hock 应该可以做到。)但这样做的话,是不是还是要在测试环境和生产环境的服务器上分别建立 git 仓库呢?
如果生产环境和测试环境可以自动同步 bitbucket 代码,请问怎么弄?
版本管理(git/svn)和部署应该适当隔离(解耦).
测试系统, 和部署系统只需要知道目标代码所在的分支&版本号即可.
部署系统应该具备部署任意分支上任意版本代码的能力(需要上线的代码不一定是最新的).
生产环境部署一个master分支,测试环境从master checkout一个分支比如develop分支,新功能从master checkout一个分支比如feature,然后用develop merge feature分支,进行测试,测试完毕用master merge feature分支。develop每天merge master的代码,保持最新。