TravisCI on Raspberry Pi



我目前正在github上做一个与Raspberry Pi相关的项目,我想将其附加到某种CI系统中,以便贡献者可以在不构建电路的情况下查看它们是否破坏了东西(该项目涉及GPIO引脚)。TravisCI似乎是显而易见的选择,因为它与github很好地集成在一起,但我对其他人持开放态度。

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

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

汇编

在特拉维斯上交叉编译。我得到了以下代码:

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;
}

测试

在特拉维斯上使用 Qemu。这是此工具的示例。

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

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

GitHub 上的提示通知另一台服务器可以通过他们的 webhooks API 完成,这就是travis-ci.org这样做/做到的方式,travis-ci.com现在使用 GitHub 应用程序(我上次检查)订阅(甚至可以通过一些列出的 webhook)到存储库事件。

特拉维斯CI自述文件指出...

#特拉维斯听众

travis-listener 在推送提交或打开拉取请求时从 GitHub 接收通知。然后将它们推送到 RabbitMQ 上,供其他应用程序处理。


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

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

获得一个好的烟雾探测器可能是一个好主意,并尽可能多地设计在开放状态下失败的东西。

我使用fake-rpi在Travis CI上测试代码,picamera作为依赖项。当然,它无法伪造实际的相机,但依赖于picamera的非硬件测试可以通过Travis CI上的fake-rpi来完成。我想fake-rpi也可以对RPi.GPIO进行软件端测试.

最新更新