كيف يمكنني إعادة بناء Discourse دون تغيير الإصدار؟

أحتاج إلى تحديث إعدادات SMTP في ملف app.yml، لكنني لا أريد تغيير إصدار Discourse.

عند تحديد إصدار عبر وسم الإصدار (version tag)، يفشل إعادة البناء بالخطأ أدناه. أنا حاليًا على الإصدار 2.4.0.beta8.

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && find /var/www/discourse ! -user discourse -exec chown discourse {} \+ failed with return #<Process::Status: pid 336 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"web", "cmd"=>["gem update bundler", "find $home ! -user discourse -exec chown discourse {} \\+"]}
6269af00c2a4671a6fd2cb13a55bd475743205262bae7f483bf468e4dcacbeed
** FAILED TO BOOTSTRAP ** الرجاء التمرير للأعلى والبحث عن رسائل خطأ سابقة، قد يكون هناك أكثر من خطأ.
قد يساعد ./discourse-doctor في تشخيص المشكلة.

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

نعم، الفرق هنا هو أنني أستخدم وسم الإصدار في ملف yml، لكنني أحصل على خطأ عند إعادة البناء.

إذا كنت تحتاج فقط إلى تغيير إعدادات SMTP، يمكنك:

./launcher destroy app 
./launcher start app

حسناً، إذاً سيقوم بقراءة ملف YAML حتى لو لم يتم إعادة البناء، يبدو ذلك جيداً. وبينما سيحل ذلك مشكلتي العاجلة، لا يزال لدي فضول لمعرفة سبب عدم عمل الإصدار.

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

عذرًا، “يرجى التمرير للأعلى والبحث عن رسائل خطأ سابقة، فقد يكون هناك أكثر من خطأ واحد.
قد يساعد ./discourse-doctor في تشخيص المشكلة.”

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

لقد أجريت بعض الاختبارات الإضافية، ويبدو أن أي خلل واجهته لا يظهر في الإصدارين 10 و11، لكنه يظهر في الإصدارات من 4 إلى 9.

لم أستطع العثور إلا على خطأين في السجل، وأعتقد أنهما متوقعان:

2020-02-22 10:42:33.410 UTC [62] postgres@postgres ERROR:  database "discourse" already exists

2020-02-22 10:42:33.533 UTC [73] postgres@discourse ERROR:  role "discourse" already exists

لقد راجعت ملاحظات إصدار الإصدار 10، ولم أجد أي إشارة إلى إصلاح يتعلق بهذه المشكلة.

من الجيد أن المشكلة قد تم إصلاحها، وبفضل حل العمل الذي اقترحته لإعدادات SMTP (سأجربه يوم الاثنين، لا أريد التعديل على خادم الإنتاج خلال عطلة نهاية الأسبوع)، فلا يوجد حاجة ملحة من جهتي، لكن سيكون من الجيد معرفة ما إذا كان هناك خطأ غير معروف لن تلتقطه الاختبارات، وقد يعود إذا تم “إصلاحه” بالصدفة وليس بتغيير موجه. أظن أنني أريد معرفة مدى استقرار دالة الإصدار الذي يمكن توقعه في المستقبل.

هذا هو تصدير المخرجات من تشغيل يستهدف الإصدار v2.4.0.beta9.
dump_disco_version_error.txt (127.5 KB)

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

حسناً. أنا متأكد من أنه كان يعمل من قبل. لقد لاحظت أن بعض الإعدادات الأخرى لم تُنقل إلى ملف الإعدادات. لست متأكداً مما إذا كان ذلك يُعتبر خطأً.

قد يكون السبب أيضًا أنني أستخدم إصدارًا قديمًا، لذا قد يعمل أو لا يعمل في أحدث إصدار. أردت فقط تحديث النتائج التي توصلت إليها.

كان لدي سبب للعودة إلى هذا، يبدو لي أن الإصدار يعمل مع الفروع، لكن ليس مع الوسوم. أفترض أن السبب هو أن المشغل لا يجلب جميع الوسوم أولاً، لكنني لا أعرف. هل هناك طريقة لتعديل نصوص المشغل؟

أخيرًا اكتشفت ما الذي يذهب خطأ: مستودع discourse_docker ومستودع discourse يعتمدان على بعضهما البعض، لذا يمكن تثبيت إصدار محدد من discourse فقط باستخدام إصدار محدد من مستودع discourse_docker. للأسف، لا توجد وسوم (tags) في مستودع discourse_docker، لذا فإن معرفة أي SHA يجب استخدامه لتثبيت إصدار معين ليس أمرًا سهلاً. من الجيد على الأقل الحصول على بعض الإغلاق. سأبدأ في تدوين ملاحظات حول هذا الأمر للتثبيتات التي سأقوم بها في المستقبل.