TravisCI on Raspberry Pi

时间:2018-03-13 12:00:05

标签: github travis-ci travis-ci-cli

我目前正在github上开发一个与Raspberry Pi相关的项目,我想将它附加到某种CI系统上,这样贡献者就可以看到他们是否在不需要构建电路的情况下破解(该项目涉及GPIO引脚) 。 TravisCI似乎是明显的选择,因为它与github很好地集成,但我对其他人开放

环顾四周之后,似乎要做的就是在我的Pi机器上本地运行TravisCI服务器(而不是尝试在Travis云中设置某种模拟环境),但是我不确定我如何将github项目页面指向我的本地服务器?谁能解释我是怎么做到的?

3 个答案:

答案 0 :(得分:1)

是否有必要在个人硬件上运行项目?如果您可以通过编译Raspberry Pi的代码并进行测试感到满意,则可以通过以下方式进行:

编译

在Travis上交叉编译。我得到了以下代码:

Dockerfile

FROM mitchallen/pi-cross-compile

# Switch into our apps working directory
WORKDIR /build
COPY . /build

# The base image has more examples how to use make or CMake for the project, directly
# calling the cross-compiler, is the minimal example here.
RUN ["/pitools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-gcc",\
  "-o", "hello", "hello.cpp"]

.travis.yml

language: cpp

services:
  - docker

before_install:
  - docker build -t me/image .

script:
  # One of those lines is necessary otherwise travis runs 'rake' by default.
  - true
  - echo "Success"

hello.cpp

#include <stdio.h>

int main (int argc, char **argv) {
    printf("Hello, world!\n");
    return 0;
}

测试

在travis上使用Qemu。这是一个example和这个tool

答案 1 :(得分:0)

  
    

我不确定如何将github项目页面指向本地服务器?谁能解释我该怎么做?

  

这在范围上有点模糊,所以现在我必须指出ya,到目前为止我发现对找出类似的东西很有帮助。当我想出了绘制与Travis CI进行自己的RPi相关集成的最佳方法时,我可能会用更多的细节和更少的动手来更新它。

可以通过他们的webhooks API来通知G​​itHub上的另一台服务器的提示,这是travis-ci.org的使用方法,travis-ci.com现在使用GitHub Apps(最后我检查过)订阅(甚至可能通过某些列出的网络钩子)来存储事件。

Travis CI ReadMe声明...

  

# travis-listener

     

travis-listener每当提交被提交或打开请求时都会从GitHub接收通知。然后将它们推送到RabbitMQ上,以供其他应用处理。


  
    

...该项目涉及GPIO引脚...

  

如果您要以自动方式在RPi上运行代码,我建议您执行某种形式的安全列表例如。提交签名公钥和/或用户名;换句话说,减轻了 rouge 拉取请求中可能出现的 shenanigans

获得一个好的烟雾探测器,并尽可能将其设计为在打开状态下失效也很可能是个好主意。

答案 2 :(得分:0)

我已经使用fake-rpi在Travis CI上以picamera作为依赖关系来测试代码。当然,它不能伪造实际的相机,但是可以使用Travis CI上的picamera完成依赖于fake-rpi的非硬件测试。我想fake-rpi也可以在RPi.GPIO上进行软件侧测试。