使用使用Cocoapods的iOS项目设置GitLab CI

我们都为应用程序编写测试,并将其保留在版本控制的系统(如GitLab或GitHub)中。 但是,我们如何配置GitLab为我们运行单元和UI测试?

我找不到很多文档来解释如何在GitLab上为iOS设置持续集成,因此我正在写这篇文章。

Victor Peschenkov在他的文章中解释了如何在Fastlane中使用GitLab CI。 我的文章重点介绍如何自己运行所有内容。

要求

为了为iOS设置GitLab Runner,我们需要以下工具:

  • 苹果电脑
  • Xcode 10
  • GitLab.com帐户(或一个自托管帐户)
  • 家酿
  • CocoaPods(使用自制软件: brew install cocoapods

请先安装这些工具,然后再继续。

配置Xcode

确保从Mac App Store下载Xcode。 安装完成后,打开它并创建一个项目以确保它已完全安装并正在运行。

iOS专案

我创建了一个示例项目,以帮助您更快地入门。 随意分叉它或使用您自己的项目。 请使用以下方法验证您的安装:

  • git checkout git@gitlab.com:skofgar/ios-ci-sample.git
  • 切换到项目文件夹并运行pod install
  • 在计算机上运行以下命令,以验证您可以成功构建并运行测试-这意味着没有“失败”或其他错误消息
  xcodebuild测试 
-workspace“ CI Sample.xcworkspace” \
-方案“ CI示例”-目标“平台= iOS模拟器,名称= iPhone XR,OS = 12.0” \
| xcpretty -s

安装GitLab Runner

iOS项目需要特殊的GitLab Runner。 通常,gitlab-runner可以托管在任何计算机上(虚拟机,Linux,Mac或Windows系统)。 但是,与iOS相关的项目需要GitLab Runner,它必须在Xcode的Mac上托管才能成功构建。

在Mac上安装GitLab Runner

请按照以下步骤在Mac上配置GitLab Runner:

  • 使用命令brew install gitlab-runner
  • 转到您的GitLab实例,前往Settings >“ CI/CD
  • 禁用 shared runners (或者,您可以使用标签仅将Mac用于构建iOS项目)
  • 转到Specific Runners并保存您的GitLab服务器urltoken
  • 按照GitLabs文档中的说明注册跑步者
  • gitlab-runner register
    1.出现提示时,从上方输入url
    2.接下来,输入registration token
    3.命名您的跑步者
    4.将标签留空
    5.使用shell执行器
  • 开始你的跑步者
 光盘〜 
gitlab-runner安装
gitlab-runner开始

请注意,如果重新启动计算机,则可能必须再次启动GitLab Runner。

重新加载CI / CD设置页面。 如果一切顺利,您应该可以在“ 特定跑步者”部分中看到跑步

创建gitlab-ci.yaml

一旦有了用于iOS的GitLab运行程序和一个项目,就需要对其进行配置。 请添加gitlab-ci.yaml并插入:

 阶段: 
-建立

变量:
LC_ALL:“ en_US.UTF-8”#显然xcpretty否则将无法正常运行

before_script:
-宝石安装cocoapods
-吊舱安装

build_project:
阶段:建立
脚本:
-xcodebuild clean -workspace“ CI Sample.xcworkspace”-方案“ CI Sample” | xcpretty
-xcodebuild测试-workspace“ CI Sample.xcworkspace”-方案“ CI Sample”-目标'platform = iOS Simulator,name = iPhone XR,OS = 12.0'| xcpretty -s

提交该文件后,GitLab-CI应该立即启动并开始构建您的项目,然后运行测试。

就是这样,您已经完成了!

反馈

你怎么看? 如果您遇到任何问题或有改进建议,请告诉我。

资源资源

  • https://about.gitlab.com/2016/03/10/setting-up-gitlab-ci-for-ios-projects/
  • https://medium.com/flawless-app-stories/how-to-set-up-gitlab-continuous-integration-for-ios-projects-without-a-hustle-53c2b642c90f
  • https://github.com/supermarin/xcpretty/issues/73

最初发表在 Skofgar的Blog上