返回文章列表
开发 | 运维 | 汽车 | 医疗 | 互联网 2023-06-30

如何用极狐GitLab 为 iOS App 创建自动化CI/CD?详细教程来了

极狐GitLab
一体化安全 DevOps 平台

为苹果 iOS 应用程序开发创建一个全自动的 CI/CD 流水线极具挑战,配置构建环境以及管理代码签名都是非常耗时且容易出错,而当搞定一切时,依旧需要找到一个方法将你的应用程序发送给苹果。

 

而 GitLab/极狐Gitlab 移动端 DevOps 让这一切都变得非常容易。

 

极狐 GitLab 移动端 DevOps 是一系列内置在极狐 GitLab 内部的功能,帮助移动端团队解决在 DevOps 实践中面临的巨大挑战。

 

这篇文章将演示如何使用极狐 GitLab 和 fastlane 来设置自动化 CI/CD。

 

前提条件

 

一个苹果开发者账号:https://developer.apple.com/
 

本地机器上安装好 Ruby 和 XCode 命令行工具:https://docs.fastlane.tools/getting-started/ios/setup
 

 

参考项目

 

为了方便演示,我们将使用 iOS 项目仓库 做参考

 

安装 fastlane

 

如果你还没有安装 fastlane,那么第一步就是要先安装 fastlane:

 

在项目根目录下创建一个 Gemfile 文件并写入如下内容:

 

source "https://rubygems.org"


gem "fastlane"

 

然后,在命令终端下执行:

 

bundle install

 

上述命令将完成 fastlane 安装,以及与其相关的所有依赖。

 

初始化 fastlane

 

fastlane 安装完成,可以为仓库设置 fastlane 了:

 

进入项目根目录,在终端中执行如下命令,选择选项 2。因为在本教程中,我们将针对 Test Flight 进行操作:

 

bundle exec fastlane init

 

执行此命令会在项目下新创建一个叫做 fastlane 的文件夹,文件夹包含 Appfile 和 Fastfile 两个文件。

 

 

Appfile 包含应用程序所需的配置信息,Fastfile 有一些样例代码(稍后会进行替换)。

 

关于 Appfile 中更多关于配置的详细内容,欢迎查阅 fastlane 文档
 

 

初始化 fastlane match

 

下一步就是设置 fastlane Match 了,这是 fastlane 里面处理代码签名的部分。关于 fastlane match 的更多消息,可查阅文档
 

在终端中输入以下命令来初始化 fastlane match :

 

bundle exec fastlane match init

 

上述命令将提示选择想使用的存储后端(请选择 gitlab_secure_files),输入项目地址(比如:gitlab-org/gitlab)。这将生成一个 fastlane Matchfile 文件,并且将项目配置为 fastlane Match 的存储后端。

 

 

生成项目访问令牌

 

接下来,需要一个极狐 GitLab 访问令牌才能在本地服务器上使用 fastlane Match。在极狐 GitLab 项目设置中找到访问令牌选项,创建一个具有 “api” 访问权限的新令牌。

 

接着,在命令终端执行如下命令,将 “YOUR_NEW_TOKEN” 替换为刚才新生成的访问令牌:

 

export PRIVATE_TOKEN=YOUR_NEW_TOKEN

 

这能够让 fastlane Match 在向项目发出请求时使用此令牌。

 

生成签名证书

 

现在 fastlane Match 已经配置完成,可以用它来生成签名证书并且对应用程序进行文件配置,然后上传到极狐 GitLab。

 

注意:如果你的应用程序已经有这些文件,可以查看这篇博客文章 ,学习如何使用 fastlane 来导入既有代码的签名文件。

 

在命令终端运行如下命令,生成开发代码签名文件并将其上传到极狐 GitLab:

 

bundle exec fastlane match development

 

当上述命令运行完成后,前往项目中 CI/CD 的设置页面,下拉到安全文件(Secure File)部分就可以看到刚生成并且上传上去的文件。

 

