Swift 的 CI/CD 管道:在 macOS 和 Linux 上从零开始配置

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

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

开始课程

您的 Swift 项目值得拥有自动化天空:从零开始构建 CI/CD

\n\n

您编写了一个很棒的 Swift 包或应用程序。代码运行流畅,本地测试通过,您感觉自己像个摇滚明星。但一旦 push 代码,噩梦就开始了:“在 Linux 上能编译吗?”,“在 macOS 上测试能通过吗?”,“万一我忘了运行 SwiftLint 怎么办?”。

\n\n

熟悉吗?如果是这样,您需要一个 Swift 的 CI/CD 管道。它就像您代码的自动驾驶仪:自动构建、测试、检查代码风格,甚至部署。在本文中,我们将以 GitHub Actions 为例,从零开始配置 Swift CI/CD 管道。您将获得可以直接复制并立即使用的现成工作代码。

\n\n
剧透:配置完成后,您将在每次提交时看到绿色勾号,而不是对着控制台焦虑不安。
\n\n

为什么 Swift 的 CI/CD 不是奢侈品,而是必需品

\n\n

Swift 存在于两个世界中:macOS(Xcode、CocoaPods、Carthage)和 Linux(Vapor、SwiftNIO、服务器端项目)。没有 CI/CD,您将面临风险:

\n\n
    \n
  • 遗漏另一个平台上的编译错误
  • \n
  • 忘记运行代码检查器(然后代码看起来像被轰炸过一样)
  • \n
  • 花费数小时进行手动部署
  • \n
  • 浪费时间寻找回归错误
  • \n
\n\n

正确配置的 Swift CI/CD 管道 可以解决所有这些问题。它 24/7 全天候运行,不喝咖啡,也不会说“在我这都能跑”。开始吧!

\n\n

步骤 1:选择工具 — GitHub Actions

\n\n

我们将使用 GitHub Actions — 这是 GitHub 内置的 CI/CD,对于 Swift 来说非常理想。原因如下:

\n\n
    \n
  • 免费 用于公共仓库(每月 2000 分钟)
  • \n
  • macOS 运行器 — 可以在 Xcode 下构建
  • \n
  • Linux 运行器 — 用于服务器端 Swift 项目
  • \n
  • 现成的 actions 用于 SwiftLint、测试、部署
  • \n
\n\n

如果您使用 GitLab、Bitbucket 或 Jenkins — 原理相同,但 YAML 语法会有所不同。

\n\n

步骤 2:Swift CI/CD 管道的基本结构

\n\n

任何管道都由三个阶段组成:

\n\n
    \n
  1. 构建 — 构建项目(SPM 或 Xcode)
  2. \n
  3. 测试 — 运行单元测试
  4. \n
  5. 代码检查 — 检查代码风格(可选,但强烈建议)
  6. \n
\n\n

此外,还可以添加部署(例如,部署到服务器或 TestFlight)。

\n\n

创建文件 .github/workflows/swift-ci.yml

\n\n

在仓库的根目录下,创建文件夹 .github/workflows/,并在其中创建文件 swift-ci.yml。以下是最小可用的管道:

\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

这个 Swift 的 CI/CD 管道 在每次 push 或 pull request 到 main/develop 分支时触发。它在 Ubuntu 上构建项目并运行测试。简单吗?是的。但让我们添加一些魔法。

\n\n

步骤 3:将 macOS 和 Xcode 添加到构建矩阵

\n\n

Swift 开发者通常在 macOS 上工作,而服务器端则在 Linux 上。为了确保项目在所有平台上都能构建,我们使用 矩阵策略:

\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                

博客

书籍推荐