no_picture

LT駆動開発で「CI のある生活」という話をするはずだった

LT駆動開発 01で「CI のある生活 すごい広島の例」という話をするはずでしたが、時間の都合で「すごい広島の例」だけになりました。 LT駆動開発の参加者には、継続インテグレーション(以下、CI)の知らない普通の人もいるだろうという想定で CI の説明をしてみようという試みでしたが、時間がなかったので30枚ぐらいスライドを省略しました。 下記のスライドは省いたスライドも追加してあります。 本スライドは「CI を普通の人に有用性を知ってもらうには」や「Web制作の人にも使いどころを考えてもらうにはどうすればいいか」を考えつつ、ウェブで見つかる CI の説明は開発者よりのものばかりなので、他の説明方法はできないかと考えてみたものです。 すごい広島の中に Travis-CI というサービスが登場するようになりました。 すごい広島の目的の一つに、プログラマではないITの仕事をしてる人に「GitHubの使い方を学んでもらう」というのがあるというのが発端です。 CI って、とりあえずテストを自動実行するところから入る使い方から入るパターンが多くて、自動テストかいてなくて使いどころがなくって使ってないなんて話や「何に使うの?」って話が周りでは多い気がします。 そんな中、「CIサーバってなんだろうなー」と半日考えた結果の答えは「作ることに集中したい」ってことと「継続的デリバリーをするためのツール」ってことだと考えました。 そこで、そこへ至る道を論理的に進めてみたつもりです。 ちなみに継続的デリバリーは読んでいない。 スライドつくってて困ったのは、最初 CI って言葉しか使ってなくて、文脈によっては CIサーバという意味に変化してることがあって、それをどうやってごまかさないのか苦労しました。 気がついたら CI が継続的デリバリーって意味になっていることに気がついて、「これ CI じゃないじゃん」「CI ってなんなんだ」とか、ぐるぐるしました。 あと、統合って説明しにくい。 LT 仕様なのでスライドの枚数の割に内容がないですね。 そんなわけでLT駆動開発なのですが、私はLTをするために、いろいろ考えたので、当日参加した時点で勉強する目的を達成した感があったりします。 参加しなくても勉強になったかもしれない。 他のLTは分野が多岐にわたり、自分が追えてない情報がまとまっていたり、自分にはない発想があったりと、当日は当日で勉強になりました。 LT駆動開発の主旨を説明するために用意したスライドもアップロードしておいたので興味があれば、確認してみてください。 ついでに、スライドの .key ファイルをどっかに残しておきたいと思いつつ GitHub だとローカルディスクにコピーがいるし、悩んだ結果 S3 に置いてみたりしました。 来月にはこのあたりを自動化したりして、この話を整理して話そうかなぁ、と考えていたりします。3月は忙しそうで怖い。 keynotes.eiel.info index.html を自動生成したい。 関連 LT駆動開発という勉強会をはじめるよ - そんなこと覚えてない Travis-CI でコミットして GitHub にプッシュする - 公開鍵認証を利用してみる - そんなこと覚えてない すごい広島のサイトを sitespec に変えてみた - そんなこと覚えてない

no_picture

Circle CI を試した

2013年10月の広島Webシステム開発勉強会内でCicle CI を試していた。 最安値が19ドルで、この場合プライベートリポジトリがひとつ使える。 Rails プロジェクトで試しました。設定した内容はわずかで、.ruby-version の指定をしただけで、テストの実行することができました。 これはこのプロジェクトが ruby 2.0 以上である必要があるからです。 リポジトリの選択も Github から一覧が取得されているので、一覧から選択するだけでした。 config/database.yml は自動で生成されました。 デフォルトでは並列ビルドされず、20分ぐらい実行にかかりました Edit settings から 6つに分けて並列に実行できました。4分ぐらいで終了するようになりました GitHub に Pull Request があれば merge するときにビルド実行結果がわかります 現在、タイムゾーンの影響で失敗してテストがあるので修正方法を模索しているところです。 並列ビルドは rspec、 cucumber それぞれ、自動で6分割して実行されていました。 一部のcucumberがかなり素早く終了したのでファイル単位で分割しているのだと思います。 その辺のカスタマイズ方法はここに書いてある 結局 circle.yml は、これだけしか書いていない状態。 machine: ruby: version: 2.0.0-p247 timezone: Asia/Tokyo 導入がとても簡単で維持費が EC2 のマイクロを立ち上げっぱなし程度です。 コンテナの数ではなくて、プライベートリポジトリの数での課金なのでアクティブなプロジェクトでのみ使用する使い方になりそうです。 そんな使い方が可能なのかはまだよくわからない。

no_picture

cucumber で PhantomJS を使う

Cucumber で使うブラウザを PhantomJS にしたい。 Cucumber -> Capybara -> Poltergeist -> PhantomJS という感じに利用します。 PhantomJS は画面のないブラウザと言うと、伝わりやすいでしょうか。 統合的なテストを行う場合、Rails プロジェクトでは Cucumber がよく使われています。 Cucumberのシナリオに @javascript というタグをつけると Selenium を利用して Firefox を制御してテストを行うことができます。 非常に便利なのですが、処理が長かったり、また、X11の起動してない Linux などで動かそうとするとちょっと問題がおきます。 そこで、画面の表示をしないブラウザでテストしたくなります。 また、実際によく使うわれるのはレンダリングエンジンは Webkit です。 そのためのブラウザとしての有力候補が PhantomJS です。 PhantomJS のレンダリングエンジンは Webkit で、必要であればスクリーンショットがとれます。 Travis CI でも利用できるようです。(未確認) 利用までの手順としては PhantomJS のインストール Rails プロジェクトに Poltergeistを追加 featrue/support/env.rb を設定 となります。 PhantomJS のインストール http://phantomjs.org/download.html から ダウンロードできます。 Mac であれば Homebrew や Macport でインストール可能なようです。ダウンロードしても bin/phantomjs を 環境変数PATH に入っているところに配置するだけです。 Rails プロジェクトに Poltergeist を追加 Gemfile に group :test do gem 'poltergeist' end と追記すれば良いです。 feature/support/env.rb を設定 設定しないと使えません。 feature/support/env.rb に以下を追記すればよいでしょう。 require 'capybara/poltergeist' Capybara.javascript_driver = :poltergeist @javascript つけるのがめんどくさい!

no_picture

travisを利用してみる

githubで公開してるリポジトリを継続的インテグレーションを行えるサービスとして travis というのがあるので、hiroshimarb-gemで利用してみることにした githubのアカウントがあればログインができるのでアカウントの作成は手軽でした。 リポジトリの指定 リポジトリを指定するにはプロフィールからいけばよいです。 いろいろでるので利用するリポジトリをONにすればよいみたいです。 travisの設定 .travis.yml用意する必要があります。 参考文献 Travis CI Getting started