مساعدة في نشر إصدارات أقدم من Discourse

يجب أن يكون هناك خطأ هنا، لقد حاولت السحب عن طريق الوسم v3.6.0.beta2 وواجهت الخطأ التالي:

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && sudo -H -E -u discourse bash -c '
  set -o errexit
  git fetch --tags --prune-tags --prune --force origin
  if [[ $(git symbolic-ref --short HEAD) == v3.6.0.beta2 ]] ; then
      git pull
  else
      git -c advice.detachedHead=false checkout v3.6.0.beta2
  fi
' failed with return #<Process::Status: pid 146 exit 128>
Location of failure: /usr/local/lib/ruby/gems/3.4.0/gems/pups-1.4.0/lib/pups/exec_command.rb:138:in `Pups::ExecCommand#spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"code", "cmd"=>["sudo -H -E -u discourse git clean -f", "sudo -H -E -u discourse bash -c '\n  set -o errexit\n  git fetch --tags --prune-tags --prune --force origin\n  if [[ $(git symbolic-ref --short HEAD) == $version ]] ; then\n      git pull\n  else\n      git -c advice.detachedHead=false checkout $version\n  fi\n'", "sudo -H -E -u discourse git config user.discourse-version $version", "mkdir -p tmp", "chown discourse:www-data tmp", "mkdir -p tmp/pids", "mkdir -p tmp/sockets", "touch tmp/.gitkeep", "mkdir -p                    /shared/log/rails", "bash -c \"touch -a           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log\"", "bash -c \"ln    -s           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log $home/log\"", "bash -c \"mkdir -p           /shared/{uploads,backups}\"", "bash -c \"ln    -s           /shared/{uploads,backups} $home/public\"", "bash -c \"mkdir -p           /shared/tmp/{backups,restores}\"", "bash -c \"ln    -s           /shared/tmp/{backups,restores} $home/tmp\"", "chown -R discourse:www-data /shared/log/rails /shared/uploads /shared/backups /shared/tmp", "[ ! -d public/plugins ] || find public/plugins/ -maxdepth 1 -xtype l -delete"]}
bootstrap failed with exit code 128
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
adc8ef45e9ae880827c9294dbbf73dfe9ab413a050c83fe3f4722c2911876ce2

المتغير version يدعم الفروع فقط، وليس الوسوم!

الصحيح هو:

params:
  version: release/2025.11

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

آسف على كل هذا الهراء. لحسن الحظ، وجدت حلاً مقبولاً الآن. شكرًا لكم جميعًا.

أواصل تحديث التأثيرات الأخرى التي أحدثها هذا التعديل:

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

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

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

# إذا قمت بتعديل مستودع الكود المحلي سابقًا، قم أولاً بحفظ التغييرات مؤقتًا
# git stash

# التحديث إلى أحدث إصدار
git pull

# إعادة تطبيق التغييرات المحفوظة مؤقتًا، أو إعادة تحرير ملفات التكوين المقابلة
# git stash pop

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

المقصود هنا بمستودع الكود المحلي هو: https://github.com/discourse/discourse_docker.git

أي مستودع الكود بعد التثبيت القياسي.

أخيرًا، لنقم بخاتمة.

متطلباتنا هي: تثبيت إصدار محدد

  1. تحديث مستودع الكود المحلي https://github.com/discourse/discourse_docker.git
# الدخول إلى جذر المشروع
cd /var/discourse
# التحديث إلى أحدث إصدار
git pull
  1. تعديل الإصدار المطلوب تحديده

تعديل templates/web.template.yml

params:
  version: release/2026.1
  1. إعادة البناء
./launcher rebuild app

بعد إجراء هذا التعديل، تكون خطوات التحديث والترقية المستقبلية هي تحديث مستودع الكود المحلي أولاً. ولكن نظرًا لأننا عدّلنا الكود المحلي، فقد يفشل التحديث، لذا فمن المرجح أن نحتاج إلى تخزين التغييرات المحلية مؤقتًا باستخدام git stash، ثم تنفيذ git pull للتأكد من أن مستودع الكود المحلي هو الأحدث. بعد ذلك، عدّل الفرع الذي تريد الترقية إليه أو تحديده، وأخيرًا أعد البناء.

أعتقد أنه سيكون من غير المعتاد جدًا تكوين إصدار محدد، بدلاً من نوع/تيار/وسم، مثل latest أو stable. في الواقع، لم أعد متأكدًا من الأوسمة التي تعتبر عادية ومتاحة ومفيدة مع هذا النظام.

هل قمت بمراجعة https://meta.discourse.org/t/configure-a-supported-tracking-branch-to-get-discourse-software-updates/17014/1؟ ربما يساعد ذلك في فهم العلامات المفيدة.

نعم، يكفي للمستخدم العادي استخدام latest الافتراضي. لكن في سياق حالتي، لا بد من دراسة كيفية استخدام إصدار معين. فلا يمكنني أن أقول لـ boss: “آسف، لا يدعم Discourse حاليًا استرجاع إصدار معين، ولا يمكننا التحديث سوى إلى أحدث إصدار.”

هذا المنشور مفيد جدًا، سأقوم بقراءته بعناية. شكرًا لك.

لم أكن قد رأيت ذلك - شكرًا لك. يبدو أننا يجب أن نستخدم الآن latest/release/esr. أرى أن ملف app.yml الخاص بي (القديم) يلتقط الإعداد الافتراضي لأنه تم تعليقه:

  ## أي إصدار من Git يجب أن يستخدم هذا الحاوية؟ (الافتراضي: tests-passed)
  #version: tests-passed

version لا يدعم الوسوم حاليًا، ولإضافة هذه الميزة، يجب تعديل سكريبت البناء. الممارسة المثلى كانت:

params:
  version: esr

لكن حاليًا، يجب تعديله إلى:

params:
  version: release/2026.1
إعجاب واحد (1)

مثير للاهتمام. حتى قبل استراتيجية إصدار الإصدارات الجديدة، كانت beta وسمًا وليس فرعًا منذ فترة طويلة: Upcoming changes to the beta branch of Discourse

أنا أيضًا، وأنا في حيرة من أمري، لكن كود البناء الحالي لا يمكنه بالفعل استخدام الوسوم. لم يكن ينبغي أن يكون الأمر كذلك.

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

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

version: esr يجب أن تعمل أيضًا. النظام مصمم لدعم الوسوم. يتم تنفيذه كـ git checkout $version.

لا يجب عليك إجراء هذا التغيير في web.template.yml. يجب عليك إجراؤه في containers/app.yml المحدد لموقعك.

4 إعجابات