【基盤開発チーム ブログリレー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 があれば良さそうです。
発行したトークンを貼り付け、
単体テストを失敗させて通知させる
わざと失敗させるテストを埋め込み、どのような通知が来るか確かめていきます。
私は普段 Kotlin を書くことが多いのでテストは Kotest を使うことが多いです。先述のサムライズムさんのブロクの
・テストケース抽出をサポートするビルドツール、テストフレームワーク
には Kotest が含まれていないので不安ですね。確実にサポートされていそうな Junit5 と Kotest を同時に実行し、ちゃんと通知してくれるのか、落ちた箇所を教えてくれるのでしょうか……
Junit5
ciclone-junit5 Kotest
ciclone-kotest
どちらも2つずつテストを書き、1つは落ちるようにしてます。
プッシュして、jobが完了するまで定期的に結果のフェッチをしてくれてます。 nyan-progress-bar が待ち時間を和らげてくれます。
失敗通知 テストが失敗し、job が failed になると IDEA に通知してくれました!
gitlab-ciclone-notify 失敗場所リンクしてくれる GitLabツールバーを開くと、失敗したテスト一覧とその行数も教えてくれました!
ciclone-failed-junit5 Kotestも問題なく失敗の通知をしてくれてます! 更に、失敗した画像の選択部分をクリックすると該当のソース行を開いてくれるのです! 便利! これでIDEAだけでソースの修正からプッシュ、CIの結果まで完結するようになりました!ciclone-failed-kotest
まとめ
CIClone を使って GitLab CI の結果を IDEA で受け取り、テスト失敗時にはその該当箇所もIDEAのみでわかるようになりました! ブラウザで定期的に人間が結果ポーリングする必要なくなるのは、いい意味でボディブローのように効いてくるのでは無いでしょうか。
We are Hiring
エムスリーでは楽しく開発をして成果を出していくために開発作業のしんどさを減らすための工夫も惜しみません。興味を持たれた方の応募をお待ちしております!一緒に快適な開発をやっていきませんか。