构建和测试 Swift

您可以创建持续集成 (CI) 工作流程来构建和测试您的 Swift 项目。

GitHub Actions 可用于 GitHub Free、GitHub Pro、组织的 GitHub Free、GitHub Team、GitHub Enterprise Cloud 和 GitHub AE。 GitHub Actions 不适用于使用旧版按仓库计划的帐户所拥有的私有仓库。

注意: GitHub Actions 目前正在测试用于 GitHub AE 。

简介

本指南介绍如何构建和测试 Swift 包。

要构建和测试您在 GitHub AE 上的 Swift 项目,则需要创建包含必要 Swift 依赖项的自定义操作系统映像。 有关如何确定 AE 托管的运行器 已安装所需软件的说明,请参阅“创建自定义映像”。

基本要求

您应该已经熟悉 YAML 语法及其如何与 GitHub Actions 结合使用。 更多信息请参阅“GitHub Actions 的工作流程语法”。

我们建议您对 Swift 包有基本的了解。 更多信息请参阅 Apple 开发者文档中的“Swift 包”。

从 Swift 工作流程模板开始

GitHub 提供了一个 Swift 工作流程模板,该模板应适合大多数 Swift 项目,本指南包括演示如何自定义此模板的示例。 更多信息请参阅 Swift 工作流程模板

要快速开始,请将模板添加到仓库的 .github/workflows 目录中。

YAML
name: Swift

on: [push]

jobs:
  build:

    runs-on: macos-latest

    steps:
      - uses: actions/checkout@v2
      - name: Build
        run: swift build
      - name: Run tests
        run: swift test

指定 Swift 版本

要在 GitHub 托管的运行器上使用特定的预安装 Swift 版本,请使用 fwal/setup-swift 操作。 此操作从运行器上的工具缓存中查找特定版本的 Swift,并将必要的二进制文件添加到 PATH。 这些更改将持续用于作业的其余部分。 更多信息请参阅 fwal/setup-swift 操作。

如果使用自托管运行器,则必须安装所需的 Swift 版本并将它们添加到 PATH

下面的示例演示了如何使用 fwal/setup-swift 操作。

使用多个 Swift 版本

您可以将作业配置为在构建矩阵中使用多个版本的 Swift。

YAML
name: Swift

on: [push]

jobs:
  build:
    name: Swift ${{ matrix.swift }} on ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest]
        swift: ["5.2", "5.3"]
    runs-on: ${{ matrix.os }}
    steps:
      - uses: fwal/setup-swift@v1
        with:
          swift-version: ${{ matrix.swift }}
      - uses: actions/checkout@v2
      - name: Build
        run: swift build
      - name: Run tests
        run: swift test

使用单个特定的 Swift 版本

您可以将作业配置为使用单个特定版本的 Swift,例如 5.3.3

YAML
steps:
  - uses: fwal/setup-swift@v1
    with:
      swift-version: "5.3.3"
  - name: Get swift version
    run: swift --version # Swift 5.3.3

构建和测试代码

您可以使用与本地相同的命令来使用 Swift 构建和测试代码。 此示例演示如何在作业中使用 swift buildswift test

YAML
steps:
  - uses: actions/checkout@v2
  - uses: fwal/setup-swift@v1
    with:
      swift-version: "5.3.3"
  - name: Build
    run: swift build
  - name: Run tests
    run: swift test

此文档对您有帮助吗?隐私政策

帮助我们创建出色的文档!

所有 GitHub 文档都是开源的。看到错误或不清楚的内容了吗?提交拉取请求。

做出贡献

或, 了解如何参与。