circleci-matrixを使って、Travisのような環境変数を複数使ったビルドをする
Travisを使う場合、envというステートメントをyamlファイルに設定することで複数の条件を並列でテストできますよね。
ただ、Travis最近重くてちょっと嫌だなあと思っていたのでCircleCIを使い始めたんですが、CircleCIにはこの機能がない。
しかし、有志が作成したスクリプトを発見しました
github.com
これをうまく使えば、CircleCIでも複数条件ビルドができる。
わたしがやりたかったのは、gccとclang両方で同じソースをビルドしたいというやつで、それは以下のように設定した。
circle.yml
dependencies: pre: - curl -fsSL https://git.io/v2Ifn | bash test: override: - circleci-matrix: parallel: true
.circleci-matrix.yml
env: - CPP_COMPILER=g++ C_COMPILER=gcc - CPP_COMPILER=clang++ C_COMPILER=clang command: - sudo apt-get update; sudo apt-get install automake autoconf libtool - ./bootstrap - CXX="$CPP_COMPILER" CC="$C_COMPILER" ./configure - make clean all - make check
これで、configureスクリプトに環境変数が渡り2環境でのビルドができるわけ。
I refered -> GitHub - Fiware/context.Ckan: This is a mirror repo. Please fork from https://github.com/ckan/ckan.git.
.circle.ymlを更新
~/.local/bin/circleci-matrix にスクリプトをおかないとうまくいかない。
dependencies: pre: - "[ -e ~/.local/bin/circleci-matrix ] || mkdir -p ~/.local/bin && curl -fsSL https://raw.githubusercontent.com/michaelcontento/circleci-matrix/master/src/circleci-matrix.sh -o ~/.local/bin/circleci-matrix && chmod +x ~/.local/bin/circleci-matrix" cache_directories: - ~/.local/bin/circleci-matrix test: override: - ~/.local/bin/circleci-matrix: parallel: true