サーバのCIをWerckerからCircleCIに移行した

[2014-01-09-1] からWerckerを使い始めて1年とちょっと。このたび CircleCIに移行しました。理由は以下のとおり。 会社のJenkinsが壊れてCircleCIを使い始めた。2つ覚えているのが面倒 [2015-01-25-1] の継続的bundle updateをやりたい(WerckerはAPIがないっぽい) [2014-01-09-1] 当時と違いCircleCIは1コンテナまで無料になった Werckerは自分のBoxを簡単に作れたのが良かったんですけどね。 (masutaka/wercker-box-rvm-vagrant-aws の更新は停止します。) 特殊なことはしていないので、Vagrantfileとcircle.ymlを晒すだけにし ておきます。 CircleCIはコンテナにsshログイン出来るのは良いけど、EC2インスタンス が起動されてそのままになるような。。。さっさとDockerに移行しないと。

2015-02-08 (Sun) · masutaka

WERCKER-BOX-RVM-VAGRANT-AWS v1.2.0 released

WERCKER-BOX-RVM-VAGRANT-AWS - wercker Vagrant-1.7.2に対応しました。 Vagrant-1.7.1で必要になったworkaroundを削除出来ました。 CHANGELOG のこれが相当するのかな installer: SSL cert bundle contains 1024-bit keys, fixing SSL verification for a lot of sites. 会社のJenkinsマシンに入れているVagrantもバージョンアップしよう。

2015-01-11 (Sun) · masutaka

WERCKER-BOX-RVM-VAGRANT-AWS v1.1.1 released

WERCKER-BOX-RVM-VAGRANT-AWS - wercker Ruby-2.2.0に対応しました。 このPRがマージされるのを待ってました。 https://github.com/wercker/box-rvm/pull/9

2015-01-01 (Thu) · masutaka

WERCKER-BOX-RVM-VAGRANT-AWS v1.0.2 released

WERCKER-BOX-RVM-VAGRANT-AWS - wercker Vagrantを最新の1.7.1にしました。 メジャーバージョンも思い切って'1’に上げました。 今のvagrant-aws(v0.6.0)とUbuntu-12.04の組み合わせだとvagrant (up|destroy)に失敗しますが、うまく対策出来たのでリリース&アナウン スすることにしました。 ‘1.0.0’で対策なし、‘1.0.1’で間違ったworkaroundを追加、‘1.0.2’で修 正したので無駄にバージョンが上がっています。 こうしたらうまくいったよコメント 実際に対策した修正 P.S. werckerでvagrant-awsを含むBoxは自分の含めて2つしかないけど、EC2使っ たサーバのCIって需要少ないのかな?不思議。

2014-12-24 (Wed) · masutaka

WERCKER-BOX-RVM-VAGRANT-AWSをRuby-2.1.4対応させた

WERCKER-BOX-RVM-VAGRANT-AWS - wercker Ruby 2.1.4がリリースされたので。 とは言え、こいつが使っているBOX-RVMのバージョンを上げて デプロイし ただけです。 WerckerはDockerに似たBOXを使用するので、継承元のBOXが更新されたら デプロイし直す必要があります。 Wercker上でAWSを使ったサーバのCIする方法は[2014-09-14-1] 、 WERCKER-BOX-RVM-VAGRANT-AWS自体の説明は[2014-09-15-1] をどうぞ。

2014-11-01 (Sat) · masutaka

WerckerでRVMとVagrantのBoxを作った

昨日[2014-09-14-1] の記事より。 wercker.ymlも毎回Vagrantをインストールして、vagrant upするという無 駄なことをしているので、Docker使って時短させるかもしれない。 この場合Dockerは間違い。Wercker的にはBox使うのが正解なので作ってみ ました。(このくらいのBoxはあるかと思ったらなかったのが意外でした。) 以下のようにinheritsを使うと、任意のBoxを継承できるみたいです。 ちょっと前までwercker.ymlに複数書けばそうなるかと思ってました。 inherits: wercker/rvm@2.0.1 実コードはスクリプトのベタ書きだけです。 script: | VAGRANT_VERSION=1.6.5 wget https://dl.bintray.com/mitchellh/vagrant/vagrant_${VAGRANT_VERSION}_x86_64.deb sudo dpkg -i vagrant_${VAGRANT_VERSION}_x86_64.deb vagrant plugin install vagrant-aws unf あとはWerckerの管理画面からGitHubのリポジトリを登録し、Wercker directoryにデプロイすれば使えます。Public Appにすることをお忘れなく。 wercker.ymlはこのようになりました。昨日 と比べるとBoxがwercker/rvmか らmasutaka/rvm-vagrant-awsに変わったことと、vagrantやvagrant-awsプ ラグインをインストールしてないのが分かると思います。 Boxの作り方自体はこちらが参考になると思います。 werckerで自分のBOXを作ってみた - 紺屋高尾 11分33秒かかっていたテストが10分46秒に短縮されました! って、あれ、あんまり変わってない。。 パフォーマンス云々より、Dockerっぽく改善できたので良しとします。 今度はEC2使わずにWerckerでDocker立ち上げてCIしたいなあ。

