-
Notifications
You must be signed in to change notification settings - Fork 62
CI integrated, sketch dependencies files added #3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Привет, в библиотеке и примерах не используется никаких либ, которые не идут в комплекте с Arduino IDE. А так как это ардуино-библиотека, я думаю какие то инструменты для неё излишни и будут только пугать тех кто полезет поковыряться в файлы. |
@GyverLibs Взяв первый-попавшийся скетч: tutorials/processingSerial/from video/serialArdu/serialArdu.ino Lines 17 to 26 in e1a08c9
Чтоб его использовать, нужно установить Никаких дополнительных инструментов для тех, кто хочет "поковыряться" ставить не нужно. В файле Для пользователей не изменится совсем ничего - всё остается как было, только появляется единое место "где смотреть что надо ещё установить" :) |
А, ты уже досюда добрался, я думал что это всё ещё олед) папки туториалс выходят к конкретным урокам на канале, надо чтобы люди руками умели работать, а не чтобы программа сама запускалась и работала)) на мой взгляд |
@GyverLibs Не не, тут же смысл другой) Короче, сейчас просто с каждым скетчем идет файл, в котором написано какие либы нужны для него. А для тебя, как автора скетчей просто возможность видеть - есть ли ошибки в скетчах, и только. Не надо их руками проверять - это делает автоматика) Блин, изначально так много написал, наверное тебя это смутило) просто постарался предугадать возможные вопросы, и сразу на них ответить) |
@GyverLibs Что скажешь?) Вот, кстати, пример того, как выглядит результат работы CI |
Ping @GyverLibs @AlexGyver |
честно вообще нет времени разбираться, могу просто запуллить изменения если новые файлы реально не будут мешать людям изучать примеры |
@GyverLibs @AlexGyver Давай запулим, если что - коммит сможешь ревернуть без проблем Только делай squash commits обязательно (выбери в выпадающем меню кнопки мерджа этих изменений) |
ping @GyverLibs @AlexGyver |
Саша (@AlexGyver, @GyverLibs), привет ещё раз!
Мне (как разработчику) крайне интересно автоматизировать и упорядочивать процессы, в частности - связанные с разработкой. И так как только-только начинаю входить в hardware-тему - наткрулся на этот репоизиторий и стал разбираться в исходниках (чужой труд, да с комментариями - любопытнейшее чтиво, должен признаться!). Но вот при попытках скомпилировать часть примеров натунклся на проблему с зависимостями для скетчей - какие-то либы просто отсутствовали у меня локально, а чтоб понять какие именно - пришлось сперва тратить значительное время. Часть даже после установки нужных библиотек продолжали крашиться на этапе компиляции, из-за обратно-несовместимых изменениях в самих либах (
GyverOLED
).Так как проблема имеет место быть - должно быть и средство её устранения. И решать её стал с помощью GitHub Actions - бесплатный CI (Continuous Integration, штука которая запускает какие-то действия когда ты что-то, например - коммитишь в репозиторий). Если словами попроще, то решил выполнять компиляцию каждого скетча в репозитории в момент, когда кто-то что-то в него коммитит. Если будет закоммиченно что-то, что компилироваться не будет - в PR будет алерт об этом, и на главной страничке репозитория (если "плохие" изменения окажутся в
master
-ветке) бейджик станет красным (вида "tests | failed").В процессе реализвации столнулся с двумя проблемами:
GyverOLED
не ставилась (эту проблему мы совместно решили в Library error LS007 fixed, simple CI integrated GyverLibs/GyverOLED#3)По второй проблеме был задан вопрос в репозитории
arduino/arduino-cli
(arduino/arduino-cli#1321), но что мне ответили "сейчас такой возможности нет, но мы о ней думаем, следите за новостями". Но мне-то нужно это уже сейчас.. Взяв в рукиgolang
я написал приложение arduino-deps-installer (работает как под linux, так и windows), при помощи которого мы как раз-таки получаем эту прекрасную возможность :) Т.е. создаем в директории со скетчем файл в одном из поддеживаемых форматов, и запускаемarduino-deps-installer install --work-dir /path/to/sketch-dir
после чего все указанные в файле зависимости устанавливаются - сложно придумать что-то проще :)Для этого репозитория я выбрал формат описания зависимостей в виде простого текстового файла
requirements.txt
, в котором в виде:Описываем где у нас хранятся необходимые для скетча библиотеки. Мне кажется - это очень просто и довольно интуитивно понятно.
После устранения всех проблем и написал CI сценарий, который:
arduino-lint
После принятия этого PR мы можем быть уверены, что код каждого примера будет:
p.s. Надеюсь, ты найдень этот PR полезным. Если будут какие-то замечания или предложения - озвучивай их, внесу необходимые правки. У меня есть ещё несколько идей по тому, как можно лучше организовать твою работу с
github
и потенциальном проекте с Arduino IoT - но это лучше будет обсудить где-нибудь в телеграме (просто скажи если тебе это интересно - отправлю ссылку на себя тебе на почту). Извини за много букв, но я посчитал должным рассказать поподробнее.