Jenkins 100次構建失敗踩坑全錄(一)

標籤(空格分隔):workhtml


本文將以問題與解決方案的方式對Jenkins構建過程當中的問題進行收錄,後期會在評論中持續收集,若是有相同狀況,請自行對照解決;java

本文參考: 手把手教你利用Jenkins持續集成iOS項目 http://www.jianshu.com/p/41ecb06ae95f 關於iOS-Jenkins進行持續集成項目部署 http://www.jianshu.com/p/54c7daae6c94 iOS持續集成:Jenkins篇 http://www.jianshu.com/p/faf879b3d182linux

關卡1 :

安裝Jenkins:首先你的電腦得有一個Java環境,接下來安裝Jenkins。你能夠直接去Jenkins入口網站,查看安裝方式; 固然你也可使用如下方法:git

  • 安裝homebrew
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
複製代碼
  • 安裝jenkins
$ brew install jenkins
複製代碼

安裝成功後須要開啓jenkins服務;github

關卡2 :

開啓Jenkins服務:確認jenkins已安裝,在終端進入到jenkins安裝目錄下,會有一個叫作jenkins.war的文件,瀏覽器

$ java -jar jenkins.war
複製代碼

或者在終端輸入:ruby

$ jenkins
複製代碼

當出現: bash

image_1c0ptnl2j13mh1mn2hmk18qf7usp.png-188.1kB

服務已經就位,能夠開始進行配置了;ssh

這裏還有兩個命令用於jenkins開啓和停用(Mac上):curl

$ 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
複製代碼

不過實際操做過程當中,可能會出現停用失敗的狀況,個人作法是直接打開活動監視器,在裏面搜java服務,強制關閉掉;這裏須要注意,若是服務沒有中止再進行jenkins開啓是不成功的,提示會告訴你已經在用:

image_1c0pu09in491qq31bqs25f1hbg26.png-222.9kB

若是你想查看是否jenkins在運行,使用命令查看:

$ ps aux | grep jenkins
複製代碼

關卡3 :

安裝並開啓完成就能夠在瀏覽器裏輸入localhost:8080進行頁面化配置了; 安裝完成以後,Safari可能會自動打開,若是沒有自動打開,打開瀏覽器,輸入http://localhost:8080

image_1c0pvjgjqfbg3i01c371uhc1ves2j.png-27.6kB

這個時候可能會報一個錯誤。若是出現了這面的問題。出現這個問題的緣由就是Java環境有問題,重啓Java環境便可。

這個時候若是你重啓電腦會發現Jenkins給你新增了一個用戶,名字就叫Jenkins,不過這個時候你不知道密碼。你可能會去試密碼,確定是是不對的,由於初始密碼很複雜。這個時候正確作法是打開http://localhost:8080 會出現下圖的重設初始密碼的界面。

image_1c0pvl71n5dulcc413164i1hcp30.png-30.4kB

按照提示,找到/Users/Shared/Jenkins/Home/ 這個目錄下,這個目錄雖然是共享目錄,可是有權限的,非Jenkins用戶/secrets/目錄是沒有讀寫權限的。

image_1c0pvm8al1tce1iled5voi216ac3d.png-200.2kB

打開initialAdminPassword文件,複製出密碼,就能夠填到網頁上去重置密碼了。以下圖

image_1c0pvp2p01fon1h2mmvjs6s1fuj3q.png-99.6kB

一路安裝過來,輸入用戶名,密碼,郵件這些,就算安裝完成了。

仍是繼續登陸localhost:8080

然而這一關尚未結束: 寫blog的時候我把本身設置的賬號註銷了,然而當時設置的密碼卻忘記了,怎麼都想不起來,怎麼辦呢? 首先我想能不能用以前給的Jenkins賬戶呢,經試錯,未果; 接下來上百度查了幾種方法,有的方法很複雜,不打算用,咱們只用最簡單粗暴的;只要以前的賬號信息沒有丟失,又能夠進入系統就OK了,因而:

image_1c0q0bnonde9a9omqa1092a1747.png-85.9kB

注意實際操做過程當中發現不是/User/Shared/Jenkins/Home下的config.xml,也不是/User/Shared/Jenkins/Home/users下的config.xml,而是你本身用戶目錄~/.jenkins/下的config.xml,具體緣由多是jenkins運行的工做空間是當前用戶目錄下的.jenkins,而後就是這樣:

image_1c0q277tu152r9mg1dhg1edq8jp5q.png-55.9kB

經檢驗,無誤,可進入,可是好像遺留了一個問題,就是這樣進入的話就找不到管理用戶的選項了;解決問題,勾選圖中黃色圈,返回系統管理,出現管理用戶(仍是個隱藏道具);

image_1c0q3ukis1vlhib71uij1729ohs67.png-33.1kB

image_1c0q419b0164pqfe25d9br1fpt74.png-39.8kB

