فشل إعادة البناء - التجاوز عن قسم "after_assets_precompile" في ملف app.yml

لقد قمت للتو بتشغيل ./launcher rebuild app - لم يتم إجراء أي تغييرات على الملفات المتعلقة بالنظام. أنا الآن عالق على شاشة النقاط الوامضة لـ Discourse.

لقد تحققت من التالي:

  • يعرض docker ps صورة تطبيق Discourse (تبدو طبيعية).
  • يعرض الأمر top نشاطًا (يبدو طبيعيًا).
  • يمكنني عرض حالة Sidekiq (تبدو طبيعية).

لذلك، قمت بإعادة بناء التطبيق مرة أخرى.

نفس النتائج.

حاولت استخدام الوضع الآمن (Safe-mode). تم إيقاف تشغيل كل شيء. لا تغيير. ما زلت أتلقى شاشة النقاط الوامضة.

لقد راجعت كل سطر من الشيفرة المصدرية. أرى أن لدي أربعة ملفات JavaScript غير متوفرة. وهي:

هناك العديد من ملفات JavaScript المفقودة. كانت هذه هي الملفات الأولى التي تم العثور عليها.

المراجعة الأولية:

  • الملفات غير متوفرة عبر شبكة توصيل المحتوى (CDN) الخاصة بي.
  • تسحب شبكة CDN من حاوية S3 الخاصة بي.
  • الملفات ليست في حاوية S3 الخاصة بي حيث يتم تخزين جميع الأصول الأخرى.

بالنظر إلى نتائج إعادة البناء، يمكنني رؤية ما يلي.

  1. تم إنشاء الملفات الأربعة وكتابتها إلى public/assets/ بامتداد ملف .js.
  2. تم ضغط الملفات الأربعة وحفظها بامتداد ملف .br.js.

بالتحقق من الخادم الخاص بي:

  1. جميع ملفات .js الأربعة متوفرة على الخادم الخاص بي.
  2. ملفات .br.js غير متوفرة على الخادم الخاص بي.
  3. ملفات .br.js ليست في حاوية S3 الخاصة بي.

بالمرور عبر نتائج إعادة البناء، يبدو أن نشاط after_assets_precompile لا يحدث في عمليات إعادة البناء الخاصة بي. يمكنني تشغيل rake s3:upload_assets يدويًا، ويتم نقل الأصول إلى S3، وكل شيء يعمل بشكل جيد.

لقد تحققت من التالي:

  1. ملف yml الخاص بي يمر بفحوصات التنسيق الصحيح.

ما الذي يمكنني التحقق منه لتحديد سبب عدم معالجة after_assets_precompile كجزء من إعادة البناء؟

ملاحظة: أنا أقوم بتشغيل: 3.4.0.beta4-dev - 6a50b3d4b4

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

هل أضفت المقطع البرمجي لتحميل الأصول؟

تكوين موفر تخزين كائنات متوافق مع S3 للتحميلات

[اقتباس=“Discourse, post:1, topic:148916”]

التكوين

لتخزين أصول Discourse الثابتة في مساحة التخزين الكائنية الخاصة بك، أضف هذا التكوين في ملف app.yml الخاص بك تحت قسم hooks:

  after_assets_precompile:
    - exec:
        cd: $home
        cmd:
          - sudo -E -u discourse bundle exec rake s3:upload_assets
          - sudo -E -u discourse bundle exec rake s3:expire_missing_assets

[/quote]

يمكنك العثور على مهمة rake تلك هناك ثم تشغيلها من داخل الحاوية (لتوفير وقت إعادة البناء). ثم قم بإعادة بناء بمجرد تحرير ملف yml الخاص بك.

لقد تم تشغيل S3 وتشغيله على الموقع لمدة 43 يومًا. تم وضع أوامر rake هناك كجزء من تثبيت S3.

تمت إعادة بناء الموقع 30 مرة على الأقل. لقد أضفت مكونات وإضافات إضافية على طول الطريق. هذا يشير إلى أنه تم إضافة ملفات .js وملؤها في حاوية S3.

لقد كان مكون S3 يعمل بشكل رائع. هذه هي المرة الأولى التي أواجه فيها أي مشاكل مع عدم ترحيل الملفات إلى S3.

ما الذي يمكنني التحقيق فيه لفهم سبب عدم نقل الملفات؟

هل يعرف أي شخص ما الذي يمكن أن يتسبب في عدم تشغيل after_assets_precompile؟

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

مساعدة!

عند إعادة البناء، تتخطى العملية القسم التالي في ملف app.yml:

after_assets_precompile:
  - exec:
      cd: $home
      cmd:
        - sudo -E -u discourse bundle exec rake s3:upload_assets
        - sudo -E -u discourse bundle exec rake s3:expire_missing_assets

مباشرة بعد إعادة البناء، يمكنني معالجة الأوامر يدويًا عبر:

