Carpe Diem

備忘録

Travis で自動ビルドしてGitHubにバッジをつける

概要

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

f:id:quoll00:20141202095311p:plain

今回はこれらを実現します。

環境

  • 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が実行されるのでプッシュしてみます。
ちょっと待ってブラウザで確認すると以下のように結果が表示されてます。

f:id:quoll00:20141202211011p:plain

バッジを追加する

GitHubのREADMEページにバッジを追加します。
先ほどの画像のbuild|passingをクリックしてみるとURLが表示されるので、Markdownを選択してください。

[![Build Status](https://travis-ci.org/cicatrice/travis-test.svg?branch=master)](https://travis-ci.org/cicatrice/travis-test)

こんな感じのコードが生成されるので、それをREADME.mdに貼り付けてください。
すると以下の様に表示されます。

f:id:quoll00:20141202212539p:plain

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

参考