【问题标题】:TravisCI on Raspberry Pi树莓派上的 TravisCI
【发布时间】:2018-03-13 12:00:05
【问题描述】:
我目前正在 github 上做一个与 Raspberry Pi 相关的项目,我想将它附加到某种 CI 系统,以便贡献者可以查看他们是否破坏了东西而无需构建电路(该项目涉及 GPIO 引脚) . TravisCI 似乎是显而易见的选择,因为它与 github 很好地集成,但我对其他人持开放态度
环顾四周,似乎要做的是在我的 Pi 机器上本地运行 TravisCI 服务器(而不是尝试在 Travis 云中设置某种模拟环境),但我不确定我如何将 github 项目页面指向我的本地服务器?谁能解释一下我是怎么做到的?
【问题讨论】:
标签:
github
travis-ci
travis-ci-cli
【解决方案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。
【解决方案2】:
我不确定如何将 github 项目页面指向我的本地服务器?谁能解释一下我是怎么做到的?
这在范围上有点模糊,所以现在我必须向你指出一些到目前为止我发现对找出类似的东西很有帮助的部分。当我找到最好的课程来绘制我自己与 Travis CI 的与 RPi 相关的集成时,我可能会用更多的细节和更少的手来更新它。
GitHub 上的提示通知另一台服务器可以通过他们的 webhooks API 完成,这就是 travis-ci.org 的做法,而 travis-ci.com 现在使用 GitHub Apps(我上次检查)来订阅 (甚至可以通过一些列出的 webhook)到存储库事件。
Travis CI ReadMe 状态...
#travis-listener
travis-listener 在推送提交或打开拉取请求时从 GitHub 接收通知。然后将它们推送到 RabbitMQ 以供其他应用程序处理。
...项目涉及GPIO引脚...
如果您要以自动化方式在 RPi 上运行代码,我建议您执行某种形式的安全列表,例如。提交签署公钥和/或用户名;换句话说,减轻 rouge 拉取请求可能带来的一些 恶作剧。
获得一个好的烟雾探测器可能是个好主意,并尽可能设计为在打开状态下失败。
【解决方案3】:
我使用fake-rpi 来测试 Travis CI 上的代码,并将 picamera 作为依赖项。当然,它无法伪造实际的相机,但依赖于picamera 的非硬件测试可以通过 Travis CI 上的fake-rpi 完成。我想fake-rpi 也可以在RPi.GPIO 上进行软件端测试。