Перейти до вмісту

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

Для досвідчених

Перетвори перевірену збірку на версію. Ця сторінка для мейнтейнерів.

  • Усі перевірки зі сторінки Тестування проходять, зокрема повний наскрізний запуск, а також довгі запуски та запуски зі збоями.
  • У 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

Робочий процес запускається лише для тега виду X.Y.Z і зупиняється, коли тег відрізняється від файлу VERSION.

Кожна версія надсилає свій тег версії і :latest.

  1. Надішли наступну версію з виправленням.
  2. Познач невдалу версію у списку оновлень, щоб установки її не пропонували.
  3. Залиш тег.

Ознака. notes.py --check завершується з кодом 1. Причина. Файл нотаток порушує правило. Повідомлення називає рядок. Рішення. Виправ файл нотаток, а не файли в releases/out, і запусти ще раз.

Ознака. Робочий процес зупиняється з повідомленням VERSION says. Причина. Тег і файл VERSION не збігаються. Рішення. Виправ VERSION у main і надішли тег наступної версії.

Файл нотаток до версії

Кожен текст версії береться з одного файлу. Ніколи не редагуй вручну те, що він збирає.

Поле Вміст
version Просто X.Y.Z
theme Один рядок
images Список {registry, name}. Лише Docker Hub holyarrs/holyarrs
docs_url Необов’язкове. Порожнє означає, що посилання на документацію немає
[[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.

Порядок основної частини: theme, 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 попереджає про довгі рядки та майже повтори.

Робочий процес образу

Робочий процес 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, підтримай проєкт або пригости мене кавою.