讓Jenkins成為你軟件開發(fā)的管家
德國(guó)的疫情越來(lái)越嚴(yán)重,周末閑來(lái)沒事,在家想著,好久沒有更新公眾號(hào)了,為了一直默默關(guān)注歡樂(lè)馬的小伙伴和不斷增加的讀者,這周加個(gè)班,把最新的想法寫出來(lái),希望可以幫助到有需要的朋友。
這周的主題是 jenkins 服務(wù)器的配置。
前言:
汽車嵌入式由于其特殊的流程規(guī)范,比如 ASPICE 審核等,開發(fā)工作一般是常用的V模型。V模型也是功能安全的需要,感興趣的朋友可以看看我的另外一個(gè)系列。到底啥是功能安全 - 5
V模型帶來(lái)的缺點(diǎn)也顯而易見,周期長(zhǎng),不靈活,對(duì)顧客需求的響應(yīng)慢等, 相比汽車軟件開發(fā),在新興的IT行業(yè),大部分公司已經(jīng)都轉(zhuǎn)型到了敏捷化開發(fā),就是所謂的Agile。Agile的主旨是最大限度的滿足顧客的需求。與之應(yīng)運(yùn)而生的是一系列的工具,這些工具可以幫助加速軟件開發(fā),使軟件又快又高質(zhì)量的送到客戶手里。其中不得不提的就是我們今天的主角,Jenkins。
正文:
提起Jenkins,他的圖標(biāo)是一個(gè)管家的模樣。寓意明確,就是一個(gè)自動(dòng)化的管家,
幫你做一切可以自動(dòng)化的事情。概括起來(lái)有兩個(gè),第一個(gè)是CI (Continues integration), 另一個(gè)是CD(continues delivery),此處劃重點(diǎn),面試中必問(wèn)問(wèn)題:CI和CD有什么區(qū)別。知道的小伙伴請(qǐng)留言,有彩蛋。
好了,言歸正傳,本文的目標(biāo)是一步一步帶讀者了解,如何配置一臺(tái)遠(yuǎn)程服務(wù)器,并且部署jenkins, 讓它幫我們自動(dòng)編譯我們編寫的代碼。達(dá)到 continues intgration。
下面是步驟:
1. 在云服務(wù)器上下載,安裝并配置Jenkins:
我用的是Linux Centos7,根據(jù)目標(biāo)系統(tǒng)的不一樣使用的命令有區(qū)別,讀者可以自行參考Jenkins安裝手冊(cè)。
-
yum install jenkins

安裝完之后,服務(wù)器8080端口為 jenkins 默認(rèn)端口,如果將來(lái)如果有需要https 加密傳輸?shù)脑?,?yīng)該設(shè)置成 443 端口并且配置 ssl 證書。
2. 下載Git 作為版本管理工具,將來(lái)jenkins會(huì)鏈接git,實(shí)現(xiàn)代碼管理。

此處注意,請(qǐng)下載最新版的Git,在yum 庫(kù)里還是1.x 版本的git,如果想要git 2.xx 版本的話,需要做一個(gè)更新,或者直接從git官網(wǎng)通過(guò)url鏈鏈接下載并解壓安裝。
git 和Jenkins 都安裝完成以后,讓我們來(lái)開始配置吧。
首先用瀏覽器登錄 域名:8080, 此處是我的
http://kfz.plus:8080
注意第一次登錄有一個(gè)起始密碼,這個(gè)密碼在linux系統(tǒng)的
/var/lib/jenkins/secrets/initialAdminPassword的這個(gè)位置,并且只有第一次會(huì)有,如果已經(jīng)登錄了,這個(gè)password就刪除了。讀者可以參考下圖路徑找到initialAdminPassword 這個(gè)文件。

注冊(cè)并登錄賬戶之后 jenkins的首頁(yè)面:

設(shè)置第一個(gè)任務(wù)給它吧:

我沒有選擇常用的 Pipeline, 而是選擇了freesytle 項(xiàng)目。、
drop job 之后在configuration里配置git 路徑:

請(qǐng)注意,習(xí)慣用Github的用戶千萬(wàn)不要配置自己的Github,因?yàn)閲?guó)內(nèi)的云服務(wù)自動(dòng)封鎖了Github的訪問(wèn),每次都會(huì)返回Timeout 報(bào)錯(cuò)。
不信的話你看:

祖國(guó)的長(zhǎng)城真是太坑了,我一直以為是我自己配置的問(wèn)題,從頭到尾查了一個(gè)多小時(shí),經(jīng)歷了整整十次 build,才發(fā)現(xiàn)人家壓根就不讓你訪問(wèn)。
無(wú)奈只能擁抱祖國(guó),注冊(cè)了國(guó)行版github:Gitee, 不熟悉git命令的小伙伴可以參考下面:
git initgit commit -m "xxx"git pushgit fetch git pullgit clone ......
搞定了Git 配置,Jenkins就可以管理和下載你的代碼了,但是為了實(shí)現(xiàn)編譯,我們還需要在云服務(wù)器上下載編譯器。為了簡(jiǎn)單演示,此處用免費(fèi)開源的gcc 編譯。觸發(fā)編譯的話選擇用shell 執(zhí)行g(shù)it source 里的makefile
配置完成,開發(fā)編譯吧

Jenkins有build的歷史記錄,前十次是因?yàn)間ithub沒法訪問(wèn),換了gitee之后,就可以編譯成功了。

現(xiàn)在我設(shè)置成每一個(gè)小時(shí)編譯一次,我們的TC264項(xiàng)目狀態(tài) W 欄就變成了大太陽(yáng)

后言:
jenkins作為一個(gè)管家可以幫助用戶做的工作有很多,從CI的角度有很多人性化的功能,比如如何觸發(fā)編譯或者編譯完之后做什么的配置,我目前的配置是,每一個(gè)小時(shí)或者每次在git 里有新的commit 的話,jenkins 會(huì)自動(dòng)編譯新的代碼,確保每一次改動(dòng)都沒有影響軟件的編譯。如果編譯有錯(cuò)誤,會(huì)郵件提醒我錯(cuò)誤的地方。還有很多有意思的配置,感興趣的小伙伴可以去詳細(xì)了解,。
當(dāng)CI 做完之后,另一個(gè)功能CD,我們下回再見吧。