Gitlab CI の clone でエラー

このエントリーをはてなブックマークに追加

最近は 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でエラーすると焦りますよね。

なんとかなってよかったよかった。