LoginSignup
29
19

More than 5 years have passed since last update.

Concourseって何?

Last updated at Posted at 2018-11-30

そもそもこのカレンダーの題材であるConcourseとは何なのかを説明します。
🙆話すこと

  • Concourseの概要や特徴

🙅話さないこと

  • Concourseの用語(Resource, Job, Task, etc.)の詳細な説明
  • 他CI/CDツールとの詳細な比較

Concourseとは

GitHub: concourse/concourse: Concourse CI
Doc: Concourse CI - Docs

Concourseは、Goで書かれたパイプラインベースのCI/CDツールです。
Cocnourseの特徴をまとめていきます。
詳細はConcourse CI - Docs をご覧ください。

Configration As Code

パイプラインをコードとして管理することができます。
以下が例です。

pipeline.yml
resources:
- name: booklit
  type: git
  source: {uri: "https://github.com/vito/booklit"}

jobs:
- name: unit
  plan:
  - get: booklit
    trigger: true
  - task: test
    file: booklit/ci/test.yml

このようなコードをgit等にpushしておくと、チームメンバーの誰でもパイプラインを構築、編集することができます。

Fancy Visualization

WebUIでパイプラインが可視化されます。
下図がConcourseのWebUIです。

concourse-gif
Concourse Pipeline UI Explained – Concourse CI – Medium

パイプラインの進行状況、失敗箇所がわかりやすいです。
(あとかっこいい、なんとなく画面を出しておくとドヤれそう)

CI Under Source Control

flyというcliが提供されています。
fly set-pipelineコマンドでpipelineをconcourseにsetします。

$ fly -t ci set-pipeline -p booklit -c pipeline.yml

この特徴の利点は気軽にパイプラインの開発ができるというところです。
大抵のciツールはgit等と連携し、コミットし、そのコードがマージされるまでパイプラインに反映されることはありません。
パイプラインが正常に動作するようになるまで、ひたすらコミット/PRを量産した経験ないですか?
Concourseでは、手元のコードを元にパイプラインをsetできるため、開発を柔軟に行うことが可能です。

Reproducible, Debuggable Builds

全てはコンテナ上で実行されるため、まっさらな環境での動作が保証されています。
(実行に必要なDockerImageも任意のものを指定することができます。)
これによりスノーフレーク化されたサーバをなくすことができるということが利点の1つとされています。(参考: パイプラインベースのCI/CDツール、Concourseとは? | Think IT(シンクイット))

また、実行コンテナに入ることが可能であるため、パイプラインのデバッグが容易です。

多くのCIツールは、実行の失敗のログを見ることは可能ですが、実行環境で任意のコマンドを実行することはできません。

Rapid Local Iteration

パイプラインをConcourseにsetしなくても、手元で動作を検証することが可能です。
fly executeというコマンドを利用するのですが、今回は説明を省きます。

都度都度commitをしたり、gitにpushしたりする必要がないし、ビルドログの汚染を防ぐこともできます。

Bring Your Own Integrations

Concourseには複雑なプラグインシステムは存在しません。
しかし、単一の強力な抽象概念があります。
それがResourceと呼ばれるものです。
このResourceは、指定したリソースの変更を監視したり、リソースを取得, 更新することができます。

Resourceにはビルドインされたものとカスタムされたものがあります。
ビルドインResourceは以下のようなものがあります。

これらはビルドインされているため、Concourseのバージョンによって使用できるバージョンが決まっています。

カスタムResourceも非常に豊富です。例としては以下のようなののがあります。

もちろん自分で実装することもできます。
そのガイドについて後半のアドベンドカレンダーでまとめるつもりです。

まとめ

ConcourseはパイプラインベースのCI/CDツールです。
見やすくかっこいいUI、パイプライン自体の開発が柔軟、周辺Componentの開発も容易なことが特徴です。

29
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
19