2016年7月12日火曜日

Travis CIでC言語プロジェクトの自動ビルド+テスト

vgs-cpuのLinuxでの自動ビルド+テストにTravis CIを導入してみました。
オープンソースなのでタダ乗りです。

README.md でよく見られる下図の「build passing」というバッジをクリックすれば、vgs-cpuをTravis CIでビルドしたログとかが見れたりします。
バッジ(build: passing)
ビルド+テストログが誰でも見れる
Web版のTravis CIで、C++やclangを利用したプロジェクトの場合、コンパイラのバージョン依存が結構あると思いますが、vgs-cpuならGCCバージョン2.96という枯れ切った規格に準拠した記述をしているので全く問題ありません。

(対応するためにやったこと)
・全てのビルドとテストの手順をmakeで書く(最初からそう書いている)
・GitHub上のアカウントの設定でTravis CIのWeb hookを許可
・Travis CIでアカウント連携
・対象プロジェクト(vgs-cpu)のトグルをON
・対象プロジェクト(vgs-cpu)に .travis.yml(内容は下記) を追加

script: 
  - make --no-print-directory test

・README.mdにバッジを表示する情報を追記

# [WIP] VGS CPU [![Build Status](https://travis-ci.org/suzukiplan/vgs-cpu.svg?branch=master)](https://travis-ci.org/suzukiplan/vgs-cpu)

これだけで、あとは master へ push なり Pull Request を merge するなりすれば、Travis CIがLinux(Ubuntu)でvgs-cpuのビルド&テスト(make test)を実行してくれます。

基本的に普段はMacでビルド+テストしているので、Linuxでのビルド&テストも放っておけば(というかpushすれば)勝手にやってくれるのは中々便利。

そうそう環境依存のバグを作り込むことは無いですが、一発仕掛ければ後は勝手にやってくれるのが良いですね。どちらかといえば、環境依存バグはWindowsで作り込み易いので、Windowsの似たようなCI(Platform SDKが使える)があれば尚良いのですが...