はじめに
社内で立ててる Self-Managed な Gitlab を https 化した際、 Gitlab Runner も設定変更が必要です。ところがうまく行かなくて、試行錯誤したので、忘備録的な意味合いで記事を書きます。
今回起きた現象
単純にrunnerのURLだけ変更すれば良いのかと思ってたので、設定変更しました
$ sudo vi /etc/gitlab-runner/config.toml
変更前
[[runners]]
name = "for server"
url = "http://192.XXX.XXX.XXX/"
token = "xxxxxxxxxxxxxxxxxxxx"
executor = "docker"
[runners.docker]
tls_verify = false
image = "php:7.2.10"
privileged = false
disable_cache = false
volumes = ["/cache"]
shm_size = 0
[runners.cache]
変更後
[[runners]]
name = "for server"
url = "https://gitlab.hoge.com/" # URLを変更
token = "xxxxxxxxxxxxxxxxxxxx"
executor = "docker"
[runners.docker]
tls_verify = false
image = "php:7.2.10"
privileged = false
disable_cache = false
volumes = ["/cache"]
shm_size = 0
[runners.cache]
設定を反映します
$ sudo gitlab-runner restart
Jobを走らせます
...(略)...
Fetching changes...
fatal: remote origin already exists.
Clean repository
fatal: unable to access 'http://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@192.XXX.XXX.XXX/nishioka/hoge.git/': Failed to connect to 192.XXX.XXX.XXX port 80: Operation timed out
ERROR: Job failed: exit code 1
あれ?古いURL見に行ってるぞ?
試行錯誤
対策1
たぶん Runner 側にキャッシュが残ってるのかなあとは思ったんで、runners.docker
>disable_cache
をtrue
にして runner restart したところうまく行かず。
対策2
Runner の設定値にclone_url
というのがあったのでこれで試しにURLを上書きしてみました。
clone_url
についての詳細はgitlab公式サイトのこの辺に記載があります。
https://docs.gitlab.com/runner/configuration/advanced-configuration.html#how-clone_url-works
[[runners]]
name = "for server"
url = "https://gitlab.hoge.com/" # URLを変更
token = "xxxxxxxxxxxxxxxxxxxx"
executor = "docker"
clone_url = "https://gitlab.hoge.com/" # 新たに追加
[runners.docker]
tls_verify = false
image = "php:7.2.10"
privileged = false
disable_cache = false
volumes = ["/cache"]
shm_size = 0
[runners.cache]
これで runner restart して動かしました。うごいた!
終わりに
なんでこれで動くのかはわかるのですが抜本的な対策になっていないような気がします。が、ひとまずこれまで。