我在下面的树中组织了一个项目
|.
|..
|-- devops
|-- project1
|-- project2
在devops文件夹中,我将其他两个项目作为子模块,因为这两个项目是由两个不同的团队独立开发的。
|.
|..
|-- project1@0deed0fa
|-- project2@0beef0fb
|-- .gitlab-ci.yml
我已经设置了用于部署项目的管道。每当在任何项目上有新的提交时,都会设置一个触发器来运行devops
项目管道。作为devops作业的一部分,我运行git submodule
命令来获取和合并。那就建吧。它起作用了。
我遇到的问题是,在一段时间内,对子模块做了很多修改。每次对任何项目进行提交时,都会重放从最后一个子模块提交到devops项目文件夹的更改。每月一次,我手动更新devops
项目文件夹,并更新到子模块项目的最新提交。我可以提交来自devops管道任务的更改,但是这将在同一个devops管道中生成新的管道。(我没有测试它,但这似乎很明显)。
有没有办法将子模块更新为最新提交,作为devops管道的一部分?
谢谢。
发布于 2021-01-30 16:03:39
只构建一次二进制文件
使用git子模块并不是实现集成管道的最佳实践。开创性的书连续交付在Only Build Your Binaries Once
一节(第5章)中说明如下:
许多构建系统使用版本控制系统中保存的源代码作为规范源代码,用于许多步骤。在提交过程中,代码将在不同的上下文中反复编译,同样是在验收测试时,等等。每次编译代码时,都有引入一些差异的风险。
而且,重新编译需要花费大量时间,从而导致反馈周期更长。建议如下:
在构建的提交阶段,您应该只构建一次二进制文件。这些二进制文件应该存储在某个文件系统中.在管道的后期阶段,很容易检索到它们。
CI/CD管道流
遵循此范例,您的工作流程将如下所示:
project1
和project2
中处理特性分支的开发人员将推动提交。release
存储库(也称为升级)。注意源代码是如何构建一次的。
流行二进制存储库
有许多流行的二进制存储库可用。大多数都有免费的付费专业版。查看他们的网站以获得更多信息。
https://stackoverflow.com/questions/65946723
复制相似问题