استخدام AWS CodePipeline

في هذا البرنامج التعليمي، ستتعلم كيفية إنشاء قناة إصدار برنامج آلي تنشر نموذجًا حيًا من التطبيق. ستنشئ قناة باستخدام AWS CodePipeline وهي خدمة تنشئ التعليمة البرمجية وتختبرها وتنشرها في كل مرة يحدث فيها تغيير في تعليمة برمجية. ستستخدم حسابك على GitHub، أو حاوية Amazon Simple Storage Service (S3) أو مستودع AWS CodeCommit كموقع المصدر للتعليمة البرمجية لنموذج التطبيق. وستستخدم أيضًا AWS Elastic Beanstalk كموقع التوزيع المستهدف لنموذج التطبيق. ستتمكن القناة المكتملة من اكتشاف التغييرات التي تم إجراؤها على مستودع المصدر الذي يحتوي على نموذج التطبيق ثم تحديث النموذج الحي من التطبيق تلقائيًا.

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

كل شيء تم في هذا البرنامج التعليمي مؤهل للطبقة المجانية.

إدارة مواردك على AWS

تسجيل الدخول إلى وحدة التحكم

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


أ. لتبسيط عملية إعداد مثيلات EC2 وتكوينها لهذا البرنامج التعليمي، ستقوم بتدوير بيئة نموذج باستخدام AWS Elastic Beanstalk. يتيح لك Elastic Beanstalk استضافة تطبيقات الويب بسهولة دون الحاجة إلى تشغيل الخوادم الظاهرية أو تكوينها أو تشغيلها بنفسك؛ فهو يوفر تلقائيًا البنية التحتية (مثل الخوادم الافتراضية وأجهزة موازن الأحمال، وما إلى ذلك) ويشغل لك هذه البنية (مثل نظام التشغيل واللغة وإطار العمل وخادم الويب والتطبيقات، وما إلى ذلك).


ب. اختر PHP من القائمة المنسدلة، ثم انقر فوق تشغيل الآن.

ملاحظة: إذا كنت قد أنشأت تطبيق Elastic Beanstalk من قبل، فانقر فوق: إنشاء تطبيق جديد في الزاوية العلوية اليمنى. ينبغي تسمية التطبيق وإنشاء بيئة خادم ويب جديدة. حدد PHP كمنصة لك ومثيل واحد كنوع البيئة الخاصة بك. إذا كنت تخطط لتسجيل الدخول عن بُعد إلى المثيلات، فحدد زوج مفتاح. وبخلاف ذلك، اترك القيم الافتراضية للخيارات المتبقية وأنشئ بيئة لقناة توزيع مستمر.

(انقر للتكبير/التصغير)


ج. سيبدأ Elastic Beanstalk في إنشاء نموذج بيئة لنشر التطبيق عليها، كما سيقوم بإنشاء مثيل Amazon EC2 ومجموعة أمان وAuto Scaling group وحاوية Amazon S3 وتنبيهات Amazon CloudWatch واسم مجال لتطبيقك.

ملاحظة: سيستغرق إكمال هذه الخطوة بضع دقائق.

(انقر للتكبير/التصغير)

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

