إذا كنت تكافح حاليًا بشأن جانب مسؤول النظام من الأمور للحفاظ على تحديث جميع الخوادم ، فقد يكون الوقت قد حان للتخلص من بعض العبء على أكتافك وأتمتة عملية التسليم الخاصة بك من خلال خط أنابيب نشر مستمر.
ما هو CI / CD؟
التكامل المستمر والنشر المستمر (CI / CD) هو كل شيء عن إجراء تحديثات متكررة (يوميًا غالبًا) للكود ، وإنشاء إصدارات جديدة واختبارها ، وإدخال التغييرات على خوادم الإنتاج بسرعة وكفاءة.
إنه مصطلح واسع جدًا يلخص جوهر ثقافة DevOps - مما يبسط تدفق الشفرة الجديدة من عقول مطور البرامج لديك إلى خوادمك.عادة ، يتم تنفيذ CI / CD باستخدام مجموعة أدوات تسمى خط الأنابيب ، وهي مجموعة من الأدوات التي تعمل على أتمتة العملية بأكملها من المصدر إلى النشر.
هذا ما توفره AWS مع أدوات CodeSuite الخاصة بهم ، وهم في مكان جيد بشكل خاص لتنفيذ مثل هذا الخط ، حيث ستعمل عادةً على تشغيل خوادم الإنتاج الخاصة بك على EC2 ، مما يجعل مرحلة النشر أسهل بكثير وجيدة متكامل.
أدوات CodeSuite من AWS
يتكون CodeSuite من عدة أدوات مختلفة. يبدأ بـ CodeCommit ، خدمة التحكم بالمصادر المدارة من AWS. إنها أكثر فاعلية وأقل ثراءً من المنافسة ، ولكن من السهل إعداد Git بأجهزة تحكم عن بُعد متعددة يمكنك استخدامها أيضًا إذا كنت تخطط لاستخدام بقية خط الأنابيب. يحتوي CodeCommit على فئة مجانية سخية جدًا ، لذا لن تتحمل على الأرجح رسومًا كثيرة مقابل ذلك.
يأتي بعد ذلك CodeBuild ، الذي يأخذ التحكم في المصدر من CodeCommit (أو GitHub / BitBucket) ويبني من المصدر ، ويقوم بتشغيل أي اختبارات تقدمها في هذه العملية.يستخدم هذا خادم EC2 للبناء ، والذي يجب أن تدفع مقابله أثناء تشغيل الإصدار. يمكن أن تتطلب المشاريع المعقدة آلة قوية لبناءات سريعة.
بمجرد اكتمال البناء ، يكون تطبيقك جاهزًا للنشر. يتم التعامل مع هذه المرحلة مع CodeDeploy ؛ تقوم بإنشاء "مجموعة نشر" ، والتي يمكن أن تحتوي على أي عدد من مثيلات EC2 أو مجموعات القياس التلقائي الكاملة. هذا هو المكان الذي يتألق فيه مسار AWS حقًا.
باستخدام CodeDeploy ، يمكنك ضبط كيفية معالجة النشر - هناك إعدادات مسبقة للجميع مرة واحدة ونصف المجموعة و 10٪ كل بضع دقائق وغير ذلك الكثير ، وكلها مصممة لتقليل وقت تعطل التطبيق بسبب غير متوقع البق في الإنتاج. يعد تحديث جميع الخوادم تلقائيًا أمرًا رائعًا بدرجة كافية ، ولكن يمكن لـ CodeDeploy الاتصال بميزان التحميل الخاص بك وخفض حركة المرور إلى الطبعات قيد التحديث. إلى جانب إستراتيجية طرح متداخلة لضمان الحد الأدنى من المضيفين الأصحاء ، فإن هذا يجعل تحديثات الإنتاج خالية من الإجهاد.
يتم تغليف كل هذا معًا في خط أنابيب واحد ، والذي يراقب التحكم في المصدر الخاص بك ويؤدي إلى تشغيل خط الأنابيب تلقائيًا عندما تدفع التغييرات إلى فرع الإصدار ، وبناء واختبار ونشر التعليمات البرمجية الخاصة بك على جميع الخوادم.
كيفية إعداد خط أنابيب
أولاً ، تحتاج إلى إدخال الكود الخاص بك إلى CodeCommit. نوصي بإعداد CodeCommit كجهاز تحكم عن بعد منفصل للإصدار جنبًا إلى جنب مع التحكم الأساسي بالمصادر. إذا كنت تستخدم Github أو BitBucket ، فيمكنك الاتصال مباشرة بالمستودع الخاص بك بدلاً من ذلك ، ولكن CodeCommit هو حل AWS بالكامل ويمكّنك من إدارة الوصول التنظيمي إلى تحديثات الخادم من خلال وحدة تحكم IAM.
بعد ذلك ، توجه إلى وحدة التحكم CodePipeline للبدء. انقر على "إنشاء خط أنابيب" ، وامنحه اسمًا ووصفًا.
تحتاج كل مرحلة من مراحل خط الأنابيب إلى بعض التكوين. الأولى هي المرحلة المصدر ، والتي تتصل بـ CodeCommit و Github و BitBucket.يتطلب الأخيران ربط حساباتك عبر OAuth ، لكن CodeCommit يتصل مباشرة. اختر المستودع الذي تستخدمه ، وفرع الإصدارات. إذا كنت تستخدم CodeCommit كجهاز تحكم عن بعد ثانوي ، فربما تختار الرئيسي هنا ، ولكن إذا كنت تستخدم موفرًا تابعًا لجهة خارجية ، فقد ترغب في إعداد فرع إصدار منفصل.

