最近在使用jenkins 實現ios自動化打包發佈蒲公英過程實踐遇到了一些坑,特地記錄下來方便有須要的人。html
進入正題:java
1、安裝Jenkinsandroid
1.Mac上安裝Jenkins 遇到到坑ios
由於 Jenkins 的pkg安裝包默認安裝位置爲shared文件夾,後續會遇到權限問題,因此放棄pkg安裝。(說明:也許是安裝時選擇了本機全部用戶可用的緣由)git
若是已經使用pkg文件方式安裝了,卸載方法:找到該文件 /Library/Application Support/Jenkins/Uninstall.command 雙擊執行卸載。shell
2.推薦安裝方式:json
先設置好Jenkins的主目錄
用root用戶登陸 編輯profile文件:vi /etc/profile 在最後加入:export JENKINS_HOME=/User/your path/ 保存,退出後執行:source /etc/profile 讓配置生效
官網 http://mirrors.jenkins.io/war-stable/ 直接下載war包;api
放到我的目錄 /Users/yourname/jenkins
xcode
cd 到存放的目錄 終端之執行命令服務器
java -jar jenkins.war --httpPort=8080
看到 如下信息說明安裝完成
信息: Jenkins is fully up and running
翻看安裝過程的log 能夠找到激活的密碼 (保存一份)
<若是沒有看到密碼,說明沒有卸載徹底,那麼執行
sudo rm -rf /var/root/.jenkins ~/.jenkins
在執行一次安裝命令>
3.解鎖
4.解決離線問題
新開一個tab 網頁 輸入網址http://localhost:8080/pluginManager/advanced。 這裏面最底下有個【升級站點】,把其中的連接改爲http的就行了,http://updates.jenkins.io/update-center.json。 提交! 而後關閉jenkins(關閉安裝Jenkins的終端便可),再啓動Jenkins(終端 java -jar jenkins.war ,須要再次粘貼密碼),這樣就能正常聯網了。
5.安裝推薦的插件
6.建立管理員用戶
輸入信息便可 ,完成後進入 jenkins 系統管理頁面,先到這裏
2、安裝 fastlane
fastlane這裏用來自動編譯打包iOS,它還能夠一鍵上自動發佈AppStore,製做app 截圖等,fastlane工具庫強大得超出你想象;更多關於fastlane的權威介紹用法參考 https://docs.fastlane.tools 中文資料可參考 https://www.jianshu.com/p/19ae8cc865b0
1. xcode-select --install
2. sudo gem install fastlane -NV 或者 brew cask install fastlane
3、配置 jenkins
一、新建一個任務
2.設置源碼獲取方式 --SVN
1.填入源碼svn地址 2.添加獲取源碼使用的帳戶密碼 3.選擇剛填寫帳戶
3.設置獲取代碼更新的輪詢方式 每隔5分鐘一次,有更新時自動獲取。點擊?號能夠查看相關幫助信息
完成以上步驟 保存,手動構建 目的是先獲取代碼
4.初始化 fastlane
cd 項目所在目錄
執行 fastlane init (選擇4)
Fastlane 會自動在 App 目錄中生成 fastlane
目錄
安裝上傳蒲公英用的插件
執行 fastlane add_plugin pgyer
編輯 配置文件 fastlane/Fastfile 自定義lane 函數: beta 完成編譯打包.ipa 及上傳發布
api_key
和 user_key
,請開發者在本身帳號下的 應用管理
- App概述
- API
中能夠找到,並替換到以上相應的位置。build_app
的 export_method
的值,須要根據開發者的打包類型進行設置,可選的值有:app-store
、ad-hoc
、development
、enterprise
。對於 Xcode 8.3 如下的版本,則不須要設置 export_method
。4.構建shell腳本(自動編譯打包發佈的腳本)
編輯寫腳本:調用前面寫的 beta 方法
保存,能夠手動 當即構建測試。祝君好運!!!
可能出報錯:fastlane comand not find ,在Jenkins 系統管理-系統設置-全局屬性-環境變量 增長:鍵 PATH 值: 終端輸出值(echo $PATH)
4、發佈成功後的郵件通知設置 參考:https://blog.csdn.net/u013066244/article/details/78665075?from=singlemessage&isappinstalled=0
建議只配 郵件插件,若是同時配置了系統默認的郵箱設置項 會致使自定義發件模版不起做用
1.設置發件服務器信息 <管理員郵箱須要與受權發件人相同>
二、設置全局收件人變量
三、項目中設置郵件 構建後的操做--添加郵件通知
選擇郵件出發方式
添加一個Recipient List
高級中設置收件人及郵件內容信息
郵件內容模版
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>${PROJECT_NAME}-第${BUILD_NUMBER}次構建日誌</title> </head> <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0"> <table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif"> <tr> <td>(本郵件是程序自動下發的,請勿回覆!)</td> </tr> <tr> <td><h2> <font color="#0000FF">構建結果 - ${BUILD_STATUS}</font> </h2></td> </tr> <tr> <td><h4> <font color="#0000FF">安裝地址:http://www.pgyer.com/****</font> </h4></td> </tr> <tr> <td><br /> <b><font color="#0B610B">構建信息</font></b> <hr size="2" width="100%" align="center" /></td> </tr> <tr> <td> <ul> <li>項目名稱 : ${PROJECT_NAME}</li> <li>構建編號 : 第${BUILD_NUMBER}次構建</li> <li>SVN版本 : ${SVN_REVISION}</li> <li>觸發緣由: ${CAUSE}</li> <li>構建日誌: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li> <li>構建 Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li> <li>工做目錄 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li> <li>項目 Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li> </ul> </td> </tr> <tr> <td><b><font color="#0B610B">Changes Since Last Successful Build:</font></b> <hr size="2" width="100%" align="center" /></td> </tr> <tr> <td> <ul> <li>歷史變動記錄 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li> </ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat=" %p"} </td> </tr> <tr> <td><b>Test Informations</b> <hr size="2" width="100%" align="center" /></td> </tr> <tr> <td><pre style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">Total:${TEST_COUNTS,var="total"},Pass:${TEST_COUNTS,var="pass"},Failed:${TEST_COUNTS,var="fail"},Skiped:${TEST_COUNTS,var="skip"}</pre> <br /></td> </tr> <tr> <td><b><font color="#0B610B">構建日誌 (最後 100行):</font></b> <hr size="2" width="100%" align="center" /></td> </tr> <tr> <td><textarea cols="80" rows="30" readonly="readonly" style="font-family: Courier New">${BUILD_LOG, maxLines=100}</textarea> </td> </tr> </table> </body> </html>
附:gitlab方式 獲取源碼
首次 設置Git的 user name 和email
在終端 執行
git config --global user.name "your gitlab name" git config --global user.email "XXXXX@XX.com"
生成密鑰
ssh-keygen -t rsa -C "XXXXX@XX.com"
不設置密碼
連續三個回車
最後獲得兩個文件:id_rsa和id_rsa.pub
SSH 公鑰默認儲存在帳戶的主目錄下的 ~/.ssh 目錄
複製公鑰
pbcopy < ~/.ssh/id_rsa.pub
添加到gitlab
因爲上面生成的密鑰沒有設置密碼 因此在Jenkins 獲取gitlab源碼時就不要設置了
Jenkins 節點配置
使用網絡上的其餘機器執行job,例如安裝Jenkins本級沒有android環境 ,那麼可使用網絡上的其餘機器執行android任務;
直接上圖
其中登錄憑證填寫須要鏈接的節點機器的用戶名與登陸密碼
節點節點機器爲mac 勾選遠程登陸。