Server-tools: [RFC] module_auto_update: محدث وحدة المجتمع

تم إنشاؤها على ٢٢ مارس ٢٠١٧  ·  15تعليقات  ·  مصدر: OCA/server-tools

ستوفر هذه الوحدة نظام تحديث تلقائي يعمل لمجتمع Odoo v10.

ستتم إضافة عمود checksum_dir إلى ir.module.module ، والذي سيمثل المجموع الاختباري sha1 للدليل (استخدم checksumdir ). سيتم أيضًا إضافة عمود checksum_installed والذي سيمثل المجموع الاختباري لإصدار الوحدة المثبت حاليًا.

سيتم استبدال قائمة Updates في Apps بقائمة من الأسماء المتطابقة التي ستعرض عرض شجرة لـ ir.module.module السجلات التي تحتوي على checksum_dir يختلف عن checksum_installed .

قد يكون من المنطقي إضافة زر في رأس عرض الشجرة أعلاه للسماح بوظيفة Update Apps List ، مما يجعل عملية أكثر مرونة. أو ربما يجب استدعاء هذا بشكل ضمني عند عرض قائمة التحديثات.

سيتم تحديد الوحدات المراد تحديثها في عرض الشجرة ، مع توفر خيار في قائمة Action لجدولتها للترقية.

سيتم جدولة الترقية نفسها باستخدام آلية Odoo القياسية لتعيين ir.module.status إلى to upgrade . من هناك ، سيعمل الزر Apply Scheduled Upgrades في واجهة المستخدم.

لأخذ خطوة إلى الأمام ، سنضيف أيضًا معلمة خادم لتكوين وظيفة cron للترقية التلقائية للوحدات في أوقات محددة.

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

هل لدى أي شخص أفكار حول هذا الأمر ، أو رمز موجود مسبقًا يمكنني الاعتماد عليه؟

question

التعليق الأكثر فائدة

@ Yenthe666 - من السهل إضافة الميزة ، لذلك

كملاحظة ، لا أوصي بالتكوين للسماح لمستخدم Odoo بالوصول للكتابة إلى الملفات التي لا يحتاج صراحة إلى كتابتها. هذا متجه هجوم شائع لأنظمة إدارة المحتوى الأخرى مثل Wordpress و Magento - لذلك أشعر أنه سيكون هو نفسه هنا. بشكل أساسي ، إذا تمكن المهاجم من السيطرة على Odoo ، فيمكنه زرع تعليمات برمجية ضارة في أماكن لن تبحث فيها أبدًا.

ال 15 كومينتر

@ Lasley و anautomatic إعادة إحضار الجلب و git؟ أنا أحب ذلك.

لا يستخدم الجميع Git ، لذلك هذا غير ممكن.

: +1: لميزة تحديث المجتمع.

لا يزال عدد قليل من مثيلاتنا غير Dockerized ، لذلك قد أكون موافقًا بالفعل على إضافة معالجة git كخيار لجعل العمل مع الإرث أسهل قليلاً ودفع الترقيات قليلاً.

المشكلة الوحيدة التي سنواجهها ، على الأقل في عمليات النشر الخاصة بي ، هي أن مستخدم Odoo ليس لديه حق الوصول للكتابة إلى أدلة الوحدة باستثناء بعض الحالات النادرة (وحتى ذلك الحين ، فقط ./static dir). أليس هذا هو الحال بالنسبة لك @ Yenthe666؟

مرحبًا @ Lasley ،

كلا ، ليس لدينا هذه المشكلة. مستخدم Odoo لدينا لديه حق الوصول داخل مجلدات /odoo لهذا الغرض بالضبط.

مع تحياتي،
ينت

أيضًا pedrobaeza يمكن تكوين هذا بسهولة كإعداد للسماح له لمن يريده أو يستخدم git.

حسنا إذا

@ Yenthe666 - من السهل إضافة الميزة ، لذلك

كملاحظة ، لا أوصي بالتكوين للسماح لمستخدم Odoo بالوصول للكتابة إلى الملفات التي لا يحتاج صراحة إلى كتابتها. هذا متجه هجوم شائع لأنظمة إدارة المحتوى الأخرى مثل Wordpress و Magento - لذلك أشعر أنه سيكون هو نفسه هنا. بشكل أساسي ، إذا تمكن المهاجم من السيطرة على Odoo ، فيمكنه زرع تعليمات برمجية ضارة في أماكن لن تبحث فيها أبدًا.

أحد الحلول هو نسيان git والإصدارات ، واستخدام SHA الاختباري بدلاً من ذلك. الوظيفة ir.cron ستكون:

  1. قم بإنشاء مجموع اختباري للمجلد الإضافي بأكمله.
  2. افحصه مقابل المجموع الاختباري الأخير الذي خزنته.
  3. إذا تم تغييره ، فقم بتعيين الملحق لتحديث وتخزين المجموع الاختباري الجديد.
  4. عند الانتهاء من القيام بذلك مع جميع الوظائف الإضافية ، قم بتشغيل نظام التحديث.

