parallelism
で複数のノードを使うようにして、 circleci tests split
でノード毎にテストするパッケージを分ける。
version: 2
jobs:
build:
parallelism: 3
steps:
- run:
name: Run tests
command: |
circleci tests split <(go list ./src/...) > pkgs
export TESTPKGS=$(cat pkgs | tr '\n' ' ')
go test ${TESTPKGS}
Codecov
を利用している場合、
Codecov does not override report data for multiple uploads. We always merge the data. Simply upload all three reports at once, or separately.
bash <(curl -s https://codecov.io/bash)
とかでアップロードすればいい感じにマージしてくれる。
テスト対象以外もノードごとに挙動を変えたい
${CIRCLE_NODE_INDEX}
という環境変数がノードごとに設定されるのでそれを利用する。例えば以下のようにして接続するデータベースを切り替えることができる。
version: 2
jobs:
build:
parallelism: 3
steps:
- run:
name: set database name
command: |
echo "export DBNAME=${CIRCLE_BUILD_NUM}-${CIRCLE_NODE_INDEX}" >> $BASH_ENV
source $BASH_ENV