前回「個人的に思う、Golang1.5におけるVendor管理のベストプラクティス」 https://shinofara.github.io/2015/09/27/The-vendor-management-tool-of-golang-called-glide.html

に引き続き、golang1.5とvendoringに関係した話です。

前回は、vendorを利用して実行、テストとかを書いたのですが、 結局のところ毎回テストするのも、、てかgithubに上げたものが本当に正しいかは誰も分からない….

って事でCIだよね!!

The use CI tool name is ...

circle ci https://circleci.com

書いてみた

goのパッケージ等は前回作成したものと同じですので、今回は省略します。 一応ペタっ https://github.com/shinofara/circle-go

circle.ymlにどう書く?

ってかその前に、まだこの執筆時点では、 CircleCI側では1.5対応がされていないので、circle.ymlで色々書かないと行けないわけです。

そんなわけでペタっ

machine:
  environment:
    GO15VENDOREXPERIMENT: 1
    GOROOT: "/home/ubuntu/go"
    PATH: "/home/ubuntu/go/bin:$PATH"

dependencies:
  cache_directories:
    - "/home/ubuntu/go"
  pre:
    - if [[ ! -e /home/ubuntu/go/bin/go ]]; then cd /home/ubuntu; curl https://storage.googleapis.com/golang/go1.5.1.linux-amd64.tar.gz | tar -xz; fi

test:
  override:
    - go version
    - go test $(go list ./...|grep -v vendor)

軽く説明

machine

コンテナイメージみたいなもん

dependencies

test,buildなどが依存する物を記述 毎回go1.5自体のビルドをしてると、もったいないので ビルド後の/home/ubuntu/gocache_directoriesで指定して、キャッシュさせるように指定しています。

preの箇所でifと書いている様にキャッシュにディレクトリが存在しない場合は、作成するようにしています。 これで二回目以降はキャッシュが効きます。

test

testは文字通りtestの実行定義を書く場所 go testgo test $(go list ./…|grep -v vendor)と書いているのは 通常のgo testのままだとvendor以下までテストしてしまうからです…

あとは実行〜〜

といってもcircleciと連携済みであれば、pushするだけです。 circle.ymlでignoreしていない限りは全ブランチが検査対象になります。

image::circle/2015-09-303.33.18.png[]

こんな感じで正常時はGreen、異常時はRedと表示されます。

参考としてペタっ https://circleci.com/gh/shinofara/circle-go/tree/master

commitログはめんどくててきと