Swift 项目的 CI/CD:GitHub Actions 从入门到精通

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

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

开始课程
```html

引言:为什么 CI/CD 对 Swift 开发至关重要

在当今的 iOS/macOS 开发中,手动构建和测试是导致错误和浪费时间的方式。每次提交都可能破坏构建,而在真实设备上进行测试需要物理访问。 CI/CD(持续集成 / 持续部署) 通过自动化应用的构建、测试和部署来解决这些问题。

GitHub Actions 是一个内置的 CI/CD 工具,非常适合托管在 GitHub 上的 Swift 项目。它允许您 免费(公共仓库每月最多 2000 分钟)在云端运行工作流程。在本文中,我们将介绍完整的流程:从基本配置到部署到 App Store。

本文适合谁?适合希望自动化日常任务并加快发布周期的 iOS/macOS 开发者。即使您是 DevOps 新手,分步说明和代码示例也能帮助您理解。

1. Swift 的 GitHub Actions 基础

1.1. 工作流程结构

GitHub Actions 使用存储在 .github/workflows/ 中的 YAML 文件。每个文件都是一个独立的工作流程,由触发器(推送、拉取请求、计划)启动。

Swift 项目的基本工作流程如下所示:

name: Swift CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build_and_test:
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build
        run: xcodebuild build -project MyApp.xcodeproj -scheme MyApp -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 15,OS=17.2'
      - name: Test
        run: xcodebuild test -project MyApp.xcodeproj -scheme MyApp -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 15,OS=17.2'

关键点:

  • macos-latest — 带有 macOS 的运行器,Xcode 和 Swift 必需。
  • actions/checkout@v4 — 克隆仓库。
  • xcodebuild — 用于构建和测试的命令。
  • destination 参数指定模拟器(请替换为您自己的 iOS 版本)。

1.2. 依赖缓存

Swift Package Manager (SPM) 是标准的依赖管理器。为了避免每次提交都下载包,请使用缓存:

steps:
  - uses: actions/cache@v3
    with:
      path: ~/Library/Developer/Xcode/DerivedData
      key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }}
      restore-keys: |
        ${{ runner.os }}-spm-
  - run: swift build

这可以将构建时间缩短 40–60%。

2. 配置测试和代码检查

2.1. 单元测试和 UI 测试

对于 iOS/macOS 项目,在模拟器中运行测试至关重要。确保 Xcode 方案中已启用测试。macOS 示例:

jobs:
  test_macos:
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run macOS tests
        run: xcodebuild test -project MyApp.xcodeproj -scheme MyApp -sdk macosx -destination 'platform=macOS,arch=x86_64'

对于 iOS,添加 -destination 'platform=iOS Simulator,name=iPhone 15'。 重要提示: 模拟器名称会随 Xcode 版本变化——使用 xcrun simctl list 检查可用的模拟器。

2.2. 静态分析 (SwiftLint)

使用 SwiftLint 保持代码质量。在工作流程中添加一个步骤:

- name: SwiftLint
  run: |
    brew install swiftlint
    swiftlint --strict

--strict 标志将警告转换为错误——如果代码不符合规则,工作流程将失败。在项目根目录配置 .swiftlint.yml。

3. 构建和签名以进行部署

3.1. 管理证书和配置文件

```

博客

书籍推荐