Swift 项目的 CI/CD:从 A 到 Z 的 GitHub Actions 指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Swift 项目 CI/CD 简介

\n

现代 Swift 移动和桌面应用程序开发不仅需要高质量的代码,还需要可靠的变更集成和交付流程。持续集成(CI)和持续交付(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. 创建工作流文件

\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 分支以及拉取请求时触发。它会在搭载 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 $                

博客

书籍推荐