我目前正在github上开发一个与Raspberry Pi相关的项目,我想将它附加到某种CI系统上,这样贡献者就可以看到他们是否在不需要构建电路的情况下破解(该项目涉及GPIO引脚) 。 TravisCI似乎是明显的选择,因为它与github很好地集成,但我对其他人开放
环顾四周之后,似乎要做的就是在我的Pi机器上本地运行TravisCI服务器(而不是尝试在Travis云中设置某种模拟环境),但是我不确定我如何将github项目页面指向我的本地服务器?谁能解释我是怎么做到的?
答案 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;
}
答案 1 :(得分:0)
我不确定如何将github项目页面指向本地服务器?谁能解释我该怎么做?
这在范围上有点模糊,所以现在我必须指出ya,到目前为止我发现对找出类似的东西很有帮助。当我想出了绘制与Travis CI进行自己的RPi相关集成的最佳方法时,我可能会用更多的细节和更少的动手来更新它。
可以通过他们的webhooks API来通知GitHub上的另一台服务器的提示,这是travis-ci.org
的使用方法,travis-ci.com
现在使用GitHub Apps(最后我检查过)订阅(甚至可能通过某些列出的网络钩子)来存储事件。
Travis CI ReadMe声明...
#
travis-listenertravis-listener每当提交被提交或打开请求时都会从GitHub接收通知。然后将它们推送到RabbitMQ上,以供其他应用处理。
...该项目涉及GPIO引脚...
如果您要以自动方式在RPi上运行代码,我建议您执行某种形式的安全列表例如。提交签名公钥和/或用户名;换句话说,减轻了 rouge 拉取请求中可能出现的 shenanigans 。
获得一个好的烟雾探测器,并尽可能将其设计为在打开状态下失效也很可能是个好主意。
答案 2 :(得分:0)
我已经使用fake-rpi
在Travis CI上以picamera
作为依赖关系来测试代码。当然,它不能伪造实际的相机,但是可以使用Travis CI上的picamera
完成依赖于fake-rpi
的非硬件测试。我想fake-rpi
也可以在RPi.GPIO
上进行软件侧测试。