プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2017/10/27

GitLab Runner を GitLab に登録

update2022/06/09 event_note2017/10/27 1:55

GitLab で CI を行うために、GitLab Runner を登録する方法です。

一応手順は以下のサイトで説明されています。

環境

  • GitLab CE 10.1.0
  • GitLab Runner 10.0.1

Docker を使って環境を構築しているため、操作前に GitLab Runner の Docker コンテナに入っておく必要があります。

docker exec -it コンテナ名 bash

登録手順

以下のコマンドで登録処理を開始します。

sudo gitlab-runner register

GitLab の URL を入力します。

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
https://gitlab.com

トークンを入力します。
これは GitLab の [Admin Area] > [Overview] > [Runners] で確認できます。

Please enter the gitlab-ci token for this runner
xxx

ランナーの説明を入力します。
これは後で GitLab の UI で変更できます。

Please enter the gitlab-ci description for this runner
[hostame] my-runner

ランナーのタグを入力します。
これは後で GitLab の UI で変更できます。

Please enter the gitlab-ci tags for this runner (comma separated):
my-tag,another-tag

タグを持たない CI でもビルドするかどうかを選択します。
これは後で GitLab の UI で変更できます(デフォルトはfalse)。

Whether to run untagged jobs [true/false]:
[false]: true

ランナーを現在のプロジェクト専用にするかどうか?を選択します。
よくわかりませんが、共有ランナーであれば false にするのかもしれません。
これは後で GitLab の UI で変更できます(デフォルトはtrue)。

Whether to lock Runner to current project [true/false]:
[true]: false

ここまで入力したら登録処理が行われます。
ネットワーク環境などに問題があったらここでエラーが表示されます。
私の場合、ファイアウォール関係でエラーが出たりしました。

次に、ランナーの実行環境を入力します。

Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
docker

実行環境として docker を選択した場合、.gitlab-ci.yml で定義されていないプロジェクトで使用されるデフォルトのイメージを指定します。

Please enter the Docker image (eg. ruby:2.1):
alpine:latest

設定が完了したら GitLab の [Admin Area] > [Overview] > [Runners] でランナーが登録されていることを確認します。

エラーが表示された場合

環境によっては以下のようなエラーが表示されるかもしれません。

PANIC open /etc/gitlab-runner/config.toml permission denied

まずは管理者権限で実行しているかどうか確認します。(root で実行しているか、sudo をつけて実行しているか)

それでもエラーが表示される場合、SELinux が原因かもしれません。

私はこれで少しはまりましたが、SELinux を無効化すると上手く行きました。

プロキシ環境下で docker を使う場合

executor に docker を指定している場合、プロキシに阻まれて上手く動作しないことがありました。
このとき、gitlab-runner の設定ファイル /etc/gitlab-runner/config.tomlnetwork_mode = "host" を設定したら上手くいくようになりました。

  [runners.docker]
    ...
    network_mode = "host"

参考 URL