ما هي أفضل الممارسات في التعامل مع نظام معلومات محددة بموجب النسخة السيطرة ؟

StackOverflow https://stackoverflow.com/questions/419322

سؤال

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

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

إما أن:

  1. تكوين الملقم التطوير للمشاركة في نفس المسار مثل الإنتاج
  2. تحرير اثنين من الحوادث في كل مرة الإنتاج يتم تحديث.

أنا لا أحب #1 ... لأنني أفضل الاحتفاظ التطبيق مرنة عن أي تغييرات في المستقبل.أنا لا أحب #2 لأن لو بدأت النامية على التنمية الثانية الخادم مع المسار الثالث ، وأود أن تضطر إلى تغيير هذا كل الالتزام و التحديث.

ما هي أفضل طريقة للتعامل مع هذا ؟ فكرت:

  1. مخصصة باستخدام الكلمات الرئيسية التوسع متغير (مثل تحديد الملكية $PATH$ في التحكم في الإصدار خصائص وبعد ذلك توسعت في جميع الملفات).بوابة لا يدعم هذا لأنه سيكون ضخم ضرب الأداء.

  2. باستخدام ما بعد التحديث ما قبل ارتكاب السنانير.من المحتمل أن الحل بوابة, ولكن في كل مرة نظرت في حالة أنها ستقدم تقريرا الملفين كما يتم تغييرها.لا حقا نظيفة.

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

هل هناك طريقة سهلة للتعامل مع هذا ؟ أنا أفكر في ذلك ؟

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

المحلول

لا من أي وقت مضى من الصعب رمز التكوين البيانات مثل نظام الملفات مسارات القوة متعددة النشر في المباراة.وهذا هو الجانب المظلم, حيث هناك الكثير من المعاناة.

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

لسوء الحظ ، فإن معظم اللغة/منصات التطوير لا بسهولة دعم هذا (على عكس روبي على القضبان).ولذلك ، يجب عليك بناء ذلك بنفسك ، بدرجات متفاوتة.

بشكل عام ، فإن المبدأ الأساسي هو دمج المراوغة في التكوين الخاص بك:تحديد لا التكوين ، ولكن كيف للعثور على التكوين في التعليمات البرمجية الخاصة بك.و عموما الاحتجاج عدة indirections:الخاصة بالمستخدم, بالتطبيق, آلة محددة بيئة محددة.كل يجب أن تكون موجودة في مكان واضحة المعالم/الطريقة ، يجب أن يكون هناك جدا-جيد-تحديد الأسبقية فيما بينها (عادة ما يكون المستخدم على الجهاز أكثر من تطبيق على البيئة).عموما ستجد أن كل شكلي الإعداد الطبيعية في المنزل في مكان واحد ، ولكن لا بجد رمز التبعية في التطبيقات الخاصة بك.

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

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

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

التمتع بها.

نصائح أخرى

يجب دائما فصل historization (ما مصدر التحكم هو) من النشر.

نشر يتضمن:

  • تحديد مجموعة من البيانات (التي الوسم أو التسمية التي يقدمها المجلس الاعلى للقضاة تأتي في متناول اليدين)
  • عملية التلاعب تلك البيانات (على الأقل نسخها في المكان المناسب ، ولكن أيضا توسيع بعض الملفات المضغوطة ، وهلم جرا...)

بين مختلف عملية النشر ، يجب أن تشمل دي variabilization المرحلة.

متغير هو الكلمة تمثل أي شيء من المحتمل أن يتغير اعتمادا على منصة نشر (الذي يمكن أن يكون جهاز كمبيوتر التكامل المستمر, لينكس الأساسية تجانس قديم Solaris8 ما قبل الإنتاج تجانس كامل F15K Solaris10 مع مناطق الإنتاج:قصيرة يمكن أن يختلف الكثير).انظر جوناثان Leffler الجواب للحصول على أمثلة عملية.

متغير يمكن أن تمثل الطريق ، JVM إصدار بعض JVM الإعدادات على ما كنت تضع في SCM يجب أن تكون البيانات مع المتغيرات في ذلك ، لم الثابت تلوينها الإعدادات.

ستكون الخطوة التالية في الملف القابل للتنفيذ وسيلة للكشف عن أي تغيير في ملفات الإعداد من أجل تحديث أثناء تشغيل بعض المعلمات (تجنب كل "إيقاف التشغيل / تغيير إعدادات / إعادة تشغيل" تسلسل).
وهذا يعني أنهم نوعين من المتغيرات النشر:

  • ثابت منها (والتي سوف لا تغيير) ،
  • ديناميكية منها (أي من الناحية المثالية ينبغي أن تؤخذ في الاعتبار أثناء وقت التشغيل الدورة)

تجنب مسارات مطلقة كلما كان ذلك ممكنا.

لا تعتمد على الإصدار الحالي من السيطرة أن تفعل شيئا من السحر - يمكنك تغيير أنظمة التحكم في الإصدار في المستقبل.

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

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

أي شيء أكثر تعقيدا هو بالتأكيد من المحتمل أن يسبب مشاكل أكثر مما يحل.

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

الشيء الرئيسي هو أن نشر معين الأداة سوف أعطيك كل المرونة لأتمتة أشياء مثل مسارات على كلا الطرفين.

أنا أحب الطريقة روبي على القضبان يتعامل مع هذا النوع من المسألة - بيئة محددة ملفات التكوين.القضبان يدعم تطوير واختبار الإنتاج اتصالات قاعدة البيانات - التي تسيطر عليها التكوين في قاعدة البيانات.yml.هنا هو بلوق وظيفة حول خلق بيئة أخرى محددة خيارات التكوين ، القضبان ولكن قد تعطيك بعض الأفكار حول كيفية القيام بشيء مماثل في البيئة الخاصة بك. http://usablewebapps.com/2008/09/yaml-and-custom-config-for-rails-projects/

يبدو أن الإنتاج الخاص بك هو رمز كامل على git وتحديث الإنتاج تفعل git pull?قد ترغب في محاولة منفصلة بناء عملية التحقق من رمز من المستودع الخاص بك ويخلق إنشاء نظيف (لا .بوابة مجلد).هل يمكن أن يكون بيئة محددة التكوين الملفات التي تحتوي على المسارات الخاصة بك التي يتم نسخها أو التي تم إنشاؤها جنبا إلى جنب مع ذلك.

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