GitLabRunnerを登録してGitLabCIを動かしてみる

とりあえずGitLabCIを動かせるようにする。
こんなかんじで進める。

  1. GitLabRunnerのインストール
  2. GitLabRunnerの登録
  3. .gitlab-ci.ymlの作成
  4. CIを動かしてみる

CentOS7で実行。

1. GitLabRunnerのインストール

公式を見れば簡単。
docs.gitlab.com

リポジトリの追加

# curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash

yumでインストール

# yum install gitlab-runner

これで完了。
インストールまではすごく簡単。

2. GitLabRunnerの登録

続いて、Runnerを登録する。
これも公式ドキュメントを参考に進める。
docs.gitlab.com

登録にあたってGitLabが発行するtokenが必要になるので調べておく。
そのプロジェクトのSettings → CI/CD → Runners settings
赤枠で囲われたところをメモっておく。
f:id:nyameji:20180218162042j:plain

では実際に登録してみる。

# gitlab-runner register
Running in system-mode.

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://hogepiyo.com/  //GitLabのURLを入力
Please enter the gitlab-ci token for this runner:
AssukefCjhvHwAJXF3C7  //先ほど調べたtokenを入力
Please enter the gitlab-ci description for this runner:
[localhost.localdomain]: shell-runner  //Runnerの詳細。後からも編集可能。
Please enter the gitlab-ci tags for this runner (comma separated):
shell  //このRunnerに付けるタグ。後からも編集可能。
Whether to run untagged builds [true/false]:
[false]:  //タグのないジョブを実行するかどうか。デフォルトfalse。後からも編集可能。
Whether to lock the Runner to current project [true/false]:
[true]:  //他のプロジェクトからこのRunnerを使えないようにするかどうか。デフォルトtrue。後からも編集可能。
Registering runner... succeeded                     runner=AssukefC
Please enter the executor: docker+machine, docker-ssh+machine, kubernetes, docker-ssh, parallels, shell, virtualbox, docker, ssh:
shell  //ビルドの実行方法
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

おっけー。
登録完了。

最初にtokenを確認したページに行くとRunnerが登録されているのが確認できる。
Settings → CI/CD → Runners settings
f:id:nyameji:20180218162401j:plain

3. .gitlab-ci.ymlの作成

ビルドやテストの手順は.gitlab-ci.ymlに記載して、
そのプロジェクトのルートディレクトリに配置する。
今回はCIを試しに動かせるようになることが目的なので簡単な内容でテストする。

GitLabのエディタから.gitlab-ci.ymlファイルを作成してみる。
プロジェクトのRepository → New fileで。

stages:
  - runner-test

ipaddress_job:
  stage: runner-test
  script:
    - ip a
  tags:
    - shell
  only:
    - master

これは、
runner-testというステージを定義して、
ipaddress_jobというジョブを定義して、
shellというタグが付いたランナーを対象にして、
ブランチはmasterだけを対象として、
RunnerサーバーのIPアドレスを表示する、ということを行っている。

これをそのままGitLabのエディタからコミットするとCIが動き出す。

4. CIを動かしてみる

コミットした時点ですでにCIが動いているはずなので確認してみる。
そのプロジェクトのCI/CD → Pipelines
f:id:nyameji:20180218163041j:plain

成功してたら緑でpassedってなってる模様。
失敗してたらfailed,
なんらかの理由で止まってたらpendingとかになっている。
最初、「タグなしのジョブは実行しない」でRunnerの設定をしていたためここがずっとpendingで止まってて小一時間ハマった。

そのpassedをクリックして中に入るとipaddress_jobというジョブがあるので、
そこをクリックすると黒い画面の中にIPアドレスが表示されている。
たしかにgitlab-ci.ymlに記載したip aが実行されている。
f:id:nyameji:20180218163025j:plain

一通りの流れは成功した。
あとは実践に近い形に持っていけるか。
ビルドして、テストして、デプロイして・・・。
docker上でいろいろやるらしいのだがdockerの知識がなくてわからん。

そういえばいつの間にかGitLabの書籍が出てた模様。
試しに買って勉強してみるかなー。
でもdockerもやらないとなー。

GitLab実践ガイド (impress top gear)

GitLab実践ガイド (impress top gear)