CI(継続的統合)as a Serviceの「Circle CI」がDocker対応を開始
Githubにコードをプッシュすると自動的にコードを取り込んでビルドが行われ、テストが走る。いわゆる「CI:Continuous Integration(継続的統合)」を実現するCI as a Servicesを提供する「Circle CI」が、Docker対応による継続的インテグレーション/継続的デリバリの開始を発表しました。
DockerファイルによってCircle CIで行うビルドとテスト環境を定義できるため、開発環境とテスト環境、デプロイ先の稼働環境などの違いを事実上なくせることが大きな利点だと説明されています。
You can now use all Docker functionality within our build environments. All of the usual Docker commands work as expected, so you can build and run Docker containers to your heart’s content.
利用者はこれでDockerのすべての機能を私たちのビルド環境で利用できます。すべてのDockerコマンドは期待した通りに動作するため、コンテンツのためにDockerコンテナをビルドし、実行できます。
(Announcing Continuous Delivery with Docker containers)から
Circle CIはビルドとテストの実行をサービスの一部として自社で確保したプラットフォーム上で提供しています。そのため、Circle CIでは、Ruby、Python、PHP、Java、Node.jsなどさまざまな言語の実行系やライブラリ、MySQL、PostgreSQL、MongoDB、Cassandra、Couchbaseなどのデータベース、Webブラウザとテスト自動化のためのSeleniumなど、多数の環境を自社プラットフォーム内に備えています。
Docker対応によって、これらCircle CIが提供しているビルド/テスト環境に加えて、利用者自身がDockerコンテナで環境をCircle CIに持ち込むことができるようになり、そのまま本番環境へのデリバリまで持って行くことができるようになりました。
コンテナ内でDockerサポートを実現
Circle CIの発表によると、これまでテスト環境のために同社はすでにコンテナ技術を採用しており、今回のDocker対応はその環境内でさらにDockerを動かすというコンテナのネスト構造によって実現したとのことです。
We already use container technology to create all of our customers’ build environments, and to offer the docker integration we had to support docker running securely within our multi-tenant environment and in nested mode within our own containers (docker-in-docker all the way!), which wasn’t completely trivial.
私たちはすでにコンテナ技術をお客様向けのビルド環境を構築するために利用していました。今回のDocker対応を提供するために、私たちは既存のマルチテナント環境のなかでセキュアにDockerをサポートしなければならず、かつ私たちのコンテナ内でネステッドモードとしなければならず(Docker-in-Dockerそのものだ)、その実現はまったく容易ではありませんでした。
Dockerをサポートし、そのままデプロイできるクラウドサービスは、例えばAmazonクラウドのElastic BeanstalkやGoogle Compute Engineなど広がってきていますので、Dockerコンテナ上で環境を構築して開発し、ビルドとテストを行い、クラウドへデプロイするという一連の環境が充実しはじめてきています。
あわせて読みたい
ソニー銀行は金融機関としてAmazonクラウドをどう評価し導入したのか? AWS Summit Tokyo 2014
≪前の記事
ITまんが 2014年版 ~ ITが楽しく分かるマンガを集めてみました