سؤال

أقوم بتطوير موقع Ruby on Rails باستخدام Heroku و Git.

ما هي الأدوات والميزات التي يجب أن أستخدمها لإعداد عملية التطوير البسيطة التالية؟

الرمز> تسجيل الوصول> اختبار تلقائي> نشر تلقائي

  • أتحقق من الكود الخاص بي في مستودعي (الخيار المفضل ، المستضاف مثل github)
  • يتم تشغيل الاختبارات تلقائيًا ويتم نشر موقع الويب في تطبيق Heroku التدريجي الخاص بي
  • إذا تم تمرير الاختبارات ، يتم نشر موقع الويب تلقائيًا على تطبيق Heroku الإنتاجي الخاص بي
  • إذا فشلت الاختبارات ، أريد أن أُبلغ بطريقة ما.

كيف يمكنك أن تفعل هذا؟

هل كانت مفيدة؟

المحلول

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

تنص النزاهة:

Heroku هي أسهل وأسرع طريقة لنشر النزاهة.

لكن:

ملاحظة
لا يمكن الوصول إلى المستودعات عبر SSH على Heroku

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

من بين الأشياء التي أدرجتها ، ربما يكون النشر التلقائي هو الشيء الذي لا يتوقع معظم الناس أن يقوم خادم CI الخاص بهم (ولا توفر النزاهة خارج الصندوق). ستحتاج إلى تكوين GIT لاستخدام مفتاح SSH وبدء أ git push من الموقع الصحيح (مستودع فحص).

لسوء الحظ ، لا أعرف تفاصيل كيفية القيام بذلك-في الواقع ندير النزاهة على VPS.

نصائح أخرى

circleci يقدم بالضبط ما تحتاجه. سنقوم بإجراء اختباراتك على كل دفعة ، ونشرها إذا تم مرورها (إلى Heroku أو باستخدام Capistrano/Fabric/أي شيء حقًا) ، ونرسل لك الإخطارات إذا فشلت.

إلى مقدمة أنا أحد مؤسسي Codeship (https://codeship.io) ، وهي خدمة تدعم هذا بالضبط.

ولكن المزيد حول الموضوع ، في الأساس هناك طريقتين مختلفتين أعتقد أنه يمكن تنفيذ ذلك (يرجى مراعاة أن جميع أسماء الفروع التي أستخدمها تعسفي ويمكن تسميتها مختلفة تمامًا):

التدريج/الإنتاج في واحد الذهاب

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

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

التدريج/الإنتاج كخطوات منفصلة

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

نحن ندعم كل ذلك في RailsonFire ، لكننا نعمل حاليًا على إصدار جديد من خدمتنا أفضل. نحن ندمج جيدًا مع Heroku حتى لا تضطر إلى التفكير في ذلك (ولكن لا يزال لديك خيار للقيام بذلك بنفسك بأي طريقة تريدها)

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

حسنًا ، هناك Hudson الذي يوفر مكونًا إضافيًا GIT بالإضافة إلى دعم البرمجة النصية. الباقي هو التكوين ، وأود أن أعتقد.

هدسون: http://hudson.dev.java.net

محاولة هيروكو بريتندر. كتابة هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top