CircleCI2.0+googletestでC++のテスト環境を構築

Docker Imageの作成

ubuntu:16.04のimageを元にしてclang+googletestの入ったImageを作成しました。

$ docker pull ubuntu:16.04
$ docker run --name my-ubuntu -it ubuntu:16.04 /bin/bash

clang+googletestの環境構築

# clangのinstall
$ apt update
$ apt install llvm build-essential clang

# googletestのinstall
$ apt install git cmake
$ git clone https://github.com/google/googletest.git
$ cd googletest
$ cmake -DBUILD_SHARED_LIBS=ON .
$ make
$ cp -a googletest/include/gtest /usr/include
$ cp -a googlemock/gtest/libgtest_main.so googlemock/gtest/libgtest.so /usr/lib/
$ exit
$ docker commit my-ubuntu wakanapo/clang-gtest
$ docker push wakanapo/clang-gtest

Makefileの用意

CXX := clang++
CXXFLAGS := -std=c++14 -Wall -O2 -lgtest_main -lgtest
SRCS := test.cc

test: $(SRCS) 
    $(CXX) $(CXXFLAGS) -o $@ $^

.PHONY: clean
clean:
    rm ./test

yamlファイルの用意

yamlファイルは.circleciというレポジトリの下に置きます。

version: 2
jobs:
  build:
    docker:
      - image: wakanapo/clang-gtest
    steps:
      - checkout
      - run:
          name: Make test
          command: make test
      - run:
          name: Running test
          command: ./test