أسفل خيارات الفرع ، يمكنك العثور على الإعدادات الخاصة بكيفية تشغيل خط الأنابيب هذا تلقائيًا. بشكل افتراضي ، يتم تشغيله في كل مرة يتم فيها دفع التزام جديد إلى فرع الإصدار الذي حددته. يمكنك تغيير هذا ، ولكن هذا على الأرجح ما تريده
بعد ذلك ، مرحلة البناء. يدعم CodePipeline Jenkins و CodeBuild المدمج في كود البناء. إذا كنت تستخدم Jenkins بالفعل للبناء ، فيجب عليك تثبيت المكون الإضافي CodePipeline لتوصيله بـ AWS. بخلاف ذلك ، يمكنك إعداد CodeBuild بالنقر فوق "إنشاء مشروع" لفتح مربع حوار.

يحتوي CodeBuild على الكثير من العناصر لتكوينها ، لذا يمكنك قراءة دليلنا لإعداده لمعرفة المزيد. بمجرد الانتهاء ، يجب أن يغلق مربع الحوار ويعيدك إلى إعداد CodePipeline.
المرحلة التالية هي النشر. يدعم CodePipeline عددًا قليلاً من خيارات النشر المختلفة ؛ وعلى وجه الخصوص ، إذا كنت تستخدم AWS CloudFormation أو Elastic Container Service ، فيمكنك نشر التحديثات مباشرة إلى هؤلاء. لعمليات النشر العامة لـ EC2 و Lambda ، تحتاج إلى استخدام CodeDeploy.

يتطلب CodeDeploy أيضًا الكثير من التكوين ، لذا يمكنك قراءة دليلنا الكامل لإعداده. باختصار ، تقوم بإنشاء مجموعة نشر تتكون من خوادم EC2 الخاصة بك ، أو مجموعة Auto-Scaling ، أو وظائف Lambda ، وتختار تكوين نشر - كل ذلك مرة واحدة ، ونصف مرة واحدة ، وما إلى ذلك.تتعامل CodeDeploy مع كل شيء آخر ، وتعديل موازن التحميل بحيث لا يتم توجيه حركة المرور لتحديث الخوادم ، وتحافظ دائمًا على عدد معين من المضيفات السليمة ، لذلك لا تتوقف خدمتك أبدًا عن التحديثات.
بمجرد الانتهاء ، ارجع إلى CodePipeline وحدد النشر الذي أعددته للتو. يجب أن يشير ذلك إلى كل الإعداد تم ، ويمكنك النقر فوق التالي لمراجعة خط الأنابيب الخاص بك قبل تشغيله.
بمجرد إنشاء خط الأنابيب ، فإنه يقوم بتشغيل أول بناء تلقائيًا. إذا واجهت أي أخطاء في الإصدار ، فإن خط الأنابيب يتوقف ولن يتم تحديث خوادمك.

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