
Continuous Deployment هو أسلوب خاص في تطوير البرامج يستخدم لتنفيذ الوظائف المختلفة في البرامج بسرعة وأمان وأمان.
الفكرة الرئيسية هي إنشاء عملية تلقائية موثوقة تتيح للمطور تزويد المستخدم بمنتج نهائي بسرعة. في الوقت نفسه ، يتم إجراء تغييرات ثابتة في الإنتاج - وهذا ما يسمى خط أنابيب التسليم المستمر (خط أنابيب CD).
توصي Skillbox بما يلي: دورة عملية "Mobile Developer PRO" .
نذكرك: لجميع قراء "Habr" - خصم بقيمة 10،000 روبل عند التسجيل في أي دورة تدريبية في Skillbox باستخدام الرمز الترويجي "Habr".

للتحكم في التدفق ، يمكنك استخدام مجموعة واسعة من الأدوات ، من بينها هناك مدفوعة وخالية تماما. توضح هذه المقالة الحلول الثلاثة الأكثر شيوعًا بين المطورين والتي قد تكون مفيدة لكل مبرمج.
جنكينز
مستقل تماما خادم التشغيل الآلي المصدر المفتوح. يجدر العمل معه لأتمتة جميع أنواع المهام المتعلقة بتجميع البرامج أو اختبارها أو تسليمها أو نشرها.
الحد الأدنى لمتطلبات الكمبيوتر:
- 256 ميغابايت من ذاكرة الوصول العشوائي ، مساحة ملف 1 جيجابايت.
الأمثل:
- 1 غيغابايت من ذاكرة الوصول العشوائي ، 50 غيغابايت من مساحة القرص الثابت.
للعمل ، ستحتاج أيضًا إلى برنامج إضافي - الإصدار 8 من Java Runtime Environment (JRE).
الهندسة المعمارية (الحوسبة الموزعة) هي كما يلي:

Jenkins Server - تثبيت مسؤول عن استضافة واجهة المستخدم الرسومية ، وكذلك تنظيم وتنفيذ التجميع بأكمله.
Jenkins Node / Slave / Build Server - الأجهزة التي يمكن تكوينها لأداء أعمال التجميع نيابة عن Master (العقدة الرئيسية).
تثبيت لينكستحتاج أولاً إلى إضافة مستودع جنكينز إلى النظام:
cd / tmp && wget -q -O - pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add - echo 'deb pkg.jenkins.io/debian-stable binary /' | sudo tee -a /etc/apt/sources.list.d/jeتحديث مستودع الحزمة:
sudo التحديث المناسبتثبيت جنكينز:
سودو عرضة تثبيت جنكينزبعد ذلك ، ستتوفر جنكينز على النظام عن طريق المنفذ الافتراضي 8080.
للتحقق من وظيفة ، افتح
المضيف المحلي : 8080 العنوان في المتصفح. ثم سيطالبك النظام بإدخال كلمة المرور الأولية للمستخدم مع حقوق الجذر. توجد كلمة المرور هذه في الملف / var / lib / jenkins / secrets / initialAdminPassword.
الآن كل شيء جاهز للعمل ، يمكنك البدء في إنشاء تدفقات CI / CD. الواجهة الرسومية لبيئة العمل هي كما يلي:


قوة جنكينز:
- قابلية التوسع التي توفرها الهندسة المعمارية Master / Slave ؛
- وجود API REST XML / JSON ؛
- القدرة على توصيل عدد كبير من الامتدادات بفضل المكونات الإضافية ؛
- مجتمع نشط ومتطور باستمرار.
سلبيات:
- وحدة تحليلية مفقودة ؛
- لا واجهة مريحة للغاية.
TeamCity
التنمية التجارية من JetBrains. الخادم جيد لإعداد بسيط وواجهة ممتازة. هناك عدد كبير من الوظائف في التكوين الافتراضي ؛ يتزايد باستمرار عدد المكونات الإضافية المتاحة.
يتطلب هذا المحتوى إصدار بيئة وقت تشغيل Java (JRE) 8.
متطلبات الخادم للأجهزة غير ضرورية:
- ذاكرة الوصول العشوائي - 3.2 جيجابايت ؛
- المعالج - ثنائي النواة ، 3.2 جيجا هرتز ؛
- قناة اتصال مع عرض النطاق الترددي 1 جيجابت / ثانية.
يتيح لك الخادم تحقيق أداء عالٍ في العمل:
- 60 مشروعًا مع 300 تكوين تجميع
- تخصيص 2 ميغابايت لسجل التجميع ؛
- 50 عامل بناء ؛
- القدرة على العمل 50 مستخدمًا في إصدار الويب و 30 مستخدمًا في IDE ؛
- 100 اتصال SLE خارجي ، عادة Perforce والتخريب. وقت التغيير المتوسط هو 120 ثانية ؛
- أكثر من 150 التعديلات في اليوم الواحد ؛
- العمل مع قاعدة البيانات على خادم واحد ؛
- إعدادات عملية خادم JVM: -Xmx1100m -XX: MaxPermSize = 120m.
يتم تحديد متطلبات العامل عن طريق تشغيل التجميعات. تتمثل المهمة الرئيسية للخادم في تتبع جميع الوكلاء المتصلين وتوزيع المجموعات من قائمة الانتظار بين هؤلاء الوكلاء بناءً على متطلبات التوافق ، مع الإبلاغ عن النتائج. لدى الوكلاء منصات وأنظمة تشغيل مختلفة ، بالإضافة إلى بيئة مُعدة مسبقًا.
يتم تخزين جميع المعلومات حول نتائج التجميع في قاعدة البيانات. بادئ ذي بدء ، هذا هو التاريخ والبيانات الأخرى المشابهة ، وتغييرات VCS ، والوكلاء ، وقوائم الانتظار ، والحسابات ، وأذونات المستخدم. لا تتضمن قاعدة البيانات سجلات التجميع والتحف فقط.
تثبيت لينكسلتثبيت TeamCity يدويًا مع حاوية Tomcat servlet ، استخدم أرشيف TeamCity: TeamCity .tar.gz. يمكنك تنزيله
من هنا .
tar -xfz TeamCity.tar.gz
/ بن / runAll. ش [بدء | توقف]
في البداية ، تحتاج إلى تحديد نوع قاعدة البيانات التي سيتم تخزين بيانات التجميع فيها.

