天天看點

jenkins 入門教程(下)

一、yum install安裝方式

除了直接java -jar jenkins.war方式,還可以用yum安裝,這種方式下提供了更多的可配置選項,更适合生産環境控制jenkins的行為。

安裝完成後,可用 

不過,我在centos 7環境上測試下來,/etc/rc.d/init.d/jenkins這個腳本寫得有點小問題,如果java不在預設目錄下,會導緻啟動失敗

定位到67行,會發現該腳本會從以下位置找java可執行檔案

如果java沒安裝在這些目錄下,啟動就會失敗,解決辦法:把java所在的正确位置加入其中即可,比如:

注:這樣處理後,還要執行一下sudo systemctl daemon-reload,然後就可以service jenkins start了,如果還出錯,嘗試 cd /etc/rc.d/init.d,然後sudo ./jenkins start 進一步排查。建議同學們把這個啟動腳本仔細閱讀一下,可以發現很多有用的資訊,比如:

上面這些參數定義了配置檔案、war包、pid檔案、日志的位置,出問題時,我們可以直接到這些位置去檢視詳情。

比如:端口8080被占用了,需要更改啟動端口,直接檢視/etc/sysconfig/jenkins這個檔案,找到

修改一下即可。

/etc/sysconfig/jenkins這個檔案也建議通篇閱讀,裡面有一些很關鍵的資訊,比如:

二、jenkins的啟動身份問題

以 java -jar jenkins.war 這種方式啟動時,預設會在目前使用者根目錄下,建立.jenkins目錄,所有與jenkins相關的内容,包括配置檔案,使用者建立的資料都在該目錄下,如果你切換另一個賬号登入linux,然後重新啟動,會發現之前所有建立的項目包括使用者全沒了,因為此時jenkins的工作目錄切換到新使用者的~/.jenkins下了,是以一般情況下,不要随意切換啟動身份。

以 yum install安裝的jenkins,由于工作目錄是在/etc/sysconfig/jenkins裡寫死的,是以不存在這個問題,但是這種方式下,很多目錄都是放在/var打頭的位置,權限較少,如果出現無法寫檔案之類的錯誤,注意調整jenkins使用者或目錄的權限。

三、安全政策配置錯誤,導緻無法使用jenkins的問題

有時候自己瞎折騰,把匿名使用者的管理權禁止了,然後能登入的使用者又忘記了勾選管理權限,這時就懵了,不要着急,進入~/.jenkins或/var/lib/jenkins,編輯config.xml 找到

大緻是第7行,然後把下面的二個節點改成:

儲存,然後重新開機jenkins,就ok了。

如果沒有什麼重要資料的話,也可以更暴力一點,把~/.jenkins或/var/lib/jenkins下把除plugins之外的目錄全幹掉即可,相當于除插件之外,所有内容全初始化。

四、代碼送出後,jenkins如何自動建構?

有二種做法,以bitbucket這一類git代碼托管的項目為例:

a)Trigger Builds remotely

這種方式适合jenkins系統能公網通路的場景,大緻原理是jenkins的每個項目,都有一個對外公開的url,然後在bitbucket的項目裡配置一個所謂的webHook勾子,勾子裡填寫的url就是jenkins的這個url,每次有代碼送出到bitbucket時,bitbucket會回調整這個url,通知jenkins觸發build

jenkins 入門教程(下)

參考上圖,在jenkins中填寫一個token(最好是一個唯一随機字元串),然後到bitbucket上進入項目的setting

jenkins 入門教程(下)

添加一個Webhooks,如下圖,URL填寫的就是jenkins對外公開的回調url

jenkins 入門教程(下)

這種方式是實時的,一旦有代碼push到bitbucket上,就會觸發jenkins釋出。

b) Poll SCM

如果沒有公網URL,就隻能用下面這種方式了,大概意思是,每隔固定的時間去主動拉取代碼,如果有變化,則觸發build

jenkins 入門教程(下)

圖中的*/1 * * * * 表示每分鐘拉一次代碼

五、如何與bitbucket賬号內建

jenkins可以與bitbucket上的某個賬号認證內建,這樣就省去了登入的過程,操作步驟:

a)bitbucket中生成key/screct,參考下圖

jenkins 入門教程(下)

b)jenkins中修改認證方式

jenkins 入門教程(下)

幾個關鍵地方,ClientId即為bitbucket中的Key, Client Screct即為bitbucket中的Screct,然後在下面的User/Group中切記要添加一條記錄,使用者名為bitbucket裡的使用者名,然後勾選Administer框(或其它你希望的權限),否則登入後沒有任何權限。

這樣設定後,不用輸入使用者名、密碼就能直接進入jenkins了,但這種認證方式隻能綁定一個bitbucket賬号,個人感覺在公司裡用處不大,除非整個開發團隊共用一個bitbucket賬号,然後每個人負責獨立的一個項目,這顯然不太現實。