lasley لدينا هذه الوحدة التي تغطي جزئيًا ما تقترحه وكذلك النسخ الاحتياطي التلقائي https://github.com/ingadhoc/odoo-support/tree/9.0/database_tools.
لقد قدمنا ​​بالفعل في أيام odoo وأيام سباق oca لكنها لم تلفت الانتباه
يمكنك التحقق من العرض المتاح على الملف التمهيدي. لقد أضفنا "cli" حتى تتمكن من إصلاح قاعدة البيانات من سطر الأوامر بشيء مثل "odoo.py fixdb". أثناء إصلاح db ، يبدأ Webclient على نفس xmlrpc بصفحة ثابتة تخبر أنك قيد الترقية.
هناك الكثير من الأشياء القبيحة في الوحدة ، لكننا نستخدمها في طليعة الإنتاج منذ 3 سنوات

Yajo - أوه التقط فكرة جيدة. تم تحديث RFC. هل من المنطقي إنشاء مجاميع اختبارية للدليل في تمهيد Odoo ، أو ربما نحتاج إلى زر؟

jjscarafia - شكرًا جزيلاً لإسقاط الخط! يبدو أن هذه الوحدة تكرر الكثير مما لدينا بالفعل في OCA ، لكني أرى بعض الأشياء المفيدة تمامًا هنا أيضًا. لسوء الحظ ، سأقوم بدمج هذا في SaaS الخاص بي وبالتالي أطلب ترخيص LGPL بدلاً من AGPL. أود أن أكون قادرًا على استخدام بعض من هذه التعليمات البرمجية وأن أعطيك حقوق التأليف المشتركة ، لكنني سأحتاج إلى أن أكون قادرًا على إصدار الإصدار هنا تحت LGPL.

أعتقد أن الزر الافتراضي "Run cron now" سيفي بالغرض. ستكون هناك حاجة بالفعل IMHO ، ولكن لديك بالفعل هناك.

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

lasley نعم ، نسخته مكررة كثيرًا ، لكن هذا كان قبل وجود oca. لدي مهمة معلقة للتحقق من وحدات oca ، مما يؤدي إلى إهمال هذه الوظيفة عند الترحيل إلى odoo 10 ، لذا من الأفضل أن تكون وظيفة وحدات التحديث في وحدة أخرى أمرًا رائعًا. ما زلت غير ملم بآثار التغيير إلى LGPL ، لكن لا توجد مشكلة بالنسبة لي. ماذا علي أن أفعل للسماح باستخدام الرمز وتغيير الترخيص؟

jjscarafia - المعنى الأساسي لـ LGPL هو أنه من الممكن لشخص ما أن يصنع مشتقًا من تطبيقك مغلق المصدر ، لذا فهو بالتأكيد ثقيل جدًا. ألقِ نظرة على هذا الانهيار الذي يعتبر مفرطًا في التبسيط ولكني أعتقد أنه يعبّر عن هذه النقطة.

ستلاحظ أن "الترخيص نفسه" ينطبق فقط عندما لا يستخدم المشتق برنامجك كمكتبة. في شروط الشخص العادي ، يعني هذا أن ترخيص GPL و AGPL سينتقل إلى أي شيء يعتمد على الوحدة الخاصة بك في البيان. لن يتحول LGPL إلا إلى الكود الذي يُجري تعديلات على الكود الفعلي للوحدة النمطية الخاصة بك ، لذا فإن الاعتماد عليها في البيان سيسمح لك باختيار أي ترخيص (ربما ملكية).

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

لم أتعمق كثيرًا في وحدتك ، لكنني كنت فضوليًا نوعًا ما ماذا يفعل الجزء fix_db ؟ هل هذا مجرد تحديث على كل شيء؟

شكرا @ Lasley على الرابط والتفسير ، واضح جدا الآن. حسنًا ، بالنسبة لي ، أنتظر ping على PR.
هذه الطريقة قابلة للاستدعاء من واجهة قاعدة البيانات وتقوم بإجراء تحديث على كل وحدة تتطلب التحديث (فيما يتعلق بالتغييرات في الإصدار الأحدث والمثبت)

يستدعي cli "fixdb" هذا الأسلوب لكل قاعدة بيانات (إذا لم تحدد أيًا منها) أو لقاعدة البيانات -d.
نحن نستخدم هذا على نقطة الدخول من صورة عامل ميناء ساعة حتى عند تشغيل الحاويات ونحن دائما تحديث وحدات إذا لزم الأمر

الإغلاق للمتابعة في # 882

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

pedrobaeza picture pedrobaeza  ·  19تعليقات

lasley picture lasley  ·  7تعليقات

OCA-git-bot picture OCA-git-bot  ·  30تعليقات

lasley picture lasley  ·  22تعليقات

lasley picture lasley  ·  8تعليقات