JenkinsとConcourse CIを比較

    「Jenkins」と「Concourse CI」の比較

    「Jenkins」と「Concourse CI」は、継続的インテグレーション機能を提供します。

    Jenkins

    概要

    Jenkinsは「継続的なソフトウェアのビルド/テストを行う機能」と「外部で起動するジョブ実行の監視機能」を提供します。

    多くのユーザーが使用しています。

    メリット

    ・旧バージョンも管理できる
    ・情報が得やすい(ユーザー数が多くコミュニティが活発)
    ・どのようなスクリプトにも対応できる高い汎用性
    ・豊富なプラグインによる優れた拡張性
    ・対応言語の多さ
    ・テスト結果(xUnit形式)をレポートとして表示できる

    デメリット

    ・Jenkins用サーバを構築する必要がある
    ・属人的になりやすい(Jenkins職人)
    ・設定項目が多い
    ・変更に関するヒストリ機能がない
    ・CIプロセスが多数のサードパーティ製プラグインに依存してしまう可能性

    Concourse CI

    概要

    Concourse CI(コンコース シーアイ)とは、パイプラインベースのCI/CD(継続的インテグレーション/デリバリー)ツールです。

    タスクの集まりをパイプラインとして記述することでビルドパイプラインを実行し可視化できます。

    あらゆる外部要因を抽象化し、同じプロセスをコンコースサーバで簡単に実行できるようにできます。明示的な定義を必要とすることによって、「システムが考慮しなければならない仮定や未知の変数の数を最小限に抑える」という設計思想です。

    「Concourse CI」は「Jenkins」のように特定の個人に依存することがないため、特に、大規模分散化システムの自動化処理用プラットフォームとして期待できます。

    メリット

    ・YAMLでジョブ/パイプラインを記述
    ・マイクロサービス化されたシンプル構成
    ・スケーラブル
    ・軽量動作(Go言語実装)
    ・Dockerによる構築が容易
    ・Dockerコンテナによる再現性の高いビルドが可能
    ・ネイティブ環境での動作も可能
    ・操作はすべてCLI(Command Line Interface)ベース---処理自動化を行いやすい
    ・結果をGUIで視覚的に確認できる

    デメリット

    ・比較的新しいプロダクトであるため、日本語ドキュメントが少ない

    参考元サイト

    「Jenkins」基本情報

    ■概要

    Jenkins(ジェンキンス)とは、オープンソース継続的インテグレーション支援ツールです。ソフトウェア開発プロジェクトなどにおける「ビルド」「デプロイ」「テスト」などの作業自動化/効率化を支援します。

    ■「継続的インテグレーション」とは

    継続的インテグレーション(CI:Continuous Integration)とは、バージョン管理ツールにコミットされたソースコードを定期的に自動ビルドすることにより、問題を早期に発見し対処を行うことです。

    その結果、ソースコード品質の向上、テスト工数の削減といった効果が得られます。

    ■基本説明

    Jenkinsの主要機能は、「継続的なソフトウェアのビルド/テストを行う機能」と「外部で起動するジョブ実行の監視機能」です。

    Javaで開発されたWebベースのソフトウェアで、Webサイトから管理/設定変更/レポート閲覧ができます。

    ■Jenkinsを使った開発の流れ

    開発メンバーがソースコードをコミットすると、Jenkinsが更新を検知し、ビルドツールをキックします。あらかじめ設定しておいた手順に従って、ビルド/テストが実行されます。ビルド/テストが完了したら、Jenkinsは、Webページやメールなどに結果を出力します。

    エラー箇所について、開発メンバーが修正を行い、ビルド/テストを繰り返して、エラーがゼロになるまで繰り返せば、手順書レベルの品質をクリアできていることになります。

    ■経緯

    Jenkinsは、Oracle社主導で開発されていた「Hudson」と呼ばれるソフトウェアがベースとなっています。

    2011年に、オープンソースプロジェクトとして分岐(フォーク)し、Jenkinsとしての開発が始まりました。

    主な開発者の一人として、川口耕介氏がおり、2011年、このプロジェクトにおける自身の働きを讃えられ「Google–O'Reilly Open Source Award」を受賞しています。

    ■オフィシャルサイト情報

    オフィシャルサイト

    →Jenkins

    ライセンス情報

    Jenkinsのライセンスは「MIT License」です。

    詳細について、こちらを参照ください。
    →Jenkins →License

    ダウンロード

    →Jenkins →Download

    ■同様製品

    同様な機能を提供する製品として、次のようなものがあります。

    オープンソース製品:「Concourse CI」など。

    「Jenkins」の主な特徴

    ■非常に高い汎用性

    Linux/Windows/Macなど、どの環境でも、さまざまな種類/言語のスクリプトを実行できます。

    ■多様なトリガー

    「バージョン管理システムのコミット」「cronライクのメカニズムによるスケジューリング」「他のビルドが完了した時」「特定のビルドURLによるリクエスト」などさまざまなトリガーで実行させることができます。

    ■プラグインによる拡張性

    Jenkinsは、プラグインを作成/利用することで機能を拡張できます。プラグインが充実している点も特徴です。

    ■簡易なインストール

    「java -jar jenkins.war」を実行するか、サーブレットコンテナにデプロイするだけで、インストールできます。データベースは不要です。

    ■インターフェース

    分かりやすいWebGUIを使用してJenkinsの設定を行えます。

    ■永続リンク生成

    「最新ビルド」「最新安定ビルド」のような永続(固定)的なクリーンでわかりやすいURLを持ちます。

    「Jenkins」の主な機能

    ■バージョン管理システム連携機能

    バージョン管理システムと連携し、自動的にプロジェクトを構成するソースコードを集め、コンパイルして実行可能な状態にビルドします。

    「CVS」「Subversion」「Git」「Mercurial」「Perforce」「Clearcase」など多くのバージョン管理システムに対応しています。

    バージョン管理システムからビルドへの変更の一覧を生成できます。

    ■分散ビルド機能

    複数のコンピュータで分散ビルド/テストを実行できます。

    ■ユニットテスト機能

    非常に簡単な設定でユニットテストを実行させることができます。

    JUnitのテスト結果を一覧表示/要約で履歴情報とともに表示します。履歴の傾向はグラフ化されます。

    ■タグ管理機能

    ビルド単位でタグをセットできます。

    ■ファイル追跡機能

    「どのビルドがどのjarを生成したのか」「どのビルドがjarのどのバージョンを使用しているのか」などを追跡できます。


    「Concourse CI」基本情報

    概要

    Concourse CI(コンコース シーアイ)とは、パイプラインベースのCI/CD(継続的インテグレーション/デリバリー)ツールです。タスクの集まりをパイプラインとして記述することでビルドパイプラインを実行し可視化できます。

    基本説明

    Concourse CIの原則は、プロジェクトをCIの細部から切り離すプラクティスを奨励し、すべての設定をバージョンコントロールにチェックインできる宣言ファイルに保存することによって、Concourseとの切り替えのリスクを軽減します。

    Concourse CIの主なポイント

    ・シンプル
    ・スケーラブル
    ・再現性
    ・軽量動作
    ・Dockerによる構築が容易
    ・操作はすべてCLI(Command Line Interface)ベース
    ・Go言語実装
    ・YAMLでジョブ/パイプラインを記述
    ・結果をGUIで視覚的に確認できる

    同様ツール「Jenkins」との比較

    Concourse CIは、「Jenkins」のように特定の個人に依存することがないため、特に、大規模分散化システムの自動化処理用プラットフォームとして利用できます。

    経緯

    Concourse CIは、Pivotal社が開発しています。

    Pivotal社が提供しているPaaS(Platform as a Service)基盤「Cloud Foundry」において、Jenkinsでの設定が行われていましたが、大規模プロジェクトに対して対応しきれない部分が出てきたため、Concourse CIが開発され、単独のCI/CDツールとしてオープンソース化されました。

    TOPに戻る

    主な特徴

    3つのコアコンセプト(タスク、リソース、ジョブ)

    Concourse CIは、「タスク」「リソース」「ジョブ」の3つのコアコンセプトで構成されています。

    「タイムドトリガー」や「外部環境の同期使用」などの機能は、レイヤーとしてではなく、これらの面でモデル化されています。

    この抽象化機能により、あらゆるパイプラインのモデル化を行えます。

    タスク

    「タスク」とは、独立した環境(Dockerコンテナ)でスクリプトを実行し、依存するリソースを利用します。

    各タスクはDockerコンテナ上で実行されるため、再現性の高いビルドが可能です。

    リソース

    「リソース」とは、「バージョンチェック」「プル(ダウンロード)」「プッシュ(アップロード)」できる抽象的な任意のエンティティです。

    主なリソースとして、「Git Resource」「S3 Resource」「Docker Image Resource」などが用意されています。

    この抽象化により、「リソースの再利用」や「リソースの独自実装」も容易に行なえます。

    ジョブ

    「ジョブ」では、従属リソースが変更された場合に実行するアクションを記述します。

    例えば、「リポジトリに新しいコードがプッシュされるたびにユニットテストを実行する処理」などを定義します。

    ジョブは、「自動的に実行される入力と出力を持つ関数」のようなもので、パイプライン機能の根幹である上流ジョブの出力に依存する可能性があります。

    TOPに戻る

    同様製品

    同様な機能を提供する製品として、次のようなものがあります。

    オープンソース製品:「Jenkins」など。

    TOPに戻る

    オフィシャルサイト

    オフィシャルサイト

    →Concourse CI

    ライセンス情報

    Concourse CIのライセンスはApache License 2.0です。

    詳細について、こちらを参照ください。
    →GitHub →concourse-ci/LICENSE.md

    ダウンロード

    →Concourse CI →Downloads

    TOPに戻る

    参考元サイト

    TOPに戻る

    ※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。