Перейти к содержимому

Выпуск версий

Для опытных

Превратите проверенную сборку в версию. Эта страница — для мейнтейнеров.

  • Все проверки из раздела Тестирование проходят, включая полный сквозной прогон, долгие прогоны и прогоны со сбоями.
  • В CHANGELOG.md есть новая версия.
  • Для скриптов выпуска установлен Python 3.
  1. Напишите releases/notes-<version>.toml, например releases/notes-1.0.0.toml. См. Файл заметок к версии.

  2. Проверьте его:

    Terminal window
    python deploy/release/notes.py 1.0.0 --check

    Ошибок быть не должно. Запрещённое слово, длинное тире, дата, разговоры о запуске или issue, повторённый в главных пунктах, дают выход с кодом 1.

  3. Соберите тексты версии:

    Terminal window
    python deploy/release/notes.py 1.0.0

    В releases/out/1.0.0/ появятся 7 файлов.

  4. Соберите образ и запустите его на чистой папке конфигурации:

    Terminal window
    docker build --file deploy/Dockerfile .

    Вы увидите мастер первого запуска.

  5. Запустите все проверки из раздела Тестирование на своём компьютере. Тесты выполняются локально, а не на GitHub.

  6. Передайте версию мейнтейнеру. Мейнтейнер отправляет тег версии в main, и это запускает выпуск.

Что Имя
Git-тег (его отправляет мейнтейнер) 1.0.0 (просто числа, без v)
Тег образа и version в заметках 1.0.0

Workflow запускается только для тега вида X.Y.Z и останавливается, если тег отличается от файла VERSION.

Каждая версия отправляет свой тег версии и :latest.

  1. Отправьте следующую версию с исправлением.
  2. Отметьте неудачную версию в списке обновлений, чтобы установленные копии её не предлагали.
  3. Тег оставьте.

Признак проблемы. 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 запускается, когда отправлен тег версии. В нём три шага:

  1. Собрать и отправить образ для linux/amd64, linux/arm64 и linux/arm/v7 с тегом версии и latest.
  2. Обновить описание на Docker Hub из README.md.
  3. Опубликовать релиз на GitHub с разделом этой версии из CHANGELOG.md.
Список обновлений

Приложение читает подписанный список обновлений. Каждая версия добавляет в него свою запись и подписывает её. Ключ подписи никогда не попадает в репозиторий. HolyArrs отвергает список, который не может проверить.

После выпуска проверьте, что метка версии у образа совпадает с тегом, и в первый день следите за новыми issues:

Terminal window
docker inspect --format '{{ index .Config.Labels "org.opencontainers.image.version" }}' holyarrs
Тестовый шаблон для Unraid

deploy/release/nas-template.py записывает пользовательский шаблон Unraid для одного конкретного образа. Он ничего не скачивает, не устанавливает и не публикует.

Terminal window
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, станьте спонсором или угостите меня кофе.