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 в автоматическом режиме, я предлагаю вам создать некоторую форму безопасного листинга, например. фиксация подписи открытых ключей и / или имен пользователей; Другими словами, смягчите некоторые из махинаций, возможных из-за запросов на извлечение румян.

Вероятно, было бы хорошей идеей получить хороший детектор дыма и спроектировать его так, чтобы он как можно чаще выходил из строя в открытом состоянии.

Другие вопросы по тегам