なんとな~くしあわせ?の日記

「そしてそれゆえ、知識そのものが力である」 (Nam et ipsa scientia potestas est.) 〜 フランシス・ベーコン

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