Swift परियोजनाओं के लिए CI/CD: GitHub Actions A से Z तक

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Swift परियोजनाओं के लिए CI/CD का परिचय

\n

Swift में मोबाइल और डेस्कटॉप एप्लिकेशन के आधुनिक विकास के लिए न केवल गुणवत्तापूर्ण कोड की आवश्यकता होती है, बल्कि परिवर्तनों को एकीकृत और वितरित करने की एक विश्वसनीय प्रक्रिया की भी आवश्यकता होती है। Continuous Integration (CI) और Continuous Delivery (CD) ऐसी प्रथाएँ हैं जो एप्लिकेशन के बिल्ड, परीक्षण और तैनाती को स्वचालित करने की अनुमति देती हैं। GitHub Actions GitHub का एक अंतर्निहित उपकरण है जो iOS और macOS पर काम करने वाली Swift परियोजनाओं के लिए एकदम उपयुक्त है।

\n

इस लेख में, हम Swift के लिए CI/CD सेटअप के पूरे चक्र को समझेंगे: बुनियादी कॉन्फ़िगरेशन से लेकर App Store और TestFlight में डिप्लॉय तक। आप सीखेंगे कि कैसे विकास को गति दें, 'मानवीय कारक' से बचें और अपने एप्लिकेशन की स्थिरता सुनिश्चित करें।

\n\n

Swift के लिए CI/CD के मुख्य घटक

\n

कॉन्फ़िगरेशन पर जाने से पहले, यह समझना महत्वपूर्ण है कि Swift परियोजनाओं के लिए पाइपलाइन में कौन से चरण शामिल हैं:

\n
    \n
  • बिल्ड (Build) — Xcode या xcodebuild का उपयोग करके प्रोजेक्ट का संकलन।
  • \n
  • परीक्षण (Test) — यूनिट टेस्ट और UI टेस्ट चलाना।
  • \n
  • लिंटिंग (Lint) — कोड शैली की जाँच (उदाहरण के लिए, SwiftLint के साथ)।
  • \n
  • आर्काइव (Archive) — डिप्लॉय के लिए .ipa या .app फ़ाइल बनाना।
  • \n
  • डिप्लॉय (Deploy) — बिल्ड को TestFlight या App Store में भेजना।
  • \n
\n

GitHub Actions आपको इन सभी चरणों को एक YAML फ़ाइल में संयोजित करने की अनुमति देता है, जो रिपॉजिटरी में संग्रहीत होती है।

\n\n

Swift के लिए GitHub Actions सेटअप: चरण-दर-चरण मार्गदर्शिका

\n\n

1. workflow फ़ाइल बनाना

\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

यह workflow main और develop में प्रत्येक push पर, साथ ही pull request पर भी चलता है। यह iOS 17 के साथ iPhone 15 सिम्युलेटर पर एक साफ बिल्ड करता है और सभी परीक्षण चलाता है।

\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 $                

ब्लॉग

पुस्तक अनुशंसाएँ