エムスリーテックブログ

エムスリー(m3)のエンジニア・開発メンバーによる技術ブログです

GitLabのjob結果をIntelliJ IDEAに通知させて効率化を図ろう!

【基盤開発チーム ブログリレー2日目】

こんにちは、基盤開発チームでエンジニアをやっている桑原です。

エムスリーではGitLabでソース管理をしており、ソースコードをプッシュしたタイミングで GitLab CI で定義されたjobにより単体テストを実行します。

IntelliJ IDEA(以下IDEA) で開発している場合、ソースの修正からプッシュまで IDEAだけで完結する人も多いと思います。ただ、GitLabのjobの結果だけはブラウザでGitLabにアクセスして確認する必要がありました。そう、 CIClone登場まではね。CICloneの説明自体は開発元である サムライズムさんのブログ を読みましょう。

このブログでは GitLabとCICloneの連携方法と使い心地を紹介していきたいと思います。

IDEAとGitLabの連携

今年の3月に CIClone の GitLab 連携が発表されました。個人的にはCIClone が発表されてからGitLab連携を首を長くして待っていたため、GitLab連携の発表はとても嬉しかったのを覚えてます。

早速 CICloneとGitLabを連携させて、実際の使い勝手を見ていきましょう。

設定方法

pluginのインストール

まずは CIClone plugin を install します。サムライズムさんから IDEA のライセンスを買ってる場合は無償でライセンス発行してもらえます。

CICloneの設定に通知対象のGitLabのリポジトリを追加する

まずGitLabのアクセストークンを発行します。 IDEA上で

Settings > Tools > CIClone

へ行き、GitLab serverの設定をしたら、Get Token リンクを押します。GitLabのページが開き、トークン発行画面へ行きます。

詳細な必要権限はわからないですが、とりあえず read 系の read_api と read_repository があれば良さそうです。

発行したトークンを貼り付け、

IDEAの設定
IDEAの設定
通知して欲しいプロジェクトと必要な通知を選択します。ここでは、自身のコミットによるjobの失敗時のみ通知するように設定してます。

単体テストを失敗させて通知させる

わざと失敗させるテストを埋め込み、どのような通知が来るか確かめていきます。

私は普段 Kotlin を書くことが多いのでテストは Kotest を使うことが多いです。先述のサムライズムさんのブロクの

・テストケース抽出をサポートするビルドツール、テストフレームワーク

には Kotest が含まれていないので不安ですね。確実にサポートされていそうな Junit5 と Kotest を同時に実行し、ちゃんと通知してくれるのか、落ちた箇所を教えてくれるのでしょうか……

  • Junit5

    ciclone-junit5
    ciclone-junit5

  • Kotest

    ciclone-kotest
    ciclone-kotest

どちらも2つずつテストを書き、1つは落ちるようにしてます。

プッシュして、jobが完了するまで定期的に結果のフェッチをしてくれてます。 nyan-progress-bar が待ち時間を和らげてくれます。

nyan-progress-bar
nyan-progress-bar

  • 失敗通知 テストが失敗し、job が failed になると IDEA に通知してくれました!

    gitlab-ciclone-notify
    gitlab-ciclone-notify

  • 失敗場所リンクしてくれる GitLabツールバーを開くと、失敗したテスト一覧とその行数も教えてくれました!

    ciclone-failed-junit5
    ciclone-failed-junit5
    ciclone-failed-kotest
    ciclone-failed-kotest
    Kotestも問題なく失敗の通知をしてくれてます! 更に、失敗した画像の選択部分をクリックすると該当のソース行を開いてくれるのです! 便利! これでIDEAだけでソースの修正からプッシュ、CIの結果まで完結するようになりました!

まとめ

CIClone を使って GitLab CI の結果を IDEA で受け取り、テスト失敗時にはその該当箇所もIDEAのみでわかるようになりました! ブラウザで定期的に人間が結果ポーリングする必要なくなるのは、いい意味でボディブローのように効いてくるのでは無いでしょうか。

We are Hiring

エムスリーでは楽しく開発をして成果を出していくために開発作業のしんどさを減らすための工夫も惜しみません。興味を持たれた方の応募をお待ちしております!一緒に快適な開発をやっていきませんか。

jobs.m3.com