Arduinoのソースコード(プロジェクトとライブラリ)を、継続的なテストでソース管理下で管理したいと思います。各バージョンが正常にコンパイルされるように、継続的な統合ツールを使用してコードを自動的にコンパイルするにはどうすればよいですか?最良の場合、複数のプロセッサのビルドを構成し、オプションで単体テストを実行し、最大バイナリサイズを確認できる必要があります。
Arduinoのソースコード(プロジェクトとライブラリ)を、継続的なテストでソース管理下で管理したいと思います。各バージョンが正常にコンパイルされるように、継続的な統合ツールを使用してコードを自動的にコンパイルするにはどうすればよいですか?最良の場合、複数のプロセッサのビルドを構成し、オプションで単体テストを実行し、最大バイナリサイズを確認できる必要があります。
回答:
Arduino ideの最新バージョンには、コードをビルドおよびアップロードするためのコマンドラインインターフェイスがあります。ただし、makefileとavrdudeを使用して明らかにできます。これでコードをコンパイルできましたが、テストが必要です。シミュレータは複雑で、不完全で、拡張性があり、単なるシミュレーションであり、チップは比較的安価であるため、ボードウィッチを構築すると、ハードウェアインタラクションが行われ、結果が最も速く簡単にチェックされます。その「特別な」ボードには、PCからテストを受けて実行する通訳魔女のようなものをアップロードできます。これは、arduinoのfirmataに似たものです。少なくともそれは私がそれを構築する方法です。そして、私が知る限り、多くの業界がそうすべきであり、おそらくそれを行うと確信しているとしても、これを知っている実装はありません。
PlatformIOの作成者として、これを調べることをお勧めします。クロスプラットフォームのコードビルダーであり、ライブラリマネージャーがありません。多くの一般的な組み込み開発プラットフォームおよびボードに対して同じコードを構築できます。
PlatformIOは、多くの一般的な継続的統合(CI)システム(または独自のシステム)と統合できます。例付きのドキュメントを参照してください。
.travis.yml
Travis CIのconfig / templateを見てみましょう。
language: python
python:
- "2.7"
env:
- PLATFORMIO_CI_SRC=path/to/source/file.c
- PLATFORMIO_CI_SRC=path/to/source/file.ino
- PLATFORMIO_CI_SRC=path/to/source/directory
install:
- python -c "$(curl -fsSL https://raw.githubusercontent.com/platformio/platformio/master/scripts/get-platformio.py)"
script:
- platformio ci --board=TYPE_1 --board=TYPE_2 --board=TYPE_N
USB_Host_Shield_2.0
プロジェクトの統合。.travis.yml
設定ファイル:
language: python
python:
- "2.7"
env:
- PLATFORMIO_CI_SRC=examples/acm/acm_terminal
- PLATFORMIO_CI_SRC=examples/Bluetooth/WiiIRCamera PLATFORMIO_BUILD_FLAGS="-DWIICAMERA"
- PLATFORMIO_CI_SRC=examples/ftdi/USBFTDILoopback
- PLATFORMIO_CI_SRC=examples/Xbox/XBOXUSB
# - ...
install:
- python -c "$(curl -fsSL https://raw.githubusercontent.com/platformio/platformio/master/scripts/get-platformio.py)"
# Libraries from PlatformIO Library Registry
# http://platformio.org/#!/lib/show/416/TinyGPS
# http://platformio.org/#!/lib/show/417/SPI4Teensy3
- platformio lib install 416 417
script:
- platformio ci --board=uno --board=teensy31 --board=due --lib="."
ArduinoプロジェクトのJenkins継続的インテグレーションのセットアップの一例は、ここにあります:組み込みシステムの継続的インテグレーション
この例では、イメージを構築してArduinoにアップロードし、Selenium Webテストを実行する方法を示します(テスト対象のシステムはArduinoベースのWebサーバーです)。
適切な既存のものを見つけることができなかったので、私はArduinoのためにこのテストユニットテストフレームワークを書きました。私はCI用に作成しませんでしたが、ハードウェアを必要とせず、PCで実行できるため、CIジョブには適しています。
ハードウェアなしでCIジョブを実行すると、良い面と悪い面があります。
欠点は次のとおりです。
私は一緒に入れている。この関連の質問への答えとして、まともなサイズの過去記事をについて私が書いたArduinoのCI /ユニットテストフレームワークついにについて公に話を始めるには十分成熟しています。
arduino_ci
ルビーの宝石は、ローカルテストとトラヴィスCIの統合(例えば両方をサポートAdafruit FONAライブラリのこのビルドジョブを)。
統合方法の例:
私が持っているスケッチのサイズを報告するために作成した問題をしかし、何の仕事はその上で行われていません。いつかビルドを並列化できる可能性もありますが、現時点ではそれをどのように行うのか正確にはわかりません。現時点では、Travis CIで最も時間のかかるビルドステップはArduino IDEのダウンロードです...すべてのジョブがそのステップを実行する必要がある場合、並列テストはそれほど大きな問題にはなりません。
プロジェクトリーダーであるsloeber sloeber.ioという名前のarduino eclipseプラグインを使用することをお勧めします。
バージョン管理と統合し、複数の構成をサポートするため、複数のプラットフォームでの構築が可能です。
まだ馬鹿な証拠ではありませんが、Googleテストフレームワークを使用してローカルPCでarduinoコードの単体テストを使用して文書化し、実証しました。
これを行う方法のプレゼンテーションを含むブログへのリンクです。http://blog.baeyens.it/#post25
avr-size
?