BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Concourse - スケーラブルなオープンソースのCIパイプラインツール

Concourse - スケーラブルなオープンソースのCIパイプラインツール

原文(投稿日:2016/04/27)へのリンク

yamlファイルによるパイプライン構成とコンフィギュレーションフリーなセットアップを備えた,オープンソースのCIパイプラインツールConcourseが先日,メジャーリリースを達成した。現時点ではバージョン1.1.0が提供されているPivotalの支援を受ける開発チームによると,Concourseを導入することによって,パイプラインのファーストクラスサポート,コンテナで分離されたビルドの実行,スノーフレーク(雪片)ビルドサーバの回避,ビルドログへのアクセスが容易,といったメリットが期待できる。

概念的なシンプルさという点もまた,Concourseの主張するメリットだ。

Concourseの最終目標は,可能な限り少ない可動部品で,表現力のあるシステムを提供することです。Concourseは,それ自体の概念を3つに絞っています — タスク,リソース,それらを構成するジョブです。

タスクは実行の基本単位である。新たに起動したコンテナ内部で実行されるスクリプトなどがそれにあたる。コンテナには,実行するタスクスクリプトのための入力および出力ディレクトリが用意されている。

リソースはリポジトリなど,バージョン管理されたアーティファクトの抽象的な配置場所である。パイプラインに参加あるいは離脱する外部依存関係のモデリングで使用されると共に,時間トリガなどの概念を抽象化する役割も果たしている。リソースの変化を検出(チェック)し,取得(フェッチ)し,公開(プット)することができる。 さまざまなリソースタイプ(git,AWS S3, トリガなど)がボイラプレートコードとして,パイプラインから分離された形でカプセル化され,Concourseを拡張するためのプラグイン可能なインターフェースとして提供されている。

ジョブはリソースとタスクから,ビルドプランに従って構成される。ジョブの起動はリソースの変化,あるいは認証操作のような手作業によって行われる。以下のスニペットは,ジョブの簡単な構成を示すものだ。

jobs:
- name: hello-world
  plan:
  - task: say-hello
    config:
      platform: linux
      image_resource:
        type: docker-image
        source: {repository: ubuntu}
      run:
        path: echo
        args: ["Hello, world!"]

ジョブプランの実行インスタンスはビルドと呼ばれる。新たなコンテナでタスクを再実行することが可能なので,Concourseのビルドには再現性がある。その結果として,ビルドワーカは,前回実行時の変更による影響を受けない。ビルドが失敗した場合でも,Flyと呼ばれるConcourse CLIを使ってコンテナ内でローカルに再実行することが可能なため,開発サイクルの短縮が実現できる。さらに,

ビルド内で動作するコンテナには,Flyのインターセプトを通じて実行中(と終了直後)でもアクセス可能なため,デバッグ時には非常に便利です。

パイプラインはジョブを通じたリソースフローの状態を視覚化したものだ。ひとつのデプロイメントには複数のパイプラインがあり,互いに分離されている。GoCD的なファンインとファンアウトをサポートし,すべてyamlファイルで設定することが可能だ。

Concourseチームの報告によると,新たなCIツールを開発するモチベーションとなったのは,既存のツールに対する不満である。例えばJenkinsは,プラグインとクリックベースのコンフィギュレーションに依存しているため,インスタンスの再現が難しい。またGoCDについては,“何かを設定するための方法を見つけるのが非常に難しい上,実行階層も深く,複雑過ぎます”。

Concourseは継続的デリバリと継続的デプロイメントでも使用可能だが,現在提供されているリソースにはデプロイメント重視の実装が欠けているため,必要なタスクをユーザ側で実装する必要がある。また,現在のダッシュボードで提供される運用情報は多いとは言えない。しかしながら,システムの動作状況やパフォーマンスを理解する上で,メトリックは不可欠なものである。そのため“Concourseでは,システム状態自体に加えて,実行中のビルドに関するメトリックも提供されています。これらのメトリックスを活用することで,システムの状態を監視することが可能です。”Concourseの保持するパイプラインメトリックはパブリック公開されている。

Concourseでは実行中のコンテナを抽象化するGarden APIリリース管理のBOSHなど,Pivotal / Cloud Foundryの用語やツールも使用されている。Concourseを始めるにあたって,まずはこれらのエコシステムに親しんでおくとよいだろう。初期スキルギャップを埋めるために,おインラインドキュメントチュートリアルなども用意されている

 
 

この記事を評価

関連性
形式
 
 

この記事に星をつける

おすすめ度
スタイル

BT