阅读 634

利用 Travis CI 让你在 GitHub 上的 Xcode 项目持续构建

Travis-CI 是一个专门为开源项目打造的持续集成环境(付费可以支持私有项目),目前已经支持绝大部分主流语言,它的配置文件采用 yaml 格式,简洁清新独树一帜。

前言

当我们在 GitHub 上的代码仓库发生 Commit 或 PR 等事件后,会通知 Travis CI 执行构建操作,并在 GitHub 对应的 Commit 后显示构建状态或结果,如图所示:

持续构建效果预览

本文以 EFResume(一个使用 Swift 作为开发语言的简历模板) 为例,简述怎样为自己的开源项目添加持续构建功能。

0. 指定 Swift 版本

如果项目(全部或者部分)是用 Swift 进行开发的话,需要声明使用的 Swift 语言版本,如果不包含 Swift 代码可以忽略这一步。

在根目录下添加一个 .swift-version 文件,在其中填写 Swift 版本号,例如这里 EFQRCode 库使用 Swift 4.0 进行开发,所以这里填写的是:

4.0
复制代码

具体可参考 EFResume 工程中的对应文件

需要注意的是,以 . 开头的文件在 macOS 下默认为隐藏文件,在 Finder 中使用快捷键 Command + Shift + . 可以打开 / 关闭隐藏文件的可见性。

1. 添加 Travis-CI 配置文件

在根目录下添加一个 .travis.yml 文件,在其中填写配置信息:

osx_image: xcode9
language: objective-c

env:
  global:
    - LANG=en_US.UTF-8
    - LC_ALL=en_US.UTF-8
    - XCODE_PROJECT=core/EFResume.xcodeproj
  matrix:
    - SCHEME="EFResume"

before_install:
  - gem install xcpretty --no-rdoc --no-ri --no-document --quiet

script:
  - set -o pipefail
  - xcodebuild -project "$XCODE_PROJECT" -scheme "$SCHEME" -configuration Debug clean build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO | xcpretty -c

after_success:
  - sleep 3
复制代码

解释一下这段配置的要点:

  • osx_image:Xcode 大版本,这里我们填写最新的 xcode9 就可以了;
  • language:Xcode 工程的话,默认写 objective-c 就行了,即使是纯 Swift 项目;
  • env:环境变量,XCODE_PROJECT 为 Xcode 工程文件路径;SCHEME 就是需要执行的 Scheme,没啥好解释的,不过需要注意的是这里的 Scheme 必须是已经勾选了 Shared 的,如下图所示;

Manage Schemes...

  • before_install:这里可以填写一些自定义命令来安装需要的依赖,官方解释如下;
In a before_install step, you can install additional dependencies required by your project such as Ubuntu packages or custom services.
复制代码
  • script:这里是需要执行的构建脚本,一般在此处执行 build 之类的命令即可,CocoaPods 库的话可以额外加一句;
  • after_success:这里可以存放构建通过后的自定义命令,这里放了一个休眠 3 秒是为了规避一个 Travis-CI 的 Bug。

唔,CocoaPods 库的 .travis.yml 配置文件可以参考:EFCountingLabel,iOS App 可以参考:VSCAM,还有一个比较完整的项目是一个 CocoaPods 库包含了 iOS / macOS / tvOS 三个 Demo 并且附带测试的:EFQRCode

2. 注册 Travis-CI 账号

打开 travis-ci.org/ 注册一个 Travis-CI 账号,也可以通过 GitHub 账户直接登陆。Travis-CI 服务对开源项目是免费的,所以你的私有项目无法享受到免费的持续构建服务。

3. 从 GitHub 同步项目

第一次进入时会自动从 GitHub 同步项目数据,可能需要等待一段的时间进行同步,同步完成后可以看到如下的项目列表:

项目列表

一般情况下每隔一定的时间 Travis-CI 都会从 GitHub 自动同步数据,如果新添加的项目想要立刻同步到 Travis-CI 的话,可以手动点击右上角的 Sync account 同步按钮,如图所示:

同步按钮

4. 开启持续集成

然后接下来就是开启对应项目的持续构建,大家应该已经猜到该怎么做了吧...将对应项目之前的 Switch 按钮设为启用绿色勾选状态即可,如图所示:

勾选状态

唔,细心的同学可能会发现,这一步操作完成后我们在 GitHub 项目 Setting 中的 Integrations & services 已经添加了一个名为 Travis CI 的服务,感兴趣的同学可以点击该服务名称查看一下 Travis CI 具体干了啥:

Integrations & services

5. 观察错误日志

若发生构建失败,可通过查看错误日志的方式来定位具体问题原因,可点击工程名,选择出错的那一次构建即可:

构建日志

这里需要注意的是,偶然会发生 Travis-CI 由于自身的未知原因导致的构建失败,如果排查问题时发现自己的配置没啥问题,那么可以试试 Restart build 能否解决问题:

Restart build

没了

本文只提供了针对 Xcode 项目的操作步骤,Travis-CI 具体到每种语言/项目的构建配置各不相同,参数各异,有的时候还需要根据自己的项目特性做一些个性化的调整,需要我们多思考,多调试,多尝试,总之不要轻易放弃哇。别问我是怎么知道的,😂 :

坑


再读一篇类似文章?

利用 CodeBeat 为你在 GitHub 上的项目进行代码质量管理


如有任何知识产权、版权问题或理论错误,还请指正。
https://juejin.im/post/5a32154e51882503dc53b976
转载请注明原作者及以上信息。

评论