Рубрики
Uncategorized

Строительство прошивки IOT с лазурными трубопроводами и частицами

С помощью лазурных трубопроводов и частицами CLI легко создавать трубопроводы для автоматического создания прошивки IOT устройства, релиз двоичных файлов и даже запустить автоматические тесты!. Теги с IoT, прошивками, лазурными изделиями, дежопами.

TL; DR с лазурными трубопроводами и частицами CLI, легко создавать трубопроводы для автоматического создания прошивки устройств IOT, выпускают двоичные файлы и даже запустить автоматические тесты!

У вас когда-либо есть один из этих хобби, которые продолжают и снова придумывать? Вы вдохновляетесь, чтобы начать, отчаянно работать на нем на некоторое время, затем отложил его, потому что жизнь и работа происходит.

Или, может быть, вы напуганы вещью и медленно (или быстро) обратно?

Почему кошка боится банана? Может он просто пошел кето.

Я знаю, что чувство страха, особенно когда дело доходит до хобби проектов.

И все же есть некоторые, которые никогда не уходят. Вы размышляете о них. Вы поднимаетесь с ними немного время от времени. Вы продолжаете добавлять функции к вашему желанию. Вдохновение (или страх) никогда не по-настоящему исчезает, а какая-то часть вас просто знает, что вы закончите, что однажды закончим.

Один такой проект для меня — Brew Buddy Отказ А Сервис частиц Установка мониторинга на доме, которую я начал более трех лет назад. Я начал проект с Частицы фотона , Adafruit TFT, а A K Type Thermocouple Breakout из Spencfun Отказ Я создал свои собственные печатные платы на моем другом мельнице, прежде чем получать настоящие ПКБ из Ош Парк Отказ

Я даже сделал несколько хаки Youtube видео о процессе.

Я не собираюсь ссылаться на эти видео YouTube. Пожалуйста. Вы можете найти их, если вы достаточно сложнее, но не говори, что не предупреждал вас.

Как бы случается, после распыления активности я положил этот проект на полку и переместился на другие вещи. Тестирование каждой итерации Brew Buddy требует тестирования «реального мира», и поверьте, или нет, там на самом деле является предел количества пива человека, который может пить человек.

В конце прошлого года заварите, приятель, кого вернулся в голову. Вскоре после того, как частица выпустила их новое Устройства 3-го поколения , Аргон, Бор и Ксенон, немного голос так мягко и нежно сказал «Знаешь, что Аргон было бы здорово для заварного приятеля. И вы можете добавить эти новые функции, о которых вы думали.

Бессильнее сопротивляться приманкам нового оборудования, я выбрал проект в январе. Я живу поток многое количество моей начальной работы на Мой канал Twitch и опубликовал Пост фотона в порт аргон на блоге частицы .

Я был всасывается обратно.

Введите Azure DevOps

Одна из вещей, которые я люблю о аппаратных проектах, заключается в том, что они дают мне оправдание для изучения связанных тем или концепций, которые я испытываю зудящим, чтобы попробовать. Например, оригинальный Brew Buddy был воротом в дизайн PCB, который стал немного одержимостью для меня за последние несколько лет.

Для этого обновления я действительно хотел исследовать DevOps Side из разработки прошивки/IOT. Я слышал много хороших вещей о Azure DevOps и Новые трубопроводы Функция, поэтому я решил попробовать.

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

1. Настроить Azure DevOps

Использовать лазурные трубопроводы, вам нужен аккаунт Azure DEVOPS. Microsoft имеет Обширные документы по этому процессу И я не буду повторять их здесь. Наверь на dev.azure.com Чтобы получить себя все настроен. Вам необходимо создать организацию Azure DEVOPS перед созданием проекта и учетной записи GitHub, чтобы вы могли подключить свой конвейер к соответствующему репозитории.

2. Создайте свой первый трубопровод

С созданной организацией Azure DEVOPS вы готовы создать свой первый трубопровод. Если вы просто изучаете трубопроводы, Microsoft имеет несколько быстрых начнков, которые вы можете влометься, чтобы попробовать все Отказ

Когда вы создаете трубопровод, вам будет дано два варианта для авторинга: создание определения трубопровода в YAML или через визуальный редактор. Есть Плюсы и минусы к каждому Отказ Я выбрал подход YAML, чтобы я мог вернять процесс сборки в моем Brew Buddy Reppo Отказ

Если вы готовы катиться в реальном проекте, первый шаг — выбрать исходный репо для ваших трубопроводов, которые могут быть репо в Github или Azure Repos.

Следующим шагом является выбор репозитория, а затем выберите конфигурацию стартера. Здесь есть тонна вариантов, поэтому вы должны найти то, что работает с тем, что вы строите.

Поскольку я создаю проект прошивки, вы можете подумать, что выбрал C/C ++ с вариантом GCC. Не так! Хотя я мог это сделать, я хотел сделать облачные сборки с на основе NPM Частица CLI , что означает, что мне не нужно устанавливать локальный инструментарий GCC даже в моей среде сборки. Вместо этого я выбрал вариант Node.js, который дал мне приятный предварительно сконфигурированный файл YAML, готов к настройке.

3. Установка триггеров и определяет бассейн VM

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

