利用 Travis CI 讓你在 GitHub 上的 Xcode 項目持續構建

Travis-CI 是一個專門爲開源項目打造的持續集成環境(付費能夠支持私有項目),目前已經支持絕大部分主流語言,它的配置文件採用 yaml 格式,簡潔清新獨樹一幟。git

前言

當咱們在 GitHub 上的代碼倉庫發生 Commit 或 PR 等事件後,會通知 Travis CI 執行構建操做,並在 GitHub 對應的 Commit 後顯示構建狀態或結果,如圖所示:github

持續構建效果預覽

本文以 EFResume(一個使用 Swift 做爲開發語言的簡歷模板) 爲例,簡述怎樣爲本身的開源項目添加持續構建功能。objective-c

0. 指定 Swift 版本

若是項目(所有或者部分)是用 Swift 進行開發的話,須要聲明使用的 Swift 語言版本,若是不包含 Swift 代碼能夠忽略這一步。swift

在根目錄下添加一個 .swift-version 文件,在其中填寫 Swift 版本號,例如這裏 EFQRCode 庫使用 Swift 4.0 進行開發,因此這裏填寫的是:xcode

4.0
複製代碼

具體可參考 EFResume 工程中的對應文件bash

須要注意的是,以 . 開頭的文件在 macOS 下默認爲隱藏文件,在 Finder 中使用快捷鍵 Command + Shift + . 能夠打開 / 關閉隱藏文件的可見性。post

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
複製代碼

解釋一下這段配置的要點:ui

  • 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 而且附帶測試的:EFQRCodespa

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 轉載請註明原做者及以上信息。

相關文章
相關標籤/搜索