前段時間寫了一篇關於"jenkins 持續集成 iOS項目"的文章,配置比較複雜.在更新到 Xcode 9之後,原來的配置方案不能用了.最近嘗試用 fastlane+jenkins,繼續實現持續集成. fastlane 是一個優秀的部署,發佈應用的開源項目(github地址). 推薦使用 fastlane, 放棄使用 jenkins 裏 Xcode-plugin 的緣由: fastlane 多人維護,更新及時,部署簡單. Xcode-plugin反之.java
官方版安裝詳細步驟 保證在 mac 上安裝了最新版的 Xcode. 在Ruby 2.0.0及以上版本環境下安裝:ios
sudo gem install fastlane -NV
複製代碼
而後,在終端進入你項目的根目錄,執行如下代碼:git
fastlane init
複製代碼
因爲 fastlane 版本更新迅速,高版本不向前兼容,推薦使用Gemfile,更新版本. 在終端執行命令,安裝builder:github
sudo gem install bundler
複製代碼
在你的項目根目錄下建立Gemfile文件,文件寫入如下內容:shell
source "https://rubygems.org"
gem "fastlane"
#若是使用 cocoapods管理項目依賴,增長下面的命令
#gem "cocoapods"
複製代碼
建立完後,在持續集成時執行命令:瀏覽器
bundle update
#若是第一次執行,用 bundle install 代替
複製代碼
接着編輯項目目錄下的./fastlane/Fastfile文件內容(首先保證你的項目在 Xcode 中,已配置好證書和對應的描述文件):ruby
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 的方法.)bash
在macOS系統上,咱們須要先安裝 JDK,而後在 Jenkins 的官網 下載最新的 war 包。 app
java -jar jenkins.war --httpPort=8080
複製代碼
待Jenkins啓動後,在瀏覽器頁面輸入如下地址,打開 jenkins:ide
http://localhost:8080
複製代碼
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)