يمكنك استخدام أحد الخيارات الثلاثة كمصدر: مستودع GitHub أو حاوية Amazon S3 أو مستودع AWS CodeCommit. حدد تفضيلاتك واتبع الخطوات أدناه:

 

  • GitHub

    أ. إذا كنت ترغب في استخدام حسابك على GitHub:

    • فانتقل إلى مستودع GitHub الذي يحتوي على عينة تعليمة برمجية على https://github.com/awslabs/aws-codepipeline-s3-aws-codedeploy_linux
    • يمكنك جلب نسخة من المستودع إلى حسابك على GitHub من خلال النقر فوق زر علامة الشوكة في الزاوية العلوية اليمنى.

    (انقر للتكبير/التصغير)

  • Amazon S3

    أ. إذا كنت تخطط لاستخدام Amazon S3 كمصدر، فستسترد عينة تعليمة برمجية من مستودع AWS GitHub وتحفظها على الكمبيوتر وتحملها على حاوية Amazon S3.

    (انقر للتكبير/التصغير)


    ب. حفظ ملفات المصدر على الكمبيوتر:

    • انقر فوق الملف المسمى aws-codepipeline-s3-aws-codedeploy_linux.zip 
    • انقر فوق عرض الأصل.
    • احفظ ملف النموذج على الكمبيوتر المحلي.

    (انقر للتكبير/التصغير)


    ج. انقر هنا لفتح وحدة التحكم Amazon S3 وإنشاء حاوية Amazon S3:

    • انقر فوق إنشاء حاوية
    • اسم الحاوية: اكتب اسمًا فريدًا للحاوية، مثل awscodepipeline-demobucket-variables.  يجب أن تكون كل أسماء الحاويات في Amazon S3 فريدة، لذا استخدم اسمًا واحدًا من اختيارك، ولكن لا ينبغي تسمية حاوية بالاسم الموضح في المثال.
    • المنطقة: في القائمة المنسدلة، حدد المنطقة التي ستقوم بإنشاء القناة الخاصة بك فيها، مثل الولايات المتحدة قياسي
    • انقر فوق إنشاء.

    (انقر للتكبير/التصغير)


    د. تعرض وحدة التحكم الحاوية المنشأة حديثًا، وهي فارغة.

    • انقر فوق الخصائص.
    • قم بإظهار خيار تعيين الإصدار وتحديد تمكين تعيين الإصدار. عند تمكين تعيين الإصدار، يحفظ Amazon S3 كل إصدار من كل عنصر في الحاوية.

    (انقر للتكبير/التصغير)


    هـ. ستحمل الآن عينة التعليمة البرمجية على حاوية Amazon S3: 

    • انقر فوق تحميل.
    • اتبع الإرشادات التي تظهر على الشاشة لتحميل ملف ‎.zip الذي يحتوي على عينة التعليمة البرمجية التي قمت بتنزيلها من GitHub.

    (انقر للتكبير/التصغير)

  • AWS CodeCommit

    أ. إذا كنت تخطط لاستخدام AWS CodeCommit كمصدر، فستسترد عينة التعليمة البرمجية من مستودع AWS GitHub وتحفظها على الكمبيوتر وتحملها إلى مستودع AWS CodeCommit.

    (انقر للتكبير/التصغير)


    ب. حفظ ملفات المصدر على الكمبيوتر:

    • حدد الملف المسمى aws-codepipeline-s3-aws-codedeploy_linux.zip 
    • حدد عرض الأصل.
    • احفظ ملف النموذج على الكمبيوتر المحلي.

    (انقر للتكبير/التصغير)


    د. انقر هنا لفتح وحدة تحكم AWS CodeCommit، ثم حدد بدء الاستخدام.

    (انقر للتكبير/التصغير)


    هـ. في صفحة إنشاء مستودع جديد:

    • اسم المستودع: ادخل إلى قسم PipelineRepo.
    • حدد إنشاء مستودع.

    (انقر للتكبير/التصغير)


    و. اتصل بمستودع، ثم أرسِل إليه نسخة من ملف العينة إليه.  للحصول على إرشادات، راجع الاتصال بمستودع AWS CodeCommit.

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


أ. انقر هنا لفتح وحدة تحكم AWS CodePipeline.

  • على صفحة الترحيب، انقر فوق إنشاء قناة
  • إذا كانت هذه هي المرة الأولى التي تستخدم فيها AWS CodePipeline، فستظهر صفحة تمهيدية بدلاً من صفة الترحيب. انقر فوق بدء الاستخدام.

(انقر للتكبير/التصغير)


ب. في صفحة الخطوة 1: الاسم:

  • اسم القناة: أدخل اسمًا لقناتك، DemoPipeline
  • انقر فوق الخطوة التالية.

ملاحظة: بعد إنشاء القناة، لا يمكنك تغيير اسمها.

(انقر للتكبير/التصغير)