2014-09-15 (Mon) · masutaka

Wercker + Vagrant + AWS + serverspecでChefのレシピをCIする

[2014-01-09-1] からmasutaka.netのCIを開始したが、残念ながら masutaka.netに直接serverspecする、なんちゃってCIだった。 masutaka.netにcookしてからPRを出して、WerckerにCIさせていた。 WerckerとAWSを連携させて、テストのたびにサーバをまっさらな状態から 作り、終わったら破棄することが可能になったので、ここに記録しておく。 去年くらいに話題になったこの辺の話。 Vagrant + Chef Solo + serverspec + Jenkins でサーバー構築を CI - naoyaのはてなダイアリー naoya/circleci-serverspec なんで今までやらなかったかというと、cookが一発で通らないレシピになっ ていたから。。気づいてはいたんだけど、本番サーバのテストが通りさえ すればよかったし。。。 インフラ系技術の流れ - Gosuke Miyashita こちらの記事でいうところの、Orchestrationの仕事までChefにやらせてい たのが敗因。GitHubのprivateリポジトリにおいてあるdotfilesや、 growthforecast、tiarra、mobircまでもChefにインストールさせていた。 ユーザmasutakaに依存しないレシピに変更して、手元の Vagrant+VirtualBoxで一発でspecが通るまでがステップ1。 次に手元のVagrant+AWSで同じことが出来るまでがステップ2。 これをWercker上で実行できるようにwercker.ymlを書き換えたのがステッ プ3。 最終的なVagrantfileとwercker.ymlは以下のとおり。 いくつかハマったけど、凡ミスだったので特には触れない。上の設定に従 えば同じことは出来るはず。(CircleCIだと各インスタンスにssh出来るの で、調査は早かったんだろうと夢想。) でも一点だけad hocな対応をしていて、plenvやrbenvを使ったPerl/Rubyの インストールはビルド済みのtar ballを展開するだけに変更した。 Werckerはビルドが5分間止まると失敗だと見なすから。ビルド全体の時間 は25分までOK。 そもそもImmutable Infrastructure的にplenvやrbenvを使うのはどうなの? という節もあって、そこは今後変えるかもしれない。 wercker.ymlも毎回Vagrantをインストールして、vagrant upするという無 駄なことをしているので、Docker使って時短させるかもしれない。 とりあえずCI出来るようになったので、今回はこれで良しとする。

2014-09-14 (Sun) · masutaka

Ubuntu13.10のVagrantで/vagrantが見れなくてハマった

ls /vagrantから返ってこなくて、今日はずっと調べてました。。。 BoxはUbuntu Officialのやつ http://cloud-images.ubuntu.com/vagrant/saucy/current/saucy-server-cloudimg-amd64-vagrant-disk1.box 結論から言うと、vagrant-vbguest pluginをインストールし、vagrantを起 動、vagrantの中で/usr/lib/VBoxGuestAdditionsを見えるようにしてあげ ればOK。道は長かった。 $ vagrant plugin install vagrant-vbguest $ vagrant up Vagrant起動の途中でvbguest pluginによって /Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso がvagrantにインストールされます。 この時点ではマウントに失敗します。 default: /vagrant => /Users/masutaka/projects/example.com Failed to mount folders in Linux guest. This is usually because the "vboxsf" file system is not available. Please verify that the guest additions are properly installed in the guest and can work properly. The command attempted was: mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` /vagrant /vagrant mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` /vagrant /vagrant sshログインして、/usr/lib/VBoxGuestAdditionsを見えるようにしてあげます。...

2014-04-12 (Sat) · masutaka