التحقق من صحة YML قبل إعادة البناء؟

هذا على تثبيت Discourse مستضاف ذاتيًا على خادم افتراضي خاص مع تثبيت Docker نموذجي.

لقد فعلتها مرة أخرى:
انتظرت تحديثًا “خاليًا من العيوب” لمدة ساعتين إلى v3.4.0.beta2-dev.
ثم أضفت سطرين إلى app.yml وانتظرت ساعتين أخريين لإعادة بناء أخرى.
(لماذا فصل العمليات؟ لأن ضربة مزدوجة ليست جيدة أبدًا إذا كان هناك احتمال للأخطاء.)
ثم وجدت أخطاء وقت التشغيل في السجل لأنني نسيت مسافات في app.yml (لحساب ومفتاح MaxMind).
لذا الليلة أحتاج إلى إجراء إعادة بناء أخرى.

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

  1. هل كان هناك أي حديث عن إجراء تحقق من صحة ملف yml قبل إعادة البناء؟ هذه الميزة البسيطة كانت ستزيل عملية تستغرق وقتًا طويلاً والمشاكل اللاحقة.

  2. هل كان هناك أي حديث عن معالج مسبق يحدد ما إذا كانت إعادة البناء الكامل مطلوبة بعد تغييرات معينة؟

  3. أنا متفاجئ من أن خطأ YAML لم يتم الإبلاغ عنه في السجلات. هل هناك سبب لعدم فحص المجلد الرئيسي .yml وقت التشغيل وربما مجلدات أخرى بحثًا عن أخطاء نحوية؟ … أم أن المسؤولين الأكثر خبرة يقومون بالتحقق من الأخطاء بأنفسهم قبل إعادة البناء؟ :thinking:

أنا أستضيف في Docker لأنني أعتقد أنها “أسهل” منصة إذا/عندما أقوم بتمرير هذا النظام لشخص آخر للصيانة. إذا لم يكن هذا صحيحًا، واخترت ليس فقط “ليس الأسهل” ولكن أيضًا “الأبطأ”، فربما يجب أن أفكر في خيار تثبيت مختلف.

شكرًا!

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

هذا وقت إعادة بناء لطيف جدًا. هل تستخدم جهاز Raspberry Pi أو شيئًا آخر بطيء جدًا؟

عادةً، إذا كانت هناك مشكلة في تكوين ملف YAML، فستتلقى إشعارًا على الفور.

يمكنك التحقق من حجم الملف باستخدام هذا الرمز، ثم يمكنك تحليل ما إذا كانت المشكلة تتعلق بالمساحة

/var/discourse# du -sh /* | sort -h

باستثناء هذين السطرين مع MaxMind. يتم التنفيذ ولكن وظائف تحديد الموقع الجغرافي لا تعمل. لذا فهي ليست خطأ في بناء جملة yml بحد ذاتها، ولكنها لا تزال خطأ :man_shrugging:

إعجاب واحد (1)