نشر الإصدارات
خبير
حوّل نسخة بناء مختبَرة إلى إصدار من التطبيق. هذه الصفحة للقائمين على المشروع.
قبل أن تبدأ
رابط إلى قبل أن تبدأ- كل فحص في الاختبار ينجح، ومنها تشغيل كامل للاختبارات الشاملة (end-to-end) والتشغيلات الطويلة وتشغيلات الأعطال.
- الملف
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سترى أنه لا توجد أخطاء. كلمة محظورة، أو شرطة طويلة، أو تاريخ، أو كلام عن الإطلاق، أو بلاغ مكرّر في أبرز النقاط: كل ذلك يُنهي الأمر بالرمز 1.
-
ابنِ نصوص الإصدار:
Terminal window python deploy/release/notes.py 1.0.0ستجد 7 ملفات في
releases/out/1.0.0/. -
ابنِ الصورة وشغّلها على مجلد إعدادات جديد:
Terminal window docker build --file deploy/Dockerfile .سترى معالج التشغيل الأول.
-
شغّل كل فحص في الاختبار على جهازك. الاختبارات تعمل محليًا، لا على GitHub.
-
سلّم الإصدار إلى القائم على المشروع. هو من يدفع وسم الإصدار على main، وبذلك يبدأ النشر.
الخيارات
رابط إلى الخياراتأسماء الإصدارات والوسوم
رابط إلى أسماء الإصدارات والوسوم| الشيء | الاسم |
|---|---|
| وسم Git (يدفعه القائم على المشروع) | 1.0.0 (أرقام فقط، بلا حرف v) |
وسم الصورة وحقل version في الملاحظات |
1.0.0 |
يبدأ سير العمل فقط عند وسم بصيغة X.Y.Z، ويتوقف إذا اختلف الوسم عن ملف VERSION.
وسوم الصورة
رابط إلى وسوم الصورةكل إصدار يدفع وسم إصداره و:latest.
اسحب إصدارًا
رابط إلى اسحب إصدارًا- ادفع الإصدار التالي ومعه الإصلاح.
- علّم الإصدار السيئ في قائمة التحديثات حتى لا تعرضه التثبيتات.
- أبقِ الوسم.
إذا لم ينجح الأمر
رابط إلى إذا لم ينجح الأمرالعَرَض. ينتهي 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 عند دفع وسم إصدار. وفيه ثلاث خطوات:
- بناء الصورة ودفعها للمنصات
linux/amd64وlinux/arm64وlinux/arm/v7، مع وسم الإصدار وlatest. - تحديث وصف Docker Hub من
README.md. - نشر الإصدار على GitHub مع قسم هذا الإصدار من
CHANGELOG.md.
قائمة التحديثات
يقرأ التطبيق قائمة تحديثات موقّعة. كل إصدار يضيف مدخله ويوقّعه. مفتاح التوقيع لا يدخل المستودع أبدًا. ويرفض HolyArrs أي قائمة لا يستطيع التحقق منها.
بعد النشر، تأكد من أن ملصق الإصدار في الصورة يطابق الوسم، وراقب البلاغات الجديدة في اليوم الأول:
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 |
بصمة البيان (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 أو ادعمه ماليًا أو ادعُني إلى فنجان قهوة.