Выпуск версий
Для опытных
Превратите проверенную сборку в версию. Эта страница — для мейнтейнеров.
Перед началом
Ссылка на «Перед началом»- Все проверки из раздела Тестирование проходят, включая полный сквозной прогон, долгие прогоны и прогоны со сбоями.
- В
CHANGELOG.mdесть новая версия. - Для скриптов выпуска установлен Python 3.
Подготовьте версию
Ссылка на «Подготовьте версию»-
Напишите
releases/notes-<version>.toml, напримерreleases/notes-1.0.0.toml. См. Файл заметок к версии. -
Проверьте его:
Terminal window python deploy/release/notes.py 1.0.0 --checkОшибок быть не должно. Запрещённое слово, длинное тире, дата, разговоры о запуске или issue, повторённый в главных пунктах, дают выход с кодом 1.
-
Соберите тексты версии:
Terminal window python deploy/release/notes.py 1.0.0В
releases/out/1.0.0/появятся 7 файлов. -
Соберите образ и запустите его на чистой папке конфигурации:
Terminal window docker build --file deploy/Dockerfile .Вы увидите мастер первого запуска.
-
Запустите все проверки из раздела Тестирование на своём компьютере. Тесты выполняются локально, а не на GitHub.
-
Передайте версию мейнтейнеру. Мейнтейнер отправляет тег версии в main, и это запускает выпуск.
Варианты выбора
Ссылка на «Варианты выбора»Имена версий и тегов
Ссылка на «Имена версий и тегов»| Что | Имя |
|---|---|
| Git-тег (его отправляет мейнтейнер) | 1.0.0 (просто числа, без v) |
Тег образа и version в заметках |
1.0.0 |
Workflow запускается только для тега вида X.Y.Z и останавливается, если тег отличается от файла VERSION.
Теги образа
Ссылка на «Теги образа»Каждая версия отправляет свой тег версии и :latest.
Отзовите версию
Ссылка на «Отзовите версию»- Отправьте следующую версию с исправлением.
- Отметьте неудачную версию в списке обновлений, чтобы установленные копии её не предлагали.
- Тег оставьте.
Если не работает
Ссылка на «Если не работает»Признак проблемы. notes.py --check завершается с кодом 1.
Причина. Файл заметок нарушает правило. В сообщении названа строка.
Решение. Исправьте файл заметок, но никогда не файлы в releases/out, и запустите снова.
Признак проблемы. Workflow останавливается с сообщением VERSION says.
Причина. Тег и файл VERSION различаются.
Решение. Исправьте VERSION в main и отправьте тег следующей версии.
Для опытных
Ссылка на «Для опытных»Файл заметок к версии
Все тексты версии получаются из одного файла. Никогда не правьте вручную то, что он собирает.
| Поле | Содержимое |
|---|---|
version |
Просто X.Y.Z |
theme |
Одна строка |
images |
Список из {registry, name}. Только Docker Hub, holyarrs/holyarrs |
docs_url |
Необязательно. Пустое значение — ссылки Docs не будет |
[[highlights]] |
Ровно 3, у каждого line, issues и shot. Их issues не появляются ни в одной строке групп |
[groups] |
Строки по местам. По умолчанию строка считается New. Остальные начинаются с Changed: , Fixed: или Docs: . Каждая заканчивается своим issue, например (#46). Место, где меньше 3 строк, уходит в Also new |
| Необязательные | [before_you_update] (breaking, manual_steps, backup, rollback), security, known_issues, credits, [stats]. Пустые части скрываются |
Указывайте логин GitHub, только когда он известен: в файле заметок или в releases/credits-map.json.
Порядок в тексте: тема, Highlights, места (Requests, Library, Downloads, Indexers, Accounts, Health, Setup, Install), Also new, Security, Known issues, Before you update, Image, Thanks, строка статистики.
Файл в releases/out/<version>/ |
Для чего |
|---|---|
changelog.md |
Запись в журнале изменений |
github.md |
Текст релиза на GitHub |
update-notes.json |
Заметки, которые показывает приложение |
reddit.txt |
Пост на Reddit |
discord-dm.txt, discord-announce.md |
Discord. Каждый короче 1000 символов |
roadmap-card.json |
Карточка дорожной карты |
notes.py принимает --file (другой файл заметок), --map (другая карта авторов), --out (другая папка вывода) и --date. --check предупреждает о длинных строках и почти повторах.
Workflow образа
Workflow HolyArrs - Release запускается, когда отправлен тег версии. В нём три шага:
- Собрать и отправить образ для
linux/amd64,linux/arm64иlinux/arm/v7с тегом версии иlatest. - Обновить описание на Docker Hub из
README.md. - Опубликовать релиз на GitHub с разделом этой версии из
CHANGELOG.md.
Список обновлений
Приложение читает подписанный список обновлений. Каждая версия добавляет в него свою запись и подписывает её. Ключ подписи никогда не попадает в репозиторий. HolyArrs отвергает список, который не может проверить.
После выпуска проверьте, что метка версии у образа совпадает с тегом, и в первый день следите за новыми issues:
docker inspect --format '{{ index .Config.Labels "org.opencontainers.image.version" }}' holyarrsТестовый шаблон для Unraid
deploy/release/nas-template.py записывает пользовательский шаблон Unraid для одного конкретного образа. Он ничего не скачивает, не устанавливает и не публикует.
python deploy/release/nas-template.py --image 'holyarrs/holyarrs@sha256:<digest>' --config '/mnt/<pool>/appdata/holyarrs-test' --movies /mnt/user/holyarrs-test-data/movies --downloads /mnt/user/holyarrs-test-data/downloads --port 6262 --output holyarrs-test.xmlЗамените <digest> и <pool>.
| Флаг | Примечания |
|---|---|
--image |
Дайджест манифеста из реестра, а не ID образа Docker |
--config |
Путь на пуле. Инструмент не принимает /mnt/user и /mnt/user0 |
--movies, --tv, --music, --downloads |
Необязательно. Отдельные пути — это отдельные точки монтирования, поэтому при импорте файлы копируются |
--port |
По умолчанию 6262 |
--allowed-hosts |
Необязательно, имена хостов через запятую |
--output |
XML-файл, который будет записан |
Шаблон задаёт PUID=99, PGID=100 и UMASK=022. Дайте этой учётной записи права на запись в тестовые медиафайлы. Положите файл в /boot/config/plugins/dockerMan/templates-user/ и выберите его в Docker > Add Container > Template (Docker > добавить контейнер > шаблон).
См. также
Ссылка на «См. также»HolyArrs бесплатен. Если он сэкономил вам время, поставьте звезду на GitHub, станьте спонсором или угостите меня кофе.