git pushしたら自動でs3のサイトの更新をしてくれるものをbitbucketとwerckerで作る

More than 1 year has passed since last update.

プログラムの自動デプロイにCIがよく使われますが、単純に静的サイトをbitbucketで管理して、それをs3に反映するだけというカジュアルな使い方を試してみたかったのでメモ。

1. s3の設定をする

簡単にやるのであればManagement Consoleからパッとやればいいでしょう。
悩むところはそんなにない(はず)

ansibleでやった際に引っかかったのが以下点なのでご参考に。
http://qiita.com/celeron1ghz/items/cdaa79d7e53524a97712

2. bitbucketでrepositoryを作る

「リポジトリの作成」より作成。
bitbacket側ではrepoを作るのみでOK。

3. werckerの設定

ここが微妙に引っかかった。

werckerにbitbucketのrepositoryを追加

上部メニューにある Create -> Application より追加。
ウィザードがあるので難しくはないはず。

wercker.ymlの設定

いろいろ試行錯誤しましたが以下のような感じ。

box: debian

build:
  steps:
    - script:
        name: update apt 
        code: sudo apt-get update && apt-get -y install curl

  after-steps:
    - slack-notifier:
        url: $SLACK_URL
        channel: $SLACK_CHANNEL
        username: werckerbot

deploy:
  steps:
     - s3sync:
         key_id: $AWS_ACCESS_KEY_ID
         key_secret: $AWS_SECRET_ACCESS_KEY
         bucket_url: s3://site.moge.com
         source_dir: site/

curlは slack-notifier の内部で使われているので入れておく。

s3と同期をするには既に s3sync というsite(werckerのモジュール)があるので、設定の追加をするだけでよかった。
(最初はaptでpython入れてpip入れてawscli入れてたけど不要だった)

あと通知が欲しいと思ったので slack-notifier を追加。
(何もビルドしてないのに成功!と表示されるのも何だかなとは思いましたが、pingに近い感じで)

環境変数の設定

アプリケーションのページ -> 設定 -> Environment Variable より設定。

上記のwercker.ymlの変数のところの値を埋める。
トークンは Protected にチェックを入れたほうが良い。

deploy targetの設定

アプリケーションのページ -> 設定 -> Targets より設定。

Add deploy targetのプルダウンを選択し、Custom deployを選択。

Deploy target nameproduction
auto deploy successful builds to branch(es) のチェックを入れる。
下のテキストボックスには masterと入れる。

最初この設定を行わずに動かないと悩んでいたが、wercker.ymlでdeployの項目を実行するのに必要な設定だったみたいです。

git push!

設定おわり。

git push するとwerckerのビルドが走り、Slackに通知が来て、s3のサイトの更新がされる!