الإصدارات وقناة ما قبل الإصدار
كيف تُصدر Turbo EA إصداراتها وتضع وسومها وتنشر صور الحاويات. هذه الصفحة هي المرجع للمشغّلين الذين يحتاجون إلى تثبيت الإصدارات في الإنتاج وللمساهمين الذين يقطعون الإصدارات.
وضع الإصدارات
تتّبع Turbo EA الإصدارات الدلالية. المصدر الوحيد للحقيقة للإصدار الحالي هو ملف /VERSION في جذر المستودع.
- التصحيح (مثل
1.0.0←1.0.1): إصلاحات أخطاء فقط. آمن دائمًا للترقية. - الفرعي (مثل
1.0.0←1.1.0): ميزات جديدة. متوافق رجعيًا وفق سياسة التوافق. - الرئيسي (مثل
1.x←2.0.0): تغييرات كاسرة. تأتي ملاحظات الترحيل مع الإصدار.
يُرفع الإصدار مرة واحدة لكل PR، لا لكل commit. يستخدم إدخال CHANGELOG في الـ PR الإصدار الجديد كعنوان؛ ويُفشل version-check.yml في CI أي PR يرفع VERSION دون عنوان ## [<version>] مطابق في CHANGELOG.md.
وسوم صور الحاويات
كل دفع إلى main وكل وسم v*.*.* يُشغّل .github/workflows/docker-publish.yml، الذي يبني ويدفع صورًا متعددة المعماريات (amd64 + arm64) إلى GHCR.
لوسم إصدار مثل v1.2.3، الوسوم المنشورة على كل صورة هي:
| الوسم | يشير إلى | مستقر؟ |
|---|---|---|
1.2.3 | ذلك الإصدار بالضبط | نعم — ثبّت هذا في الإنتاج |
1.2 | أحدث تصحيح على 1.2.x | يتدحرج إلى الأمام على التصحيحات |
1 | أحدث فرعي على 1.x | يتدحرج إلى الأمام على الفرعيات |
latest | أحدث إصدار ليس ما قبل إصدار | يتدحرج إلى الأمام على كل إصدار |
sha-<short> | الـ commit بالضبط | نعم — تصحيح الأخطاء / ما قبل الإصدار |
بالنسبة للدفعات إلى main (دون وسم)، يُنتَج فقط وسما main وsha-<short> — لا latest أبدًا، ولا أي وسم semver.
تُوقَّع جميع بيانات صور الحاويات المنشورة بـ cosign keyless OIDC. تفاصيل التحقق وSBOM في سلسلة التوريد.
قناة ما قبل الإصدار
بالنسبة للإصدارات الفرعية التي تغيّر تخطيط الحاوية، أو الصور الأساسية، أو معرّفات UID الافتراضية، أو أسماء وحدات التخزين، أو المنافذ الافتراضية، أو المخطط بطريقة تتطلّب إجراءً من المشغّل، يُقطع مرشّح إصدار قبل الوسم النهائي.
الأعراف:
- وسوم RC هي
vX.Y.0-rc.N— لا تكون أبدًا على إصدار تصحيح، فقط على الإصدارات الفرعية ذات التغييرات المرئية للمشغّل. - يُهيَّأ
docker/metadata-actionفي سير عمل النشر بـflavor: latest=auto. هذا يستبعد تلقائيًا وسوم ما قبل الإصدار من نوع semver من:latestو:X.Yو:X— تُنشر مرشّحات RC فقط كـ:X.Y.0-rc.N. المشغّلون الذين يثبّتون على:latestلن يسحبوا RC بالخطأ. - ينبغي تعليم إصدار GitHub لوسم RC كـ ما قبل إصدار في صفحة الإصدارات. سير عمل
github-release.ymlالحالي ينشئ دائمًا إصدارًا ليس ما قبل إصدار؛ يقلب المسؤول مفتاح ما قبل الإصدار يدويًا بعد تشغيل سير العمل (أو يحرّر الإصدار عبرgh release edit vX.Y.0-rc.N --prerelease).
وقت النضج:
- يبقى RC منشورًا لمدة 48–72 ساعة على الأقل قبل الترقية، أو حتى يبلّغ مشغّل واحد على الأقل خارج المسؤول عن ترقية ناجحة — أيهما أطول.
- تُشحن تقارير الأخطاء ضد RC كـ
vX.Y.0-rc.N+1إذا كانت المشكلة تستحق الإصلاح. يُترك RC السابق في GHCR لقابلية إعادة الإنتاج.
الترقية إلى النهائي:
- يُنشأ الوسم النهائي
vX.Y.0على نفس الـ commit الخاص بآخر RC. يعيد سير عمل النشر بناء وإعادة وسم الصور متعددة المعماريات؛ سيختلف الـ digest عن RC رغم تطابق المصدر (مدخلات البناء تتضمّن طوابع زمنية). - تنتقل وسوم
:X.Yو:Xو:latestللإشارة إلى الإصدار النهائي عند هذه النقطة.