最近は Gitlab に push したら GitLab CI で自動でデモサーバーに展開されるようにしているのですが、ファイル数がかなりあるプロジェクトで行おうとしたところ、 GitLab CI が無反応状態になって fail になってしまう。
なんどやっても fail になるため手動で同じ動作をしてみたところ、 エラーが出ていてそれで終わってしまっていたらしい。
### git clone で起きていたエラー
起きていたエラーは下記の通りです。
remote: Counting objects: 30000, done.
remote: Compressing objects: 100% (20000/20000), done.
fatal: The remote end hung up unexpectedly.70 MiB | 30.01 MiB/s
fatal: early EOF
fatal: index-pack failed
数値は少しブログ掲載ようにいじっていますが、だいたいこんな感じの数値です。
ちなみに Gitlab CI が clone する際に叩いていたコマンドが下記
cd /home/gitlab_ci_runner/gitlab-ci-runner/tmp/builds && git clone http://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@gitlab.mydomain.com/gitlab/project_name.git project-1 && cd project-1 && git checkout xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxx の部分は英数字が入っているのですが、ブログ掲載用に代用。
どうやら gitlab-ci-token 経由でリポジトリにアクセスした際に、リポジトリのファイル数が多いと、エラーになってしまう様子。
サーバー内で一度 clone してから CI に
どうやら gitlab-ci-token 経由でリポジトリにアクセスした際にエラーになるというのは、 gitlab-ci-token を経由せずに、手動コマンドで git clone をした場合はエラーにならないのです。
手動で行う場合は問題無いようでしたので、そのままそれは残しておき、 .git/config
で remote 先を編集、http://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@gitlab.mydomain.com/gitlab/project_name.git
に変更をしておきます。
すると、次のCIが動くタイミングで問題がなくなっていました。
Gitでエラーすると焦りますよね。
なんとかなってよかったよかった。