Semaphore(CI/CD)をセットアップしてみた

Semaphore(CI/CD)をセットアップしてみた

Semaphore

SmaphoreはクラウドのCI/CDツールです。 ざっくりいってしまえばTravis CIやCircleCIのようなツールとなります。

The world’s fastest CI/CD platform
Continuous Integration & Delivery with Docker Support - Semaphore

とのことで、速度を売りの一つにしているようです。

公式サイトにはCodeship,Travis CI,CircleCIでテストスイートを実行した際の速度比較が記載されています。 スクリーンショット 2017-11-12 2.39.46

GitのホスティングサービスとしてGitHubとBitbucketが選択できるようです。今回はGitHubのプロジェクトと連携してみます。

やってみた

GitHubのアカウントをそのまま利用できるので、こちらのGet Started with GitHubからサインアップします。

Authorize rendertextをクリックし、SemaphoreからGitHubアカウントへのアクセスを許可します。 スクリーンショット 2017-11-12 0.10.03

リポジトリのホスト先を聞かれるので、ここではGitHubを選択します。 スクリーンショット 2017-11-12 0.10.24

連携するリポジトリの種類を選びます。 今回は試しに動かしてみるだけなのでOnly Public reposを選択します。 スクリーンショット 2017-11-12 0.10.44

リポジトリへのアクセスを許可します。

スクリーンショット 2017-11-12 0.11.03

リポジトリの一覧が表示されるので、連携させたいリポジトリを選択します。 スクリーンショット 2017-11-12 0.11.26

最初に連携するブランチを選択します。ここで選択したブランチ以外にも、新しくブランチを作成した際はSemaphoreは自動的にテストを実行します。ここではmasterブランチを選択します。 スクリーンショット 2017-11-12 0.11.39

Semaphoreがリポジトリを分析します。ソースコードを分析した結果、プロジェクトの言語に合わせてビルド用のコマンドを自動生成してくれるようです。 スクリーンショット 2017-11-12 0.11.53

今回は連携したのは新規作成したばかりのGradleプロジェクトなのですが、うまく認識してくれませんでした。そもそも対応していないか、あまりにも新規作成したばかりでJavaのコードが少なさすぎたのでしょうか。(GitHubの言語判定では、コード量が HTML > JavaScript > CSS > Java となっているプロジェクトでした。) スクリーンショット 2017-11-12 2.56.03 (1)

ひとまずここは手作業でJobの設定をしてみます。 JobのセクションはSetup,Parallel job,After jobに分かれています。

例えば、

  • Setupでデータベースのセットアップをして
  • Parallel jobでテストを実行して
  • Afterでテスト結果やビルドしたモジュールをどこかにアップロード

といった用途でセクションを分割することを意図していると思いますが、ここではとりあえずParallel jobでテストの実行だけしてみます。

./gradlew test

スクリーンショット 2017-11-12 3.00.24

設定が完了するとジョブが実行されます。 スクリーンショット 2017-11-12 0.15.08

ジョブの結果はGitHubにも自動で連携されます。 スクリーンショット 2017-11-12 0.18.09

Project Settings->BadgeからBadgeのURLを取得できるので、README.mdにコピペしてみます。 スクリーンショット 2017-11-12 1.30.24

Badgeが表示されました。 スクリーンショット 2017-11-12 1.38.42

感想

SemaphoreをGitHubと連携し、テストを実行してみました。

  • ビルドの設定のSemaphore側に持つ(ソースコード側で管理しない)
  • ビルド用のコマンドを自動生成する機能がある
  • 実行速度を売りにしている

あたりが主な特徴に思えました。 設定そのものはGUIで簡単に行えるので、既存プロジェクトのCI実行速度に不満がある場合など、検証も比較的簡単に行えるのではないでしょうか。

また、公式のコミュニティで運用されているチュートリアルが非常に充実しており、様々な環境でのビルドについての記載があるので色々と参考になりそうだと思いました。 Semaphore Community - Semaphore

私からは以上です。

参考URL