前段時間寫了一篇關於"jenkins 持續整合 iOS專案"的文章,配置比較複雜.在更新到 Xcode 9以後,原來的配置方案不能用了.最近嘗試用 fastlane+jenkins,繼續實現持續整合. fastlane 是一個優秀的部署,釋出應用的開源專案(github地址). 推薦使用 fastlane, 放棄使用 jenkins 裡 Xcode-plugin 的原因: fastlane 多人維護,更新及時,部署簡單. Xcode-plugin反之.
1:安裝 fastlane:
官方版安裝詳細步驟 保證在 mac 上安裝了最新版的 Xcode. 在Ruby 2.0.0及以上版本環境下安裝:
sudo gem install fastlane -NV
複製程式碼
然後,在終端進入你專案的根目錄,執行以下程式碼:
fastlane init
複製程式碼
由於 fastlane 版本更新迅速,高版本不向前相容,推薦使用Gemfile,更新版本. 在終端執行命令,安裝builder:
sudo gem install bundler
複製程式碼
在你的專案根目錄下建立Gemfile檔案,檔案寫入以下內容:
source "https://rubygems.org"
gem "fastlane"
#如果使用 cocoapods管理專案依賴,增加下面的命令
#gem "cocoapods"
複製程式碼
建立完後,在持續整合時執行命令:
bundle update
#如果第一次執行,用 bundle install 代替
複製程式碼
接著編輯專案目錄下的./fastlane/Fastfile檔案內容(首先保證你的專案在 Xcode 中,已配置好證照和對應的描述檔案):
lane :beta do
gym(scheme: "AppScheme”,
#output_name 指打包完成後, 輸出ipa檔案的名字
output_name: "APPName_Debug”,
#export_method 打包版本選擇
#分別是app-store、ad-hoc、development、enterprise
export_method: "development”,
export_options: {
provisioningProfiles: {
#左側表示你的專案的bundle id
#右側表示你的專案在選擇export_method後,對應的描述檔名字
"com.test.appidentifer" => "ProfilesName"
}
})
end
複製程式碼
(還有一種官方推薦的 match 方法匹配證照和描述檔案,由於筆者現在用企業版賬號開發應用,不能隨意撤銷證照,所以沒用 match 的方法.)
2:安裝 jenkins:
在macOS系統上,我們需要先安裝 JDK,然後在 Jenkins 的官網 下載最新的 war 包。
下載完成後,開啟終端,進入到 war 包所在目錄,執行以下命令:java -jar jenkins.war --httpPort=8080
複製程式碼
待Jenkins啟動後,在瀏覽器頁面輸入以下地址,開啟 jenkins:
http://localhost:8080
複製程式碼
注意:使用其他方式安裝的 Jenkins 可能導致後續步驟失敗,請確認使用推薦的方式來安裝 Jenkins。
開始建立工程
配置倉庫程式碼連結
新增執行的 shell 程式碼
shell 內容:export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
#上面命令指定編碼方式,如果不指定,執行 fastlane beta 會報錯
bundle update
fastlane beta
複製程式碼
最後,增加構建後操作步驟,選擇 Archive the artifacts,可以將打包好的 ipa 呈現在當前頁面,方便"測試同事"點選下載.點選"儲存",然後開始構建專案.
常見問題
出現 fastlane: command not found 怎麼辦? 解決方法一:這個情況一般是由於 jenkins 沒有設定正確的 $PATH 環境變數導致的。正確設定的方法為: 在終端執行 echo $PATH,記錄下輸出的結果 在 jenkins 中系統管理-系統設定中,找到 環境變數(Environment variables) 在 key 中填寫 PATH,在 value 中填寫第一步中輸出的結果 儲存即可。
解決方法二:請確認你安裝 Jenkins 的方式和本文中推薦的方式一致。使用其他方式安裝的 Jenkins 也經常會出現此問題。 參考: fastlane官方教程 蒲公英官網:使用 Jenkins 實現持續整合 (iOS)