Go + Travis CI + Coveralls でCI環境を作る

  • 46
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

GoでCI+カバレッジレポート環境を作るのに少し手間取ったのでまとめ。

どんだけ無駄なcommitしたんだって感じがあります(都度pushして動作を確認してた)
https://github.com/dmnlk/stringUtils/commits/master

https://github.com/dmnlk/stringUtils
https://travis-ci.org/dmnlk/stringUtils
https://coveralls.io/r/dmnlk/stringUtils

Travis CI でGoのCI

これはすごく簡単。
.travis.yml

.travis.yml

language: go

script:
 - go test -v

を書いておけば勝手にCIしてくれる。

Coverallsでカバレッジを取る

これも先人のありがたいツールを使って。

https://github.com/mattn/goveralls

さっきの .travis.yml の中身を消して以下にする

.travis.yml
language: go
go:
  - tip
before_install:
  - go get github.com/axw/gocov/gocov
  - go get github.com/mattn/goveralls
  - if ! go get code.google.com/p/go.tools/cmd/cover; then go get golang.org/x/tools/cmd/cover; fi
script:
    - $HOME/gopath/bin/goveralls -repotoken とーくん

-repotoken にはCoverallsで取得できるトークンを設定する。

Tokenを暗号化してセキュアにする

ここからがハマりどころだった。
-repotoken にトークン渡せば良いのだが、YAMLファイルにトークンベタ書きは良くない。
Coverallsには Note: Do not make your repo token public.とある(多分private リポジトリの話をしてるっぽいけど)
公開リポジトリなら別に平気な感じもあるが、どうせならsecureにしてみようと。

まず、ローカル端末に travisのgemをインストールする必要がある。

sudo gem install travis

そして、TOKENを暗号化してもらう。

travis encrypt COVERALLS_TOKEN=とーくんほげほげ --add

--add するとリポジトリ内の .travis.ymlに追記してくれる。

が、この --add オプションをつけるのだけはオススメしません。
インデントとかも結構変更するので、そもそものbuildがTravisで通らなくなったりする。
それで何度もyamlを書きなおしたりトークンを再生成するとかハマった。

--add をしない場合、標準出力に、


Please add the following to your .travis.yml file:

  secure: "VLQkBFIJGWG3KE/PJTIVJ4fYQMGptoozHbLQwu66SbD2Gb58EFn/HXlZNE8VF+gH+S81D4WCIORKTa3dfOOIXUc22GlQRecOdnwWl8f3+M9vneL9PTn/4t548Z2ydDk5WMNtBeu1MuNWQ9arOa2EKl090Ip5LCgs/P4MAwInhUo="

Pro Tip: You can add it automatically by running with --add.

とか出てくるので secureの行をコピー。

で、.travis.ymlに追記して環境変数として設定してあげる。

.travis.yml

language: go
go:
  - tip
before_install:
  - go get github.com/axw/gocov/gocov
  - go get github.com/mattn/goveralls
  - if ! go get code.google.com/p/go.tools/cmd/cover; then go get golang.org/x/tools/cmd/cover; fi
script:
    - $HOME/gopath/bin/goveralls -repotoken $COVERALLS_TOKEN
env:
  global:
    secure: さっきのコピーしたアレ


-repotoken には $COVERALLS_TOKENを渡すことでTravis側が勝手に暗号を解読?してtokenをgoverallsに渡してくれる。

これでCIとカバレッジが自動で取得できるようになる。