Travis-CI 是一个专门为开源项目打造的持续集成环境(付费能够支持私有项目),目前已经支持绝大部分主流语言,它的配置文件采用 yaml 格式,简洁清新独树一帜。git
当咱们在 GitHub 上的代码仓库发生 Commit 或 PR 等事件后,会通知 Travis CI 执行构建操做,并在 GitHub 对应的 Commit 后显示构建状态或结果,如图所示:github
本文以 EFResume(一个使用 Swift 做为开发语言的简历模板) 为例,简述怎样为本身的开源项目添加持续构建功能。objective-c
若是项目(所有或者部分)是用 Swift 进行开发的话,须要声明使用的 Swift 语言版本,若是不包含 Swift 代码能够忽略这一步。swift
在根目录下添加一个 .swift-version 文件,在其中填写 Swift 版本号,例如这里 EFQRCode 库使用 Swift 4.0 进行开发,因此这里填写的是:xcode
4.0
复制代码
具体可参考 EFResume 工程中的对应文件。bash
须要注意的是,以 .
开头的文件在 macOS 下默认为隐藏文件,在 Finder 中使用快捷键 Command
+ Shift
+ .
能够打开 / 关闭隐藏文件的可见性。post
在根目录下添加一个 .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
复制代码
解释一下这段配置的要点:ui
xcode9
就能够了;objective-c
就好了,即便是纯 Swift 项目;Shared
的,以下图所示;In a before_install step, you can install additional dependencies required by your project such as Ubuntu packages or custom services.
复制代码
唔,CocoaPods 库的 .travis.yml 配置文件能够参考:EFCountingLabel,iOS App 能够参考:VSCAM,还有一个比较完整的项目是一个 CocoaPods 库包含了 iOS / macOS / tvOS 三个 Demo 而且附带测试的:EFQRCode。spa
打开 travis-ci.org/ 注册一个 Travis-CI 帐号,也能够经过 GitHub 帐户直接登录。Travis-CI 服务对开源项目是免费的,因此你的私有项目没法享受到免费的持续构建服务。
第一次进入时会自动从 GitHub 同步项目数据,可能须要等待一段的时间进行同步,同步完成后能够看到以下的项目列表:
通常状况下每隔必定的时间 Travis-CI 都会从 GitHub 自动同步数据,若是新添加的项目想要马上同步到 Travis-CI 的话,能够手动点击右上角的 Sync account 同步按钮,如图所示:
而后接下来就是开启对应项目的持续构建,你们应该已经猜到该怎么作了吧...将对应项目以前的 Switch 按钮设为启用绿色勾选状态便可,如图所示:
唔,细心的同窗可能会发现,这一步操做完成后咱们在 GitHub 项目 Setting 中的 Integrations & services
已经添加了一个名为 Travis CI
的服务,感兴趣的同窗能够点击该服务名称查看一下 Travis CI 具体干了啥:
若发生构建失败,可经过查看错误日志的方式来定位具体问题缘由,可点击工程名,选择出错的那一次构建便可:
这里须要注意的是,偶然会发生 Travis-CI 因为自身的未知缘由致使的构建失败,若是排查问题时发现本身的配置没啥问题,那么能够试试 Restart build
可否解决问题:
本文只提供了针对 Xcode 项目的操做步骤,Travis-CI 具体到每种语言/项目的构建配置各不相同,参数各异,有的时候还须要根据本身的项目特性作一些个性化的调整,须要咱们多思考,多调试,多尝试,总之不要轻易放弃哇。别问我是怎么知道的,😂 :
再读一篇相似文章?
利用 CodeBeat 为你在 GitHub 上的项目进行代码质量管理
若有任何知识产权、版权问题或理论错误,还请指正。 https://juejin.im/post/5a32154e51882503dc53b976 转载请注明原做者及以上信息。