1

我一直在寻找适合我们的工作流程,但仍然找不到完整的工作流程。希望您能帮助我们,一个由两个开发人员组成的简单团队!

据我了解,最好的工作流程是使用 git 将所有更改推送和拉取到公共开发服务器,然后将这些更改上传到部署服务器。

这方面有很多指南,如果所有更改都是由我们开发人员进行的,则很容易解决。我认为很常见的问题是部署服务器上也发生了很多变化。一种常见的情况是最终用户在其 CMS 中上传新图像。一些最终用户甚至通过 CMS 界面编辑 CSS 文件。我们如何让我们的开发服务器和部署服务器同步?吉特?同步?组合?

/马丁

4

3 回答 3

1

不通过 git 跟踪与用户相关的更改是一种常见的做法,因此您永远不需要从生产服务器端更新存储库。

例如,用户图像应放置在单独的目录、中央资产服务器或 Amazon S3 上。将与 CMS 相关的更改存储在数据库中也是一个好主意。

于 2012-11-11T19:38:11.237 回答
1

从概念上讲,您必须将代码更改与内容更改(尤其是用户生成的内容)分开。Git 不适合进行整个站点的备份,因此索引快速变化的用户内容只会创建一个过大的存储库,效率低下,最重要的是,不可移植。

使用 Git 跟踪对允许用户编辑/贡献/维护其内容的文件的更改。为您的工作流程使用集中式服务器(我们使用 gitolite)。正如@iltempo 提到的,将用户生成的内容分开,并使用.gitignore.

使用 Git 存储库,您可以使用 git 挂钩来执行脚本 - 很多人使用这些来自动部署,但您可以轻松地使用rsync它来自动备份和同步您的服务器。rsync 非常适合这一点,因为您可以选择仅添加新内容,从而降低交易时间。因此,从概念上讲,git 负责代码,rsync 负责其他所有事情,而 git 钩子使之成为现实。

我们将它与我们的 CMS 一起使用,它是一个救星。

于 2012-11-11T19:45:30.960 回答
0

粗略地说,您需要从源代码树和/或部署过程中排除一些文件夹/文件。Rsync 可以。

您是否正在寻找持续集成

为了自动化您的工作流程,我建议使用Jenkins

使用 Jenkins,您可以自动化构建、自动化测试(如果可能),您甚至可以在将提交推送到 Git 存储库、登台服务器或生产时部署您的应用程序。

Jenkins 不仅限于 Java 项目,您可以使用它构建任何项目。

于 2012-11-11T20:41:31.850 回答