سير العمل المتكامل (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