رفتن به محتوا

انتشار نسخه

حرفه‌ای

یک بیلد آزمایش‌شده را به یک نسخهٔ منتشرشده تبدیل کنید. این صفحه برای نگه‌دارندگان است.

  • همهٔ بررسی‌های آزمایش می‌گذرند، از جمله یک اجرای کامل end-to-end و اجراهای طولانی و fault.
  • 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

    نباید هیچ خطایی ببینید. یک کلمهٔ ممنوع، em dash، تاریخ، حرف از لانچ یا یک highlight تکراری باعث می‌شود با کد 1 خارج شود.

  3. متن‌های نسخه را بسازید:

    Terminal window
    python deploy/release/notes.py 1.0.0

    باید 7 فایل در releases/out/1.0.0/ ببینید.

  4. ایمیج را بسازید و روی یک پوشهٔ پیکربندی تازه شروع کنید:

    Terminal window
    docker build --file deploy/Dockerfile .

    باید ویزارد اولین اجرا را ببینید.

  5. همهٔ بررسی‌های آزمایش را روی رایانهٔ خودتان اجرا کنید. آزمایش‌ها محلی اجرا می‌شوند، نه روی GitHub.

  6. شمارهٔ نسخه را به نگه‌دارنده بدهید. نگه‌دارنده tag نسخه را روی main push می‌کند و همین انتشار را شروع می‌کند.

چیز نام
tag در git (را نگه‌دارنده push می‌کند) 1.0.0 (عدد ساده، بدون v)
tag ایمیج و version در یادداشت‌ها 1.0.0

workflow فقط برای tag به شکل X.Y.Z شروع می‌شود و وقتی tag با فایل VERSION فرق دارد متوقف می‌شود.

هر نسخه tag نسخهٔ خودش و :latest را push می‌کند.

یک نسخه را پس بگیرید

پیوند به یک نسخه را پس بگیرید
  1. نسخهٔ بعدی را همراه با رفع مشکل push کنید.
  2. نسخهٔ بد را در فهرست به‌روزرسانی علامت بزنید تا نصب‌ها آن را پیشنهاد ندهند.
  3. tag را نگه دارید.

نشانه. notes.py --check با کد 1 خارج می‌شود. علت. فایل یادداشت‌ها یک قانون را شکسته است. پیام نام خط را می‌گوید. راه‌حل. فایل یادداشت‌ها را ویرایش کنید، نه فایل‌های releases/out را، و دوباره اجرا کنید.

نشانه. workflow با VERSION says متوقف می‌شود. علت. tag و فایل VERSION فرق دارند. راه‌حل. VERSION را روی main درست کنید و tag نسخهٔ بعدی را push کنید.

فایل یادداشت‌های نسخه

هر متن نسخه از یک فایل ساخته می‌شود. آنچه را می‌سازد هرگز با دست ویرایش نکنید.

فیلد محتوا
version X.Y.Z ساده
theme یک خط
images فهرست {registry, name}. فقط Docker Hub به نام holyarrs/holyarrs
docs_url اختیاری. خالی یعنی پیوند Docs نباشد
[[highlights]] دقیقاً 3 تا، هر کدام با line، issues و shot. issueهای آن‌ها در هیچ خط گروهی نمی‌آیند
[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 ورودی changelog
github.md متن نسخه در GitHub
update-notes.json یادداشت‌هایی که برنامه نشان می‌دهد
reddit.txt پست Reddit
discord-dm.txt، discord-announce.md Discord. هر کدام زیر 1,000 نویسه می‌ماند
roadmap-card.json کارت نقشهٔ راه

notes.py این گزینه‌ها را می‌گیرد: --file (فایل یادداشت دیگر)، --map (نقشهٔ credits دیگر)، --out (پوشهٔ خروجی دیگر) و --date. --check دربارهٔ خط‌های بلند و تکرارهای نزدیک هشدار می‌دهد.

workflow ایمیج

workflow به نام HolyArrs - Release وقتی tag نسخه push شود شروع می‌شود. سه مرحله دارد:

  1. ایمیج را برای linux/amd64، linux/arm64 و linux/arm/v7 بسازید و با tag نسخه و latest push کنید.
  2. توضیحات Docker Hub را از README.md به‌روز کنید.
  3. نسخهٔ GitHub را با بخش همین نسخه از CHANGELOG.md منتشر کنید.
فهرست به‌روزرسانی

برنامه یک فهرست به‌روزرسانی امضاشده را می‌خواند. هر نسخه ورودی خودش را اضافه و امضا می‌کند. کلید امضا هرگز در ریپو نمی‌آید. HolyArrs فهرستی را که نتواند تأیید کند رد می‌کند.

بعد از انتشار، بررسی کنید برچسب نسخهٔ ایمیج با tag یکی باشد، و روز اول issueهای جدید را زیر نظر داشته باشید:

Terminal window
docker inspect --format '{{ index .Config.Labels "org.opencontainers.image.version" }}' holyarrs
قالب آزمایشی Unraid

deploy/release/nas-template.py یک قالب کاربری Unraid برای یک ایمیج دقیق می‌نویسد. چیزی pull، نصب یا منتشر نمی‌کند.

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 digest مانیفست registry، نه شناسهٔ ایمیج Docker
--config مسیر یک pool. ابزار /mnt/user و /mnt/user0 را رد می‌کند
--movies، --tv، --music، --downloads اختیاری. مسیرهای جدا، mountهای جدا هستند، پس وارد کردن کپی می‌کند
--port پیش‌فرض 6262 است
--allowed-hosts اختیاری، نام میزبان‌ها با کاما جدا می‌شوند
--output فایل XML که نوشته می‌شود

قالب PUID=99، PGID=100 و UMASK=022 را تنظیم می‌کند. به آن حساب دسترسی نوشتن روی رسانهٔ آزمایشی بدهید. فایل را در /boot/config/plugins/dockerMan/templates-user/ بگذارید و آن را در Docker > Add Container > Template (افزودن کانتینر > قالب) انتخاب کنید.

HolyArrs رایگان است. اگر در وقتتان صرفه‌جویی کرد، در GitHub به آن ستاره بدهید، حمایت مالی کنید یا برای من یک قهوه بخرید.