概要
CIといえばJenkinsが有名ですが、個人のリポジトリでわざわざサーバをたてるのは面倒。
でもちゃんとテスト結果を表示したい。と言う時にTravisCIが便利です。
似たようなサービスでは最近だとWerkerがあります。
またバッジというのはGitHubでちょこちょこ見かける以下のやつです。

今回はこれらを実現します。
環境
- Go 1.3
- Gem
コマンドラインツール
travisは自前でYAMLファイルを用意してもいいですが、構文チェックなども自動でやってくれるCLIツールがあるのでそちらを使ってみます。Rubyのツールなのでgemが使える前提です。
インストール
$ gem install travis
ログイン
GitHubのログインを訊かれます。私の場合は二段階認証もあるので訊かれてます。
$ travis login Username: cicatrice Password for cicatrice: ******************** Two-factor authentication code for cicatrice: 004020 Successfully logged in as cicatrice!
同期
GitHub上にリポジトリとしてあらかじめあるものしかできないです。
なのでGItHubからcloneしたもので試しましょう。
# travis sync Faraday: you may want to install system_timer for reliable timeouts synchronizing: ... done
.travis.ymlの生成
$ travis init Faraday: you may want to install system_timer for reliable timeouts Main programming language used: |Ruby| Go .travis.yml file created! cicatrice/travis-test: enabled :)
途中で言語の選択をしますが、今回はGoを使います。
TravisCIをONにする
$ travis enable
ブラウザで確認
$ travis open
とするとTravisCIのページに飛びます。
.travis.ymlの設定
使用できるコマンドとして
| コマンド | 説明 |
|---|---|
| language | 言語の切り替え |
| env | 環境変数の設定 |
| notifications | 通知。メールやHipChat, Slackなどへ |
| before_install | 依存環境のインストール |
| install | 必要なツールのインストール |
| before_script | テスト前に設定したいことを書くスクリプト。fixturesとか |
| script | テストスクリプト |
| after_script | テスト後に実行したいスクリプト |
| after_success | 成功時のみ実行したいスクリプト |
| after_failure | 失敗時のみ実行したいスクリプト |
ではこれを元に簡単な実行例を書いてみます。
language: go go: - 1.3 install: - go get code.google.com/p/go.tools/cmd/cover - go get ./... script: - go test -v -coverprofile=coverage.out -covermode=count
ちなみに何も書いてなくてもgo get, go testは勝手にしてくれます。
動作確認
前回のテストコードを使ってビルドしてみます。
デフォルトだと
- masterへのpush
- pull request
でtravisが実行されるのでプッシュしてみます。
ちょっと待ってブラウザで確認すると以下のように結果が表示されてます。

バッジを追加する
GitHubのREADMEページにバッジを追加します。
先ほどの画像のbuild|passingをクリックしてみるとURLが表示されるので、Markdownを選択してください。
[](https://travis-ci.org/cicatrice/travis-test)
こんな感じのコードが生成されるので、それをREADME.mdに貼り付けてください。
すると以下の様に表示されます。

以上です。お疲れ様でした。