CI/CD لمشاريع Swift: GitHub Actions من الألف إلى الياء

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

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

ابدأ الدورة

مقدمة في CI/CD لمشاريع Swift

\n

تطوير التطبيقات الحديثة للهواتف المحمولة وأجهزة سطح المكتب بلغة Swift لا يتطلب فقط كودًا عالي الجودة، بل أيضًا عملية موثوقة لتكامل وتسليم التغييرات. التكامل المستمر (CI) والتسليم المستمر (CD) هما ممارستان تسمحان بأتمتة بناء التطبيقات واختبارها ونشرها. GitHub Actions هي أداة مدمجة في GitHub، وهي مثالية لمشاريع Swift التي تعمل على iOS و macOS.

\n

في هذه المقالة، سنستعرض الدورة الكاملة لإعداد CI/CD لـ Swift: من التكوين الأساسي إلى النشر في App Store و TestFlight. ستتعلم كيفية تسريع التطوير، وتجنب "العامل البشري"، وضمان استقرار تطبيقك.

\n\n

المكونات الأساسية لـ CI/CD لـ Swift

\n

قبل الانتقال إلى الإعداد، من المهم فهم المراحل التي يتكون منها خط الأنابيب لمشاريع Swift:

\n
    \n
  • البناء (Build) — ترجمة المشروع باستخدام Xcode أو xcodebuild.
  • \n
  • الاختبار (Test) — تشغيل اختبارات الوحدة واختبارات واجهة المستخدم.
  • \n
  • التدقيق اللغوي (Lint) — التحقق من نمط الكود (على سبيل المثال، باستخدام SwiftLint).
  • \n
  • الأرشفة (Archive) — إنشاء ملف .ipa أو .app للنشر.
  • \n
  • النشر (Deploy) — إرسال البناء إلى TestFlight أو App Store.
  • \n
\n

يسمح GitHub Actions بدمج كل هذه الخطوات في ملف YAML واحد يتم تخزينه في المستودع.

\n\n

إعداد GitHub Actions لـ Swift: دليل خطوة بخطوة

\n\n

1. إنشاء ملف سير العمل

\n

أنشئ مجلد .github/workflows في جذر المستودع وأضف ملفًا باسم ci.yml:

\n
name: Swift CI/CD\n\non:\n  push:\n    branches: [ main, develop ]\n  pull_request:\n    branches: [ main ]\n\njobs:\n  build-and-test:\n    runs-on: macos-latest\n\n    steps:\n    - uses: actions/checkout@v4\n\n    - name: Select Xcode version\n      run: sudo xcode-select -s /Applications/Xcode_15.0.app/Contents/Developer\n\n    - name: Build and test\n      run: |\n        xcodebuild clean test \\\n          -project YourApp.xcodeproj \\\n          -scheme YourApp \\\n          -destination 'platform=iOS Simulator,name=iPhone 15,OS=17.0' \\\n          -resultBundlePath TestResults \\\n          CODE_SIGNING_ALLOWED=NO\n    - name: Upload test results\n      uses: actions/upload-artifact@v4\n      with:\n        name: test-results\n        path: TestResults.xcresult
\n

يتم تشغيل سير العمل هذا مع كل دفعة إلى main و develop، وكذلك على طلبات السحب. يقوم بتنفيذ بناء نظيف وتشغيل جميع الاختبارات على محاكي iPhone 15 بنظام iOS 17.

\n\n

2. إضافة التدقيق اللغوي والتحليل الثابت

\n

للحفاظ على نمط كود موحد، أضف خطوة باستخدام SwiftLint:

\n
- name: Run SwiftLint\n  run: |\n    brew install swiftlint\n    swiftlint --strict
\n

إذا كنت تستخدم SPM (Swift Package Manager)، يمكنك إضافة تحليل ثابت باستخدام swift analyze (متاح في Swift 5.9+):

\n
- name: Static analysis\n  run: swift analyze --strict
\n\n

3. إعداد CD: النشر إلى TestFlight

\n

لتسليم البناءات تلقائيًا إلى TestFlight، ستحتاج إلى شهادات وملفات تعريف التوقيع. الطريقة الأكثر أمانًا هي استخدام GitHub Secrets لتخزين المفاتيح:

\n
jobs:\n  deploy:\n    needs: build-and-test\n    runs-on: macos-latest\n    if: github.ref == 'refs/heads/main'\n\n    steps:\n    - uses: actions/checkout@v4\n\n    - name: Install provisioning profile\n      env:\n        PROVISIONING_PROFILE: ${{ secrets.PROVISIONING_PROFILE_BASE64 }}\n      run: |\n        echo "$PROVISIONING_PROFILE" | base64 --decode > ~/Library/MobileDevice/Provisioning\\ Profiles/profile.mobileprovision\n\n    - name: Build and archive\n      run: |\n        xcodebuild archive \\\n          -project YourApp.xcodeproj \\\n          -scheme YourApp \\\n          -archivePath $                

المدونات

توصيات الكتب