前回の続きです。
Docker + nginx-proxyでGitLab CI環境を作ってみる(2)
http://qiita.com/ABE_TAKASHI/items/deb516d44459eb901961
2016年2月11日追記
以下に「GitLab-CI環境の設定は基本はプロジェクトごと」みたいなこと書きましたが、普通にGitLab全体で使えるRunnerを登録することができますね… 登録後に各プロジェクトでそのRunnerを使うかどうかの設定をするようなインターフェースがありました。大人数で動かすプロジェクトを複数管理することがなければ、1つだけRunnerを登録しておけば事足りるような気がします。Runnerの登録の仕方などは、以下の説明と大差ありませんので、そちらをご参考ください。
~~GitLab-CI環境の設定は基本はプロジェクトごとになります(シェアもできるようですが)。~~WEBインターフェース上にてプロジェクトの「Settings」→「Runners」とたどると、以下のような記載がありますので、これを元にしてコマンドライン上から設定します(ここまでできてるならWEB上で完結させてほしいですが…)。
以下はコマンドラインからです。対話式のスクリプトが走るので、基本は上の図に書かれたとおりに応答します。
[docker-op@gitlab]$ docker exec -it gitlab-runner gitlab-runner register
Running in system-mode.
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/ci):
http://[これまでに設定したURL]/ci
Please enter the gitlab-ci token for this runner:
UqHdxozH4z2pUgcCNPoi
Please enter the gitlab-ci description for this runner:
[72b6d08d0e51]:
test0002(Runnerに名前をつけてあげてください)
Please enter the gitlab-ci tags for this runner (comma separated):
(ここでは未入力、タグはあとでも編集できます)
Registering runner... succeeded runner=vxGb_9Jx
Please enter the executor: docker, docker-ssh, virtualbox, ssh, shell, parallels:
docker
Please enter the default Docker image (eg. ruby:2.1):
ruby:2.1
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
という感じで、難しいところはなにもありません。タグとかの使い方がまだよく分かってませんが、使いこなすと便利なのかもしれません。これが終わると、WEB上のページを更新すると以下のような感じでRunnersが表示されていると思います。
あとはテストやらデプロイなんかの処理をうまく連携すればいいのだと思いますが、そのへんはまだ自分も手探りの最中です。とりあえずリポジトリの一番上の階層に.gitlab-ci.ymlという以下の内容のようなファイルを置くと、コミットした際に同階層に置いたdeploy.shが実行されることは確認しました。テストもほぼ同じような方法で実行できるかと思います。
deploy:
script:
- chmod 700 ./deploy.sh
- ./deploy.sh
type: deploy
tags:
except:
- tags
また、CI_BUILD_REF_NAMEという環境変数にコミットしたブランチ名が入ってきてるので、「developブランチにコミットした場合はdevサーバへ処理を行い、masterブランチにコミットした場合はstgサーバへ処理を行う」みたいな簡単な分岐を含む自動処理もできます。
参考
GiLab CI | GiLab CI のビルドスクリプト内で使用可能な環境変数について
http://qiita.com/tbpgr/items/7017a0ed5def79cd12e0
WEBインターフェースにもBuildsという項目が追加され、ビルドの結果が表示されるようになってます。
GitLabバージョン7以前はCI部分のUIがほぼ完全に別れていて使いにくかったのですが、統合されてすごく使いやすくなっています。そしてDockerを使ってのインストールは以前よりすごく楽になっているのでおすすめです。
Jenkinsを使うほど大げさなプロジェクトじゃない…、みたいなちょっとしたプロジェクトには使っても良さそうな気がします。自分でももう少し使ってみたいと思います。