エンジニアの久保です。

ある日、GitLab CI を利用しているプジェクトで job を動かしたら以下のエラーで失敗するようになりました。
このときの対処方法をまとめました。

Running on runner via abcdef...
Fetching changes...
Reinitialized existing Git repository in /builds/example/example.com/.git/
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
ERROR: Job failed: exit code 1

こちらの記事を参考に git clone する際に depth を指定するようにしました。
Optimizing GitLab for large repositories

対応方法としては3つあります。
状況に応じていずれかの方法で対応すればよさそうです。

その1:GitLab Runner の設定を変更する

GitLab Runner の設定を変更できる場合は、GitLab Runner の config.toml を次のように変更します。

concurrent = 4

[[runners]]
url = "GITLAB_URL"
token = "TOKEN"
executor = "docker"
builds_dir = "/builds"
cache_dir = "/cache"

environment = [
"GIT_DEPTH=10"
]

[runners.docker]
volumes = ["/builds:/builds", "/cache:/cache"]

具体的には、 [[runners]] セクションに以下を追加してください。

environment = [
"GIT_DEPTH=10"
]

その2: .gitlab-ci.yml に設定する

プロジェクトの .gitlab-ci-yml に環境変数として GIT_DEPTH を設定する方法です。
Runner Server の設定を変更できない場合や特定のプロジェクトだけ設定を変更したい場合はこちらの方法が良さそうです。

variables:
GIT_DEPTH: 10

test:
script:
- ls -al

その3:GitLab の CI/CD Settings で設定する

GitLab の CI/CD Settings で設計可能な Variables で設定する方法です。
GitLab グループでまとめて設定したいが、Runner Server の設定を変更できない場合などで役立ちそうです。

変更結果

depth を指定した結果、これまでと同様に job を実行できるようになりました。

Running on runner via abcdef...
Fetching changes with git depth set to 10...
Reinitialized existing Git repository in /builds/example/example.com/.git/

結果より、git depth が変更されていることを確認できます。

Join Us !

ウエディングパークでは、一緒に働く仲間を募集しています!
ご興味ある方は、お気軽にお問合せください(カジュアル面談から可)

採用情報を見る