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.toml
に network_mode = "host"
を設定したら上手くいくようになりました。
[runners.docker]
...
network_mode = "host"