كيفية إعداد CI على GitLab باستخدام Docker

مثال باستخدام Docker لاختبار وبناء خط الأنابيب الخاص بك

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

إليك ما سنقوم بإعداده:

  • التحكم في الإصدار
  • قضية المقتفي
  • كابل بيانات
  • التكامل المستمر
  • التسليم المستمر
  • مستودع (التحف / صور عامل ميناء)

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

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

GitLab CI

GitLab.com هي خدمة قائمة على SAAS حيث يمكنك استضافة مستودع Git الخاص بك وتعقب المشكلات وكتابة الويكي في تخفيض السعر. يتيح لك GitLab CI أيضًا إعداد تكامل مستمر باستخدام أي صورة Docker متوفرة على Docker Hub. دعنا نلقي نظرة على المثال التالي.

GitLab CI YML

يستخدم GitLab CI ملف YAML .gitlab-ci.yml لتحديد تكوين المشروع ، والذي يتضمن تعريفًا لجميع المراحل التي يجب تشغيلها بعد تشغيل خط أنابيب CI / CD استجابةً لعملية دفع / دمج git. في هذا المثال ، لدينا مشروع Node.js بسيط ، ونود أن نتأكد من أن الشفرة جيدة عن طريق إجراء اختبار وحدة وتشغيله. للعب جنبا إلى جنب ، شوكة هذا مستودع والتحقق من ذلك.

في ملف التكوين YAML أعلاه حددنا 3 مراحل. كل مرحلة هي مجرد مهمة بلعبة محددة في gulpfile.js. يمكن لأي شخص تشغيل المهمة محليًا طالما أن Node.js مثبت. ولكن في GitLab CI ، نحتاج فقط إلى الإشارة إلى صورة Docker المطلوبة. في حالتنا ، هذا هو العقدة: 6.11.2. علاوة على ذلك ، يمكن تعريف سمة الصورة هذه ضمن تعريف المرحلة بحيث يمكنك استخدام أداة مختلفة لكل مرحلة.

تعريف المرحلة

دعنا نلقي نظرة أعمق في تعريف المرحلة.

يمكن أن تحتوي سمات before_script و script على قيم متعددة (صفيف في .yml). وإذا فشل تنفيذ البرنامج النصي ، فسيتم تصنيف المرحلة على أنها فاشلة.

تحريك خط الأنابيب

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

تاريخ خط الأنابيب

عرض المرحلة بالتفصيل

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

إخراج المرحلة

فوائد استخدام GitLab CI مع Docker

قد تتطلب المشروعات المختلفة تبعيات مختلفة مثل Node.js و Ant و Maven. في الماضي عند استخدام أداة مثل Jenkins ، كان علي التأكد من أن كل هذه الأدوات مثبتة على الخادم. باستخدام Docker ، يمكن للمطور الرجوع إلى التبعيات المتوفرة على Docker Hub دون مطالبة مسؤول الخادم بإعداد مثل هذه التبعيات على الخادم في كل مرة. في الواقع ، يحتوي جنكينز أيضًا على ملحق خط أنابيب ويمكن أن يعمل مع Docker لخدمة نفس الغرض تمامًا. ولكن هناك حاجة إلى بذل جهد إضافي لدمج Jenkins مع التحكم في الإصدار وكما ذكرت من قبل.

على الرغم من أنني أفضل استخدام GitLab CI ، فهذا لا يعني أنه قد يحل محل Jenkins بالكامل. تقدم Jenkins واجهة مستخدم قابلة للتكوين ملائمة لغير المطورين مثل QA لتنفيذ مهام معينة مثل النشرات واختبارات التكامل.

اختر أداة مناسبة - ليس من الضروري أن تكون مثالية

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

- نشرت أصلا على مدونة Boatswain.