CI/CD لمشاريع C++: دليل كامل لإعداد GitHub Actions
في تطوير البرمجيات الحديثة، أصبحت أتمتة عمليات البناء والاختبار والنشر ليست مجرد راحة، بل ضرورة. بالنسبة لمشاريع C++، التي غالباً ما تتميز بنظام بناء معقد وتبعيات، فإن تطبيق CI/CD (التكامل المستمر / النشر المستمر) مهم بشكل خاص. في هذه المقالة، سنشرح بالتفصيل كيفية إعداد خط أنابيب CI/CD لمشاريع C++ باستخدام GitHub Actions — وهي أداة أتمتة قوية ومدمجة.
ما هو GitHub Actions ولماذا هو مناسب لـ C++؟
GitHub Actions هي منصة لأتمتة سير العمل (workflows)، والتي تتيح لك إنشاء خطوط أنابيب CI/CD مباشرة في مستودعك على GitHub. لمطوري C++، هذا هو الحل الأمثل لعدة أسباب:
- دقائق بناء مجانية للمستودعات العامة.
- دعم Linux و macOS و Windows — يمكنك اختبار البناء عبر المنصات.
- تكوين مرن من خلال ملفات YAML.
- نظام بيئي ضخم من الإجراءات الجاهزة (actions) لتثبيت المترجمات والتبعيات والأدوات.
العنصر الأساسي هو workflow، الذي يتم وصفه في ملف .github/workflows/*.yml. يتكون كل workflow من jobs (مهام) واحدة أو أكثر، يتم تنفيذها على أجهزة افتراضية (runners).
إعداد خط أنابيب أساسي: البناء والاختبار
لنبدأ بالأبسط — سننشئ workflow يقوم ببناء مشروع C++ الخاص بك باستخدام CMake وتشغيل الاختبارات في كل مرة ترسل فيها تغييرات إلى فرع main أو تنشئ Pull Request.
أنشئ ملف .github/workflows/build.yml في جذر مستودعك وأضف إليه الكود التالي:
name: C++ CI Build
on: push: branches: [ "main" ] pull_request: branches: [ "main" ]
jobs: build: runs-on: ubuntu-latest
steps: - name: Checkout repository uses: actions/checkout@v4
- name: Install dependencies run: | sudo apt-get update sudo apt-get install -y cmake g++ libgtest-dev
- name: Configure CMake run: cmake -B build -DCMAKE_BUILD_TYPE=Release
- name: Build run: cmake --build build --config Release
- name: Run tests working-directory: ./build run: ctest --output-on-failureدعنا نحلل هذا الكود خطوة بخطوة:
- name — اسم workflow الذي سيظهر في واجهة GitHub.
- on — المشغلات التي يتم تشغيل workflow بناءً عليها (push و pull_request إلى main).
- runs-on — نظام تشغيل runner (ubuntu-latest, windows-latest, macos-latest).
- actions/checkout — إجراء قياسي يقوم باستنساخ مستودعك.
- Install dependencies — نقوم بتثبيت CMake ومترجم GCC ومكتبة Google Test لاختبارات الوحدة.
- Configure, Build, Run tests — أوامر CMake القياسية للبناء وتشغيل الاختبارات.
التحسين: التخزين المؤقت والبناء المصفوفي
خط الأنابيب الأساسي يعمل، ولكن يمكن تحسينه بشكل كبير. هناك تقنيتان رئيسيتان — التخزين المؤقت للتبعيات و البناء المصفوفي.
التخزين المؤقت لتسريع البناء
في كل مرة يتم فيها تشغيل workflow، يقوم runner بتنزيل جميع التبعيات من جديد. هذا يستغرق وقتاً. استخدم actions/cache لحفظ ذاكرة التخزين المؤقت لـ CMake والحزم المثبتة:
- name: Cache CMake build uses: actions/cache@v3 with: path: | build /usr/l
```