انتقل إلى المحتوى الرئيسي

ما هو خط أنابيب CI/CD؟

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

CI/CD تعني التكامل المستمر والتسليم المستمر. في بعض الحالات، يمكن أن يعني القرص المضغوط أيضًا النشر المستمر.

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

معًا، يمكن تنفيذ CI/CD كخط أنابيب يعمل على أتمتة جميع العمليات التي تم إجراؤها مسبقًا يدويًا. للحصول على فهم أفضل لكيفية عمل خط أنابيب CI/CD، راجع الرسم البياني أدناه.

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

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

يؤدي تحويل تدفقات عمل CI/CD إلى سحابة AWS إلى تمكين الفرق من توسيع أعباء عمل تطوير البرامج الحديثة، وإبلاغ التغييرات بشكل أكثر فعالية، وإدارة الموارد بشكل أكثر كفاءة. على سبيل المثال، قامت Duolingo بترحيل خط أنابيب CI/CD الخاص بها إلى AWS EC2 Mac ونفذت استراتيجيات القياس التلقائي المتقدمة. ونتيجة لذلك، قاموا بتقليل وقت الإنشاء من 50 دقيقة إلى 16 دقيقة فقط.

كيف يمكنك إنشاء مسارات بيانات للتكامل المستمر/التسليم المستمر (CI/CD)؟

تجعل AWS تنفيذ التكامل المستمر/التسليم المستمر (CI/CD) أكثر سهولة وأتمتة وأمانًا من خلال الخدمات المُدارة والمؤتمتة. بدلاً من توفير أدوات التطوير والخوادم والموارد يدويًا، يمكن لفريقك التركيز على الأنشطة عالية القيمة، مثل الاستجابة لطلبات المستخدمين ووضع إستراتيجيات لعملية إصدار البرمجيات.

كبداية، يمكنك استخدام AWS CloudFormation لنشر موارد السحابة تلقائيًا، والتي تحتاج إليها فرق DevOps لإعداد مسار بيانات CI/CD. تبدأ بوصف الموارد التي تحتاج إليها في القالب أو باستخدام قوالب تم إنشاؤها مسبقًا. توفر CloudFormation بعد ذلك الموارد التي تشكل معًا البيئة التأسيسية التي تدعم CI/CD. بعد ذلك، يمكنك تنفيذ مراحل مسارات CI/CD في سحابة AWS على النحو التالي.

المصدر

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

إليك كيف يمكن لفريقك إجراء تغييرات على التعليمات البرمجية وإدارتها باستخدام أدوات AWS.

الخطوة 1 - تأليف التعليمات البرمجية من خلال بيئة التطوير المتكاملة (IDE)

يمكن للمطور إنشاء تعليمة برمجية جديدة أو تحرير تعليمة برمجية موجودة باستخدام AWS Cloud9، وهي بيئة تطوير متكاملة قائمة على السحابة (IDE) تدعم لغات البرمجة الشائعة. باستخدام Cloud9، يمكنك كتابة التعليمة البرمجية المصدر وتشغيلها وتصحيحها على متصفح ويب طالما لديك إمكانية الوصول إلى الإنترنت. بدلاً من ذلك، إذا ثبَّت IDE تابعة لجهة خارجية، فيمكنك تنزيل مجموعات تطوير البرامج (SDK) لتمكين كتابة التعليمات البرمجية بلغات مختلفة، بما في ذلك Java وPython وJavaScript. تسمح لك مجموعات SDK بالوصول إلى موارد ومكتبات AWS من خلال واجهة برمجة التطبيقات (API) من بيئة كتابة التعليمات البرمجية المفضلة لديك.

الخطوة 2 - إرسال التعليمات البرمجية إلى المستودع المركزي

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

الإنشاء والاختبار

في مرحلة الإنشاء، تُرسل التعليمات البرمجية المخزَّنة في المستودع المركزي إلى خادم الإنشاء. بعد ذلك، يحوَّل خادم الإنشاء التعليمة البرمجية المصدر والتبعيات إلى ملف برمجي يسمى أداة والذي يمكن للمطورين تشغيله في المراحل اللاحقة. على سبيل المثال، إذا كنت تقوم بإنشاء برنامج Java، فستحصل على ملف JAR أو WAR. يمكن إجراء العديد من الاختبارات الأولية في هذه المرحلة، بما في ذلك تحليل الوحدة والتحليل الثابت للتعليمات البرمجية.

  • تضمن اختبارات الوحدة أن وظائف البرامج الفردية تنتج النتائج الصحيحة. 
  • يفحص التحليل الثابت للتعليمات البرمجية التعليمة البرمجية المصدر لتحديد الأخطاء والثغرات الأمنية والالتزام بمعايير كتابة التعليمات البرمجية.

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

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

توِّسع AWS CodeBuild تلقائيًا سعة الحوسبة لديها لتتناسب مع أعباء عمل الإنشاء لديك. بهذه الطريقة، لن تضطر إلى الانتظار حتى تكتمل الإصدارات السابقة قبل بدء إصدار جديد. يمكن لفرق البرامج تحديد مشكلات التعليمات البرمجية مبكرًا وحلها قبل أن تصبح معقدة.