يعمل التكوين الافتراضي على
المضيف المحلي: 8111 / مع عامل بناء مسجل واحد يعمل على نفس جهاز الكمبيوتر.
نقاط القوة TeamCity:
- الإعداد بسيط.
- واجهة مريحة.
- عدد كبير من الوظائف المدمجة ؛
- خدمة الدعم
- هناك واجهة برمجة تطبيقات مريحة ؛
- توثيق جيد
- أمن جيد.
سلبيات:
- تكامل محدود.
- إنها أداة مدفوعة ؛
- مجتمع صغير (والذي ، مع ذلك ، ينمو).
GoCD
مشروع مفتوح المصدر يتطلب إصدار Java Runtime Environment (JRE) 8 للتثبيت والتشغيل.
متطلبات النظام:
- ذاكرة الوصول العشوائي - 1 غيغابايت كحد أدنى ، أفضل أكثر ؛
- المعالج - ثنائي النواة ، مع تردد الأساسية 2 غيغاهرتز.
- القرص الصلب - 1 غيغابايت على الأقل من المساحة الحرة.
وكيل:
- ذاكرة الوصول العشوائي - على الأقل 128 ميغابايت ، ويفضل أكثر ؛
- المعالج - على الأقل 2 غيغاهرتز.
يوفر الخادم وكلاء ويوفر واجهة مريحة للمستخدم:

مراحل / وظائف / المهام:
تثبيت لينكسصدى "deb download.gocd.org /" | sudo tee /etc/apt/sources.list.d/gocd.list
curl download.gocd.org/GOCD-GPG-KEY.asc | sudo apt-key add -
add-apt-repository ppa: openjdk-r / ppa
apt-get update
apt-get install -y openjdk-8-jre
apt-get install go-server
apt-get install go-agent
/etc/init.d/go-server [start | stop | status | restart]
/etc/init.d/go-agent [start | stop | status | restart]بشكل افتراضي ، يعمل GoCd على
المضيف المحلي: 8153.
قدرات GoCd:
- المصدر المفتوح
- تركيب بسيط والإعداد.
- توثيق جيد

- إمكانية عرض خطوة بخطوة لمسار نشر GoCD في عرض واحد:


- GoCD يحسن سير عمل القرص المضغوط في البيئات السحابية الأكثر شعبية ، بما في ذلك Docker ، AWS ؛
- تتيح الأداة تصحيح الأخطاء في خط الأنابيب ، حيث يوجد تتبع لكل تغيير من الالتزام بالنشر في الوضع الفعلي.
سلبيات:
- هناك حاجة إلى وكيل واحد على الأقل ؛
- لا توجد وحدة تحكم لعرض جميع المهام المكتملة ؛
- لتنفيذ كل أمر ، تحتاج إلى إنشاء مهمة واحدة لتكوين خط أنابيب ؛
- لتثبيت المكوّن الإضافي ، تحتاج إلى نقل ملف .jar إلى <go-server-location> / plugins / external وإعادة تشغيل الخادم ؛
- مجتمع صغير نسبيا.
كخلاصة
هذه مجرد ثلاث أدوات ، في الواقع ، هناك العديد من الأدوات الأخرى. من الصعب عليك الاختيار ، لذلك يجب الانتباه إلى الجوانب الإضافية.
يتيح كود المصدر المفتوح للأداة فهم ما هو عليه ، بالإضافة إلى إضافة وظائف جديدة بشكل أسرع. لكن إذا لم ينجح شيء ما ، فعليك الاعتماد فقط على نفسك وعلى مساعدة المجتمع. توفر الأدوات المدفوعة الدعم الذي قد يكون في بعض الأحيان حرجًا.
إذا كانت السلامة أكثر أهمية ، فيجب عليك العمل باستخدام أداة محلية. إذا لم يكن الأمر كذلك ، فإن اختيار حل SaaS يعد خيارًا جيدًا.
والأخير: من أجل ضمان عملية فعالة بالفعل للنشر المستمر ، من الضروري صياغة معايير ، والتي من شأنها أن تجعل من الممكن تضييق نطاق اختيار الأدوات المتاحة.
توصي Skillbox بما يلي: