【发布时间】:2020-08-24 04:48:44
【问题描述】:
我负责一个相当古老的应用程序,我们正试图将现代工具包装起来。
该应用程序是基于 Linux 的数据处理应用程序。它接收一些数据,进行一些复杂的分析/模拟,并有一个简单的 Web/CSV 界面。
我们运行这个的多个实例,一个用于我们的每个客户端,其中核心相同,并且我们编写了一些我们存储在 Git 中的帮助程序/包装器脚本。此外,我们可以在 Git 中添加尽可能多的配置文件。
核心应用需要以服务Linux用户的身份运行,每个开发者都很难创建一个实例,所以我们每个客户端一个测试实例,每个客户端一个生产实例。
我们所有的代码都存储在 GitLab 中,因此我们将其全部推送到远程存储库。我们将配置从远程拉到生产机器。
一般架构是:
GitLab
/ \
/ \
Dev box Prod box
~app1/ ~app1/
~app2/ ~app2/
~app3/ ~app3/
我们的团队由 5 人组成。每个人通常在 ~appN 环境之一中工作,但人们会四处走动。我们希望 Dev 和 GitLab 中的本地提交历史能够反映进行更改的实际人。
我正在为此寻找最佳做法。现在我们正在做的事情感觉并不理想。这是我们的工作:
每个开发人员(我们称我们的示例开发人员 Bob)作为 Linux 用户 ~appN 在 Dev box 上开发和测试更改。一旦他们的更改看起来不错,他们就会将更改的文件复制到他们自己的主目录 ~bob/ 中的 repo 的克隆中。他们从这个位置进行提交和推送,这会将他们的名字附加到提交中。为了确认所有内容都已提交并正确推送,他们返回 ~appN 并执行以下操作:
git stash
git pull
git stash pop
如果这是干净的,那么他们就知道所有内容都已提交并推送到远程仓库。如果它不干净,就会遗漏一些东西。
显然,我们正在做的事情是复杂的、容易出错的和混乱的。我对如何解决它有一些想法,但我希望专家能够提供一些关于在这种环境中开发的最佳方法的见解。
提前致谢。
【问题讨论】: