إذا كنت تبحث عن وسيلة لاختبار ونشر صور Docker عبر CircleCI، يمكن أن يأخذك إنشاء أنبوب CI/CD بعيدًا لتحسين تسليم البرنامج الخاص بك.
في هذا البرنامج التعليمي، ستتعلم كيف يمكنك بشكل محتمل تطوير أنبوب CI/CD لصورة Docker الخاصة بك باستخدام CircleCI.
اقرأ ونشر صور Docker الخاصة بك، فقط إذا نجحت في الاختبار!
المتطلبات المسبقة
سيكون هذا البرنامج التعليمي عرضًا عمليًا. إذا كنت ترغب في متابعة، تأكد من أن لديك ما يلي:
- A GitHub account and GitHub repository that is already set up.
- A CircleCI account linked to your GitHub account.
- تثبيت Docker.
- A Linux machine – This tutorial uses Ubuntu 20.04.3 LTS.
إنشاء صورة Docker لتطبيق قائم على لغة Python
قبل الانتقال إلى إنشاء أنبوب CI/CD، ستقوم أولاً بإنشاء صورة Docker استنادًا إلى تطبيق Python يعرض نصوصًا على متصفح الويب. ستمر بإيجاز عبر كيفية بناء التطبيق، كتابة حالات الاختبار للتطبيق، ثم تحويل التطبيق إلى حاوية.
1. افتح محطة الطرفية الخاصة بك وقم بتشغيل الأمر التالي لـ تثبيت
Flask و Pytest. Flask هو إطار يستخدم لبناء تطبيقات الويب بلغة Python بينما يُستخدم Pytest لكتابة اختبارات الشفرة بلغة Python.
2. بعد ذلك، قم بإنشاء دليل مشروع بالاسم الذي تفضله، ولكن يُسمى دليل المشروع flask-circleci
في هذا العرض التوضيحي. يعتبر هذا الدليل هو المكان الذي ستخزن فيه الموارد الخاصة بك لهذا البرنامج التعليمي.
3. قم بإنشاء ملف يُسمى flask-circleci/main.py واملأ الشيفرة التالية.
الشيفرة أدناه تعرض نص “مرحبًا بك في تطبيق Flask الخاص بي” على صفحة البداية في متصفح.
4. الآن، قم بإنشاء ملف آخر يُسمى flask-circleci/test_main.py وانسخ/الصق الشيفرة التالية.
الشيفرة أدناه تُنشئ عميل اختبار لتطبيقك.
تتطلب Pytest أن يبدأ اسم ملف الاختبار الخاص بك بـ test_ كما هو موضح أدناه.
5. قم بتشغيل الأوامر التالية للانتقال إلى دليل مشروعك (flask-circleci
)، وتشغيل الاختبار لمشروعك.
إذا نجح الاختبار، ستحصل على تقدم بنسبة 100٪، كما هو موضح أدناه.

6. بعد ذلك، قم بإنشاء ملف نصي (requirements.txt) لوثائق الاعتمادات الخاصة بك في الدليل الجذر واملأ النص أدناه. هذا الملف أساسي عند بناء صورة Docker الخاصة بك بحيث يعمل بشكل صحيح.
7. أخيرًا، قم بإنشاء ملف جديد (flask-circleci/Dockerfile)، واكتب التعليمات أدناه في Dockerfile لبناء صورة Docker الخاصة بك.
التعليمات في Dockerfile تقوم بما يلي:
- إنشاء ملف في صورتك.
- نسخ جميع الملفات في المجلد الحالي (flask-circleci).
- تشغيل كودك
إنشاء خط أنابيب CircleCI CI/CD
الآن لديك صورة Docker جاهزة، ستقوم بإنشاء خط أنابيب CI/CD لاختبار كودك، وإذا نجحت جميع الاختبارات، سيتم دفع صورة Docker ونشرها على Docker Hub. Docker Hub هو خدمة مثل GitHub، ولكن لصور Docker، تساعدك في العثور على الصور ومشاركتها مع فريقك أو مطورين آخرين.
لإنشاء خط الأنابيب CI/CD، اتبع الخطوات التالية:
1. افتح متصفح الويب المفضل لديك وقم بتسجيل الدخول إلى حسابك على Docker Hub.
2. في صفحة البداية لـ Docker Hub، انقر على الخيار إنشاء مستودع لإنشاء مستودع على Docker Hub.

3. قم بتعيين اسم فريد لمستودعك. يستخدم هذا البرنامج التعليمي مستودعًا يسمى circleci-tutorial، كما هو موضح أدناه.

4. أنشئ ملفًا جديدًا (flask-circleci/config.yml) في جذر مشروعك، وانسخ/الصق الشيفرة أدناه إلى ملف config.yml.
الشيفرة أدناه تحصل على صورة جاهزة للبايثون وتستخدمها لتثبيت التبعيات وتشغيل اختبارات الوحدة لبناء ودفع صورة Docker الخاصة بك إلى مستودع Docker Hub الخاص بك.
عادةً، في مشروع حي، ترغب في وضع اسم المستخدم وكلمة المرور الخاصة بك داخل CircleCI أو ربما في ملف .env.
5. أخيرًا، قم بتشغيل الأوامر التالية في جذر مشروعك لـ commit
و push
الشيفرة (flask-circleci/config.yml) إلى مستودع GitHub الخاص بك.
تفعيل خط أنابيب CircleCI CI/CD
لقد قمت للتو بإنشاء خط أنابيبك لـ CircleCI CI/CD، ولكنه في الوقت الحالي يجلس هناك دون فعل الكثير. ستحتاج إلى تفعيل خط الأنابيب الخاص بك عن طريق إعداد مشروع في حسابك على CircleCI.
1. قم بتسجيل الدخول إلى حساب CircleCI الخاص بك باستخدام حساب GitHub الخاص بك على متصفح الويب.
2. بعد ذلك، انقر على علامة التبويب المشاريع في اللوحة الجانبية اليسرى، وانقر على زر إعداد المشروع على الجانب الأيمن من مشروعك لتفعيل خط الأنابيب الخاص بـ CircleCI على المشروع.
نظرًا لأنك قد قمت بتسجيل الدخول إلى CircleCI باستخدام حساب GitHub الخاص بك، يتم مزامنة مشاريعك مع CircleCI، كما هو موضح في الصورة أدناه.

3. انتقل إلى علامة التبويب لوحة المعلومات وسترى حالة النجاح. تشير حالة النجاح إلى أن كل شيء تم تشغيله كما هو متوقع، وتم دفع الصورة إلى مستودع Docker Hub الخاص بك.
انقر على البناء لرؤية جميع الخطوات التي تم تشغيلها في خط الأنابيب.

أدناه، يمكنك رؤية قائمة الخطوات التي اتخذتها CircleCI لتشغيل الأنبوب.

4. في النهاية، انتقل مرة أخرى إلى مستودع Docker Hub الخاص بك، وسترى الصورة التي قمت بدفعها إلى Docker Hub من خلال خط الأنابيب الخاص بـ CircleCI.

دفع التغييرات إلى GitHub لتشغيل خط الأنابيب الخاص بـ CircleCI
حتى الآن، لديك بالفعل خط أنابيب CircleCI العامل. ولكن ربما قمت بتغييرات على مشروعك. إذا كان الأمر كذلك، كيف تعرف أن الخط الأنابيب لا يزال يعمل؟ يمكنك تشغيل CircleCI عن طريق دفع التغييرات إلى مستودع GitHub الخاص بك ورؤية ما إذا كان الاختبار سينجح.
1. على جهازك المحلي، قم بتعويض الكود الذي لديك في test_main.py بالكود أدناه. الكود أدناه يضمن بشكل متعمد فشل الاختبار لأن رمز الحالة تغير من 200
إلى 400
.
2. بعد ذلك، قم بتعويض steps
في config.yml الذي يقوم ببناء صورة Docker ودفعها إلى Docker Hub بالكود أدناه.
في الكود أدناه، أنت فقط تقوم بتغيير الإصدار للتأكد من أنه سيتم دفع التغييرات الجديدة فقط إلى مستودع GitHub الخاص بك.
3. قم بتشغيل الأوامر التالية على جذر مشروعك لعملية commit
و push
للكود إلى مستودع GitHub الخاص بك.
4. الآن، انتقل إلى لوحة تحكم CircleCI الخاصة بك، وسترى أن البناء فشل، كما هو موضح أدناه.
انقر على “بناء” لرؤية الخطوات المتخذة لدفع التغييرات وتأكيد سبب فشل البناء.


5. في النهاية، انتقل إلى مستودع Docker Hub الخاص بك وتأكد من عدم دفع التغييرات.
كما يمكنك رؤية في الصورة أدناه، لم يتم تحميل v2 لأن الاختبار فشل.

الاستنتاج
طوال هذا البرنامج التعليمي، تعلمت كيفية كتابة الاختبارات وجعل تطبيق Python الخاص بك متوافقًا مع Docker. لقد أنشأت أنبوب عمل CI/CD مع CircleCI الذي يقوم بتشغيل الاختبارات لتطبيقك ويقوم بدفع صورة Docker الخاصة بك إلى Docker Hub.
في هذه النقطة، لديك بالفعل معرفة أساسية حول تطوير أنبوب عمل CI/CD مع CircleCI. الآن، كيف تنوي استخدام هذه المعرفة الجديدة؟ ربما بإنشاء أنبوب عمل CI/CD ينشر صورة Docker الخاصة بك على Heroku ؟
Source:
https://adamtheautomator.com/circleci-docker-images/