LoginSignup
1
0

More than 3 years have passed since last update.

CircleCIでGoのテストを並列実行する

Posted at

TL;DR

  • CircleCIで複数の並列マシンを起動してGoのテストを並列実行します。

基本的なアイデア

  • CircleCI CLIでテストを並列数に応じて分割
  • 環境変数を使用して並列マシンごとに接続先DBを分ける

CircleCI CLIで並列数に応じてテストを分割

circleci tests split コマンドを使ってテストをpackageごとに分割します。
ただ、splitコマンドは分割するだけでテスト自体は実行されません。
なので、結果はファイルに書き出して go test に渡す必要があります。
具体的には下記のようにします。

go list ./... | grep -v vendor | circleci tests splits > pkgs
export TESTPKGS=$(cat pkgs | tr '\n' ' ')
go test ${TESTPKGS} 2>&1

環境変数を使用して並列マシンごとに接続先DBを分ける

CircleCIには並列処理を制御するための環境変数が用意されています。
今回は並列マシンごとに接続先DBを変えるために CIRCLE_NODE_INDEX を使います。
この環境変数には現在実行されている特定のコンテナのインデックスが入っています。

なので、DBの名前を database-${CIRCLE_NODE_INDEX} みたいに並列数だけ作成しておいて、
各並列ごとにそれぞれのDBに接続します。

参考

1
0
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
1
0