discourse_docker 中的浅层 git fetch 回归

你说得对,那时候我们还不知道具体版本。看起来基础镜像使用的是当前版本加上 tests-passed 分支,不过该分支确实包含了镜像构建时的提交记录。

那么,现在的这种方式是否会导致即使使用了 tests-passed 分支,重建速度也会变慢呢?

请考虑以下操作:

在基础镜像中:

git clone --depth 1 https://github.com/discourse/discourse.git
cd discourse/
git remote set-branches --add origin tests-passed

在 web.template.yml 中:

git reset --hard
git clean -f
git remote set-branches --add origin master
git pull
...

当执行 git pull 时,整个仓库都会被拉取,可能需要几分钟,因为之前只进行了浅克隆。你可以在本地尝试运行上述命令来验证。

这并不是说把整个仓库放进基础镜像就更好,但 web.template.yml 中的代码会在每次重建时运行,即使只是在 app.yml 中添加了插件或修改了设置。我通常在我的(非 Discourse)项目中为每个新版本创建新镜像,但这对你来说可能不太可行(考虑到你当前的做法)。

你有没有注意到重建时间有所增加?(或者在大多数情况下,这相对于总重建时间来说并不显著?)

更新

我重新测试了上述步骤,发现速度很快。我想我在第一次尝试时运行了其他指令,改变了 git 树结构,导致在运行 git pull 时试图拉取所有内容。

2 个赞