Help us understand the problem. What is going on with this article?

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away