我已经开始使用AWS CodeBuild构建存储在AWS CodeCommit中的项目。 我们的项目依赖于几个第三方库,大多数是作为Git检索的,有些则作为HTTP检索。 我们的构建脚本克隆/下载&提取了所需的库(与我们在本地构建的开发系统上一样)。我担心的是,如果我们每天都在进行多次提交,CodeBuild会反复从第三方进行克隆/下载。这看起来很浪费,我并不关心我们的成本/带宽,但随着越来越多的人依赖这些第三方库,它们的带宽/成本将大幅增加。我想避免这种情况。如何避免在CI构建中反复克隆第三方git回购
- 这是一个问题,还是我太谨慎?
- 我可以使用哪些方法避免重复提取第三方库?
我们目前没有使用git submodules,但我不认为这会改变任何东西。
我可以使用git clone --depth 1 --shallow-submodules
来减少第三方存储库的负载。
我最好的解决方案是在每个构建的末尾打包第三方库,将它们存储在S3上,并获取下一个构建,提取它,然后执行git pull来检查更新。
一个更清洁但较不优雅的解决方案是拥有一个独立的构建系统,用于更新我们项目构建使用的这些库的本地副本,从而避免构建过程中可能会污染这些第三方包。
任何更简单的选项?
从长远来看,预先构建/缓存您的依赖关系副本的单独构建系统实际上可能会更好。您可以(1)阻止给定的依赖项更新(如果最新版本被破坏),(2)即使第三方回购处于脱机状态也可以构建您的副本,以及(3)如果您永远不得不确定你所依赖的依赖关系的哪个提交(例如,,如果发生许可变更)。 – Unsigned