????????上一篇簡(jiǎn)單講了fastlane的自動(dòng)打包骄呼,這個(gè)需要手動(dòng)執(zhí)行命令打包惰拱,還不算智能,現(xiàn)在講解用jenkins智能自動(dòng)打包凛虽,我這里講解的jenkins可以認(rèn)為是一個(gè)操作者死遭,還有其他很多功能,這就不一一講解凯旋。
一呀潭、jenkins的安裝和啟動(dòng)
? ? ? ? 網(wǎng)上搜索的安裝有很多種,這里只講解通過brew安裝的至非。
? ? ? ? 1. jenkins安裝包安裝方式:
????????剛開始我是通過安裝包jenkins.war安裝運(yùn)行的钠署,這里個(gè)人感覺也沒那么好,前提需要安裝jdk8的荒椭,我電腦的是jdk10的谐鼎,所有不適合,然后我就去安裝jdk8(下載需要登錄賬戶)趣惠,這過程遇到許多坑狸棍,總是換路徑不成功,導(dǎo)致無法使用jdk8.
? ? ? ? 下載安裝完jdk8之后就是要配置環(huán)境味悄,安裝的路徑在?/Library/Java/JavaVirtualMachines 下草戈。
? ? ? ? 1. 終端輸入cd ~ 命令
? ? ? ? 2. 終端輸入?sudo su 命令授權(quán)
? ? ? ? 3. 終端輸入vi ?.bash_profile?命令編輯配置環(huán)境,沒有自動(dòng)創(chuàng)建一個(gè).bash_profile文件傍菇。
????????JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-8.0.2.jdk/Contents/Home
????????CLASSPAHT=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
????????PATH=$PATH:$JAVA_HOME/bin
????????export JAVA_HOME
????????export PATH
? ? ? ? 把上面的配置復(fù)制粘貼猾瘸,然后把jdk-8.0.2.jdk更改為jdk8的路徑保存關(guān)閉,
? ? ? ? 4. 終端輸入?source .bash_profile 命令使配置生效丢习,然后輸入 java -version 命令牵触,如圖則說明配置已經(jīng)生效
? ? ? ? jdk8安裝完成之后,通過 java -jar jenkins.war 命令安裝并啟動(dòng)運(yùn)行jenkins咐低,這個(gè)關(guān)閉終端就關(guān)閉jenkins了揽思,好像不能后臺(tái)運(yùn)行和開機(jī)自動(dòng)啟動(dòng)(我這邊沒找到方法),所以我不推薦這種方式安裝運(yùn)行见擦,后面我改成通過brew安裝的呀邢。
? ? ? ? 2. brew安裝方式:
? ? ? ? 通過brew安裝也需要jdk8以后的曙蒸,但不清楚是不是規(guī)定jdk8的书劝,我這里更改為jdk8的沒有改回jdk10的列粪,所以沒有嘗試(后面嘗試了不需要規(guī)定jdk8的)。通過brew安裝前提當(dāng)然是要安裝brew了酒来,沒有安裝brew的要先安裝brew卢未,這里不詳說。
? ? ? ? ?1.安裝brew?
? ??????????????ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
? ? ? ? 2.安裝jenkins
? ??????????????brew install jenkins
? ? ? ? 3.啟動(dòng)jenkins
????????????????jenkins和brew services start jenkins,jenkins啟動(dòng)是在前臺(tái)啟動(dòng)關(guān)閉終端jenkins就關(guān)閉了辽社,?brew services start jenkins是在后臺(tái)啟動(dòng)伟墙。
? ? ? ? ? ? ? ? 關(guān)聯(lián)文件,開機(jī)自動(dòng)啟動(dòng)?ln?-sfv?/usr/local/opt/jenkins/*.plist~/Library/LaunchAgents
二、jenkins的訪問
????????通過瀏覽器訪問http://localhost:8080/滴铅,在沒改過配置ip的情況下可以可以直接訪問http://127.0.0.1:8080/? 戳葵,通過ip訪問的需要關(guān)閉防火墻。 ? ? ? ? ? ?
? ? ? ? 如果需要其他人能訪問的話(局域網(wǎng)汉匙,外網(wǎng)的話需要部署在服務(wù)器)拱烁,就需要配置一下ip,ip要更改成你當(dāng)前電腦的ip地址盹兢,然后被人訪問就直接訪問你的電腦ip邻梆,假如你的電腦ip是192.168.8.8守伸,那么訪問地址為http://192.168.8.8:8080/绎秒。
? ? ? ? 更改路徑~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist和/usr/local/Cellar/jenkins/2.178/homebrew.mxcl.jenkins.plist的ip,如圖:
三尼摹、注冊(cè)jenkins和安裝推薦插件
? ? ? ? 1.根據(jù)提示輸入Administrator password執(zhí)行下一步见芹;
? ? ? ? 2.安裝推薦的插件;
? ? ? ? 3.注冊(cè)賬戶蠢涝。
四玄呛、新建Item
? ? ? ? ? ? ? ? 這里不需要安裝更多的插件了,這里利用fastlane自動(dòng)打包和二,所以不需要安裝什么證書徘铝、描述文件和xcode的插件。
? ? ? ? 1.新建任務(wù)
? ? ? ? ? ? ? ? 輸入任務(wù)名稱惯吕,選擇自由風(fēng)格惕它,點(diǎn)擊確認(rèn)下一步
????????2.填寫任務(wù)信息
? ? ? ? ? ? ? ? 基本信息general,如圖我選擇丟棄舊構(gòu)建废登,填寫你需要的保留天數(shù)和保持的最大構(gòu)建個(gè)數(shù)淹魄。
? ? ? ? 3.源碼管理
? ? ? ? ? ? ? ? 我這里用的是git,svn可以選擇第三個(gè)堡距,操作都是一樣的甲锡。如圖,這里要填寫你的遠(yuǎn)程庫(kù)url羽戒,和你的git賬號(hào)信息缤沦,如果你用的是https的話,需要輸入git賬號(hào)和密碼易稠,用ssh的話需要配置ssh私鑰缸废。填寫你代碼對(duì)應(yīng)的分支,我這邊用的是4.2.0的分支缩多,一般用的是master和developer呆奕。
? ? ? ? ? ? ? ? ? ? 我這里添加憑證選擇的是ssh的养晋,你可以自己選擇。我這里說一下添加ssh的公鑰梁钾,
? ? ? ? 1. 前往?~/.ssh 可以看到本機(jī)是否已經(jīng)生成過绳泉,有的話可以直接用,也可以生成新的姆泻;
? ? ? ? 2.?ssh-keygen -t rsa -C "youremail@example.com" 生成秘鑰零酪;不需要更名稱和不需要密碼的話直接敲回車就行了。
? ? ? ? 生成成功之后(如果還不清楚可以網(wǎng)上搜一下ssh 生成密鑰)拇勃,前往?~/.ssh 四苇,里面存放著三個(gè)文件id_rsa(私鑰)、id_rsa.pub(公鑰)方咆、known_hosts月腋,
? ? ? ? 3.?將id_rsa.pub(公鑰)配置到git,將id_rsa(私鑰)配置當(dāng)前的jenkins界面瓣赂。
? ? ? ? 4. 把專有密鑰添加到 ssh-agent 中:ssh-add ~./ssh/id_dsa (這個(gè)必須榆骚,要不然jenkins獲取不到git代碼)
? ? ? ? 4.構(gòu)建觸發(fā)器
? ? ? ? ? ? ? ? 如圖,我用的是定時(shí)每隔30分鐘查看遠(yuǎn)程的分支有沒有代碼更新的煌集,有的話直接拉取代碼更新妓肢,再構(gòu)建。其他更多功能自行搜索查看苫纤,這里不作詳情說明碉钠。
? ? ? ? 5.構(gòu)建
? ? ? ? ? ? ? ? 這里選擇shell,這里用fastlane命令執(zhí)行打包卷拘,命令如圖:
? ? ? ? ? ? ? ? ? ?這樣應(yīng)用保存就完全了喊废,這里不需要選擇構(gòu)建環(huán)境,這里用的是fastlane執(zhí)行打包恭金。還有構(gòu)建后操作也沒用到操禀,這里構(gòu)建完之后可以執(zhí)行其他事情,比如郵件通知等横腿。? ? ? ? ? ? ? ??
? ? ? ? 如果執(zhí)行不成功可以查看打印的錯(cuò)誤信息颓屑,更改之后再執(zhí)行看看,其他比較簡(jiǎn)單耿焊,這樣每當(dāng)有人提交代碼揪惦,就會(huì)自動(dòng)打包了,不需要手動(dòng)配置打包上傳ipa罗侯。
錯(cuò)誤解析:
? ??1.出現(xiàn) fastlane: command not found 怎么辦器腋?
????????解決方法一:這個(gè)情況一般是由于 jenkins 沒有設(shè)置正確的 $PATH 環(huán)境變量導(dǎo)致的。正確設(shè)置的方法為:
? ? ? ? ? ?在命令行下執(zhí)行?echo $PATH,記錄下輸出的結(jié)果
? ? ? ? ? ?在 jenkins 中系統(tǒng)管理-系統(tǒng)設(shè)置中纫塌,找到?環(huán)境變量(Environment variables)
????????????在 key 中填寫?PATH诊县,在 value 中填寫第一步中輸出的結(jié)果
????????????保存即可。
? ?2. 我剛弄好的時(shí)候措左,可以用一兩天依痊,不知道為什么最近jenkins發(fā)瘋了,最近jenkins老是打包出錯(cuò)怎披,提示Build step 'Execute shell' marked build as failure胸嘁,如圖:
? ? ? ? 按照提示設(shè)置環(huán)境還是不行,網(wǎng)上又搜索不出來凉逛,在一篇文章中無意看到解決的方法性宏。在fastlane文件夾中添加fastlane.sh腳本文件,添加如下內(nèi)容:
? ??????#解決ArgumentError - invalid byte sequence in US-ASCII錯(cuò)誤
? ??????#修改終端語(yǔ)言状飞、地區(qū)等國(guó)際化環(huán)境變量
? ??????export?LANG=en_US.UTF-8
? ??????export?LANGUAGE=en_US.UTF-8
? ??????export?LC_ALL=en_US.UTF-8
? ??????export?PATH=$PATH:/usr/local/bin
? ??????# fastlane profile
? ??????bundle exec fastlane APP
保存之后毫胜,在jenkins腳本修改腳本內(nèi)容
?? ? ? ?cd ?你的項(xiàng)目目錄
????????sh ./fastlane/fastlane.sh
這樣就是先執(zhí)行fastlane.sh文件就可改環(huán)境變量了,然后fastlane.sh文件里接著執(zhí)行fastlane命令
一切都弄好之后昔瞧,又發(fā)現(xiàn)一個(gè)問題指蚁,每次打包發(fā)包都不知道每次更新了什么內(nèi)容,然后又想著自動(dòng)獲取提交的記錄自晰,上傳蒲公英時(shí)自動(dòng)填寫git提交的記錄。
jenkins添加Add Changelog Information to Environment
這里的步驟有點(diǎn)多稍坯,簡(jiǎn)單點(diǎn)說:
? ? ? ? 1.?安裝 Maven
? ??????????????Maven下載地址:https://maven.apache.org/download.cgi
? ? ? ? 下載解壓之后酬荞,把它放在/Users/XXX/下,如圖:
? ??????????添加 Maven 相關(guān)環(huán)境
? ??????????????export M2_HOME=/Users/saj-king/apache-maven-3.6.1
? ? ? ? ? ? ? ? ?export PATH=$PATH:$M2_HOME/bin
? ? ? ? ? ? 終端輸入: ?vi ~/.bash_profile ?把上面的內(nèi)容添加在底部
? ? ? ? ? ? 然后保存退出瞧哟,輸入:?source?~/.bash_profile 來讓 Maven 生效
? ??????????輸入 mvn -v 來檢查 Maven 是否生效混巧。
? ? ? ? 下載插件的源碼地址是:https://github.com/daniel-beck/changelog-environment-plugin
解壓之后,在終端cd到?changelog-environment-plugin-master 下勤揩,執(zhí)行??mvn verify咧党。
success之后會(huì)在changelog-environment-plugin-master/target/下有個(gè)changelog-environment.hpi文件,這就是需要的插件陨亡。把它上傳到j(luò)enkins上傍衡。
在項(xiàng)目的配置中,構(gòu)建環(huán)境下面多了一項(xiàng) ?Add Changelog Information to Environment
選中后负蠕,多了三項(xiàng):Entry Format蛙埂、File Item Format、Date Format
Entry Format中添加%3$s (at %4$s by %1$s)遮糖,%3$s為ChangeLog內(nèi)容绣的,%4$s為時(shí)間,%1$s為提交人。
Date Format中添加?yyyy-MM-dd HH:mm:ss 時(shí)間格式屡江。
在命令行中使用SCM_CHANGELOG獲取芭概,在其他插件或者腳本用不了,只能在Excute shell 獲取惩嘉,
所以無奈之后又要添加一個(gè)Excute shell 腳本執(zhí)行谈山,把上傳蒲公英的命令放在一起,在fastlane里的上傳蒲公英的命令就不要了宏怔。
????????IPAPATH="/Users/my-king/Desktop/APP/MyAPP.ipa"
????????curl -F "file=@${IPAPATH}" -F "uKey=xxx" -F "_api_key=xxx" -F "updateDescription=${SCM_CHANGELOG}" https://qiniu-storage.pgyer.com/apiv1/app/upload
IPAPATH是存放打包出來的ipa路徑奏路,uKey和_api_key需要填寫自己的蒲公英信息
這樣就可以上傳提交信息。