CI/CD لجافا: GitHub Actions من الإعداد إلى النشر

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة
```html

مقدمة: لماذا CI/CD أمر لا غنى عنه لمطور Java

تطوير Java الحديث لا يمكن تصوره بدون أتمتة. التشغيل اليدوي للاختبارات، بناء ملفات .jar، والنشر على الخادم يستهلك ساعات ويؤدي إلى أخطاء بشرية. CI/CD (Continuous Integration / Continuous Deployment) يحل هذه المشكلة: كل commit في المستودع يتم فحصه وبناؤه تلقائيًا، وعند الضرورة، يتم إرساله إلى الإنتاج.

GitHub Actions هي أداة مدمجة في GitHub تتيح إنشاء pipelines مباشرة في المستودع. وهي مجانية للمشاريع العامة، وتتكامل بسهولة مع Maven/Gradle، وتدعم Java 8–21. في هذه المقالة، سنشرح الدورة الكاملة: من trigger عند push إلى نشر artifact.

1. أساسيات GitHub Actions: هيكل workflow

Workflow (سير العمل) هو ملف YAML موجود في .github/workflows/. يتكون من:

  • Triggers (push, pull_request, schedule);
  • Jobs (مهام) يتم تنفيذها على أجهزة افتراضية (runners);
  • Steps (خطوات) داخل كل مهمة.

بالنسبة لمشروع Java، يتضمن workflow النموذجي تثبيت JDK، تشغيل اختبارات Maven/Gradle، وبناء artifact.

1.1. أول workflow: اختبار مشروع Java

أنشئ ملفًا باسم .github/workflows/ci.yml بالمحتوى التالي:

name: Java CI

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v4
    - name: Set up JDK 17
      uses: actions/setup-java@v4
      with:
        java-version: '17'
        distribution: 'temurin'
        cache: maven
    - name: Build with Maven
      run: mvn -B package --file pom.xml
    - name: Run tests
      run: mvn test

ماذا يحدث هنا:

  • actions/checkout — يستنسخ المستودع;
  • setup-java — يثبت JDK 17 (Temurin) ويخبئ تبعيات Maven;
  • mvn package — يبني المشروع ويشغل الاختبارات;
  • mvn test — تشغيل صريح للاختبارات (يمكن دمجه مع package).

بعد push إلى main، سترى علامة اختيار خضراء بجانب commit — وهذا يعني أن pipeline قد نجح.

2. إعداد متقدم لـ Java: مصفوفة الإصدارات والتخزين المؤقت

غالبًا ما تتطلب المشاريع الحقيقية التحقق على إصدارات متعددة من Java. يدعم GitHub Actions matrix strategy (استراتيجية المصفوفة).

2.1. مصفوفة JDK

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        java: [11, 17, 21]
    steps:
    - uses: actions/checkout@v4
    - name: Set up JDK ${{ matrix.java }}
      uses: actions/setup-java@v4
      with:
        java-version: ${{ matrix.java }}
        distribution: 'temurin'
        cache: maven
    - run: mvn test

يضمن هذا النهج توافق كودك مع إصدارات Java LTS. يتم تنفيذ المهام بالتوازي، مما يوفر الوقت.

2.2. التخزين المؤقت للتبعيات

لقد حددنا بالفعل cache: maven — وهذا يخبئ تلقائيًا ~/.m2/repository. بالنسبة لـ Gradle، استخدم cache: gradle. التخزين المؤقت يسرع البناء بمقدار 2–3 مرات.

3. بناء ونشر artifacts (JAR/Docker)

بعد الاختبار الناجح، تحتاج إلى الحصول على artifact جاهز. دعنا ننظر في سيناريوهين شائعين.

3.1. تحميل ملف JAR إلى GitHub Artifacts

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: Set up JDK 17
      uses: actions/setup-java@v4
      with:
        java-version: '17'
        distribution: 'temurin'
    - run: mvn clean package
    - name: Upload JAR
      uses: actions/upload-artifact@v4
      with:
```                

المدونات

توصيات الكتب