乐趣区

关于gitlab:如何用极狐GitLab-为-iOS-App-创建自动化CICD详细教程来了

本文起源:about.gitlab.com/blog
作者:Darby Frey
译者:极狐 (GitLab) 市场部内容团队

为苹果 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_cimatch 及 build_app 这类操作。这将会应用前文用 fastlane Match 生成的开发证书,来对开的发利用进行构建和签名。

Beta

Beta 局部执行的步骤多一些,有 setup_cimatch、app_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 在运行啦。

退出移动版