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