discourse_docker における shallow git fetch のリグレッション

その通りですね。その時点ではバージョンが不明です。ベースイメージは「current version + 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 が実行されると、リポジトリ全体がプルされ、数分かかる可能性があります。これは以前に浅いクローン(shallow clone)しか行っていなかったためです。実際に上記の手順だけをローカルで実行して確認してみてください。

ベースイメージにリポジトリ全体を含めることが良いとは言っていませんが、web.template.yml のコードは、app.yml でプラグインが追加されただけや設定が変更されただけであっても、すべての再ビルドで実行されます。私が(Discourse 以外の)プロジェクトで行っているのは、新しいバージョンごとに新しいイメージを作成することですが、現在の運用方法から考えると、それが現実的ではないかもしれません。

再ビルド時間の増加に気づいていませんか?(あるいは、総再ビルド時間と比較してそれほど大きくないのかもしれません)

更新

上記の手順を再度テストしましたが、高速でした。おそらく 1 回目に別のコマンドを実行して git ツリーが変更され、その結果 git pull を実行した際にすべてをプルしようとしていたのでしょう。

「いいね!」 2