LoginSignup
51
43

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-12-27

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でカバレッジを取る

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

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

51
43
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
51
43