GitLab CIで出来る事を簡単に紹介【Shell】

はじめに

GitLab CIのshellを使っていて、出来ることがわかってきたので簡単に紹介します。主に私はiOSアプリの自動ビルドのために使用しています。

gitlab-ci-runnerのインストールや登録などの細かい所は下記を参考にして下さい。(実際色々参考になりました)

GitLab CIを使って仕事で楽をする
GitLab CIを触って暫くたったので雑な感想

CIを使うには、CIサービスを使ったり、自分でJenkins立てたりってことが必要ですが、GitLabにはCIが付いてきます。私が紹介するのはshellだけですが、Dockerなどとも連携できます。

しくみ

GitLab自体はjobの管理をします。ビルドやテストなどは行いません。Runnerと呼ばれるサーバが作業を行います。GitLabはその結果を受け取ります。

ビルドやテストは予めリポジトリのルートに、.gitlab-ci.ymlファイルを作ってビルド設定ができます。

私が使っているRunnerはMacですが、LinuxでもWindowsでも出来ます。10分程度の作業で、ビルドマシンをRunnerとして登録すれば、GitLabと連携できます。

できること

ここから本題です。.gitlab-ci.ymlの設定についてです。
私が良いなと思った部分だけで本家の方にも書いてありますし、本家の方が他にも出来ることが書いてあります。

・PushやMarge契機でshellを実行出来る。
 基本にしてこれがお手軽にできるのが魅力です。下記のようにymlファイルに書いておけばRunner上で実行されます。このShellがどこかで失敗すれば、このjobも失敗したことになります。

・特定ブランチでのみ動作させることができる。

また、上記の逆もあります。

・ビルドの成果物をGitLabにアップロードできる。これはGitLabの特定ページでダウンロード出来ます。

expire_inを使うことで、アップロードした成果物の有効期限を設定できます。

・パイプライン(Stage)を利用可能、必ず書く必要はないです。
Stageはjobの一個上の概念です。このStageのjobが終了したら、次のStageのjobを実行するというような設定ができます。

このように書くと、job_a, job_bが実行が全て完了した後に、job_cが実行されます。

最後に

手を出せていないですが、jobに共通したキャッシュ領域を持たせたり
Code Coverageを表示できたりもするようです。

他にもShell叩ける次点でいろんなことができると思います。

ほぼShell書くだけで簡単。って思って頂けたら幸いです。
どんどんGitLabはバージョンアップしてて、このあたりの機能が充実していっています。
現状のバージョンでもかなり使えると思いますので、GitLab使ってるけど、CI使っていなくて使ってみたいとか、Jenkinsに任せるほどのことじゃないとか、そういうことであれば導入を検討してみては如何でしょうか。

●この記事を書いた人