本日も乙スマートフォン用の表示で見る本日も乙ただの自己満足な備忘録。ci今回もしつこくHeroku+Symfony2ネタです。前回の記事で、HerokuでSymfony2アプリケーションをデプロイできるようになりましたが、そういえばテストを通していないなと思いました。CIと連携してテストを通した後にHerokuに自動的にデプロイできるようにしてみます。テストのカバレッジレポートを画面で確認できるように、Coverallsとも連携するようにしました。1.6.16前提条件ソースコードがGitHubのPublicリポジトリとして登録されていること。CIとは簡単にいえば、オンラインでCI(継続的インテグレーション)してくれるサービスです。CIの他、CircleCI、wercker、drone.ioなどが多くリリースされています。僕自身も仕事でJenkins先生には日頃からお世話になっている定番ツールですが、自前でJenkinsをインストールしたりプラグイン入れたり細かい設定をするのが多く、個人開発用に使うのは敷居が高いなと思います。その点、オンラインCIサービスだとデプロイするのに必要なツールなどが用意されており、設定ファイルをリポジトリに置くだけで実行することができてしまいます。各種ツールをアップグレードしたりなどメンテナンスする必要がないのも大きなメリットです。CIを使ってみました。Deploymentパブリックなリポジトリなら無料でできる大抵のCIサービスはパブリックなリポジトリだと無料が多いですプライベートなリポジトリでもwerckerだと無料なので今後試してみたいですでは、実際に設定していきます。ローカル環境でテストが通るようにする何はともあれ、テストが通らないとデプロイも通らないので、まずテストを通すようにします。テストコードが無い人はテストコードを書いてください。appテストが通ったら一旦、GitHubにPushしておきます。CIとGitHubを連携するブラウザ上で操作します。CIでHerokuへデプロイする際にAPIキーが必要ですが、後述する設定ファイル(.travis.yml)にAPIキーをそのまま記述するのはセキュリティ的に危険なので暗号化します。travisコマンドが必要なのでインストールします。--version1.6.16HerokuのAPIキーを取得します。auth:tokenxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"が生のAPIキーです。HerokuのAPIキーを暗号化します。"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX""XXX..."が暗号化されたHerokuのAPIキーとなります。CIの設定を設定ファイル(.travis.yml)で行います。入っているため、それを使います。heroku-symfony2-0515これで実際に動くか確認してみます。CIでビルドが実行され、テストが正常に通るとHerokuにデプロイされるようになります。正常に終了すると、以下の図のように"passed"になります。Coverallsと連携する次にテストのカバレッジをレポートしてくれるCoverallsと連携してみます。アクセスし、GitHubアカウントでサインインします。リポジトリ一覧が表示されるので、コードカバレッジを表示させたいリポジトリをONにすればアカウント上の連携は完了です。composerでphp-coverallsをインストールCoverallsを使うにはAPIを使う必要があるのですが、PHPでCoverallsを実行してくれるphp-coverallsを使います。updateすればインストールは完了です。編集するカバレッジを参照できるようにapp/phpunit.xml.distを編集します。--></phpunit>Symfony2の場合、phpunit.xml.distがapp/以下にあるため、targetのパス(../build/logs/clover.xml)に注意してください。編集する先ほどの.travis.ymlを編集します。heroku-symfony2-0515README.mdには、after_scriptに設定していますが、after_scriptだとHerokuでデプロイした後に実行されてしまい、何故か動かなかったので、scriptに書きました。作成するCoverallsの設定を.coveralls.ymlに記述して、Symfony2ディレクトリ直下(.travis.ymlと同じ階層)に置きます。CI経由で実行する場合はrepo_tokenパラメータを設定しません。satisfied.」と表示され、Coverallsの方もカバレッジが表示されませんでした。結局、php-coverallsのソースを見てやっと原因が突き止めました。CIのビルド実行後にCoverallsでテストカバレッジが表示されるようになるはずです。こんな風にカバレッジが表示されるようになります。カバレッジが16%と低いのはデモ用に作ったコードだからです(と言い訳してみる)。"BUILD"列か"COMMIT"列のリンク先をクリックすると、カバレッジの詳細が表示されます。ファイル一覧も表示できてテストがどのぐらいカバーできているかも分かるようになっています。ファイルのリンク先をクリックすると、そのファイル内の詳細も見れるのですが・・・パスが間違っているのか表示されません。directory」に「src」と入力してUPDATEします。パスが合えば、ソースコードが表示され、行単位でテストがカバーした範囲が分かるようになります。赤く覆われている行はテストがカバーしていない行です。CI、Coverallsと連携してSymfony2アプリケーションをHerokuにデプロイするように設定できました。他にもライブラリのバージョンアップを通知してくれるversioneyeやアプリケーションのソースコードをスキャンして脆弱性を診断してくれるSensioLabsInsightなどもあり、自分で一から環境を構築しなくてもすぐに開発できてしまう環境ができてとても便利ですね。多くのサービスがリリースされ、開発効率が向上できる機会が増えているので、日頃から情報収集して乗り遅れないようにしたいものです。Goを使ったテストを書く久しぶりのAWSネタです。テーマ:Infrastructu...昨日行ってきました。6.5にErrbitを構築してみたの続きです。月別アーカイブはてなブログをはじめよう!ohsawa0515さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。