الحفاظ على اختلافات التكوين بين التطوير والبيئات الحية أثناء النشر من SVN

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

سؤال

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

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

المشكلة هي هذه الخطوة حيث يتعين علينا تعديل متغيرات البيئة التي تحتاج إلى أن تكون مختلفة عن خوادم DEV والإنتاج. هذه هي الأشياء التي تشبه الاشياء (الامم المتحدة) تشبه قواعد HTACCESS التي من شأنها إعادة توجيه إلى الأماكن الخاطئة، مما يؤثر على مفاتيح API لخريطة Google لأن المجالات مختلفة، تشغيل البرامج النصية التي تقلل من JavaScript في ملف Opfuscated واحد للحفاظ على حجم اتصالات HTTP، إلخ وبعد

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

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

المحلول

يمكن التعامل مع الكثير من خيارات التكوين عن طريق التبديل على $ _Server ['http_host'].

علي سبيل المثال

switch ($_SERVER['HTTP_HOST']) {
    case 'developement.domain.com':
        $api_key = "dev environment api key";
        break;
    default:
        $api_key = "live environment api key";
}

ثم لقضايا .htaccess، يمكنك تعيين ملف بديل .htaccess في تعريف vhost الخاص بك باستخدام توجيه AccessFilename:

<VirtualHost *:80>
    ServerName sitename
    AccessFileName .htaccess-dev
</VirtualHost>

نصائح أخرى

أتعامل مع هذه المشكلة عن طريق إضافة ملف التكوين إلى تخريب تجاهل القائمة. وبعد تم تناوله بالفعل هنا على Stackoverflow: انظر السؤال رقم 149485

أساسا، أنا فقط أبقى setup.default.php في SVN، وفي كل تثبيت قمت بنسخه يدويا setup.php وهو في قائمة التجاهل. هذا يمنع التحقق من الملف مرة أخرى في repo. نادرا ما يتغير في هذا الملف ويمكن التعامل معها مع حدوث الشرط.

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

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

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

راجع للشغل: هذه هي واحدة من المناطق التي يضيء فيها Perforce - إنها تتذكر ما دمجته بالفعل، ولن يحاول دمج مرتين.

نحن نتعامل مع هذا من خلال الحفاظ على دليل تكوين معين.

لذلك، على سبيل المثال، إذا كان لديك ملفات .htaccess و Config.php المختلفة بين Dev والإنتاج، فسيتم الحفاظ عليها في / Trunk / Config / {Environment} /

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

--

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

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