概要
GitLab CI を使う場合にビルドやテストをするサーバを用意する必要があります
GitLab 自体が持つサーバはみんなで共有する「Shared Runners」というもので、共有リソースなので待ちが発生したり処理が遅くなったりする場合があります
また、Shared Runners に機能やパッケージがないとそもそもビルドできないというケースもあります
そんな時に専用のサーバ「Specific Runners」を追加することで自分だけのランナーを作ることができます
今回は Specific Runner を Ubuntu 上に構築してみました
環境
- Ubuntu Ubuntu 16.04.2
- docker 17.03.0-ce
- gitlab runner 10.0.0
事前手順
今回は Runner Executor に docker を使用します
なので事前に docker をインストールしておきましょう
https://hawksnowlog.blogspot.jp/2016/12/install-docker-on-ubuntu1604lts.html
インストール手順
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
- apt -y install gitlab-runner
ランナーを登録する
- gitlab-runner register
いろいろと登録します
Running in system-mode.
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
https://your.gitlab.local/
Please enter the gitlab-ci token for this runner:
ySdowE9wxxxxxxxxxxxx
Please enter the gitlab-ci description for this runner:
[localhost]: my-runner
Please enter the gitlab-ci tags for this runner (comma separated):
shell
Whether to run untagged builds [true/false]:
[false]: true
Whether to lock the Runner to current project [true/false]:
[true]: true
Registering runner... succeeded runner=ySdowE9w
Please enter the executor: shell, ssh, kubernetes, docker, docker-ssh, parallels, virtualbox, docker+machine, docker-ssh+machine:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
上から
- gitlab の URL を入力
- プロジェクトに紐付いているトークンを入力
- ランナーの名称を入力
- タグの名称を入力
- タグを持たない CI でもビルドするかどうか
- ランナーをプロジェクト専用にしようするかどうか
- Runner Executor を選択します
という感じです
トークンは UI から取得できます
「Settings」->「Pipelines」で真ん中くらいにあります
Runner Executor は今回「shell」を選択しました
ここで docker なども選択することができます
今回は docker コマンドを素で実行するため shell を選択しました
Dockerhub にあるイメージを元にビルドしたい場合は「docker」を選択することになります
全部入力できたら完了です
これで GitLab の UI を確認すると Specific Runner に構築した Ubuntu サーバがランナーとして登録されていると思います
gitlab-runner ユーザを docker グループに所属させる
- usermod -g docker gitlab-runner
- systemctl restart docker.service
これを行わないと以下のエラーとなります
gitlab-runner ユーザに docker コマンドを実行する権限がないためです
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock
Shared-runner を disable にする
これは環境によって異なるので Shared-runner がデフォルトで有効になっている場合は無効にしてください
プロエジェクトの Pipelines の設定を見ると Specific-runner と Shared-runner の設定があるのでそこで disable してください
試しに使ってみる
docker executor は .gitlab-ci.yml で Dockerhub にあるイメージを指定してそのイメージでビルドを行うことができるものです
が、今回は直接 docker build を行ってみます
- vim .gitlab-ci.yml
stages:
- build
- test
build_job:
stage: build
script:
- docker build -t my-runner .
test_job:
stage: test
script:
- docker run my-runner
例えばこんな感じで YAML ファイルを定義します
Dockerfile は各自で適当に準備してください
Dockerfile が準備できれば上記のようにビルドをランナーで走らせることができるはずです
最後に
GitLab CI で使うランナーを独自で構築してみました
公式のインストール方法を見ると Ubuntu 以外にも Redhat 系や Windows, Mac までいけるので何でもランナーにすることはできそうです
結構簡単にできるので共有ランナーが遅いときに試してみてはいかがでしょうか
0 件のコメント:
コメントを投稿