Go
golang
TravisCI
Coveralls

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

More than 1 year has passed since last update.

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とカバレッジが自動で取得できるようになる。