werckerについてのメモ

wercker

wercker という継続的デリバリーのプラットフォームサービスがあります。今のところ、GitHubやBitBucketのプライベートリポジトリに対しても無料で使えるようです。公式ドキュメントをざっと読んでみましたので、その時のメモを残しておきます。少し使ってみて分かったことも追記してあります。

wercker の処理の全体像

wercker

  • boxと呼ばれる仮想環境内で、buildフェーズとdeployフェーズが順番に実行されます。
  • それぞれのフェーズは、step と呼ばれる個別に定義した処理で構成されます。
  • この stepで構成されるそれぞれのフェーズの流れを pipeline と呼んでいるようです。
  • この定義は wercker.yml で行います。

Boxes

  • ビルドが実行される仮想環境をboxと呼びます。
  • wercker.yml 内の box セクションで、使用するboxを指定します。
    • “box: wercker/php” を指定した場合、以下のコマンドを実行してみました。
    • $ uname -a
      • Linux wercker 3.2.0-54-virtual #82-Ubuntu SMP Tue Sep 10 20:31:18 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
    • $ cat /etc/issue
      • Ubuntu 12.04.4 LTS
  • wercker が用意しているBoxもありますし、ユーザーが用意したBoxを使うこともできるようです。

Build

  • 最初に実行されるフェーズです。
    • box と services とで構成される環境の中で pipeline が実行されます。
    • buildフェーズが成功で終われば、次の deployフェーズに進めます。
    • GitHubにpushしたら、build が始まります。どのブランチかは関係ありません。
  • unit tests, javascriptの圧縮, compassのコンパイル, 依存性のインストール, アプリのパッケージ化 等、デプロイの準備等いろいろな処理を行うフェーズです。
  • Buildsteps (一般的なビルド処理の流れ)
    1. GET CODE
      • リポジトリからソースコードを取得して仮想環境にクローンします。
    2. WERCKER.YML
      • wercker.yml に何も書いてなくても、自動的に内容に合ったboxを探し、内容に合ったデフォルトの steps 処理が実行されます。
    3. ENVIRONMENT VARIABLES
      • データベース等のサービスを利用する場合は、環境変数を使って接続することになります。
    4. PLATFORM
      • プロジェクトで使用されているプログラミング言語の環境を構築します。
    5. DEPENDENCIES
      • プロジェクトに必要なパッケージをインストールします。
    6. PACKAGE
      • ビルドに成功したら、アプリのディレクトリは zip にされます。これは後のデプロイで使用されます。

Deploy

  • build の次に実行されるフェーズです。
  • buildとは違い、こちらに service はありません。
  • buildが成功した時のみ、deployが実行されます。
  • デプロイするために必要なものは以下です。
    1. werckerのアカウントと、wercker上のアプリケーション
    2. そのアプリケーションがbuildに成功すること
    3. デプロイのターゲット
  • 対応プラットフォーム・ツール
    • Heroku
    • OpenShift
    • Capistrano
    • PyPl
    • Jekyll and S3
    • Middleman and S3

Services

  • データベースやメッセージ・キュー等を動かすためのboxを指します。
  • ビルドを実行するboxと共に生成されます。
  • wercker.yml 内の servicesセクションで、使用するサービスを指定します。
  • サービスに接続するための環境変数を使用することができます。
  • サービスを実行するための独自のboxを生成することもできます。
  • Supported services(サポートされているサービス)
    • MYSQL
    • POSTGRESQL
    • MONGODB
    • RABBITMQ
    • REDIS VERSION 2.4.14

Pipeline

  • pipeline とは 一連の steps の流れのことであり、アプリをデリバリーするまでの2つのフェーズのことでもあります。

Steps

  • build と deploy は step で構成されます。
  • wercker.yml 内では、buildセクション内の stepsセクションで定義されます。
  • steps は順番に実行されます。
  • 1つのstepでも失敗すれば、build も失敗となります。
  • ルートディレクトリで実行されます。
  • build steps
    • テストなどを行います。
  • deploy steps
    • 静的なassetsの配置(同期)などを行います。
  • AFTER-STEPS
  • CHANGING THE WORKING DIRECTORY
    • 各 stepセクションに、cwd オプションを付けることでカレントワーキングディレクトリを変更できます。
    • cwdオプションに相対パスを指定した場合は、$WERCKER_ROOT からの相対パスとなります。
  • Creating your own steps
    • 独自のstepを作成することもできます。

Package

  • 成功した build はデプロイできるパッケージになっているはずです。
  • 生成されるパッケージが置かれるパスは、$WORCKER_OUTPUT_DIR で指定することもできます。

Notifications

  • 種類
    • HipChat
    • Campfire
    • Email
    • IRC

Language support

  • プログラミング言語は、今のところ PHP, Python, Ruby, Node.js, Go, Java:android に対応しています。
  • 以下は、PHPに関してのメモです。
    • PHP versions
      • PHP用のboxでは、phpenv を使っています。
    • PHP configuration
      • phpenvコマンドのオプションで使用するPHPのiniファイルを指定することができます。

wercker.yml

  • wercker の環境をセットアップするための設定ファイルです。

wercker directory

  • これは、公開されている box と step のインデックスです。
  • werckerチーム以外にも、コミュニティが作ったものも入っています。
  • box も step も、wercker上の他のアプリケーションと同じで git repository となっています。

wercker cli

  • deploy は wercker cli を使って、手動で動かすこともできます。
  • インストール
    • $ pip install wercker
      • libyaml が必要です。

[最終更新日:2014年10月6日]

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*