2

我已经开始使用 AWS CodeBuild 来构建存储在 AWS CodeCommit 中的项目。我们的项目依赖于几个第三方库,大部分是作为 Git 检索的,有些是作为 HTTP 检索的。我们的构建脚本克隆/下载和提取所需的库(与我们在开发系统上进行本地构建的方式相同)。我担心的是,如果我们每天进行多次提交,CodeBuild 会反复从第三方克隆/下载。这似乎很浪费,我不关心我们的成本/带宽,但是随着越来越多的人依赖这些第三方库,他们的带宽/成本会显着增加。我想避免这种情况。

  1. 这是一个问题,还是我太谨慎了?
  2. 我可以使用哪些方法来避免重复拉取第 3 方库?

我们目前没有使用 git 子模块,但我认为这不会改变任何事情。

我可以git clone --depth 1 --shallow-submodules用来减少 3rd 方存储库的负载。

我最好的解决方案是在每次构建结束时打包第 3 方库,将它们存储在 S3 上,然后获取下一个构建,提取它,然后执行 git pull 以检查更新。

一个更简洁但不那么优雅的解决方案是拥有一个单独的构建系统来更新这些库的本地副本以供我们的项目构建使用,这避免了我们的构建过程中对这些第 3 方包的任何污染的可能性。

有更简单的选择吗?

4

1 回答 1

1

我可以git clone --depth 1 --shallow-submodules用来减少 3rd 方存储库的负载。

您还可以使用 git sub-module 并仅获取子模块的最新提交,这与您将在 git clone 中使用的相同,因为子模块在更新后会执行 git clne。

--depth可以传递给子模块的标志。
--depth标志的使用方式与您在克隆存储库时使用它的方式相同,并且您希望仅克隆最新的提交。

--depth选项添加到 的添加和更新命令git submodule,然后将其传递给克隆命令。
当子模块很大并且您对最新提交以外的任何内容都不感兴趣时​​,这很有用。

git submodule add --depth 1 -- <url>
git submodule update --depth -- <url>

完整的文档可以在这里找到。

于 2017-04-08T19:03:22.333 回答