TravisCI на Raspberry Pi
В настоящее время я работаю над проектом, связанным с Raspberry Pi, на github, и я хотел бы подключить его к какой-либо системе CI, чтобы участники могли видеть, что они ломают вещи, не создавая цепей (проект включает контакты GPIO). TravisCI, кажется, очевидный выбор, поскольку он прекрасно интегрируется с github, но я открыт для других
После осмотра кажется, что нужно будет запустить сервер TravisCI локально на моей машине с Pi (а не пытаться настроить какую-либо эмулируемую среду в облаке Travis), однако я не уверен, как указать страница проекта github на моем локальном сервере? Кто-нибудь может объяснить, как я это делаю?
0 ответов
Нужно ли запускать проект на своем персональном оборудовании? Если вас устраивает компилирование кода для Raspberry Pi и тестирование, вы можете сделать это следующим образом:
компиляция
Кросс-компиляция на Трэвисе. Я получил следующий код:
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 на Трэвисе. Вот пример с этим инструментом.
Я использовал fake-rpi
для тестирования кода на Travis CI с помощью picamera
как зависимость. Конечно, настоящую камеру подделать не удастся, но неаппаратные тесты зависят отpicamera
может быть выполнено с fake-rpi
на Travis CI. Я полагаюfake-rpi
может также работать с программными тестами на RPi.GPIO
.
Я не уверен, как мне указать страницу проекта github на моем локальном сервере? Кто-нибудь может объяснить, как я это делаю?
Это немного расплывчато, поэтому сейчас я должен указать вам на некоторые моменты, которые я нашел полезными для выяснения чего-то подобного. Я могу обновить это, добавив больше деталей и меньше размахивая руками, когда я выясню лучший курс для моей собственной интеграции, связанной с RPi, с Travis CI.
Подсказка о том, что GitHub может уведомить другой сервер через их API веб-перехватчиков, вот какtravis-ci.org
сделал / сделал это, где как travis-ci.com
теперь использует GitHub Apps (последнее, что я проверял) для подписки (может даже через некоторые перечисленные веб-перехватчики) на события репозитория.
В ReadMe Travis CI говорится...
#
трэвис-слушательtravis-listener получает уведомления от GitHub всякий раз, когда отправляются коммиты или открываются запросы на вытягивание. Затем они отправляются в RabbitMQ для обработки другими приложениями.
... в проекте задействованы контакты GPIO...
Если вы собираетесь запускать код на RPi в автоматическом режиме, я предлагаю вам создать некоторую форму безопасного листинга, например. фиксация подписи открытых ключей и / или имен пользователей; Другими словами, смягчите некоторые из махинаций, возможных из-за запросов на извлечение румян.
Вероятно, было бы хорошей идеей получить хороший детектор дыма и спроектировать его так, чтобы он как можно чаще выходил из строя в открытом состоянии.