لا تبالغ في تعريف CI / CD الخاص بك واستخدم Docker بشكل هادف

لقد عملت في شركات مختلفة تستخدم خدمات microservices. وركضوهم في حاويات السفن. أنا الآن أعمل مع مشروع ، رغم أنه متراصة ، إلا أنه لا يزال أكثر ملاءمة لتشغيله في حاوية.

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

عادة ، في شركة قياسية ، تبدو عملية العمل في أي مهمة كما يلي:

  1. يتم دفع جيت مع التزامنا
  2. يتم تشغيل النظام ، سواء كان جنكينز ، TeamCity ، إلخ.
  3. يتم تشغيل Pipeline / job ، حيث يتم تنزيل مكتبات الطرف الثالث ، ويتم تجميع المشروع ، ويتم تشغيل الاختبارات
  4. يتم إنشاء صورة عامل ميناء مع المشروع تجميعها (ADD ..) ودفعت في التسجيل عامل ميناء البعيد
  5. بطريقة أو بأخرى ، على الخادم البعيد ، يتم سحب عامل ميناء (الشيف ، دمية ، يدويا عن طريق عامل الميناء) ويبدأ الحاوية.

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

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

ما لا يعجبني في هذا النهج.

  1. الطريقة الوحيدة لنشر النظام على خادم بعيد هي متابعة الخطوات الخمس.
  2. في الخطوة 3 ، قد تحتاج إلى مفاتيح الوصول إلى المكتبات الخاصة. يمكن أن تكون العملية طويلة إذا لم يتم تكوين التخزين المؤقت للمكتبات التي تم تنزيلها مسبقًا.
  3. تحتاج إلى إعداد Dockerfile ، وتحديد الصورة (من ...) ، وتحديد كيفية وضع علامة على الصورة وتحتاج إلى الوصول إلى المستودع الذي سنقوم بدفع الصورة إليه.
  4. تحتاج مستودعك الخاص ، قم بتكوين https. بعد كل شيء ، عميل عامل ميناء يعمل فقط على https.


الفقرة الرابعة ، بالطبع ، تتم مرة واحدة وربما لا ينبغي إضافتها.

ولكن كم مرة تم ذكر كلمة Docker بالفعل في مرحلة الإصدار؟

فكر في الأمر: لماذا نسحب كل عامل الميناء هذا في وقت مبكر؟ لأنه يُعتقد أن الحاوية مريحة و "حسنًا ، كل شيء على ما يرام ، إنه يعمل. ماذا بدأت بعد ذلك؟ ".
لذلك ، بالنسبة لهؤلاء الأشخاص ، يمكنني القول - حاويات الإرساء ليست حلاً سحريًا وليست البيئة الوحيدة التي يمكن أن يعمل بها التطبيق الخاص بك. مشروع مكتوب بيثون ، php ، js ، سويفت ، سكالا / جافا ، إلخ. يمكن تشغيله على:

  • الجهاز الظاهري عن بعد
  • على مضيف محلي دون أي حاويات المحاكاة الافتراضية ورصيف الميناء.

فجأة :)

دعونا نتخيل أننا نقوم بعمل خدمة ستعمل على nodeJS.

ستكون نتيجة هذا المشروع (أو كما أسميها "قطعة أثرية") عبارة عن مجموعة من ملفات js (الخدمة نفسها) + node_modules (مكتبات الجهات الخارجية المستخدمة في الخدمة).

لنفترض أننا تأكدنا من أن الخدمة تعمل وتريد تشغيلها عن بُعد حتى يتمكن اختبارنا من اختبارها للحصول على وظائف.

كيف تحب هذه الفكرة:

  1. نصنع .tar.gz مع مشروعنا وتحميله على ... مستودع عن بعد من القطع الأثرية! (أيضا ، تسمى هذه المستودعات "مستودع ثنائي").
  2. نقول عنوان url الذي يمكنهم من خلاله تنزيل خدماتنا وبدء الاختبار.

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

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

الآن من مستودعات ثنائية هناك:

  • Sonatype نيكزس
  • اصطناعي

Nexus سهل الاستخدام ، حيث يحتوي على مجموعة من المستودعات المختلفة التي يمكنك إنشاؤها (npm ، maven ، raw ، عامل ميناء) لذلك يمكنني استخدامها.

هذه فكرة بسيطة لعنة ، لماذا لم أقرأ عنها في أي مكان؟ على الإنترنت ، لا يمكنك حساب المقالات "مثل على git push في مكان ما يتم نشر الحاوية في بعض أنواع kubernetes". من هذه الخوارزميات المعقدة ، يقف الشعر في النهاية.

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

فرق وحكم!

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

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

حظا سعيدا في إطلاق مشاريعك!

Source: https://habr.com/ru/post/ar443136/


All Articles