2.8 持续集成工作流
2 分钟阅读
原文链接: https://docs.swift.org/latest/documentation/packagemanagerdocs/continuousintegration/
2.8 持续集成工作流
使用既有的持续集成环境构建 Swift 包,并在既有的 CI 流水线中为使用包依赖的应用做好准备。
概述
持续集成(CI)是自动化并简化应用的构建、分析、测试、归档和发布的过程,以确保应用始终处于可发布状态。大多数包含 Swift 包或依赖 Swift 包的项目都不需要额外配置。
使用包依赖的预期版本
为确保 CI 工作流可靠,请核实它使用了适当版本的包依赖。SwiftPM 把依赖解析的结果记录在包顶层的 Package.resolved 文件中;在可用时,执行依赖解析会使用该文件。
运行 swift package update 可以把依赖更新到最新的可用版本,并更新 Package.resolved。关于解析和更新依赖的更多内容,参见解析与更新依赖。
提供凭据
要解析需要认证的包依赖(例如私有包),需要向 CI 环境提供凭据。包管理器遵循机器的 SSH 配置,因此无需额外设置。对于私有包,请使用基于 SSH 的 Git URL,并配置 SSH 凭据。你可能还需要在运行 CI 任务的用户主目录下的 ~/.ssh 目录中准备 known_hosts 文件。
Jenkins、Github Action、TravisCI 和 CircleCI 等 CI 服务都提供了配置 SSH 密钥或其他访问私有仓库手段的方式。由于包管理器使用 git 克隆仓库,因此无需额外设置:包管理器遵循机器的 SSH 与 Git 配置。
使用 xcodebuild
在 macOS 的 CI 主机上构建时,你可以使用命令行工具 xcodebuild。xcodebuild 使用 Xcode 内置的 Git 工具连接仓库。
许多情况下你无需改动 xcodebuild 连接仓库的方式;但有些场景确实需要用到 git 配置,例如 URL 重映射、使用代理或高级 SSH 配置。要让 xcodebuild 使用你 Mac 上的 Git 安装与配置,而不是 Xcode 内置的 Git 工具,就给 xcodebuild 命令传入 -scmProvider system。
关于在持续集成工作流中使用 xcodebuild 的更多内容,参见 Building Swift packages or apps that use them in continuous integration workflows。