yamarkz's blog

紫陽花

GithubとbitBucketに対応しているCIツールwercker

この記事はWIPです

BitbucketにCIを導入しようということになってwerckerを実装したのでまとめておきます。
色々とネットにある情報を見ながら実装したのですが、まずサービス自体が日本語対応していません。
また、Qiitaやブログにある情報も少なく、かつ2014年の頃の物が多くて2016年2月現在では仕様変更により変わっている部分も多く戸惑いました。
なのでこれからwerckerを使ってみようという方は情報の正確性に注意しながら実装してください。

なお、今回この記事を書く上で以下の記事を参考にさせていただきました。
これらの記事はとても参考になりました、ありがとうございます。

Werckerの仕組み,独自のboxとstepのつくりかた | SOTA

werckerでrspecとcucumberのCI環境を作る - zephiransasのチラシの裏

Wercker を使ってみた - Qiita

WerckerのDockerベーススタックへの移行 - ククログ(2015-10-28)



wercker とは?

werckerとはTravisCIなどに代表されるように、外部でビルド(というかテスト)やデプロイを行ってくれるCI(継続的インテグレーション)サービスです。


TravisCIのように,レポジトリのルートにwercker.ymlを準備し,そこに記述された実行環境と実行コマンドをもとにテスト/ビルドを走らせます。


2014年頃、Werckerではテストの実行環境をboxと呼ばれるymlファイルで構築し、その環境上でstepとして処理が走りテストが行われる仕組みがスタンダードでした。
boxはWercker Registryで管理され、各々が個人的にboxを作成して共有できたりします。
しかし、このwercker boxを用いたやり方は現在スタンダートではなく、WerckerがDockerと連携して、環境構築にはymlファイルの代わりにDockerfileが用いられるのが2016年2月 でのスタンダートとなっています。
ですがまだWercker boxを用いての実装も可能ですので、サービスwercker自体の過渡期とも言える状況です。


現在は、そのテストの実行環境をDockerfileで、実行コマンド(の集合)をstepとして自作し、あらかじめDocker Hubに登録しておくことで,様々なテストからそれらを呼び出して実行しています。
Dockerfileも公式のものがありますが自作もできるので、自分にあったテスト環境を構築してテストすることができます。
筆者はPHPのプロダクトに対してRSpecを実行する環境が必要だったのでRuby2.2とPHP5.6の環境を作成しました。

Werckerの仕組み

Werckerにはpipelineという概念があります。pipelineは,BuildフェーズとDeployフェーズに分けられ,フェーズは複数のstepで構成される.すべてのフェーズは1つのboxと呼ばれる環境上で実行されます。


f:id:katlez:20160204151645p:plain


1つのpipelineは1つのwercker.ymlに記述する.例えば,以下のようにBuildフェーズとDeployフェーズ,それらの具体的なstepを記述します。

box: box
build:
  steps:
    - stepA
    - stepB
deploy:
  steps:
    - step1
    - step2

詳しくはこちらの記事を参考にしてください。

Werckerの仕組み,独自のboxとstepのつくりかた | SOTA

使い方に関してはこちらの記事も参考にしてみてください。

katlez.hatenablog.com

katlez.hatenablog.com