كيفية إعادة تجميع الإضافات وليس إعادة تجميع Discourse؟

كيف يمكن إعادة تجميع الإضافة دون إعادة تجميع Discourse (أي دون التحديث إلى الإصدار الأحدث)؟ أعاني من مشكلة تتمثل في أن تحديثات Discourse متكررة جداً. في كثير من الأحيان، تجعل التحديثات الإضافات غير عاملة. أود إعادة التجميع دون تحديث Discourse. هل هذا ممكن؟

عزيزي @Ed_Bobkov،

يمكنك تحقيق “جوهر” ما تريده بطريقة “غير مدعومة” من خلال بناء Discourse باستخدام (1) صورة Docker الأساسية الخاصة بك لـ Discourse، و (2) قاعدة كود GitHub منقحة لـ Discourse، إذا كنت تعتقد أنك مضطر لذلك تمامًا، بتشغيل نسخة منقحة من كود مصدر Discourse.

لذا، في هذه الحالة، ستحتاج إلى:

راجع هذا السطر في ملف Dockerfile الخاص بـ Discourse:

 git clone https://github.com/discourse/discourse.git &&\

وهذا السطر في برنامج التشغيل:

image="discourse/base:2.0.20200512-1735"

إذا كنت تشغل مستودع Docker خاص، فيمكنك دفع صورة Discourse الأساسية (التي تختارها) إلى مستودعك الخاص، وبالتالي، على سبيل المثال:

image="localhost:5000/base:2.0.20200512-1735"

وبالمثل، إذا قمت بإنشاء نسخة منقحة من Discourse، فيمكنك استخدام هذه النسخة المنقحة في ملف Dockerfile (أعلى)، على سبيل المثال:

 git clone https://github.com/your_git_account/discourse.git &&\

سيساعدك هذا في إدارة كل من صورة Docker الأساسية وكود البناء.

بطبيعة الحال، لا يُنصح بذلك لأنك لن تستفيد من جميع إصلاحات الأخطاء وتحديثات الأمان (والميزات) من Discourse؛ وهذه الطريقة غير مدعومة ولا يُنصح بها.

أتمنى أن يكون هذا مفيدًا لك يا @Ed_Bobkov

ملاحظة: في هذه الطريقة، لا تزال تعيد بناء Discourse؛ ولكنك تتحكم في (1) إصدار صورة Docker الأساسية و (2) كود مستودع GitHub الخاص بـ Discourse؛ وأنت “بمفردك” لأن هذه الطريقة غير مدعومة ولا يُنصح بها على الإطلاق (بحسب علمي).

انظر أيضًا:

شكرًا لك على الإجابة المفصلة جدًا! إنها ليست حلاً بسيطًا. من الغريب عدم وجود أمر لإعادة التجميع دون التحقق من تحديث Discourse.

مرحبًا @Ed_Bobkov

حسنًا، قد يكون هناك بالفعل “طريقة أخرى” لا أعرفها :slight_smile: أنا أترك هذا الأمر للآخرين.

لقد عملت على هذا الأمر لعدة أيام في وقت سابق، وكان هذا “أفضل ما تمكّنت من التوصل إليه” بعد الكثير من “التجربة والخطأ”.

إذا كانت هناك طريقة أسهل، فسأكون سعيدًا جدًا لسماعها؛ لكنها تبدو منطقية إذا كنت تعمل كثيرًا مع Docker.

أولاً، يجب بناء الصورة. يبدأ Discourse بصورة أساسية ثم يعدّلها. وعندما تضيف إضافات جديدة في بيئة الإنتاج (Docker)، تحتاج عادةً إلى إعادة بناء الحاوية. ومن هنا جاء ردي كما هو أعلاه.

هناك الكثير من الأشخاص الأذكياء أكثر مني في موضوع إدارة أنظمة Discourse، لذا ربما يكون لدى شخص آخر فكرة أفضل تتوافق مع ما تبحث عنه.

تحية طيبة!

إذا كان هدفك هو تحديث إضافة فقط دون تحديث إصدار Discourse، فاستخدم ببساطة وحدة تحكم الترقية في Docker Manager من خلال لوحة التحكم عبر الإنترنت واضغط على زر الترقية المناسب للإضافة المحددة، على سبيل المثال:

https://your-site/admin/upgrade

تحذير رقم 1: أعتقد أن هذا سيعمل فقط مع الأصول العامة، مثل الإضافات مفتوحة المصدر. أما الأصول الخاصة التي يتم الوصول إليها عبر مفاتيح النشر المضمنة في سكريبت البناء، فقد تحتاج إلى إعادة بناء المشروع بالكامل.

تحذير رقم 2: يتم نشر العديد من تحديثات الإضافات لإضافة التوافق مع أحدث إصدار من Discourse. في معظم الحالات، من المنطقي ترقية كلا الإصدارين إلى أحدث نسخة، لأن بعض الترقيات قد تكسر التوافق مع الإصدارات الأقدم من Discourse، لكن ذلك يعتمد على ما تقوم به.