关于用 git 部署测试环境和生产环境的一点纠结?

浏览:24日期:2023-09-27

问题描述

关于用 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 代码,请问怎么弄?

问题解答

回答1:

版本管理(git/svn)和部署应该适当隔离(解耦).

测试系统, 和部署系统只需要知道目标代码所在的分支&版本号即可.

部署系统应该具备部署任意分支上任意版本代码的能力(需要上线的代码不一定是最新的).

回答2:

生产环境部署一个master分支,测试环境从master checkout一个分支比如develop分支,新功能从master checkout一个分支比如feature,然后用develop merge feature分支,进行测试,测试完毕用master merge feature分支。develop每天merge master的代码,保持最新。

相关文章: