プログラムの自動デプロイに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 name
に production
auto deploy successful builds to branch(es)
のチェックを入れる。
下のテキストボックスには master
と入れる。
最初この設定を行わずに動かないと悩んでいたが、wercker.ymlでdeploy
の項目を実行するのに必要な設定だったみたいです。
git push!
設定おわり。
git push
するとwerckerのビルドが走り、Slackに通知が来て、s3のサイトの更新がされる!