trigger:
- master
- feature/*

pool:
  vmImage: 'macOS-10.13'

По умолчанию сборки будут вызвать на всех ветвях. Я немного изменил это, чтобы построить на обоих Мастер и любой Функция/ Ветви, которые я создаю.

Для VM-бассейна я строю с Macos Потому что это близко отражает мою среду развития. Частица CLI поддерживается через Windows, Mac и Linux, поэтому мне не нужно было это менять, но я не мог устоять. Мы живем в мире, где Microsoft предоставляет автоматические услуги сборки на MacOS в Azure. Какое время быть живым.

4. Используйте шаги для облегчения установки зависимости, сборки и более

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

Установить Node.js.

Во-первых, мне нужно установить Node.js. Шаблон включает в себя эту задачу, но я настраивал его, чтобы включить Node.js 9.x.

- task: NodeTool@0
  inputs:
    versionSpec: '9.x'
  displayName: 'Install Node.js'

Установите частицу CLI

С помощью Node.js (и NPM) установлен следующий шаг для глобальной установки частицы CLI.

- script: |
    npm install -g particle-cli
  displayName: 'Install the Particle CLI'

Войти в частицу CLI

Частица CLI может выполнять облачные прошивки, но нужно войти в свою Учетная запись частиц Для того, чтобы использовать эту функцию. У меня есть учетная запись и учетные данные, которые могут быть использованы трубопроводом для этой работы, но я хотел указать эти учетные данные безопасным способом (в отличие от совершения моего имени пользователя и пароля для источника). К счастью, лазурные трубопроводы обеспечивают поддержку переменных через библиотеку для каждого трубопровода. Я создал группу под названием частицы - секреты и добавил Частица_Усение и Частицы_password переменные с соответствующими полномочиями.

Чтобы использовать вариабельные группы, я могу ссылаться на группу в верхней части моего YAML.

variables:
- group: particle-secrets

Что позволяет мне ссылаться на эти переменные в Вход частицы команда.

- script: |
    particle login --username $(PARTICLE_USERNAME) --password $(PARTICLE_PASSWORD)
  displayName: 'Login to Particle CLI'

Создайте бинар прошивки, используя частицу CLI

После входа в систему я могу использовать Компиляция частиц Команда для создания бинарного нацеления, которые нацеливаются на частиц аргона и версии 0.9.0 из прошивки ОС устройства.

- script: |
    particle compile argon --target 0.9.0 brew-buddy-firmware --saveTo brewBuddy.argon.bin
  displayName: 'Build Firmware'

Скопируйте бинар прошивки в порядок

С двоичным в руке я скопирую .bin Файл в постановку напрямую. Это позволяет мне подобрать двоичный доступ для последней задачи.

- task: CopyFiles@2
  inputs:
    sourceFolder: '$(Build.SourcesDirectory)'
    contents: 'brewBuddy.argon.bin'
    targetFolder: '$(Build.ArtifactStagingDirectory)'

5. Создайте выпуск GitHub при объединении к мастеру

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

Я делаю все свое развитие в Функция/ Отрасли, и хотя я хочу постоянно бегать строить, я хочу выпустить новую прошивку, когда функциональная ветвь объединяется на мастера. Используя Состояние Заявление, я могу указать, что я хочу только запустить задачу выпуска, если все предыдущие шаги прошли успешно, а ветвь источника является мастером.

# GitHub Release
- task: GithubRelease@0 
  condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
  displayName: 'Create GitHub Release'      
  inputs:
    gitHubConnection: bsatromBB
    repositoryName: bsatrom/brew-buddy
    tagSource: manual
    tag: $(Build.BuildNumber) 
    assets: $(Build.ArtifactStagingDirectory)/*.bin

Как часть этой последней задачи, Активы Вход будет захватывать мою прошивку двоичной программы и включать его как часть выпуска.

6. Запустите трубопровод!

С помощью трубопровода на месте следующий шаг его запустить его, что вы можете сделать через регистрацию заезда или вызвать вручную в портале DEVOPS. После нескольких (десятков) твиков я был рад видеть ряды и ряды зеленых в моих сборках.

И каждый PR, объединенный в Master, приводит к новому выпуску с автоматически сгенерированным списком изменений и блестящим новым двоичным.

Мой полный трубопровод YAML доступен в Brew Buddy Github Repo

Что дальше?

Мой опыт работы с лазурными трубопроводами до сих пор было гладким. У меня было несколько подходящих и запускаются с создания групп переменной и получают задачу выпуска GitHub, но не более, чем можно ожидать при использовании нового, незнакомого сервиса. Я бегал вышеуказанный трубопровод на пару недель, и это было отличное дополнение к моему рабочему процессу.

Конечно, как постоянный Tinkerer, я хочу сделать гораздо больше. Теперь, когда я создал автоматическую прошивку, зачем не использовать частицу CLI, чтобы сделать обновление прошивки в воздухе (OTA) на выделенное устройство? После этого почему не запустите автоматические интеграционные тесты, используя Переменные частиц, функции и пабы/под примитивы ?

Если все пойдет хорошо, я проверю другой пост на этом этапе проекта за несколько недель.

Или, может быть, я буду отвлекаться чем-то другим.

Чтобы следить за моим прогрессом на проектах Brewbuddy и другие проекты IoT на основе частиц, обязательно Следуй за мной по дерганию И присоединяйтесь ко мне для живого потокового веселья по понедельникам и четвергам!

BSATROM/Brew-Buctdy

Проекты оборудования, прошивки и программные программы для проекта Brew Buddy

Источник для проекта Brewbuddy. Содержит источники для доски аппаратного обеспечения/макета, прошивки и 3D печатный корпус.

Оригинал: «https://dev.to/bsatrom/building-iot-firmware-with-azure-pipelines-and-particle-2m30»