標簽(空格分隔):work
本文將以問題與解決方案的方式對Jenkins構(gòu)建過程中的問題進行收錄,后期會在評論中持續(xù)收集,如果有相同情況,請自行對照解決谬哀;
本文參考:
手把手教你利用Jenkins持續(xù)集成iOS項目
http://www.reibang.com/p/41ecb06ae95f
關(guān)于iOS-Jenkins進行持續(xù)集成項目部署
http://www.reibang.com/p/54c7daae6c94
iOS持續(xù)集成:Jenkins篇
http://www.reibang.com/p/faf879b3d182
關(guān)卡1 :
安裝Jenkins:首先你的電腦得有一個Java環(huán)境,接下來安裝Jenkins严肪。你可以直接去Jenkins入口網(wǎng)站史煎,查看安裝方式;
當(dāng)然你也可以使用以下方法:
- 安裝homebrew
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- 安裝jenkins
$ brew install jenkins
安裝成功后需要開啟jenkins服務(wù)驳糯;
關(guān)卡2 :
開啟Jenkins服務(wù):確認jenkins已安裝篇梭,在終端進入到j(luò)enkins安裝目錄下,會有一個叫做jenkins.war的文件酝枢,
$ java -jar jenkins.war
或者在終端輸入:
$ jenkins
當(dāng)出現(xiàn):

服務(wù)已經(jīng)就位恬偷,可以開始進行配置了;
這里還有兩個命令用于jenkins開啟和停用(Mac上):
$ sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist
$ sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
如果是linux上也可以這樣:
$ sudo systemctl status jenkins.service
$ sudo systemctl start jenkins.service
不過實際操作過程中帘睦,可能會出現(xiàn)停用失敗的情況袍患,我的做法是直接打開活動監(jiān)視器坦康,在里面搜java服務(wù),強制關(guān)閉掉诡延;這里需要注意滞欠,如果服務(wù)沒有停止再進行jenkins開啟是不成功的,提示會告訴你已經(jīng)在用:

如果你想查看是否jenkins在運行肆良,使用命令查看:
$ ps aux | grep jenkins
關(guān)卡3 :
安裝并開啟完成就可以在瀏覽器里輸入localhost:8080進行頁面化配置了筛璧;
安裝完成之后,Safari可能會自動打開惹恃,如果沒有自動打開夭谤,打開瀏覽器,輸入http://localhost:8080

這個時候可能會報一個錯誤巫糙。如果出現(xiàn)了這面的問題朗儒。出現(xiàn)這個問題的原因就是Java環(huán)境有問題,重啟Java環(huán)境即可参淹。
這個時候如果你重啟電腦會發(fā)現(xiàn)Jenkins給你新增了一個用戶醉锄,名字就叫Jenkins,不過這個時候你不知道密碼承二。你可能會去試密碼榆鼠,肯定是是不對的纲爸,因為初始密碼很復(fù)雜亥鸠。這個時候正確做法是打開http://localhost:8080 會出現(xiàn)下圖的重設(shè)初始密碼的界面。

按照提示识啦,找到/Users/Shared/Jenkins/Home/ 這個目錄下负蚊,這個目錄雖然是共享目錄,但是有權(quán)限的颓哮,非Jenkins用戶/secrets/目錄是沒有讀寫權(quán)限的家妆。

打開initialAdminPassword文件,復(fù)制出密碼冕茅,就可以填到網(wǎng)頁上去重置密碼了伤极。如下圖

一路安裝過來,輸入用戶名姨伤,密碼哨坪,郵件這些,就算安裝完成了乍楚。
還是繼續(xù)登錄localhost:8080
然而這一關(guān)還沒有結(jié)束:
寫blog的時候我把自己設(shè)置的帳號注銷了当编,然而當(dāng)時設(shè)置的密碼卻忘記了,怎么都想不起來徒溪,怎么辦呢忿偷?
首先我想能不能用之前給的Jenkins帳戶呢金顿,經(jīng)試錯,未果鲤桥;
接下來上百度查了幾種方法揍拆,有的方法很復(fù)雜,不打算用芜壁,我們只用最簡單粗暴的礁凡;只要之前的帳號信息沒有丟失,又可以進入系統(tǒng)就OK了慧妄,于是:

注意實際操作過程中發(fā)現(xiàn)不是/User/Shared/Jenkins/Home
下的config.xml顷牌,也不是/User/Shared/Jenkins/Home/users
下的config.xml,而是你自己用戶目錄~/.jenkins/
下的config.xml塞淹,具體原因可能是jenkins運行的工作空間是當(dāng)前用戶目錄下的.jenkins
窟蓝,然后就是這樣:

經(jīng)檢驗,無誤饱普,可進入运挫,但是好像遺留了一個問題,就是這樣進入的話就找不到管理用戶的選項了套耕;解決問題谁帕,勾選圖中黃色圈,返回系統(tǒng)管理冯袍,出現(xiàn)管理用戶(還是個隱藏道具)匈挖;



