BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース AtlassianのBitbucket Cloudで継続的デリバリを提供するBitbucket Pipelines

AtlassianのBitbucket Cloudで継続的デリバリを提供するBitbucket Pipelines

原文(投稿日:2016/06/28)へのリンク

AtlassianがバルセロナのAtlasCamp 2016でBitbucket Pipelinesのベータ版をリリースした。Bitbucket Cloudで継続的デリバリパイプラインを提供する。それに合わせて,現在のクラウドベースのCI/COソリューションであるBamboo Cloudについては,2017年1月31日をもってサポートを終了すると発表した。ただしBamboo Serverについては,今後も引き続きBitbucket Server(旧Stash)用のオンプレミスCI/CD製品として継続する,と同社では強調している。

Bitbucket Pipelinesは,Atlassianのソースコードリポジトリホスティングサービスのクラウド版であるBitbucketのために,新たに用意された継続的デリバリ(CD/Continuous Delivery)機能である。ビルドエージェントのセットアップや,外部CIツールとの統合を必要としないのがその特徴だ。パイプラインは,開発チームによる“コードのビルド,テスト,デプロイ作業をすべてプッシュで行なえるようにする”ものだ。ツール間の切り替えを不要にし,フィードバックループを高速化する。コードからデプロイメントまでの開発ワークフローは,すべてがBitbucket Cloud内で管理される。ビルドステータスを例にあげれば,関連するすべてのコミットやブランチやプル要求が表示され,ログから直接ビルドエラーの原因となったコマンドにドリルダウンすることができる。

Atlassian Bitbucket Pipelines Overview

一般的なクラウドベースのCI/CDソリューションと同様,Bitbucket Pipelineもコンフィギュレーション・アズ・コードのアプローチに基づいており,ホストされているリポジトリにコードがプッシュされることで,自動的に起動される一時的なDockerコンテナをベースとしたビルド環境上で運用される。Bitbucket Pipelineがリポジトリに対して有効になると,リポジトリのルートに置いたbitbucket-pipelines.ymlというYAMLファイルを経由して自身のCDパイプラインを管理したり,Docker Hubあるいは独自のレジストリ上のイメージを参照してビルド環境を指定することが可能になる。簡単な例は次のようなものだ。

image: python:3.4.3

