تخطَّ إلى المحتوى

نشر الإصدارات

خبير

حوّل نسخة بناء مختبَرة إلى إصدار من التطبيق. هذه الصفحة للقائمين على المشروع.

  • كل فحص في الاختبار ينجح، ومنها تشغيل كامل للاختبارات الشاملة (end-to-end) والتشغيلات الطويلة وتشغيلات الأعطال.
  • الملف 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

    سترى أنه لا توجد أخطاء. كلمة محظورة، أو شرطة طويلة، أو تاريخ، أو كلام عن الإطلاق، أو بلاغ مكرّر في أبرز النقاط: كل ذلك يُنهي الأمر بالرمز 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. سلّم الإصدار إلى القائم على المشروع. هو من يدفع وسم الإصدار على 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 اختياري. إذا كان فارغًا فلا رابط Docs
[[highlights]] 3 بالضبط، ولكل واحد line وissues وshot. بلاغاتها لا تظهر في أي سطر من سطور المجموعات
[groups] سطور لكل موضع. New هو الافتراضي. وغيره يبدأ بـ Changed: أو Fixed: أو Docs: . وكل سطر ينتهي ببلاغه، مثل (#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. كل واحد يبقى دون 1,000 حرف
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 أي قائمة لا يستطيع التحقق منها.

بعد النشر، تأكد من أن ملصق الإصدار في الصورة يطابق الوسم، وراقب البلاغات الجديدة في اليوم الأول:

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 بصمة البيان (manifest digest) في السجل، لا معرّف صورة Docker
--config مسار على pool. ترفض الأداة /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 (إضافة حاوية من قالب).

HolyArrs مجاني. إذا وفّر عليك وقتًا، امنحه نجمة على GitHub أو ادعمه ماليًا أو ادعُني إلى فنجان قهوة.