Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
CircleCIで複数のバージョンのGo言語をテストしてみた。
machine:
environment:
GO15VENDOREXPERIMENT: 1
GOROOT: "/home/ubuntu/go"
PATH: "/home/ubuntu/go/bin:$PATH"
dependencies:
cache_directories:
- "/home/ubuntu/.go"
pre:
- >
case $CIRCLE_NODE_INDEX in 0) export GOVERSION=1.5.1 ;; 1) export GOVERSION=1.6.1 ;; esac;
cd /home/ubuntu;
if [[ ! -e /home/ubuntu/.go/$GOERSION/bin/go ]]; then
curl https://storage.googleapis.com/golang/go$GOVERSION.linux-amd64.tar.gz | tar -xz;
go get -u github.com/jstemmer/go-junit-report;
mkdir -p ~/.go;
cp -rp ~/go ~/.go/$GOVERSION;
else
cp -rp ~/.go/$GOVERSION ~/go;
fi
- go version
test:
override:
- mkdir -p $CIRCLE_TEST_REPORTS/golang:
parallel: true
- go test -v $(go list ./...|grep -v vendor) | go-junit-report set-exit-code=true > $CIRCLE_TEST_REPORTS/golang/$CIRCLE_NODE_INDEX.xml:
parallel: true
@shinofara

This comment has been minimized.

Copy link
Owner Author

shinofara commented Apr 15, 2016

case $CIRCLE_NODE_INDEX in 0) export GOVERSION=1.5.1 ;; 1) export GOVERSION=1.6.1 ;; esac;

コンテナ毎に使用する Go言語 のバージョンを変更

@shinofara

This comment has been minimized.

Copy link
Owner Author

shinofara commented Apr 15, 2016

if [[ ! -e /home/ubuntu/.go/$GOERSION/bin/go ]]; then

~/.go/$GOVERSION に各バージョンごとのソースを配置しているので、存在しているか確認
キャッシュ上に存在すれば、 else 側の処理が実行される

@shinofara

This comment has been minimized.

Copy link
Owner Author

shinofara commented Apr 15, 2016

curl https://storage.googleapis.com/golang/go$GOVERSION.linux-amd64.tar.gz | tar -xz;
go get -u github.com/jstemmer/go-junit-report;
mkdir -p ~/.go;
cp -rp ~/go ~/.go/$GOVERSION;

指定したバージョンの取得と展開
ついでにjunit-reportの為に必要なライブラリも取得

そしてキャッシュディレクトリ作成と、ソースをキャッシュ配下に移動

@shinofara

This comment has been minimized.

Copy link
Owner Author

shinofara commented Apr 15, 2016

実行結果
https://circleci.com/gh/shinofara/circle-go/43#artifacts

各 artifacts以下のjunit reportを見ればバージョンが変わっていることを確認できる

@shinofara

This comment has been minimized.

Copy link
Owner Author

shinofara commented Apr 15, 2016

使うタイミングとしては、現在1.5で開発しているけど、そろそろバージョンを上げたいとか
まだ考えていないけどテストは常に行っていたいとかそういうアレかな

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.