2019年3月29日金曜日

TravisCIでArduinoのライブラリのビルド状況を管理してみた


背景

TravisCIとは継続的な統合(Continuous Integration)を管理してくれるサービスの1つです。
これを利用することで、プログラムを変更した時に、動作することを想定している環境に向けてビルドできるか、期待通りに動作するかなどを自動的に確認できます。

Arduinoとはプログラムを書き込めるCPUを搭載した、電子工作に利用しやすい基板です。
Arduino向けにライブラリを公開しているので、それがビルドできるか、TravisCIで管理してみました。

備忘録を兼ねて方法を共有します。

使ったもの

TravisCIのアカウント

githubで管理するArduinoのライブラリのリポジトリ


ビルド状況を監視したいリポジトリの設定を有効化

travis-ci.orgリポジトリ一覧画面でビルドしたいリポジトリを検索して、設定を有効化します


SomeSerialというリポジトリを検索しました。
リポジトリの行の右側のスイッチをクリックすると、ビルド設定を切り替えられます。
色が付いていたら監視されています。


TravisCIは取り込んだ情報を表示しているらしく、新しく作成したリポジトリが一覧に表示されない場合があります。
そんなときは設定画面の「Sync account」ボタンをクリックすると、githubと情報が同期されてリポジトリが表示されるようになります。


.travis.ymlを追加

監視されるようになったら、リポジトリに.travis.ymlをした状態でコミットするか手動でビルドを実行すると、.travis.ymlの条件を満たすか検査してくれます。

Arduinoのライブラリ管理についてはAdafruitのadaさんがスクリプトを共有してくれているので、それを利用するのが良いと思います。

紹介記事: Travis CI | The Well-Automated Arduino Library | Adafruit Learning System
スクリプト本体: adafruit/travis-ci-arduino/install.sh

上記のスクリプトを利用して自分なりに組み立てた.travis.ymlはこちらです。
ビルド状況が変わったらメールを送信するせっていにしています。
language: c
sudo: false
cache:
  directories:
    - ~/arduino_ide
    - ~/.arduino15/packages/
git:
  depth: false
  quiet: true
env:
  global:
     - ARDUINO_IDE_VERSION="1.8.8"
     - PRETTYNAME="SomeSerial"

before_install:
   - source <(curl -SLs https://raw.githubusercontent.com/adafruit/travis-ci-arduino/master/install.sh)

script:
  - build_main_platforms

notifications:
  email:
    on_success: change
    on_failure: change

他のライブラリのビルドに利用する場合は、globalのPRETTYNAMEをビルド対照のライブラリ名にしてください。

adaさんのスクリプトによるbuild_main_platformsコマンドを利用すると、2019.03.29時点では下記のボードに対して全てのexampleプロジェクトをビルドできるか確認してくれます。
  • Arduino Uno
  • Arduino Leonardo
  • Arduino Mega2560
  • Arduino Due
  • Arduino Zero
  • ESP8266
  • ESP32
  • Adafruit Feather M4 Express

Serialを関数の引数として使っている場合は、ボードによって型が異なるため、上記すべてのボードのビルドを成功させるには、自分が以前に書いたこちらの記事が参考になると思います。

いろんなArduinoのシリアルを関数の引数として使う方法

Unoだけのビルドを確認できたら良い場合は、scriptの記述をこのようにするとUnoだけ確認してくれます。

script:
  - build_main_platform uno 

スクリプトで定義されるコマンドについては、スクリプト本体を読み解くのが良いと思います。

githubにpushしてビルドが始まるとTravisCIの画面が黄色くなります。


失敗すると赤色になります。


成功すると緑色になります。


.travis.ymlを追加したのにビルドが始まらない場合は、.travis.ymlに無効な記述が含まれている可能性があります。
リポジトリのビルド画面からMore Options -> Requestsを選択することで、TravisCIの詳しい状況を確認できます。


.travis.ymlが間違っている場合は、「Could not parse .travis」という内容で処理が止まるようです。


READMEにビルド状況を追加

githubのREADMEに埋め込める画像は、TravisCIのビルド状況をクリックすると取得できます。


ビルド状況をクリックして出てくる画面でREADMEを選択して、下部に表示されるマークダウン表記の画像をREADMEに追加できます。


エディタでREADME.mdに追加します。


追加の変更をcommitしてpushすれば、TravisCIのビルド状況がgithubで確認できます。


ライブラリを管理している雰囲気が出て、個人的に嬉しいです。

まとめ

TravisCIで複数のArduinoでビルドが成功するか自動で確認できるようになりました。

この情報が何かの役に立てば嬉しいです。

参考

 AdafruitのadaさんによるTravisCIの解説記事です。
Travis CI | The Well-Automated Arduino Library | Adafruit Learning System

AdafruitのToddさんによる解説記事です。
Travis CI Configuration | Continuous Integration, Arduino, and You | Adafruit Learning System

ArduinoIDEのCIでの操作方法解説ページです。
Arduino/build/shared/manpage.adoc

0 件のコメント :