pipelines:
  default: # Runs on branches that don't have a specific pipeline.
    - step:
        script:
          - pip install -U tox
          - pip --version
          - tox --version
  branches: # Container for branch-specific pipelines.
    feature/*:
      - step:
          image: python:3.5.1 # This step uses its own image.
          script:
            - echo "Runs only on branches that match this pattern."

 

InfoQは,Attlassianが提供する継続的デリバリの統合ソリューションを詳しく知るべく,Sten Pittet氏(Bitbucket Pipelinesのプロダクトマネージャ)に話を聞いた。

InfoQ: Bitbucket Pipelinesとその仕組みについて,詳しく説明して頂けますか?

Pittet: Atlassianではかねてより,Bamboo ServerやBamboo Cloudなどを通じて,継続的インテグレーションとデリバリの分野に投資を続けてきました。開発に携わるチームが高品質なソフトウェアを迅速にリリースする,その支援をしたいという思いからです。継続的デリバリはそれを達成するための有効な手段なのですが,ことクラウド環境に関しては,そのセットアップの難しさという点から,継続的デリバリの採用が非常に難しいことに私たちは気付きました。さらに,異なるツール間のコンテキストの切り替えが,開発者にとって負担であることも分かりました。私たちのミッションは,開発をすべての人たちのものとして,あらゆるソフトウェアチームが[継続的デリバリの]潜在能力を理解し,よりよい作業ができるように支援することです。私たちの手元にあるものを改めて見た時,これを実現するための最善の方法は,CI/CDワークフローをBitbucketに取り込んで,本来あるべきリポジトリの近くに置くことによって,提供するサービスをシンプルにすることだと気付いたのです。

市場にはたくさんのCI/CDソリューションがあって,そのほとんどがBitbucketと統合されています – そのような状況で,Bitbucket Cloud内に新たなソリューションを構築した動機は何だったのですか?

Pittet: 一番の目的は,ソフトウェアチームのプロセスの簡略化です。以前はDockerのような,エージェントの構成や実行を簡単にしてくれるテクノロジがなかったため,非常に難しいことでした。ですが,Bitbucketでそれを実現した最大の理由は,品質は待ってくれない,ということにあります。テストは今,以前にも増して重要なものになっています。ですから,どんな開発チームでも最初から使えるような,価値のあるものにしたいと思いました。そこでBitbucketを新たなプラットフォームとしたのです。[...] これによってBitbucketは,高品質なソフトウェアの提供に必要なすべてのツールを使用して,コーディングからビルド,テスト,デプロイの可能な場所になったと,私たちは信じています。

InfoQ: 私の理解が正しければ,Bitbucket Pipelinesではすべてのビルドステップが,Dockerイメージの独立したコンテナインスタンスとして動作する,ということでしょうか?

Pittet: そうです。最初はパイプラインをコードで記述して,YAMLフォーマットのファイルで定義します。[...] その後は個別のブランチでさまざまなパイプラインを定義して,Gitflowなど機能ブランチワークフローを運用することができます。それぞれのパイプライン内には,いくつかのステップがあります。このようにして,すべてのステップで使用するDockerイメージを定義したり,あるいはステップレベルでイメージを上書きしたりすることが可能になるのです。[...] ベータ期間中のパイプラインは1ステップごとに限定されていますが,将来的にはもっと柔軟なものに拡張したいと思っています。[...]

Bitbucketでは,デフォルトのDockerイメージをビルド環境として提供している。ユーザは,Docker Hubや独自のレジストリから参照するか,あるいはDocker Hub上で手動ないし自動生成した自身のイメージを,同じようにBitbucket内でモニタすることが可能だ。

Pittet氏は,Bitbucket PipelinesがAmazon EC2 Container Service(ECS)上に実装されていることを認めた。この透過的かつ管理されたコンテナの使用は,Pipelineの価値提案のひとつだが,ユーザにはもうひとつ,ビルドを自身のECSクラスタ上で実行することが求められる。

InfoQ: Bitbucket Pipelinesはそれ自体,Bitbucket Connectアドオンとして実装されていますが,Pipelines自体も拡張が可能なのでしょうか?

Pittet: 将来的には提供したいと思っています。ベータ版の目標のひとつとして,Bitbucket Pipelinesの拡張を望んでいるパートナなどと一緒に作業することで,ベストなアプローチを探っていきたいと考えています。例えばBamboo Cloudでは,Plugins 2アーキテクチャの技術的な制限で実現できませんでしたが,Pipelinesにはそれを実現できる機会がたくさんあります。インテグレーションの定義が必要になりますが,将来的に何ができるかを楽しみにしています。

InfoQ: AzureやAWSなど,サードパーティプロバイダとのインテグレーションが進行中ですが,現状はどのようなものになっているのでしょう?最終的にはアドオンの形になるのでしょうか?

Pittet: 現時点でのインテグレーションは,ドキュメントに基づいたものです。これは,例えばAzureをPipelinesと統合してデプロイメントのキックオフを可能にする上で,ベータ版ユーザを支援します。モバイルプラットフォームとのインテグレーションも用意しています。 [...] 今後はこれらのインテグレーションをより使いやすいものにするため,パートナとの開発作業を続けていきます。

InfoQ: Atlassianは先頃,オンプレミスのGitソリューションであるStashをBitbucket Serverに名称を変更して,Bitbucket Cloudとの統合ブランドを作りました。ユーザインターフェースやAPIも統一されています。Bitbucket Pipelinesもこれに合わせて,Bitbucket Serverで利用可能になるのでしょうか?

Pittet: その予定はありません。私たちはBamboo Serverを,すでにBitbucket Serverと高度に統合された,非常に優れたオンプレミスソリューションだと考えているからです。それよりもBamboo Serverを,もっと大規模な企業向けの,さらに優れたソリューションにしたいと思っています。先日も新たに,250のエージェントをローンチしました[以前の報道を参照]。私たちとしてはこの両面を重視して,Bamboo Serverを引き続き成長させたいと思います。

現行のユーザは,Bitbucket PipelinesがBamboo Cloud相当の機能セットを提供できていないにも関わらず,その代替として想定されている点に不満を感じている。現時点で注意すべき制限は,Mercurialサポートの欠如,EメールあるいはHipChat経由の通知機能の不足,アーティファクトストレージ管理がないこと,パイプライン内でDockerイメージのビルドとプッシュができないこと,JIRA開発パネルとの統合欠如といったものだ。ユーザの立場からはさらに,デリバリとデプロイメントを分離するためのscheduledあるいは手動トリガによるビルド,サードパーティサービスと統合するためのwebhook同時ビルド数の制限や静止時間の指定といった機能も不足している。その一方で,Bitbucket Pipelinesが備えているコンフィギュレーションファイルを通じたコードによるコンフィギュレーションやテンプレートAPIなどは,Bamboo Serverでも強く求められていた機能だ。

AtlassianはBitbucket Pipelinesの価格をまだ発表していないが,ベータ版については,1ヶ月1ユーザあたり300分のビルド時間を含んで,引き続き無償で提供される予定である。10人の開発者からなるチームならば,1ヶ月あたり3000分に相当する。集計はアカウントごとに行なわれて,月の初日にリセットされる。計画では,チームのユーザ数に比例した価格決定モデルが導入される予定だ。

Bitbucket PipelinesのドキュメントにはFAQなど,より詳しい情報が提供されている。サポートはAtlassianのDev Toolsサポートポータルと,AtlassianのQ&Aフォーラムでbitbucket-pipelinesトピックを展開するコミュニティを通じて提供される。Bitbucketクラウドの公開イシュートラッカのPipelinesコンポーネントを通じて,開発状況をモニタすることも可能だ。

 
 

この記事を評価

関連性
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

BT