Concourse CIと他のCIツールをざっくりと比較してみた

332
NO IMAGE

Concouse CIについて、調査する機会がありましたので、調査結果をまとめようと思います。
Concouse CIと他のCIツール(CircleCI、Jenkins)との比較を行いました。

比較対象CIツール概要

concourse

  1. 比較的新しいCIツール(2014年リリース)。モダンであるが、日本語のドキュメントは少ない。
  2. 実行の際に可能な限りconcourseに依存することをなくし、外部要因を「resource」というものに抽象化するという哲学を持っている。それにより、どのconsourceサーバーでも、同じプロセスで実行できるようにする。
    「resource」は、具体的には、実行のためのDockerイメージ、時間をトリガーとしてビルドする際の時間(タイムリソース)、データを保存してあるs3バケットなど様々。

Circle CI

  1. SaaSである。
  2. 有料になる可能性があるが、構築の手間は少ない。
  3. 障害発生時、原因解析や復旧をすることが困難。

Jenkins

  1. 最も一般的なCIツール。日本語のドキュメントが豊富
  2. Jenkins自体は、主に自動化フレームワークとして機能し、重要なロジックの多くはプラグインのライブラリによって実装されてる。そのため、柔軟性はあるが、多数のサードパーティ製プラグインに依存するようになる可能性がある。

Consource vs CircleCI vs Jenkins

Concourse CircleCI Jenkins
提供方法 オープンソース SaaS オープンソース
パイプラインの記述方法 yaml yaml groovy
パイプライン以外の設定方法 fly cli 画面から実施 画面から実施
パイプラインの可視化 ステップのリスト
ジョブの依存関係
ステップのリスト
ジョブの依存関係
ステップのリスト
ビルドの実行環境 コンテナ コンテナとVM(複数OSを選択可能) 物理マシン、VM、コンテナ(構築次第)
構築難度 Dockerの知識があれば、容易 github,bitbucketの連携のみ、容易 サーバー構築の必要性あり、やや難
リポジトリへのプッシュなしでビルドの実行 fly executeコマンドで実行 不可 不可
拡張 リソースカタログ Orbs プラグイン
エラー調査 実行状況の表示
コンテナへのアクセスをサポート
実行状況の表示
コンテナへのアクセスをサポート
実行状況の表示

特に気になったこと

fly cliによる操作

concourseはすべての操作はfly cliというコマンドラインツールから行います。
これにより、処理の自動化や共有が行いやすいです。

ローカルでの実行

CircleCI、Jenkinsは、ローカルでの変更をプッシュしないでビルドするということができません。
しかし、concourseにおいては、自身の変更のみをビルドすることができます。
これにより、リモートのコミットを汚染したり、テスト前の変更をプッシュすることを防ぐことができます。

現状での個人的見解

  1. Dockerの知識がある程度あった方がいいことやローカルでの構築作業が必要になるため、CircleCIとの選択では、プロジェクトの状況に応じて、一長一短あると思いました。
  2. Jenkinsと選択する際は、すでに進んでいるプロジェクトではないなら、Concourseを選択することが望ましいと思います。

今後の調査

Concourseの実際の設定方法や特定のユースケースを想定した調査ではないので、今後の調査では、

  1. ローカルでの自分の変更のみのビルド方法
  2. テストの実施方法
  3. エラーの通知方法
  4. デプロイ方法
    などのユースケースを想定して、構築してみようと思います。

参考文献

Justin Ellingwood."CI/CD Tools Comparison: Jenkins, GitLab CI, Buildbot, Drone, and Concourse".THE DIGITALOCEAN COMMUNITY.2017-7-24.https://www.digitalocean.com/community/tutorials/ci-cd-tools-comparison-jenkins-gitlab-ci-buildbot-drone-and-concourse ,(参照2021-10-17)