./launcher enter app
rake s3:upload_assets
rake s3:expire_missing_assets

تعمل الأوامر وتعالج الملفات المطلوبة إلى S3.

لقد أضفت أمر echo إلى رمز after_assets_precompile.

      cmd:
        - echo "Beginning of precompile commands"
        - sudo -E -u discourse bundle exec rake s3:upload_

لم يظهر بيان echo أبدًا في مخرجات إعادة البناء.

تقوم خطوة إعادة البناء بمعالجة الخطوات قبل وبعد هذا القسم في ملف app.yml. تعالج جميع المكونات الإضافية والأوامر المخصصة.

لقد اتخذت الخطوات التالية لمحاولة الحل:

  1. إزالة جميع المكونات الإضافية
  2. تعطيل جميع المكونات
  3. مراجعة جميع ملفات سجل discourse. لم يتم العثور على أي أخطاء.
  4. مراجعة ملفات سجل النظام الأساسي. لم يتم العثور على أي أخطاء.

هل لدى أي شخص فكرة عن سبب تخطي عملية إعادة البناء لهذا القسم؟

كاختبار، قمت بنقل أوامر after_assets_precompile إلى قسم الأوامر المخصصة.

run:
  - exec: echo "Beginning of custom commands"
  ## If you want to set the 'From' email address for your first registration, uncomment and change:
  ## After getting the first signup email, re-comment the line. It only needs to run once.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  ## command to password protect the website during work. remove for production.
  - exec:
      cd: $home
      cmd:
        - echo "Beginning of precompile commands"
        - sudo -E -u discourse bundle exec rake s3:upload_assets
        - sudo -E -u discourse bundle exec rake s3:expire_missing_assets
  - exec: echo "End of custom commands"

نجحت الأوامر دون أي مشاكل. هذا يستبعد مشاكل الوصول البيئي أو الأمان.

تتخطى عملية المشغل (launcher) رمز after_assets_precompile أثناء إعادة البناء.

هل لدى أي شخص فكرة؟

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

لا أعرف، لكنني أعدت البناء قبل حوالي 4 ساعات دون أي مشاكل.

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

ربما لديك خطأ في المسافات البيضاء أو المسافات البادئة في ملف yml الخاص بك. ابحث عن مدقق وتحقق: [التحقق من صحة yaml]

يجب ألا يكون هذا مفتاحًا على المستوى الأعلى، بل يجب أن يكون ضمن hooks، على سبيل المثال:

hooks:
  after_assets_precompile:
    - exec:
        cd: $home
        cmd:
          - sudo -E -u discourse bundle exec rake s3:upload_assets
          - sudo -E -u discourse bundle exec rake s3:expire_missing_assets
3 إعجابات

تم إدراج ذلك في المنشور الأول. تم التحقق من صحة app.yml للمسافات البادئة الصحيحة.

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

@supermathie - أنت رائع ولديك بصر لا يصدق. لقد تمكنت من رؤية أن الكود لم يكن بمسافة بادئة بمقدار مسافتين. وفقط من مقتطف واحد مقابل القسم الأكثر تفصيلاً. شكراً لك.

لقد أضفت المسافتين، وهذا حل المشكلة.

لقد قمت سابقًا بتشغيل app.yml عبر مدقق yml. لم تتمكن أداة الاختبار من إخباري بأن الملف كان سليمًا من الناحية الهيكلية. لم تتمكن من إخباري بأنه كان خاطئًا من الناحية الوظيفية.

يجب أن تكون مقتطفات الكود الصحيحة:

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-adplugin
          - git clone https://github.com/discourse/discourse-affiliate
          - git clone https://github.com/discourse/discourse-subscriptions
          - git clone https://github.com/discourse/discourse-yearly-review
          - git clone https://github.com/discourse/discourse-whos-online
          - git clone https://github.com/discourse/discourse-data-explorer
  # تعيين الملفات الداخلية لشبكة توصيل المحتوى (CDN)
  after_assets_precompile:
    - exec:
        cd: $home
        cmd:
          - echo "Beginning of precompile commands"
          - sudo -E -u discourse bundle exec rake s3:upload_assets
          - sudo -E -u discourse bundle exec rake s3:expire_missing_assets

لتوثيق ملف app.yml. المفاتيح الوحيدة على المستوى الأعلى هي:

  • templates:
  • params:
  • env:
  • volumes:
  • hooks:
  • run:

يجب أن يكون كل شيء آخر بمسافة بادئة.

أبسط الأخطاء يمكن أن تكون الأكثر إحباطًا. لقد ضاعت ست ساعات من حياتي بسبب مسافتين.

مملكتي مقابل مسافتين.

إعجابَين (2)

This happens to me all the time.

My other favorite is editing the wrong file, or the right file on the wrong computer.

إعجابَين (2)

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.