what is jenkins

ibrahim el-otmani | Jun 16, 2025 min read

أكيد، ها هو مقال جديد للبلوغ ديالك “DevOps for Moroccans”، هاد المرة على جينكينز (Jenkins).


DevOps for Moroccans: سبع صنايع والرزق ماشي ضايع مع جينكينز (Jenkins)!

السلام عليكم مرة أخرى يا معشر الديف أوبس!

فالمقال لي فات دوينا على تيرافورم وكيفاش كيخلينا نقادو البنية التحتية بالكود. اليوم، غادي ندويو على واحد البيلار (Pillar) آخر من عواميد الديف أوبس، واحد الخدام ديال بصح لي ماكيعياش، سميتو جينكينز (Jenkins).

آشناهو جينكينز؟ تخيل معايا شفشاوني خدام معاك!

جينكينز هو واحد سيرفور ديال الأوتومايشن (automation server) مفتوح المصدر (open source). خدمتو الرئيسية هي يدير لينا داكشي لي كيتعاود بشكل أوتوماتيكي، وخصوصا فعملية الـ CI/CD.

باش نبسطوها، تخيل جينكينز بحال شي شفشاوني (butler) خدام عندك فالمشروع. كتعطيه لائحة ديال المهام وكتقوليه: “اسمع، منين شي ديفلوبر يدفع (push) الكود الجديد لـ Git، بغيتك دير هادشي بالترتيب:

  1. جبد داك الكود الجديد.
  2. دوز ليه التيستات (tests) باش تأكد كلشي خدام مزيان.
  3. صايب منو نسخة قابلة للاستعمال (build).
  4. نشرها (deploy) فالسيرفور ديال التجريب (testing environment).
  5. صيفط ليا إيمايل قوليا فيه واش هادشي كامل داز مزيان ولا لا.”

جينكينز كيدير هادشي كامل بوحدو، بلا ما تحتاج نتا تدخل. كيبقى مقابل ليك المشروع 24 ساعة على 24، 7 أيام فالسيمانة.

علاش جينكينز هو القلب ديال الـ CI/CD؟

CI/CD كتعني Continuous Integration (التكامل المستمر) و Continuous Deployment/Delivery (النشر/التسليم المستمر). وجينكينز هو الأداة لي كتخلي هاد المفاهيم تطبق فالواقع.

  1. التكامل المستمر (CI): كل مرة شي واحد كيزيد كود جديد، جينكينز كيتأكد أن داك الكود ماكيخسرش الخدمة لي ديجا كاينة. كيجمع الكود من عند بزاف ديال الديفلوبرز وكيدير ليه build وتيست أوتوماتيكيا. هكا المشاكل كتبان دغيا وكتصلح دغيا.
  2. النشر المستمر (CD): منين الكود كينجح فالتيستات، جينكينز يقدر يهزو أوتوماتيكيا ويحطو فبيئة الإنتاج (Production)، يعني يوصلو للمستخدم النهائي. هادشي كيخليك تخرج تحديثات جديدة بسرعة وبثقة.
  3. عندو بزاف ديال البلاگينات (Plugins): القوة ديال جينكينز كاينة فالبلاگينات ديالو. تقريبا أي أداة كتخدم بيها (Git, Maven, Docker, Kubernetes, Ansible, Terraform…) غادي تلقى ليها بلاگين فجينكينز. بغيتي تصيفط نوتيفيكايشن ف Slack؟ كاين بلاگين. بغيتي دير سكان للكود ديالك ب SonarQube؟ كاين بلاگين.
  4. مجاني ومفتوح المصدر: ما تحتاج تخلص والو باش تبدا تخدم بيه، والكوميونيتي ديالو كبيرة بزاف، يعني ديما كتلقى المساعدة والحلول.

كيفاش كتخدم مع جينكينز؟ الـ Pipeline

الخدمة فجينكينز كتكون منظمة على شكل “بايبلاين” (Pipeline). البايبلاين هو مجموعة ديال المراحل (stages) لي كينفذها جينكينز بالترتيب. هاد البايبلاين تقدر تكتبو على شكل كود فواحد الفيشي سميتو Jenkinsfile.

كتابة البايبلاين على شكل كود (Pipeline as Code) هي أحسن طريقة للخدمة، حيتاش:

  • كتخليك دير تتبع للتغييرات ديال البايبلاين بـ Git.
  • كتخلي البايبلاين جزء من المشروع ديالك.
  • كتسهال عليك تعاود نفس البايبلاين لمشاريع أخرى.

مثال بسيط ديال Jenkinsfile:

pipeline {
    agent any // كتقول لجنكينز يخدم ف أي ماشين متاحة

    stages {
        stage('Build') { // المرحلة الأولى: البناء
            steps {
                echo 'Building the application...'
                // هنا كتكون الكوموند ديال البناء مثلا: mvn clean install
            }
        }
        stage('Test') { // المرحلة الثانية: التيست
            steps {
                echo 'Testing the application...'
                // هنا كتكون الكوموند ديال التيست مثلا: mvn test
            }
        }
        stage('Deploy') { // المرحلة الثالثة: النشر
            steps {
                echo 'Deploying the application...'
                // هنا كتكون الكوموند ديال النشر مثلا: ssh user@server 'deploy.sh'
            }
        }
    }
}

هاد الفيشي كتحطو مع الكود ديالك، وجينكينز كيقراه وكيعرف شنو خاصو يدير.

الخلاصة

جينكينز هو ديك الأداة لي كتحيد عليك الصداع ديال “واش دوزتي التيستات؟” و “شكون غادي يدير الديپلويمنت؟”. كيخلي العملية ديال إخراج البرامج من مرحلة الكود لمرحلة الإنتاج سلسلة، سريعة، وموثوقة. أي واحد خدام فالديف أوبس فالمغرب ولا فينما كان، ضروري يكون كيعرف يروض هاد “الشفشاوني” ويخليه يخدم لصالح المشروع.

تهلاو، ونتلاقاو فالمقال الجاي إن شاء الله!