ج. في صفحة الخطوة 2: المصدر حدد موقع المصدر الذي حددته واتبع الخطوات أدناه:

  • GitHub

    موفر المصدر: GitHub

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

    (انقر للتكبير/التصغير)


    تحديد المستودع والفرع:

    • المستودع:من القائمة المنسدلة، حدد مستودع GitHub الذي ترغب في استخدامه كموقع مصدر لقناتك. انقر فوق المستودع المتشعب في حسابك على GitHub الذي يحتوي على تعليمة برمجية باسم aws-codepipeline-s3-aws-codedeploy_linux
    • الفرع: من القائمة المنسدلة، حدد الفرع الذي ترغب في استخدامه، الفرع الرئيسي.
    • انقر فوق الخطوة التالية.

    (انقر للتكبير/التصغير)

  • Amazon S3

    موفر المصدر: Amazon S3.

    • موقع Amazon S3: اكتب اسم حاوية Amazon S3 التي أنشأتها متبوعًا بنموذج الملف الذي نسخته في هذه الحاوية (aws-codepipeline-s3-aws-codedeploy_linux.zip). على سبيل المثال، إذا قمت بتسمية حاويتك awscodepipeline-demobucket-variable، فسوف تكتب: s3://awscodepipeline-demobucket-variable/aws-codepipeline-s3-aws-codedeploy_linux.zip.
    • انقر فوق الخطوة التالية.

    (انقر للتكبير/التصغير)

  • AWS CodeCommit

    موفر المصدر: AWS CodeCommit.

    • اسم المستودع: اختر اسم مستودع AWS CodeCommit. 
    • اسم الفرع: اختر اسم الفرع الذي يحتوي على نموذج الملف.
    • انقر فوق الخطوة التالية.

    (انقر للتكبير/التصغير)


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

  • في صفحة الخطوة 3: الإصدار، اختر لا يوجد إصدار.
  • انقر فوق الخطوة التالية.

 

(انقر للتكبير/التصغير)


هـ. في صفحة الخطوة 4: بيتا:

  • موفر التوزيع: انقر فوق AWS Elastic Beanstalk
  • اسم التطبيق: انقر فوق أول تطبيق Elastic Beanstalk خاص بي
  • اسم البيئة: انقر فوق البيئة الافتراضية.
  • انقر فوق الخطوة التالية.

ملاحظة: "بيتا" هو ببساطة الاسم الذي يتم استخدامه بشكل افتراضي لهذه المرحلة من القناة، تمامًا كما كان "المصدر" هو الاسم الذي تم إعطاؤه للمرحلة الأولى من القناة.

(انقر للتكبير/التصغير)


و. في صفحة الخطوة 5: دور الخدمة:

  • دور الخدمة: انقر فوق إنشاء دور.
  • سيُعاد توجيهك إلى صفحة وحدة تحكم IAM التي تصف دور خدمة AWS-CodePipeline-Service التي ستُنشأ لك. انقر فوق السماح
  • بعد إنشاء الدور، يتم إرجاعك إلى صفحة الخطوة 5: دور الخدمة حيث تظهر AWS-CodePipeline-Service في اسم دور. انقر فوق الخطوة التالية.

ملاحظة: لا يلزم إنشاء دور الخدمة إلا في المرة الأولى التي تقوم فيها بإنشاء قناة في AWS CodePipeline. إذا كان دور الخدمة مُنشأ بالفعل، فستتمكن من اختياره من قائمة الأدوار المنسدلة. نظرًا لأن القائمة المنسدلة ستعرض كل أدوار خدمة IAM المرتبطة بحسابك، فتأكد من التعرف على الاسم كدور خدمة لـ AWS CodePipeline إذا اخترت اسمًا مختلفًا عن الاسم الافتراضي.

(انقر للتكبير/التصغير)

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


أ. في صفحة الخطوة 6: المراجعة، راجع المعلومات وانقر فوق إنشاء قناة.

(انقر للتكبير/التصغير)


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

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

(انقر للتكبير/التصغير)


ج. في منطقة الحالة لمرحلة بيتا، انقر فوق AWS Elastic Beanstalk

