ゲームアセットのGitリポジトリ、モノリポ運用しているGitリポジトリは巨大になりがちです。大きなGitリポジトリをクローンすると、記録されている歴史を全部取得するため、ネットワーク通信量・通信時間が大きくなります。またローカルに保存された.gitディレクトリの容量も大きくなります。この結果、JenkinsのエージェントやGitHub Actionsのセルフホストランナーでは、ジョブのワークスペースによるディスク容量圧迫の原因になります。CIジョブでは大きなリポジトリを複数のジョブで利用することもあるでしょう。同一内容のコピーを複数保持することになり、問題にいっそう拍車がかかります。
本セッションでは大きなGitリポジトリをクローンするときの通信量・ディスク容量を節約するための、リポジトリの設定やgitコマンドのオプションの工夫を紹介します。また、macOSにあるcopy-on-writeの機能を利用して、同一内容のコピーをまとめることでディスクを400GB以上節約できた事例も紹介します。考えかたや注意点などもあわせて解説しますのでJenkins以外の環境でも役に立つでしょう。
講演者プロフィール
前田 薫
リコー、レピダムを経て2017年に株式会社ディー・エヌ・エーへ入社。SWETグループにてゲームタイトルのCI/CD環境整備・サポートに従事。
学生時代の1990年代よりフリーソフトウェア黎明期のコミュニティー立ち上げに多く参加。Ruby+Perlにフォーカスした2001年のイベントにて、日本にライトニングトークを紹介した。
《講演者からのメッセージ》
CI/CDシステムの運用では、システムに関する多くの知識が必要になります。今回はGitリポジトリとディスク容量についての話です。あるプロジェクトでデータの更新が少ない・同一内容が複数置かれている、というデータの性質に対応して重複を減らすという対策ができたので、事例として紹介します。Jenkins以外の環境でも、データの性質を分析して対策するという考え方が役立つと思います。