使用Gitflow进行Web应用程序部署策略的最佳做法

时间:2018-10-31 11:39:41

标签: git docker deployment rsync continuous-deployment

为了部署我们的Web应用程序,我们使用Bitbucket Pipelines作为我们的CI / CD平台。在这里,我们使用自组装的Docker容器来运行我们的构建和测试,然后再交付应用程序。构建意味着我们正在使用composer和npm来构建项目以便进一步运输,由于使用Docker很好,我们可以使用任何其他必需品。对于部署/运输,我们在管道的最后一步使用部署过滤器文件对Rsync进行同步。

- rsync -chrtuv --filter="merge ./.deployfilter" ./ $PROD_USER@$PROD_HOST:$PROD_PATH

过滤器示例:

- /logs/***
- ***.gitkeep
- .git/***
P /config/***
+ /vendor/***
+ /public_html/***
+ /***

在此部署策略旁边,我们将Gitflow用于git flow策略。这样,我们部署了master分支,该分支与修补程序或发行版合并并标记到生产中。我们的release分支已部署到我们的质量检查环境,而feature分支已部署到我们的本地测试环境。

我们在使用此策略时遇到了一些问题(尤其是在较旧的项目中):

  • Rsync,例如,由于没有简单的方法来比较管道中的文件差异,因此会与生产文件同步所有文件,而不是例如在提交之间进行差异
  • 部署删除CMS例如使用的上载文件夹
  • 部署会删除目标槽中未正确设置部署过滤器的其他相关文件
  • 对要部署的内容和部署的内容没有很好的了解
  • 没有(很少)灵活的回滚
  • 由于合并冲突或签入代码损坏,生产可能会被破坏
  • 很难维护部署过滤器

我们最终希望通过部署策略实现以下目标:

  • 了解已部署文件和即将部署的文件,+和- 文件
  • 部署项目时的停机时间最少
  • 已部署文件的最短上传时间
  • 回滚部署的简便方法
  • 总而言之,我们对部署我们的应用程序更加信任。

除了我们已经做过的一些最佳实践之外,还有其他一些最佳实践可以使它成为更好的策略,还是归结为消除人为错误,例如更好地设置部署过滤器或git实践?此外,我很好奇其他Webdev如何处理其部署策略。

此外,我还研究了其他一些问题,但没有什么能真正解决我的所有问题。如果您认为有一个,我很乐意看看。

谢谢。

0 个答案:

没有答案
相关问题