Jenkins هو أداة أتمتة مفتوحة المصدر تُستخدم على نطاق واسع في بيئات DevOps لدعم التكامل المستمر (CI) والتسليم المستمر (CD). يسهل Jenkins المهام المتعلقة ببناء واختبار ونشر الشيفرة من خلال أتمتة معظم عمليات تطوير البرمجيات. يقدم هذا الدليل برنامجًا تعليميًا مفصلًا لتثبيت وتهيئة Jenkins، مع التركيز على البساطة والوضوح. سواء كنت جديدًا في Jenkins أو تحتاج إلى تذكير، سيساعدك هذا الدليل على البدء بسرعة.
مقدمة إلى Jenkins
Jenkins هو خادم أتمتة مفتوح المصدر يُستخدم بشكل شائع لتنظيم عمليات بناء واختبار ونشر البرمجيات. يدعم Jenkins مجموعة واسعة من الإضافات التي تعزز وظيفته، مما يجعله أحد الأدوات الأساسية لأتمتة كل مراحل دورة تطوير البرمجيات تقريبًا. لقد جعلته قابلية التوسع الخاصة به، إلى جانب المجتمع النشط، عنصرًا أساسيًا في سلاسل أدوات DevOps.
فهم كيفية تثبيت وتكوين Jenkins أمر ضروري لأي شخص مشارك في DevOps أو تطوير البرمجيات. سيرشدك هذا الدليل خلال عملية التثبيت، وتكوين Jenkins لبيئتك، وإنشاء أول وظيفة Jenkins لك.
المتطلبات الأساسية
قبل البدء في عملية تثبيت Jenkins، تأكد من توافر ما يلي:
- خادم Linux: يعمل Jenkins بشكل أفضل على نظام قائم على Unix، لكنه يمكن أن يعمل أيضًا على Windows. في هذا الدليل، سنركز على توزيعات Ubuntu/Debian.
- تثبيت Java: يعتمد Jenkins على Java للعمل، لذا يجب التأكد من أن Java مثبتة. يتطلب Jenkins Java 8 أو 11.
- وصول Root أو sudo: ستحتاج إلى صلاحيات Root أو sudo لتثبيت الحزم وتكوين Jenkins على خادمك.
تثبيت Jenkins على Ubuntu
لنبدأ بتثبيت Jenkins على نظام Ubuntu. سنغطي التثبيت باستخدام كلٍ من الحزمة الافتراضية في Ubuntu ومستودع Jenkins الرسمي لضمان الحصول على أحدث إصدار.
1. تحديث النظام الخاص بك
الخطوة الأولى قبل تثبيت أي برامج جديدة هي التأكد من أن نظامك محدث. استخدم الأوامر التالية لتحديث فهرس حزم النظام وترقية جميع الحزم المثبتة:
$ sudo apt update
$ sudo apt upgrade
سيقوم هذا بتحديث قوائم الحزم وتثبيت أي ترقيات متاحة للحزم الموجودة.
2. تثبيت Java
يتطلب Jenkins وجود Java للعمل. يمكنك تثبيت OpenJDK، وهو تنفيذ مفتوح المصدر لمنصة Java. لتثبيت Java 11، استخدم الأمر التالي:
$ sudo apt install openjdk-11-jdk
بعد اكتمال التثبيت، تحقق من تثبيت Java من خلال التحقق من الإصدار:
$ java -version
يجب أن ترى مخرجات تشير إلى أن Java 11 مثبتة.
3. إضافة مستودع Jenkins
الآن، تحتاج إلى إضافة مستودع Jenkins إلى نظامك حتى تتمكن من تثبيت أحدث إصدار من Jenkins. ابدأ باستيراد مفتاح GPG لمستودع Jenkins:
$ curl -fsSL https://pkg.jenkins.io/debian/jenkins.io.key | sudo tee \
/usr/share/keyrings/jenkins-keyring.asc > /dev/null
بعد ذلك، أضف مستودع Jenkins إلى قائمة المصادر في نظامك:
$ echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
https://pkg.jenkins.io/debian binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null
4. تثبيت Jenkins
بمجرد إضافة مستودع Jenkins، قم بتحديث قائمة الحزم مرة أخرى لتعكس المستودع الجديد:
$ sudo apt update
الآن، قم بتثبيت Jenkins باستخدام الأمر التالي:
$ sudo apt install jenkins
5. بدء وتشغيل Jenkins تلقائيًا
بعد التثبيت، تحتاج إلى بدء خدمة Jenkins وتفعيلها لتشغيلها تلقائيًا عند التمهيد:
$ sudo systemctl start jenkins
$ sudo systemctl enable jenkins
يمكنك التحقق من حالة Jenkins للتأكد من أنه يعمل بشكل صحيح:
$ sudo systemctl status jenkins
6. إعداد جدار الحماية (Firewall)
يعمل Jenkins بشكل افتراضي على المنفذ 8080. إذا كنت تستخدم جدار حماية مثل UFW (Uncomplicated Firewall)، تحتاج إلى فتح المنفذ 8080 للسماح بحركة المرور:
$ sudo ufw allow 8080
$ sudo ufw status
الوصول إلى Jenkins لأول مرة
الآن بعد تثبيت Jenkins وتشغيله، يمكنك الوصول إلى واجهته على الويب لإكمال الإعداد.
1. الحصول على كلمة مرور المسؤول الأولية
في أول مرة تصل فيها إلى Jenkins، سيطلب منك كلمة مرور المسؤول. يتم تخزين هذه الكلمة في ملف على الخادم الخاص بك. استخدم الأمر التالي لعرض كلمة المرور:
$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
انسخ كلمة المرور والصقها عندما يطلب منك ذلك في معالج إعداد Jenkins.
2. فتح Jenkins في متصفح الويب الخاص بك
افتح متصفح الويب الخاص بك وانتقل إلى العنوان التالي:
http://عنوان-الخادم-الخاص-بك:8080
سيتم الترحيب بك بواسطة معالج إعداد Jenkins، حيث تحتاج إلى لصق كلمة المرور التي حصلت عليها مسبقًا.
3. تثبيت الإضافات المقترحة
سيطلب منك Jenkins تثبيت الإضافات. اختر خيار “تثبيت الإضافات المقترحة”. سيقوم Jenkins تلقائيًا بتثبيت الإضافات الأكثر استخدامًا، مثل Git وPipeline وغيرها.
4. إنشاء مستخدم مسؤول
بعد تثبيت الإضافات، سيطلب منك Jenkins إنشاء مستخدم مسؤول. املأ التفاصيل المطلوبة وانقر على حفظ وإنهاء.
5. Jenkins جاهز
لقد قمت الآن بتثبيت وتهيئة Jenkins بنجاح. سيتم توجيهك إلى لوحة التحكم في Jenkins حيث يمكنك البدء في إنشاء المهام وأتمتة أعمالك.
تهيئة Jenkins
الآن بعد أن قمت بتثبيت Jenkins، حان الوقت لتكوينه ليناسب احتياجات مشروعك. يوفر Jenkins مجموعة واسعة من خيارات التكوين التي يمكن تخصيصها لتناسب تقريبًا أي سير عمل.
1. تكوين النظام
من لوحة تحكم Jenkins، انتقل إلى إدارة Jenkins > تكوين النظام. تتيح لك هذه القسم تحديد التكوينات العامة، مثل المتغيرات البيئية، إشعارات البريد الإلكتروني، ومسارات أدوات البناء مثل Maven وGradle.
على سبيل المثال، لتكوين Java وGit:
- JDK: تأكد من أن Jenkins يعرف المسار إلى تثبيت Java. ضمن قسم “JDK”، حدد المسار يدويًا أو اترك Jenkins يقوم بتثبيته تلقائيًا.
- Git: إذا كنت تستخدم Git لإدارة الإصدارات، فتأكد من تثبيت Git وأن Jenkins يمكنه العثور عليه بتحديد المسار ضمن “Git”.
2. تكوين الأدوات العالمية
انتقل إلى إدارة Jenkins > تكوين الأدوات العالمية لتكوين الأدوات التي سيستخدمها Jenkins لبناء الشيفرة الخاصة بك. يمكنك إعداد أدوات مثل:
- Maven
- Gradle
- NodeJS
هنا، يمكنك تحديد مسارات التثبيت أو ترك Jenkins يقوم بتثبيت الأدوات تلقائيًا.
3. تكوين الأمان
يوفر Jenkins نظام أمان قوي يتيح لك التحكم في الوصول بناءً على أدوار المستخدمين. لتكوين الأمان:
- انتقل إلى إدارة Jenkins > تكوين الأمان العام.
- قم بتفعيل قاعدة بيانات المستخدم الخاصة بـ Jenkins لإدارة المستخدمين محليًا.
- قم بتعيين التفويض إلى “أمان قائم على المصفوفات” لإنشاء أذونات دقيقة لمستخدمين مختلفين.
يمكنك أيضًا دمج Jenkins مع أنظمة المصادقة الخارجية مثل LDAP أو GitHub OAuth أو Active Directory.
4. تكوين الإضافات في Jenkins
تأتي قوة Jenkins الحقيقية من الإضافات. هناك آلاف الإضافات المتاحة لـ Jenkins والتي تتكامل مع العديد من الأدوات والخدمات. لإدارة الإضافات، انتقل إلى إدارة Jenkins > إدارة الإضافات.
من هنا، يمكنك:
- تثبيت إضافات جديدة: استعرض الإضافات المتاحة وقم بتثبيت تلك التي تلبي متطلبات مشروعك.
- تحديث الإضافات: حافظ على تحديث إضافاتك لضمان التوافق مع أحدث إصدارات Jenkins.
بعض الإضافات الأساسية لإعداد CI/CD تشمل:
- Git Plugin: يتيح لـ Jenkins سحب الشيفرة من مستودعات Git.
- Pipeline Plugin: يساعدك على تعريف وظائف Jenkins كأكواد.
- Email Extension Plugin: لإرسال إشعارات البريد الإلكتروني عند نجاح أو فشل البناء.
إنشاء أول مهمة Jenkins
الآن بعد تشغيل Jenkins، حان الوقت لإنشاء أول مهمة. المهام في Jenkins هي بشكل أساسي مهام سيقوم Jenkins بأتمتتها، مثل بناء واختبار ونشر الشيفرة الخاصة بك.
1. إنشاء مهمة جديدة
- من لوحة تحكم Jenkins، انقر على عنصر جديد.
- أدخل اسمًا لمهمتك.
- اختر مشروع Freestyle كنوع المهمة وانقر على موافق.
2. تكوين المهمة
بعد إنشاء المهمة، ستتم إعادة توجيهك إلى صفحة تكوين المهمة. هنا يمكنك تحديد تفاصيل المهمة:
- إدارة الشيفرة المصدرية: إذا كانت الشيفرة الخاصة بك مخزنة في نظام تحكم في الإصدارات مثل Git، حدد عنوان المستودع وأي بيانات اعتماد ضرورية.
$ git clone https://github.com/your-repo.git
- مشغلات البناء: حدد متى يجب تشغيل المهمة. يمكنك إعداد المشغلات لتشغيل المهمة يدويًا، أو وفق جدول زمني، أو تلقائيًا عند وجود تغيير في مستودع الشيفرة (Webhook).
- بيئة البناء: قم بتعيين المتغيرات البيئية اللازمة أو تكوين خطوات بناء إضافية.
- خطوات البناء: حدد ما يجب أن تقوم به المهمة. على سبيل المثال، إذا كان مشروعك يستخدم Maven، يمكنك إضافة خطوة بناء لتشغيل أوامر Maven مثل:
$ mvn clean install
3. حفظ وتشغيل المهمة
بعد تكوين مهمتك، انقر على حفظ. يمكنك الآن تشغيل المهمة يدويًا بالنقر على بناء الآن على صفحة المهمة. سيقوم Jenkins بتنفيذ خطوات البناء وعرض حالة البناء.
إعداد خطوط أنابيب Jenkins
Jenkins Pipeline هي مجموعة من الإضافات التي تدعم تنفيذ وتكامل خطوط أنابيب التسليم المستمر في Jenkins. تساعدك خطوط الأنابيب على تعريف العملية الكاملة للبناء كرمز.
1. إنشاء مهمة جديدة لخط أنابيب
من لوحة تحكم Jenkins:
- انقر على عنصر جديد.
- أدخل اسمًا لخط الأنابيب.
- اختر Pipeline وانقر على موافق.
2. تعريف سكريبت خط الأنابيب
يتم تعريف خط الأنابيب باستخدام ملف Jenkinsfile، وهو ملف نصي يحتوي على كود خط الأنابيب. يمكنك كتابة خط الأنابيب مباشرة في واجهة Jenkins أو تحميله من مستودع التحكم في الشيفرة الخاص بك.
يبدو Jenkinsfile الأساسي كما يلي:
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'mvn clean install'
}
}
stage('Test') {
steps {
sh 'mvn test'
}
}
stage('Deploy') {
steps {
sh './deploy.sh'
}
}
}
}
يحتوي هذا الخط على ثلاث مراحل: البناء (Build)، الاختبار (Test)، والنشر (Deploy)، حيث ينفذ كل مرحلة أمر Shell (sh
).
أفضل الممارسات مع Jenkins
للتأكد من أنك تستخدم Jenkins بفعالية، إليك بعض أفضل الممارسات:
- احتفظ بتحديث Jenkins: قم بتحديث Jenkins وإضافاته بانتظام للاستفادة من الميزات الجديدة والتصحيحات الأمنية.
- قم بعمل نسخ احتياطية لتكوينات Jenkins: قم بعمل نسخ احتياطية بانتظام لتكوينات Jenkins لتجنب فقدان إعدادات المهام وبيانات الإضافات.
- استخدم خطوط الأنابيب: بدلاً من استخدام وظائف Freestyle، حاول تعريف عمليات البناء باستخدام خطوط الأنابيب. خطوط الأنابيب أكثر مرونة ويمكنها التعامل مع سير العمل المعقد.
- راقب الأداء: قد يستهلك Jenkins أحيانًا الكثير من الموارد، خاصة إذا كنت تقوم بتشغيل العديد من المهام في نفس الوقت. راقب أداء Jenkins وقم بضبط الموارد حسب الحاجة.
الخلاصة
Jenkins هو أداة قوية للغاية لأتمتة عمليات تطوير البرمجيات. في هذا الدليل، قمنا بتغطية كيفية تثبيت وتهيئة Jenkins على خادم Ubuntu، وإنشاء المهام، وتكوين خطوط أنابيب Jenkins. باستخدام Jenkins، يمكنك تبسيط عمليات التطوير والتسليم بشكل كبير، مما يسمح بتكرارات أسرع وبرمجيات ذات جودة أعلى.
باتباع هذا الدليل، يجب أن يكون لديك الآن تثبيت Jenkins يعمل بالكامل وجاهز لبناء ونشر مشاريعك. سواء كنت تقوم بإعداد تكامل مستمر لمشروع صغير أو تدير سير عمل معقد للمؤسسات، يمكن لـ Jenkins أن يتوسع لتلبية احتياجاتك.
لا تنسَ استكشاف مكتبة الإضافات الكبيرة لـ Jenkins للعثور على التكاملات والأدوات التي يمكن أن تجعل أتمتة العمليات أكثر قوة. الآن، أنت مستعد لبدء أتمتة سير عمل التطوير وتحسين كفاءة فريقك.
الأسئلة الشائعة
ما هي متطلبات النظام لـ Jenkins؟
يعمل Jenkins على معظم أنظمة التشغيل الحديثة ويتطلب Java 8 أو 11. يحتاج إلى 1 جيجابايت من ذاكرة الوصول العشوائي على الأقل للاستخدام الصغير ويحتاج إلى المزيد للمشاريع الكبيرة.
هل يمكن تثبيت Jenkins على Windows؟
نعم، يمكن تثبيت Jenkins على Windows، على الرغم من أنه يُستخدم بشكل أكثر شيوعًا على الأنظمة المستندة إلى Linux. يتبع التثبيت على Windows عملية مشابهة باستخدام حزمة MSI.
كيف يمكن تحديث Jenkins؟
يمكنك تحديث Jenkins من خلال واجهة الويب الخاصة بـ Jenkins بالانتقال إلى إدارة Jenkins > إدارة الإضافات. من الضروري الحفاظ على تحديث كل من Jenkins والإضافات الخاصة به.
ما هو Jenkinsfile؟
Jenkinsfile هو ملف نصي يحتوي على كود لخط أنابيب Jenkins. يحدد خطوات خط الأنابيب الخاص بالتكامل أو التسليم المستمر.
هل يمكن استخدام Jenkins للنشر؟
نعم، يمكن لـ Jenkins أتمتة عمليات النشر من خلال التكامل مع أدوات ومنصات نشر متنوعة مثل AWS وKubernetes والمزيد.
كيف يمكنني عمل نسخة احتياطية من Jenkins؟
لا يحتوي Jenkins على أداة نسخ احتياطي مدمجة، ولكن يمكنك عمل نسخة احتياطية من دليل Jenkins الرئيسي، الذي يحتوي على إعدادات المهام وبيانات الإضافات وبيانات المستخدمين.