(انقر للتكبير/التصغير)


د. تُفتح وحدة تحكم AWS Elastic Beanstalk مع تفاصيل عملية التوزيع.

  • انقر فوق البيئة التي قمت بإنشائها سابقًا، والتي تسمى البيئة الافتراضية

(انقر للتكبير/التصغير)


هـ. انقر فوق URL الذي يظهر في الجزء العلوي الأيمن من الصفحة لعرض نموذج موقع ويب نشرته.

(انقر للتكبير/التصغير)

في هذه الخطوة، ستراجع عينة تعليمة برمجية وتطبيق التغييرات في المستودع. سيكتشف CodePipeline عينة التعليمة البرمجية المحدّثة ثم يبدأ تلقائيًا في نشرها على مثيل EC2 عبر Elastic Beanstalk. 

لاحظ أن نموذج صفحة الويب التي نشرتها يشير إلى AWS CodeDeploy، وهي خدمة تشغل عمليات توزيع التعليمة البرمجية تلقائيًا. في CodePipeline، يُعد CodeDeploy بديلاً لاستخدام Elastic Beanstalk لإجراءات التوزيع. سنحدث عينة التعليمة البرمجية، بحيث تشير بشكل صحيح إلى أنك نشرت العينة باستخدام Elastic Beanstalk.

  • GitHub

    أ. انتقل إلى نسختك من المستودع الذي قمت بتوفير نسخة فرعية منه في GitHub.

    • افتح index.html
    • حدد أيقونة تحرير.

    (انقر للتكبير/التصغير)


    ب. حدِّث صفحة الويب عن طريق نسخ النص التالي ولصقه في السطر 30: 

    قد أنشأت بنجاح مسارًا استعاد هذا التطبيق المصدر من GitHub ونشره في أحد مثيلات Amazon EC2 باستخدام AWS Elastic Beanstalk. لقد تقدمت خطوة في ممارسة التوزيع المستمر!

    (انقر للتكبير/التصغير)


    ج. طبِّق التغيير على المستودع.

    (انقر للتكبير/التصغير)

  • Amazon S3

    أ. على سطح المكتب، افتح الملف المضغوط الذي قمت بتنزيله، المُسمى بـ aws-codepipeline-s3-aws-codedeploy_linux.zip.


    ب. حرِّر عينة التعليمة البرمجية لتطبيق الويب:

    • استخرج index.html من الملف المضغوط وافتحه باستخدام ‏‏محرر النص المفضل لديك. 
    • حدِّث نص العنوان الذي يأتي بعد «تهانينا!»، بحيث يكون مكتوبًا ما يلي:

    «لقد أنشأت بنجاح مسارًا استعاد هذا التطبيق المصدر من Amazon S3 ونشره في أحد مثيلات Amazon EC2 باستخدام AWS Elastic Beanstalk. لقد تقدمت خطوة في ممارسة التوزيع المستمر!»

    • انسخ ملف index.html المُحدَّث مرةً أخرى في aws-codepipeline-s3-aws-codedeploy_linux.zip واستبدل به الإصدار القديم من index.html.

    (انقر للتكبير/التصغير)


    ج. أعد تحميل الملف المُحرر إلى حاوية Amazon S3:

    • ارجع إلى حاوية S3 التي أنشأتها سابقًا. 
    • حمِّل ملف aws-codepipeline-s3-aws-codedeploy_linux.zip في الحاوية. 

    ملاحظة:نظرًا لأنك قمت بتمكين تعيين الإصدارات عند إنشائك حاوية S3 لأول مرة، فسيحفظ S3 نسخة لكل إصدار من ملفاتك.

    (انقر للتكبير/التصغير)

  • AWS CodeCommit

    أ. افتح الملف المضغوط الذي يحتوي على عينة التعليمة البرمجية التي قمت بتنزيلها، المسمى بـ aws-codepipeline-s3-aws-codedeploy_linux.zip.


    ب. حرِّر عينة التعليمة البرمجية لتطبيق الويب:
     
    • استخرج index.html من الملف المضغوط وافتحه باستخدام ‏‏محرر النص المفضل لديك. 
    • حدِّث حينئذٍ نص العنوان الذي يأتي بعد «تهانينا!»، بحيث يكون مكتوبًا ما يلي:

    قد أنشأت بنجاح مسارًا استعاد هذا التطبيق المصدر من AWS CodeCommit ونشره في أحد مثيلات Amazon EC2 باستخدام AWS Elastic Beanstalk. لقد تقدمت خطوة في ممارسة التوزيع المستمر!

    (انقر للتكبير/التصغير)


    ج. أكمل الملف المضغوط المُحدَّث وانقله إلى مستودع CodeCommit.


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

  • بعد أن تظهر حالة القناة ناجحة، في منطقة الحالة لمرحلة بيتا، انقر فوق AWS Elastic Beanstalk.

(انقر للتكبير/التصغير)


هـ. تُفتح وحدة تحكم AWS Elastic Beanstalk مع تفاصيل عملية التوزيع. حدد البيئة المُنشأة سابقًا، والتي تسمى البيئة الافتراضية.

(انقر للتكبير/التصغير)


و. انقر فوق URL الذي يظهر في الجزء العلوي الأيمن من الصفحة لعرض نموذج موقع الويب مرة أخرى.  حُدث النص تلقائيًا عبر قناة التوزيع المستمر!

 

(انقر للتكبير/التصغير)

لتجنب الرسوم المستقبلية، ستحذف كل الموارد التي قمت بتشغيلها خلال هذا البرنامج التعليمي، الذي يتضمن القناة وتطبيق Elastic Beanstalk والمصدر الذي قمت بإعداده لاستضافة التعليمة البرمجية.  


أ. أولاً، ستحذف قناتك:

  • في طريقة عرض القناة، انقر فوق تحرير
  • انقر فوق حذف.
  • اكتب اسم القناة وانقر فوق حذف.

(انقر للتكبير/التصغير)


ب. ثانيًا، احذف تطبيق Elastic Beanstalk:

  • انتقل إلى وحدة تحكم Elastic Beanstalk. 
  • انقر فوق إجراءات.
  • وبعد ذلك، انقر فوق إنهاء تشغيل البيئة.

(انقر للتكبير/التصغير)

  • Amazon S3

    ج. إذا أنشأت حاوية S3 لهذا البرنامج التعليمي، فاحذف الحاوية التي أنشأتها:

    • انتقل إلى وحد تحكم S3. 
    • انقر بزر الماوس الأيمن فوق اسم الحاوية وحدد حذف الحاوية
    • عند ظهور رسالة تأكيد، أدخل اسم الحاوية ثم انقر فوق حذف.

    (انقر للتكبير/التصغير)

  • AWS CodeCommit

    ج. إذا قمت بإنشاء مستودع AWS CodeCommit لهذا البرنامج التعليمي، فانتقل إلى وحدة تحكم CodeCommit واحذف المستودع الذي قمت بإنشائه:

    (انقر للتكبير/التصغير)


    ج. في جزء التنقل، حدد إعدادات.

    • انقر فوق حذف المستودع.
    • ستنبثق نافذة تأكيد. اكتب اسم المستودع وانقر فوق حذف.

    (انقر للتكبير/التصغير)

لقد قمت بإنشاء قناة إصدار برنامج تلقائي بنجاح باستخدام AWS CodePipeline! باستخدام CodePipeline، قمت بإنشاء قناة تستخدم GitHub أو Amazon S3 أو AWS CodeCommit كموقع مصدر للتعليمات البرمجية للتطبيق ثم نشرت التعليمة البرمجية إلى مثيل Amazon EC2 الذي يديره AWS Elastic Beanstalk. ستنشر قناتك التعليمة البرمجية تلقائيًا في كل مرة يتم فيها تغيير تعليمة برمجية. لقد تقدمت خطوة في ممارسة التوزيع المستمر!

الآن بعد أن تعلمت إنشاء قناة بسيطة باستخدام AWS CodePipeline، يمكنك معرفة المزيد من خلال زيارة المصادر التالية.