Конфигурирование PL с помощью Makefile — различия между версиями
Ippolitov (обсуждение | вклад) |
Ippolitov (обсуждение | вклад) |
||
Строка 82: | Строка 82: | ||
[[File:2021_09_27_token_err.png|800px]] | [[File:2021_09_27_token_err.png|800px]] | ||
+ | |||
+ | [[Category:HOWTO]] |
Версия 15:44, 27 сентября 2021
Makefile проекта src содержит в себе цель cd_pl, задача которой найти последний успешно собранный bit-файл прошивки ПЛИС для заданной ветки с заданной стратегией сборки и прошить плату.
Содержание |
Как это работает?
Gitlab сервер содержит в себе сервис CI/CD, в котором назначены job'ы сборки прошивки ПЛИС при получении нового коммита и/или по расписанию. На сегодняшний день таких job'ов существует два:
- is_PL_compilable - стратегия сборки прошивки с минимальным количеством модулей ("напопробовать").
- is_PL_compilable_max - стратегия сборки прошивки с некоторым рабочим количеством модулей ("ничетак")
В результате успешного выполнения job'а формируются артефакты (artifacts), в которых, в частности, лежит bit-файл прошивки ПЛИС.
Получение артефактов возможно при помощи Gitlab API, доступ к которому осуществляется по токену.
Итого, для успешного выполнения задачи проводятся следущие действия:
- Получение списка последних job'ов.
- Поиск последнего успешного job'а.
- Скачивание артефактов.
- Распаковка архива и копирование bit-файла на плату.
- Прошивка ПЛИС
С чего начать?
Прежде всего необходимо получить токен Gitlab API. Для этого заходим на вебморду Gitlab, далее "User Settings(Preferences)" -> "Access Tokens".
- Даем имя токену и срок его действия.
- Нажимаем на кнопку "Создать токен".
- Копируем токен куда-нибудь, в вебморде он больше отображаться не будет.
- Вставляем токен в personal.conf (токен имеет вид ряда случайных символов, например eB8raLLzs-LqS-qXmRxU)
Готово!
Синтаксис
В общем случае:
Если аргументы не указаны, то выбираются параметры по умолчанию:
BRANCH ?= develop
PLARTIFACTSDIR ?= /tmp/develop_artifacts
PLARTIFACTSFILE ?= artifacts.zip
PLARTIFACTBITFILEPATH ?= qa/built
PLARTIFACTBITFILE ?= clonicus.bit
Примеры использования
Прошиваться будет тот девайс, который указан в personal.conf!
- Хочу битник с кучей каналов из девелопа.
- Хочу битник с кучей каналов из ветки test.
- Хочу битник напопробовать из ветки test.
Выводимая информация
При успешном выполнении отобразиться информация о коммите, из которого сварена прошивка, статус копирования на плату и т.п.
Возможные проблемы
- Работа указанной фичи основана на python-скрипте с стандартным пакетом модулей, проверено на python 3.8, 3.9.
- Если поднимать древнюю ветку, то возможно не найти job, т.к. в скрипте qa/getartifacts.py список job'ов (всех, в т.ч. не для PL) ограничен последними 5000 job'ами:
Поправить можно в этом месте (qa/getartifacts.py) увеличив max_pagenum:
- Некорректный токен: