画像

[2013-05-27-2] で書いたとおり、このブログのサーバmasutaka.netは
Chef-soloでレシピを、serverspecでそのテストを書いています。

ソースコードはGitHubのプライベートリポジトリに置いており、お金をか
けてまでやる気が出なかったのでCIはしていませんでした(※)。

※ CircleCIの場合、一番安いプランで$19/month

はてブのホットエントリでこちらの記事を見つけたので、serverspecのCI
を設定してみました。
Githubのプライベートリポジトリでも無料で使えるCI、Werckerを使ってrails newからHerokuのデプロイまでやってみる|mah365

serverspec固有の設定

基本的な手順は記事のとおりなので、詰まることはないと思います。

ただしserverspecはssh経由で動作するため、sshの設定が必要です。
(1) WerckerのサイトでSSH key pairを作成する
(2) ユーザmasutakaとしてssh接続する設定をする
(3) ssh接続した時にknown_hostsに追加するか聞かれない設定をする

(1)は以下のサイトが参考になりました。
wercker + Capistrano で自動デプロイ - milk1000cc’s blog

wercker.ymlの中で秘密鍵を $WERCKER_SSH_KEY_PRIVATE として参照できる
ようになります。公開鍵はmasutaka.net:~/.ssh/authorized_keysに追記します。

最終的なwercker.yml

(1)の秘密鍵$HOME/.ssh/id_rsaは39行目で作っています。
(2)と(3)は26行目で$HOME/.ssh/configに設定しています。
(2)は33行目の"User masutaka"、(3)は34行目の"StrictHostKeyChecking no"です。
見たまんまですが、serverspecは49行目で設定しています。

wercker.ymlの書式

基本的な書式は http://devcenter.wercker.com/articles/werckeryml/
分かると思います。wercker.ymlのValidaterもありました。

bundle-installやcreate-fileは拡張という扱いなのか、
https://app.wercker.com/#wercker にアプリとして存在してました。
ドキュメントもあるので、必要に応じてどうぞ。

ビルド結果

Werckerの各アプリのページでもちろん分かりますが、
Werckerビルド結果1

各Pull Requstのページでも分かるので、今後はローカルでTest&Cookして
Pull Requst出す、ビルドが通っていればmasterにマージという使い方をし
そうです(Collaboratorはもちろん私一人)。
Werckerビルド結果2

Werckerバッジ

TravisCIやCircleCIでお馴染み、ビルドステータスが分かるバッジも
各アプリのページ、右上から取得できます。
Werckerバッジ1

README.mdに追加しました。
Werckerバッジ2