أنابيب CI/CD لـ Swift: الإعداد من الصفر على macOS و Linux

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

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

ابدأ الدورة

مشروع Swift الخاص بك يستحق أتمتة سحابية: بناء CI/CD من الصفر

\n\n

لقد كتبت حزمة Swift أو تطبيقًا رائعًا. الكود يعمل بسلاسة، والاختبارات تمر محليًا، وتشعر وكأنك نجم. ولكن بمجرد أن تقوم بعمل push، يبدأ الكابوس: "هل سيعمل على Linux؟"، "هل ستنجح الاختبارات على macOS؟"، "ماذا لو نسيت تشغيل SwiftLint؟".

\n\n

هل يبدو هذا مألوفًا؟ إذا كانت الإجابة بنعم، فأنت بحاجة إلى أنابيب CI/CD لـ Swift. إنها مثل الطيار الآلي للكود الخاص بك: تقوم تلقائيًا بالبناء والاختبار والتحقق من الأسلوب وحتى النشر. في هذه المقالة، سنقوم بإعداد أنابيب CI/CD لـ Swift من الصفر باستخدام GitHub Actions. ستحصل على كود جاهز للعمل يمكنك نسخه واستخدامه اليوم.

\n\n
تلميح: بعد الإعداد، ستحصل على علامات خضراء لكل commit، بدلاً من القلق أمام الشاشة.
\n\n

لماذا CI/CD لـ Swift ليس رفاهية بل ضرورة

\n\n

Swift يعيش في عالمين: macOS (Xcode, CocoaPods, Carthage) و Linux (Vapor, SwiftNIO, مشاريع الخادم). بدون CI/CD، أنت تخاطر بـ:

\n\n
    \n
  • تفويت خطأ في الترجمة على منصة أخرى
  • \n
  • نسيان تشغيل المدقق (ثم يبدو الكود وكأنه بعد قصف)
  • \n
  • إضاعة ساعات في النشر اليدوي
  • \n
  • إضاعة الوقت في البحث عن الأخطاء التراجعية
  • \n
\n\n

أنابيب CI/CD لـ Swift المُعدة بشكل صحيح تحل كل هذه المشاكل. إنها تعمل 24/7، لا تشرب القهوة ولا تقول "إنه يعمل لدي". هيا بنا!

\n\n

الخطوة 1: اختيار الأداة — GitHub Actions

\n\n

سنستخدم GitHub Actions — وهي أداة CI/CD مدمجة في GitHub، وهي مثالية لـ Swift. الأسباب:

\n\n
    \n
  • مجانية للمستودعات العامة (2000 دقيقة شهريًا)
  • \n
  • مشغلات macOS — يمكن البناء تحت Xcode
  • \n
  • مشغلات Linux — لمشاريع Swift الخادمية
  • \n
  • إجراءات جاهزة لـ SwiftLint والاختبار والنشر
  • \n
\n\n

إذا كنت تستخدم GitLab أو Bitbucket أو Jenkins — المبادئ هي نفسها، لكن بناء جملة YAML سيختلف.

\n\n

الخطوة 2: الهيكل الأساسي لأنابيب CI/CD لـ Swift

\n\n

أي pipeline يتكون من ثلاث مراحل:

\n\n
    \n
  1. Build — بناء المشروع (SPM أو Xcode)
  2. \n
  3. Test — تشغيل اختبارات الوحدة
  4. \n
  5. Lint — التحقق من أسلوب الكود (اختياري لكن موصى به بشدة)
  6. \n
\n\n

يمكنك أيضًا إضافة النشر (مثل الخادم أو TestFlight).

\n\n

إنشاء ملف .github/workflows/swift-ci.yml

\n\n

في جذر المستودع الخاص بك، أنشئ مجلد .github/workflows/ وداخله ملف swift-ci.yml. إليك الحد الأدنى من pipeline العملي:

\n\n
name: Swift CI/CD Pipeline\n\non:\n  push:\n    branches: [ main, develop ]\n  pull_request:\n    branches: [ main ]\n\njobs:\n  build-and-test:\n    runs-on: ubuntu-latest\n\n    steps:\n    - name: Checkout code\n      uses: actions/checkout@v3\n\n    - name: Setup Swift\n      uses: swift-actions/setup-swift@v1\n      with:\n        swift-version: "5.9"\n\n    - name: Build\n      run: swift build\n\n    - name: Run tests\n      run: swift test
\n\n

هذه أنابيب CI/CD لـ Swift تعمل عند كل push أو pull request إلى main/develop. تقوم ببناء المشروع وتشغيل الاختبارات على Ubuntu. بسيط؟ نعم. لكن دعنا نضيف بعض السحر.

\n\n

الخطوة 3: إضافة macOS و Xcode إلى مصفوفة البناء

\n\n

مطورو Swift غالبًا ما يعملون على macOS، بينما الجزء الخادمي على Linux. للتأكد من أن المشروع يُبنى في كل مكان، نستخدم مصفوفة الاستراتيجيات (matrix strategy):

\n\n
jobs:\n  build-and-test:\n    strategy:\n      matrix:\n        os: [ubuntu-latest, macos-latest]\n        swift-version: ["5.8", "5.9"]\n\n    runs-on: ${{ matrix.os }}\n\n    steps:\n    - uses: actions/checkout@v3\n\n    - name: Setup Swift\n      uses: swift-actions/setup-swift@v1\n                

المدونات

توصيات الكتب