Как стать автором
Обновить

Сборка приложения среды arduino средствами CI github

Время на прочтение2 мин
Количество просмотров3.7K
image

Немного имея по работе дело с CI/CD (gitlab ce), не так давно на github наткнулся на actions, и решил попробовать, что же это за зверь такой.

Собирать JS или какие то другие решения не очень интересно было, поэтому решил протестировать сборку Arduino скетча для esp8266, получить в качестве результата скомпилированный бинарник, готовый для загрузки напрямую в микроконтроллер без необходимости установки локальной Arduino IDE.

Actions, или pipeline
Последовательность команд и действий, запускающаяся после определенных событий — например, push в git ветку репозитория, то есть она будет запускаться после изменения какого либо файла. Можно изменить файл напрямую редактором github, и проект автоматически соберется и скомпилируется. Pipeline используется не только для компилирования, но и для различного тестирования кода.

Делать docker образ для всего этого я не стал, это дополнительно усложнило бы процесс организации ci/cd, опять же, под каждую библиотеку не сделать образ.

Чем это может быть полезным? Допустим, есть какой то открытый проект, под разные версии контроллеров с разными количеством памяти, и на то, чтобы скомпилировать код под все платформы — требуется немало времени. В actions же можно один раз настроить платформы, под которые требуется сборка — и с каждым изменением кода в репозитории под каждую версию платформы будет готовая прошивка.

Код самого action скрипта:

on: [push]
jobs:
  build:
    runs-on: ubuntu-18.04
    steps:
    - uses: actions/checkout@v1
    - name: install arduino cli
      run:  curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh
    - name: MakeSketch
      run: ./bin/arduino-cli sketch new MyFirstSketch
    - name: create dir
      run: mkdir -p /home/runner/.arduino15/packages
    - name: lib init
      run: sudo ./bin/arduino-cli core update-index --additional-urls http://arduino.esp8266.com/stable/package_esp8266com_index.json
    - name: install esp8266
      run: sudo ./bin/arduino-cli core install esp8266:esp8266 --additional-urls http://arduino.esp8266.com/stable/package_esp8266com_index.json  
    - name: install python3
      run: sudo apt-get install -yq python3
    - name: compile
      run: sudo ./bin/arduino-cli compile --fqbn esp8266:esp8266:d1 MyFirstSketch
    - uses: actions/upload-artifact@v1
      with:
        name: esp8266-d1-mini-4m.bin
        path: MyFirstSketch/MyFirstSketch.esp8266.esp8266.d1.bin 
    - uses: ncipollo/release-action@v1
      with:
        artifacts: "MyFirstSketch/MyFirstSketch.esp8266.esp8266.d1.bin"
        tag: "release"
        token: ${{ secrets.GITHUB_TOKEN }}  

По факту —

  • На чистую систему с ubuntu 18.04 мы устанавливаем arduino-cli
  • Добавляем поддержку esp8266
  • Компилируем arduino код, размещенный в репозитории,
  • Создаем релиз, в который добавляем скомпилированный бинарник

image

Actions на github — бесплатны для open source проектов, для закрытых репозиториев сейчас они тоже доступны, но вроде как, через некоторое время станут недоступны.

На devops не претендую, некоторые вещи можно было бы сделать проще, но, во всяком случае, это работает.
Теги:
Хабы:
Всего голосов 6: ↑6 и ↓0+6
Комментарии4

Публикации

Истории

Работа

DevOps инженер
39 вакансий

Ближайшие события

19 августа – 20 октября
RuCode.Финал. Чемпионат по алгоритмическому программированию и ИИ
МоскваНижний НовгородЕкатеринбургСтавропольНовосибрискКалининградПермьВладивостокЧитаКраснорскТомскИжевскПетрозаводскКазаньКурскТюменьВолгоградУфаМурманскБишкекСочиУльяновскСаратовИркутскДолгопрудныйОнлайн
24 – 25 октября
One Day Offer для AQA Engineer и Developers
Онлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
26 октября
ProIT Network Fest
Санкт-Петербург
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань