سؤال

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

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

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

المحلول

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

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

نصائح أخرى

لقد اصطدمت مؤخرا مقالة, ، قد يكون ذلك مفيدًا.

وأوضح المؤلف بعض أفضل ممارسات التكامل المستمر بما في ذلك الاختبار والمعالجة والأتمتة.

وفيما يلي بعض الوجبات الرئيسية:

  • في العديد من المتاجر، يتم اختبار الكود عند نقطة الالتزام.بالنسبة لقواعد البيانات، يفضل تشغيل جميع اختبارات الوحدات مرة واحدة وبالتسلسل مقابل قاعدة بيانات ضمان الجودة، مقابل التطوير، كجزء من خطوة الاختبار
  • تعد خطوة الاختبار جزءًا مهمًا من أي عملية CI/CD.يجب أيضًا إصدار البرامج النصية للاختبار، بما في ذلك اختبارات الوحدة نفسها، في التحكم بالمصادر، واستخراجها عند نقطة خطوة البناء وتنفيذها
  • يعد سحب البيانات من الإنتاج أمرًا جذابًا كوسيلة سريعة، ولكنه ليس فكرة جيدة على الإطلاق
  • أفضل طريقة هي استخدام أداة أو برنامج نصي لإنشاء بيانات اختبار تركيبية بسرعة وبشكل متكرر وموثوق لجداول المعاملات الخاصة بك
  • إن تشغيل اختبارات الوحدة لإنتاج نتائج ملخصة يدوية للاستهلاك البشري يتعارض مع غرض الأتمتة.نحن بحاجة إلى نتائج يمكن قراءتها آليًا، والتي يمكن أن تسمح للعملية الآلية بالإجهاض و/أو التفرع و/أو الاستمرار.
  • إن تشغيل عملية CI، التي تتطلب اجتياز 100% من جميع الاختبارات، يشبه عدم وجود CI على الإطلاق، إذا تم إعداد مسار سير العمل ذريًا للتوقف عند الفشل، وهو ما ينبغي أن يحدث.لربط الإبرة، يجب أن تحتوي الاختبارات على عتبات، من شأنها أن تؤدي إلى ظهور خطأ بناءً على النسبة المئوية للاختبارات الفاشلة أو في بعض الحالات، في حالة فشل بعض الاختبارات ذات الأولوية العالية.
  • يجب أن تنتج جميع العمليات في النهاية نتيجة منطقية للنجاح أو الفشل، ولكن يمكن لبعض العمليات غير الآلية أن تجد طريقها بسهولة إلى مسار سير عمل CI (على سبيل المثال.وحدة التجارب).يجب أن يتم توصيل البرنامج بأي خط أنابيب لسير العمل، حيث يأخذ المدخلات المعروفة وينتج المخرجات المتوقعة - مثل النجاح والفشل.
  • يجب إحباط عملية CI/CD في حالة الفشل ويجب إرسال إشعار بالبريد الإلكتروني على الفور مقابل الاستمرار في دورة المسار.
  • يجب ألا تدور عملية CI مرة أخرى حتى يتم إصلاح أية أخطاء في البنية الأخيرة.في حالة الفشل، يجب أن يحصل الفريق بأكمله على إشعار الفشل، بما في ذلك أكبر عدد ممكن من التفاصيل حول ما فشل.
  • إذا استغرق خط الأنابيب ساعة واحدة، من البداية إلى النهاية، لإكماله، بما في ذلك جميع الاختبارات، فيجب تعيين جميع فترات البناء على ما لا يقل عن ساعة واحدة ويجب وضع جميع الالتزامات الجديدة في قائمة الانتظار، وتطبيقها على البناء التالي.
  • لا ينبغي أن توجد كلمات مرور نصية عادية في البرامج النصية للأتمتة

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

إليك نسخة من الملاحظات الهاوية لتبلل قدميك، ولكن هناك الكثير في هذا الفضاء: http://www.infoq.com/news/2008/02/versioning_databases_series

