読者です 読者をやめる 読者になる 読者になる

docker-composeをサポートしたCodefreshというCIサービスを使ってみた

CodefreshというDockerを使えるCIサービスがあるので雑に触ってみたというエントリです。

f:id:a-yamada:20170102233506p:plain:w200

codefresh.io

プラン

プランについては各自確認してほしいんですが、基本的にPublicなリポジトリを扱い並列ビルドが要らなければ無料で使うことができます。

f:id:a-yamada:20170102214955p:plain

  • Open SourceプランでもGitHub/BitBucket/DockerHub/Slackは対応
  • Basic($99/month)からは並列ビルドができ、プライベートリポジトリも扱うことができる
  • Pro($299/month)からはJenkinsやbintrayとも連携ができ、インフラは共有領域ではなく専有領域を用意してもらえる。On-Premise Git Supportという記述があるので、GitHub EnterpriseやGitlabも使えそう

使ってみる

早速使ってみる。CIしたいリポジトリをポチポチ選択していくというよくあるスタイルだし、手順は以下のドキュメント見ればわかるのでここでは割愛。

docs.codefresh.io

Goで適当なWebサーバを書いてみて、そいつを連携してみました。ポチポチやってくとビルドが始まります。

f:id:a-yamada:20170102224512p:plain

f:id:a-yamada:20170102224532p:plain

Codefreshでは、これはServiceと定義しています。1リポジトリがServiceという考え方。

Lanuchする

基本的にBuildLaunchのアクションがあって、ビルドしてできあがったDockerイメージからDockerコンテナをLanuchから走らせることができます。普通のCIの機能とngrokの機能を合わせ持ったという感じでしょうか。

LanuchされたService(コンテナ)はEnvironmentで確認できます。

f:id:a-yamada:20170102231300p:plain

デプロイされたURLが表示されるので、実際に以下のようにHTTPリクエストを投げられます。

$ curl http://cf-aec1-docker-node-0009.cf-cd.com:32795/
Hello!%

Composition

その他にCompositionという概念があります。何かというと、テストしたいサービスが他のミドルウェアやMicroservicesに依存している場合、このComposition機能を使ってその依存コンポーネントを作ることができます。

f:id:a-yamada:20170102231806p:plain

Compositionはdocker-compose V2形式のYAMLで定義することができるというのが大きな特徴。なので、依存するミドルウェアやMicroservicesをdocker-composeで動かすことができるように整備しておけば、コンポーネント連携したテスト・動作確認が可能ということですね。

さっきのService(コンテナ)とCompositionを連携させるには、Service側でCompositionを指定してやればOK。

f:id:a-yamada:20170102232545p:plain

しかし、既にServiceが1つあがっているので新たにCompositionを立ち上げることができなかった。

f:id:a-yamada:20170102233800p:plain

OpenSourceプランではConcurrencyが1つまでなので、Compositionが力を発揮するのは課金してからだと思う。

感想

ビルドしてそのままコンテナをLanunchできるのはなかなか面白い。CircleCIとかでもdocker-compose入れてやればCompositionは実現できそう(すごい手間そうだけど)。