我想在源代码控制下通过连续测试来管理我的Arduino源代码(项目和库)。如何使用持续集成工具自动编译代码,以确保每个版本都能干净地编译?在最佳情况下,应该能够为多个处理器配置构建,可以选择运行单元测试并检查最大二进制大小。
我想在源代码控制下通过连续测试来管理我的Arduino源代码(项目和库)。如何使用持续集成工具自动编译代码,以确保每个版本都能干净地编译?在最佳情况下,应该能够为多个处理器配置构建,可以选择运行单元测试并检查最大二进制大小。
Answers:
作为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编写它,但它很适合CI工作,因为它不需要硬件,但可以在PC上运行。
在没有硬件的情况下运行CI作业有好的方面和坏的方面,好的方面是
缺点是:
我刚刚拼凑一个体面的大小书面记录作为一个答案来此相关的问题大约一个Arduino CI /单元测试框架,我写的是终于成熟到足以开始讨论公开谈论。
该arduino_ci
红宝石宝石既支持本地测试和Travis CI整合(例如对于Adafruit的FONA库这个构建工作)。
有关其集成方式的一些示例:
我在报告草图尺寸时遇到了一个问题,但是目前还没有完成任何工作。也有可能我有一天可以并行化构建,但是目前我还不确定我将如何做到这一点。目前,Travis CI上最耗时的构建步骤是下载Arduino IDE ...如果每个工作都需要执行并行测试,那么并行测试并不会带来太大的麻烦。
我建议使用名为sloeber sloeber.io的arduino eclipse插件,我是项目负责人。
它与版本控制集成,并支持多种配置,因此可以在多个平台上构建。
尽管还不是白痴证明,但我已经使用Google测试框架在本地PC上使用arduino代码进行单元测试来进行文档记录和演示。
这是指向博客的链接,其中包含有关如何执行此操作的演示。http://blog.baeyens.it/#post25
avr-size
?