على سبيل المثال، إذا كنت تنشئ مشروع Node.js، فيمكنك دمج إطار عمل اختبار Jasmine أو Jest مع AWS CodeBuild. تمكّنك هذه الأطر من كتابة حالات الاختبار، وتحديد النتائج المتوقعة، والتحقق منها بسهولة في أثناء عمليات الإنشاء. 

تأتي مرحلة الاختبار مباشرةً بعد الإنشاء. صُممت لإخضاع التطبيق لاختبارات أكثر صرامةً، ما يسمح لفرق البرامج بتحسين جودة التعليمات البرمجية والأداء والأمان والجوانب الرئيسية الأخرى. باستخدام مسار CI/CD، يتم الاختبار تلقائيًا ويمتد إلى عدة مناطق.

  • تضمن اختبارات التكامل أن جميع الخدمات ومكونات الجهة الخارجية التي يستخدمها التطبيق تتفاعل بشكل صحيح مع بعضها البعض.
  • توفر الاختبارات الوظيفية تقييمًا شاملاً للتطبيق من منظور المستخدم النهائي.
  • تُجري اختبارات الأمان فحصًا للتطبيق بحثًا عن أي مخاطر أو ثغرات أمنية محتملة.
  • تضمن اختبارات الأداء بقاء التطبيق سريع الاستجابة ويعمل بشكلٍ سليم عند التعرّض لظروف قصوى أو غير متوقعة، مثل الارتفاع المفاجئ في عدد الزيارات.

مرة أخرى، يجب أن يجتاز التطبيق جميع الاختبارات المحددة قبل أن يتم نقله إلى المرحلة التالية.

التجهيز

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

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

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

الإنتاج

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

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

كيف يمكنك أتمتة خط أنابيب CI/CD؟

يمكن أن يمثل تبسيط أدوات CI/CD من مزودين مختلفين تحديًا، خاصة إذا كان يتضمن إعدادات يدوية واسعة النطاق. ومع ذلك، باستخدام AWS CodePipeline، يمكنك أتمتة عملية إصدار التعليمات البرمجية بأكملها وتوسيع نطاقها وتسريعها مع الحفاظ على المرونة.

يتيح لك AWS CodePipeline تصميم سير عمل CI/CD بواجهة مستخدم رسومية. يمكنك بسهولة دمج خدمات AWS في خط الأنابيب الخاص بك أو الاتصال بالأدوات والموارد الحالية التي تستخدمها. على سبيل المثال، إذا كنت ترغب في استخدام Jenkins كخادم إنشاء، فيمكنك دمجه مع AWS CodePipeline.

فيما يلي، نلخص الخطوات للقيام بذلك.

  1. قم بتثبيت جينكينز والمكون الإضافي AWS CodePipeline لجينكينز.
  2. ثم قم بتعيين إذن الوصول باستخدام AWS لإدارة الهوية والوصول (IAM) لـ Jenkins. يسمح هذا لـ Jenkins باستخدام بيانات الاعتماد المعتمدة للتفاعل مع AWS CodePipeline.
  3. قم بتسجيل الدخول إلى وحدة تحكم AWS CodePipeline وإنشاء خط أنابيب مخصص.
  4. قم بتوصيل خط الأنابيب بمستودع شفرة المصدر المشترك، مثل GitHub.
  5. ثم أضف مرحلة الإنشاء وحدد Jenkins كخادم الإنشاء.
  6. أضف أي مراحل اختبار ضرورية، بما في ذلك إجراءات الاختبار المطلوبة ومشغلات الإنشاء.
  7. بعد ذلك، قم بتوصيل مرحلة النشر بـ AWS CodeDeploy أو خدمة نشر أخرى. 

كيف يمكن لـ AWS دعم احتياجات خطوط أنابيب CI/CD الخاصة بك؟

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

توفر AWS مجموعة من الحلول المستندة إلى السحابة لإنشاء خط أنابيب CI/CD وتبسيطه وتوسيع نطاقه.

  • توفر AWS CloudFormation الموارد التي تعمل عليها أدوات CI/CD.
  • تسمح AWS Cloud9 للمطورين بكتابة التعليمات البرمجية وتشغيلها وتصحيحها من متصفحهم.
  • يتيح لك AWS CodeBuild تجميع تطبيقك واختباره وتعبئته دون إدارة خوادم الإنشاء الخاصة بك.
  • تقوم AWS CodeDeploy بأتمتة النشر في أي بيئة، بما في ذلك مثيلات AWS المحلية ومثيلات AWS.
  • يتيح لك AWS CodePipeline تصميم سير عمل CI/CD بالكامل، من المصدر إلى بيئة الإنتاج المباشر.
  • تسمح AWS CloudWatch للفرق التشغيلية بمراقبة التطبيقات المنشورة وتسجيلها وتحليلها باستمرار.

إذا كنت بحاجة إلى مزيد من المساعدة في إعداد خط أنابيب CI/CD، فيرجى الاتصال بخدمات Amazon Professional Services.