搞的像是特工登錄非授權(quán)帳戶一樣,不管怎么說康愤,總算是攻破了儡循,進入下一關(guān);
關(guān)卡 4:
先不管工程構(gòu)建里那一堆設(shè)置征冷,我們先來搞一下證書Cer择膝,鑰匙Keychain,配置文件Provisioning Profiles的一些問題:
首先去系統(tǒng)管理 -> 管理插件 -> 可選插件检激,搜索并安裝Keychains and Provisioning Profiles Management插件肴捉;
進入插件:

不要關(guān)鍵去填下面的空,我會告訴你這是一道有選項的題目叔收;進入文件目錄齿穗,Command + shift + G
,寫下這樣的路徑~/資源庫/Keychains
今穿,

這里我們把login.keychain-db上傳到Jenkins里缤灵,但是Upload并不能上傳這樣后綴的文件,所以需要你手動把login.keychain-db修改成login.keychain(復(fù)制后再修改,以防止其他地方會引用到帶-db)腮出;上傳完成后就會在下面出現(xiàn)你一些信息帖鸦;然后打開你的鑰匙串,這個知道在什么地方吧胚嘲;

點擊打包所用到的證書作儿,將紅色框中的名稱復(fù)制出來,添加到identities中馋劈;

如果有多個攻锰,則點擊Add Code Signing Identity添加;
然后是PP文件妓雾,這些文件需要我們從系統(tǒng)PP文件夾下復(fù)制到Jenkins資源文件夾下娶吞,如下圖兩個路徑:
這個是系統(tǒng)PP文件目錄

這個是Jenkins PP文件目錄

Provisioning Profiles Directory Path 填寫成,注意替換為自己的username:
/User/{USERNAME}/Library/MobileDevice/Provisioning Profiles
接著去你蘋果帳號里去找你對應(yīng)打包所需要的PP文件械姻,然后點upload上傳到Jenkins環(huán)境里妒蛇;
以上,證書部分解決楷拳;
關(guān)卡 5
創(chuàng)建項目過程我們會對各個需要的項進行逐個描述:
點新建項目绣夺,輸入項目名稱,選擇 構(gòu)建一個自由風(fēng)格的軟件項目欢揖,然后確定陶耍,進入配置頁面。

- General
這個部分的內(nèi)容都很淺顯她混,沒有什么可以說的烈钞,根據(jù)需要自行填充;這里說一下GitLab connection選項产上,因為我自己的工程是用gitlab管理的代碼棵磷,所以需要在Jenkins里下一個Gitlab的插件蛾狗,然后在里面進行帳號配置晋涣,可以采用帳號密碼以及SSH的方式,具體這個部分會有一個SSH的坑沉桌,先不作分析谢鹊,后面會講到,我這里先用帳號密碼的方式進行構(gòu)建留凭,經(jīng)檢驗發(fā)現(xiàn)SSH方式非必要佃扼;
Credentials在這里配置:

- 源碼管理
這里我選的Git,Repository URL填你工程的git地址蔼夜,選用帳號密碼的形式應(yīng)該是以http或https開頭的兼耀,Credentials填你在上一步中新建好的,
image_1c0qlt20313duogl2g51hp11nqsgp.png-73kB
Branch Specifier (blank for 'any') 填你要進行構(gòu)建的分支,我這里是*/release
瘤运;
這里我們PS一個隱藏BOSS:
returned status code 143 jenkins
ERROR: Error fetching remote repo ‘origin’
這個報錯是工程配置結(jié)束后進行構(gòu)建后提示的窍霞,我當(dāng)時搞這個發(fā)現(xiàn)遠程代碼明明是已經(jīng)拉取到本地的,只是在拉取過程中會發(fā)生中斷拯坟,本人在進行了將近50次試錯后發(fā)現(xiàn)這個拉取到本地的代碼率是變化的但金,先前以為是SSH帳號的問題,于是轉(zhuǎn)頭花了一天的時間搞了下SSH郁季,后來SSH搞通后發(fā)現(xiàn)該問題仍然存在冷溃,后來終于在經(jīng)歷百度,谷歌梦裂,搜狗也用上的(不得不說有時候百度搜不出來的搜狗能搜到)似枕,發(fā)現(xiàn)了幾篇有用的,后來解決年柠,也算是不負辛苦菠净,后面有踩坑的伙伴多注意,前車之鑒后事之師彪杉;
http://blog.sina.com.cn/s/blog_72ef7bea0102vo9w.html
https://issues.jenkins-ci.org/browse/JENKINS-20445
https://stackoverflow.com/questions/35069079/jenkins-git-plugin-timeout-when-try-to-pull-repositoty-using-ssh
解決方案就在于這個Timeout毅往,相信你看了這個單詞就知道是怎么回事了:

另順便粘一個code 128的鏈接,是個與該問題相關(guān)的問題派近,因為這些問題關(guān)鍵字有的重復(fù)攀唯,所以搜出來的文章有時會誤導(dǎo),所以請仔細辨別:
returned status code 128 jenkins
ERROR: Error cloning remote repo 'origin'
stderr: Permission denied (publickey).