読者です 読者をやめる 読者になる 読者になる

SideCI Blog

自動コードレビューサービスSideCIを提供している株式会社アクトキャットのコーポレートブログです。



Jenkinsがやっぱりなんだかんだで最強のCIツール

Other

Jenkinsがやっぱりなんだかんだで最強のCIツールだとみなさんも思いませんか?私たちSideCIチームではコードのテスト(RSpec)の実行はCircleCIを使っています。ローカルではcapybaraさんもつかったり。(CapybaraはCircleCIとはそもそもが違いますがw)

しかしながら、CI=テストではないわけで、CircleCIではなく、Jenkinsを使っている部分もあります。Jenkinsは汎用性の高さが最高です。

Jenkinsが最強なワケ

f:id:sideci:20140402230006p:plain

私は以下の理由でJenkinsを最強だと考えています。

  1. どんなスクリプトも実行できる非常に高い汎用性
  2. どんなタイミングでもスクリプトを実行できる幅広いトリガー
  3. 非常にたくさんのプラグイン、及びそれを産み出すコミュニティ

1. どんなスクリプトも実行できる非常に高い汎用性

オンプレミス(自前でサーバを用意)するからこそ、どんな環境でも作成出来ます。Macの上でもWindowsの上でもLinuxの上でも、どこでも実行、どんな種類・言語のスクリプトでも実行できます。

ほとんどのCIツール、クラウドサービスは環境がある程度制限されていますから、やはり汎用性の高さはJenkins様が最強です。

2. どんなタイミングでもスクリプトを実行できる幅広いトリガー

WebHookをGitHubから受け取ったタイミング、でビルドやテストを実行するのはどのサービスでも出来ますが、Jenkins様は最強で、最強のCronのように、時間指定で実行したりもできます。

もちろん、時間指定と合わせて使えば、特定のスクリプトやAPIの返り値がtrueじゃなくなった時に実行するなど、どんな事でもトリガーにしてスクリプトを実行させることができます。

これは一例ですが、SideCIチームでは真夜中に特定スクリプトを実行、SideCIサービス自体を全体的に自動的にテストさせています。

3. 非常にたくさんのプラグイン、及びそれを産み出すコミュニティ

プラグインが非常に多いのはJenkinsの最大級の特徴です。たとえば、

  1. 指定時間にスクリプトを実行
  2. スクリプトの実行結果を何か(メール)などに通知する
  3. 実行結果をグラフに描画、実行の成否の推移の可視化

など、トリガーの発動からその結果の集計まで、ユーザの環境に合わせて、ほとんどのことが自前のスクリプトをあまり書くことなく実行可能です。

おわりに

Jenkinsは最強のCronだという話をたまに聞きますが、最強のCron、最強のCIツールだと私も思います。トリガーの発動から結果の集計までを最大の自由度で出来るのはJenkins以外には今のところありません。

ただし、Jenkinsは汎用性が高い故に、設定が面倒だったり、管理画面が煩雑気味だったりな部分もあるので、ケース・バイ・ケースで使い分けると楽だと思います。