在 GitLab 上,我们有许多应用程序存储库,每个存储库都包含自己的应用程序运行时代码、IaC (CloudFormation) 模板、配置、GitLab CI/CD 管道文件以及作为管道一部分执行的常见 shell 部署脚本。
这些脚本都很常见,并且设计为可供多个项目重用。目前,这些脚本在每个存储库中的
bin
文件夹中都有重复。我想摆脱这种重复,因为每当我们需要对其中一个脚本进行更改时,我们都需要在每个存储库中更新它。对此的最佳实践是什么?从研究来看,GitLab 子模块可能是一个很好的解决方案,但我以前从未使用过它们。另一种解决方案是将它们存储在 S3 等外部存储库中,并将脚本作为管道的一部分拉下来。对此有任何建议将不胜感激。
将常见部署脚本拉取到多个 GitLab 存储库的最佳实践是使用 Git 子模块或 GitLab CI/CD 模板。
Git 子模块:您可以创建一个包含常用部署脚本的单独的 Git 存储库。然后,在每个项目存储库中,您可以将此公共存储库添加为子模块。这使您可以维护部署脚本的单一事实来源,同时轻松地将它们合并到多个项目中。
GitLab CI/CD 模板:GitLab 允许您定义可在多个项目中重复使用的 CI/CD 模板。您可以创建一个包含部署脚本和变量的模板,然后将此模板包含在每个项目存储库的
.gitlab-ci.yml
文件中。这种方法可确保一致性并简化项目中部署脚本的维护。
通过采用其中一种方法,您可以简化跨多个 GitLab 存储库管理和部署通用脚本的过程,从而提高开发工作流程的效率和可维护性。