تعجبني بعض الأفكار التي طرحها سكوت أمبلر هنا أيضًا، الموقع جيد ولكن الكتاب عميق بشكل مدهش بالنسبة لمثل هذه المجموعة الصعبة من المشكلات.http://www.agiledata.org/ http://www.amazon.com/exec/obidos/ASIN/0321293533/ambysoftinc

وبوابة الأحمر هو الحل قوية جدا، وأنه يعمل من خارج منطقة الجزاء. ولكن أفضل شيء هو أنك يمكن أن تدمج مع عملية التكامل المستمر الخاص بك. أنا استخدامها مع Msbuild وهدسون. موضحا بسرعة كيف يعمل: http://blog.vincentbrouillet.com/post 2011 / / 02/10 / قاعدة بيانات مخطط تزامن مع REDGATE

وإذا كنت بحاجة إلى معرفة المزيد حول هذا الموضوع، لا تتردد في طرح

وهذا النهج بوابة الأحمر باستخدام عنصر تحكم مصدر SQL وSQL قارن سطر الأوامر برو هو مفصل مع نماذج التعليمات البرمجية هنا: http://downloads.red-gate.com/HelpPDF/ContinuousIntegrationForDatabasesUsingRedGateSQLTools.pdf

كتب

وتروي هانت مقالا عن نقاش بسيط بعنوان "التكامل المستمر لقواعد بيانات خادم SQL": http://www.simple-talk.com/content/article.aspx ؟ المادة = 1247

هل نظرت إلى FluentMigrator؟يتضمن التنزيل الافتراضي نصوص Nant التي من السهل إضافتها إلى CI.مجاني ومفتوح المصدر وسهل الاستخدام.يعمل لمجموعة واسعة من قواعد البيانات.

وأحدث إصدار (5.0) من DB شبح لا تعاني من مشكلة "غير ASCII الحرف" (وهو ما يعني فقط أن الملف UTF8 ترميز) ويجب أن تكون قادرة على القيام بالضبط ما تحتاجه.

وأيضا، أدوات يمكن استخدامها فعليا مستقل لأداء وظائف مختلفة (البرمجة، وبناء، ومقارنة، ورفع مستوى والتعبئة والتغليف) إذا كنت تريد، انها مجرد أن استخدام لهم جميعا معا يوفر عملية كاملة نهاية إلى نهاية مما يجعل القيمة الإجمالية أكبر من مجموع الأجزاء انها.

في جوهرها، لإجراء تغييرات على مخطط قمت بتحديث البرامج النصية إنشاء كائن الفردية والكتابات إدراج في جدول (للبيانات المرجعية) التي تقام تحت السيطرة مصدر مثلك وتطوير قاعدة بيانات "يوم واحد" في مجالات جديدة. وتستخدم أدوات DB الشبح لتمكين كل شيء من خلال بناء هذه النصوص في قاعدة بيانات العلامة التجارية الجديدة (باستخدام التكامل المستمر إذا لزم الأمر) ومن ثم مقارنة وترقية قاعدة البيانات الهدف، الذي يمكن أن يكون نسخة من قاعدة بيانات الإنتاج. وتنتج هذه العملية النصي الدلتا والتي يمكن استخدامها على قاعدة بيانات الإنتاج الحقيقية خلال الذهاب على الهواء مباشرة.

ويمكنك حتى إنتاج مشروع قاعدة بيانات برنامج Visual Studio وإضافته إلى أي حلول لديك حاليا.

وMALC

أعلم أن هذا المنشور قديم، ولكن لدينا حل جديد يتبع النهج التالي:

  1. يتغير المطورون SQL الفردي ويلتزمهم بالتحكم في المصدر.
  2. برنامجنا (ون سكريبت) يسحب ملفات البرنامج النصي من التحكم في المصدر ، والمرشحات وفرزها ، وإنشاء ملف نص إصدار واحد.
  3. ثم يتم تطبيق ملف نص الإصدار على قاعدة بيانات لإجراء إصدار.

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

إخلاء المسؤولية - أنا أعمل في الشركة التي تصنع OneScript.

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