AppStore 代码签名文件可以以同样的方式设置。运行如下命令来生成 AppStore 代码签名文件并上传到极狐 GitLab。

 

bundle exec fastlane match appstore

 

更新 Xcode 配置

 

代码签名文件就绪后,需要在 Xcode 中做一个小小的变更:

 

在 Xcode 中找到对应项目,找到签名 & 能力(Signing & Capabilities),禁用自动管理代码签名。

 

接着,根据构建目标,从列表中选择合适的配置文件和签名证书(上文刚生成的证书会展示在列表中)。

 

 

完成所有代码签名配置后,接下来就可以设置和苹果应用商店的集成了。

 

苹果应用商店集成

 

为了实现这一步,需要在苹果应用连接(Apple App Connect)中创建一个 API key。如何创建并将 key 下载到本地服务器上,请参阅此处说明(此 key 需要有 App Manager 的权限)

 

一旦生成 key,就前往极狐 GitLab 项目设置中的集成设置,点击完成苹果应用连接的集成。

 

这个过程需要提供发布者的 ID(issuer ID)以及从苹果应用连接获取的 Key ID,以及刚刚下载的 key 文件。

 

所有配置完成以后,点击测试按钮来测试连接是否成功。如果返回错误,请再次检查配置并再次尝试连接。一旦运行正常,点击保存按钮完成配置保存并激活此集成。

 

激活集成后,以下 CI 环境变量将被添加到受保护分支或 tag 中的所有流水线中:

 

  • APP_STORE_CONNECT_API_KEY_ISSUER_ID;
  • APP_STORE_CONNECT_API_KEY_KEY_ID;
  • APP_STORE_CONNECT_API_KEY_KEY 

 

fastlane 或者任何与苹果应用商店交互的定制化工具,都可以使用以上 CI 变量来上传构建或者执行其他使能任务的 API。

 

Fastfile

 

随着一切配置结束,现在可以下载一个样例 Fastlane 来看看如何执行构建、签名及发布版本。

 

从样例库中拷贝 fastlane/Fastfile 文件 中的内容,将其粘贴到项目中的 Fastfile 文件中,并将既有内容进行替换。

 

此样例 Fastfile 包含两大部分,都是 fastlane 可执行的操作。这两部分是文件中的 build 和 beta

 

Build

 

Build 部分将执行 setup_ci match 及 build_app 这类操作。这将会使用前文用 fastlane Match 生成的开发证书,来对开的发应用进行构建和签名。

 

Beta

 

Beta 部分执行的步骤多一些,有 setup_ci 、matchapp_store_connect_api_keyincrement_build_numberbuild_app 以及 upload_to_testflight

 

这部分将会使用前文用 fastlane Match 生成的证书,来对发布到苹果商店的应用程序进行构建和签名。此部分还使用应用商店连接集成来连接到苹果商店,以确定下次构建所用的构建号以及将最终的构建上传到 Test Flight。

 

.gitlab-ci.yml

 

fastlane 配置就绪,最后一步就是设置极狐 GitLab CI 了。

 

从样例库拷贝 .gitlab-ci.yml 文件中的内容至仓库根目录下

 

这是一个简单的 CI 配置文件,创建了两个 CI Job  来运行极狐 GitLab 的 macOS 共享 Runner ,以完成 fastlane 中每个部分的任务构建(Build & Beta)。所有 CI 流水线都会运行 Build Job,而只有 master 分支上的 CI 流水线才会执行 Beta Job。Beta Job 也可以手动触发,因此用户可以控制何时将 Beta 版本推送到 Test Flight。

 

以上准备就绪了,将所有变更推送到目标项目仓库中,CI 流水线会自动触发运行,然后就可以看到这些 Job 在运行啦。

极狐GitLab 一体化DevOps平台 专为中国用户研发,免费试用60天专业版高级功能
售前咨询
联系电话
在线支持
预约演示