image_1c0q42m3mvf41d8fjs21ptb1ae77h.png-11.4kB

搞的像是特工登陸非受權賬戶同樣,無論怎麼說,總算是攻破了,進入下一關;

關卡 4:

先無論工程構建裏那一堆設置,咱們先來搞一下證書Cer,鑰匙Keychain,配置文件Provisioning Profiles的一些問題: 首先去系統管理 -> 管理插件 -> 可選插件,搜索並安裝Keychains and Provisioning Profiles Management插件; 進入插件:

image_1c0qeblep1tcj4m319ap1bek783ah.png-31.1kB

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

image_1c0qekdqp9v712rd1gefjdr1fdcbe.png-62.2kB

這裏咱們把login.keychain-db上傳到Jenkins裏,可是Upload並不能上傳這樣後綴的文件,因此須要你手動把login.keychain-db修改爲login.keychain(複製後再修改,以防止其餘地方會引用到帶-db);上傳完成後就會在下面出現你一些信息;而後打開你的鑰匙串,這個知道在什麼地方吧;

image_1c0qet898q8m118mk2s6kj1cq5eb.png-131kB

點擊打包所用到的證書,將紅色框中的名稱複製出來,添加到identities中;

image_1c0qf02rofnpc3r121c1nlb1mqteo.png-42.7kB

若是有多個,則點擊Add Code Signing Identity添加;

而後是PP文件,這些文件須要咱們從系統PP文件夾下複製到Jenkins資源文件夾下,以下圖兩個路徑: 這個是系統PP文件目錄

image_1c0qkdte41j1rgq81k8v1bi19f4f5.png-144.2kB
這個是Jenkins PP文件目錄
image_1c0qkkk833p0nt18andthn9qfi.png-79.2kB

Provisioning Profiles Directory Path 填寫成,注意替換爲本身的username:

/User/{USERNAME}/Library/MobileDevice/Provisioning Profiles
複製代碼

接着去你蘋果賬號裏去找你對應打包所須要的PP文件,而後點upload上傳到Jenkins環境裏; 以上,證書部分解決;

關卡 5

建立項目過程咱們會對各個須要的項進行逐個描述: 點新建項目,輸入項目名稱,選擇 構建一個自由風格的軟件項目,而後肯定,進入配置頁面。

image_1c0ql3ppk1bht1b5ms4hcui1jpjfv.png-8.2kB

  • General 這個部分的內容都很淺顯,沒有什麼能夠說的,根據須要自行填充;這裏說一下GitLab connection選項,由於我本身的工程是用gitlab管理的代碼,因此須要在Jenkins裏下一個Gitlab的插件,而後在裏面進行賬號配置,能夠採用賬號密碼以及SSH的方式,具體這個部分會有一個SSH的坑,先不做分析,後面會講到,我這裏先用賬號密碼的方式進行構建,經檢驗發現SSH方式非必要;

Credentials在這裏配置:

image_1c0qljaq610ljc02k6g1r821fs5gc.png-78.2kB

  • 源碼管理 這裏我選的Git,Repository URL填你工程的git地址,選用賬號密碼的形式應該是以http或https開頭的,Credentials填你在上一步中新建好的,
    image_1c0qlt20313duogl2g51hp11nqsgp.png-73kB
    Branch Specifier (blank for 'any') 填你要進行構建的分支,我這裏是*/release

這裏咱們PS一個隱藏BOSS:

returned status code 143 jenkins
ERROR: Error fetching remote repo ‘origin’
複製代碼

這個報錯是工程配置結束後進行構建後提示的,我當時搞這個發現遠程代碼明明是已經拉取到本地的,只是在拉取過程當中會發生中斷,本人在進行了將近50次試錯後發現這個拉取到本地的代碼率是變化的,先前覺得是SSH賬號的問題,因而轉頭花了一天的時間搞了下SSH,後來SSH搞通後發現該問題仍然存在,後來終於在經歷百度,谷歌,搜狗也用上的(不得不說有時候百度搜不出來的搜狗能搜到),發現了幾篇有用的,後來解決,也算是不負辛苦,後面有踩坑的夥伴多注意,前車可鑑後事之師;

blog.sina.com.cn/s/blog_72ef… issues.jenkins-ci.org/browse/JENK… stackoverflow.com/questions/3…

解決方案就在於這個Timeout,相信你看了這個單詞就知道是怎麼回事了:

image_1c0qmnlafh2p1j571b4ettv1ncah6.png-74.3kB

另順便粘一個code 128的連接,是個與該問題相關的問題,由於這些問題關鍵字有的重複,因此搜出來的文章有時會誤導,因此請仔細辨別:

returned status code 128 jenkins
ERROR: Error cloning remote repo 'origin'
stderr: Permission denied (publickey).
複製代碼

wantcoding.com/?p=293 這個連接是附送的,進去多看看你會有驚喜,還有QQ羣哦

相關文章
相關標籤/搜索