CI/CD لمشاريع Rust: GitHub Actions — الجزء 2

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

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

ابدأ الدورة

سير العمل المتكامل (CI/CD) لمشاريع Rust: إجراءات GitHub — الجزء 2: الاختبار والنشر

في الجزء الأول، قمنا بإعداد خط أنابيب بناء أساسي لمشروع Rust. الآن، وبالتعمق أكثر في البرمجة بلغة Rust، سننظر في الاختبار الآلي والتدقيق اللغوي (Linting) والنشر. هذه مرحلة إلزامية من تعلم لغة Rust للمبتدئين الذين يرغبون في كتابة كود احترافي. اليوم ستتعلم كيف تجعل سير العمل المتكامل (CI/CD) خاصاً بك مفيداً حقاً.

1. تشغيل الاختبارات والتحقق من تغطية الكود

أي مشروع Rust جاد يتطلب تنفيذًا تلقائيًا للاختبارات. في إجراءات GitHub، يتم ذلك باستخدام الأمر cargo test. ومع ذلك، للحصول على أقصى فائدة، أضف فحص تغطية الكود باستخدام tarpaulin.

إعداد بيئة الاختبار

أضف خطوة إلى ملف سير العمل الخاص بك (.github/workflows/ci.yml):

name: CI for Rust

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          override: true
      - name: Run tests
        run: cargo test --verbose
      - name: Generate coverage
        run: |
          cargo install cargo-tarpaulin
          cargo tarpaulin --out Xml
      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@v3
        with:
          token: ${{ secrets.CODECOV_TOKEN }}

يوضح هذا الكود مدى سهولة دمج Rust مع الخدمات الخارجية. سيقوم cargo tarpaulin بإنشاء تقرير يمكن رفعه إلى Codecov أو Coveralls. بالنسبة لمبتدئي Rust، من المهم أن يفهموا: الاختبارات هي خط دفاعك الأول.

2. التدقيق اللغوي والتنسيق

الكود عالي الجودة ليس فقط كوداً يعمل، بل هو أيضاً كود قابل للقراءة. في Rust، هناك أداتان قويتان: clippy (المدقق اللغوي) و rustfmt(أداة التنسيق). قم بتضمينهما في خط الأنابيب.

إضافة Clippy و Rustfmt

أضف وظيفة جديدة أو وسّع الوظيفة الحالية:

  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          components: clippy, rustfmt
      - name: Check formatting
        run: cargo fmt -- --check
      - name: Run Clippy
        run: cargo clippy -- -D warnings

العلامة -D warnings تحول التحذيرات إلى أخطاء. هذا صارم ولكنه فعال لـ التعلم: ستكتشف على الفور المشكلات المحتملة. تذكر أن الصرامة في البرمجة بلغة Rust هي ميزة.

3. النشر التلقائي على GitHub Pages

عندما تجتاز الاختبارات والتدقيق اللغوي، يمكنك نشر الوثائق تلقائيًا. تولد Rust الوثائق عبر cargo doc. النشر على GitHub Pages هو طريقة ممتازة لعرض النتائج.

سير العمل للنشر

أنشئ ملفًا منفصلاً .github/workflows/deploy.yml:

name: Deploy Documentation

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
      - name: Build documentation
        run: cargo doc --no-deps --document-private-items
      - name: Deploy to GitHub Pages
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./target/doc

يتم تشغيل خط الأنابيب هذا فقط عند الدفع إلى الفرع الرئيسي. يقوم بإنشاء الوثائق ونشرها. بالنسبة لمبتدئي Rust، هذه طريقة رائعة لعرض مشاريعك للعالم.

4. تحسين وقت البناء: التخزين المؤقت

بناء مشاريع Rust يمكن أن يستغرق وقتاً طويلاً. إجراءات GitHub

المدونات

توصيات الكتب