德國的疫情越來越嚴(yán)重,周末閑來沒事,在家想著,好久沒有更新公眾號了,為了一直默默關(guān)注歡樂馬的小伙伴和不斷增加的讀者,這周加個班,把最新的想法寫出來,希望可以幫助到有需要的朋友。
這周的主題是 jenkins 服務(wù)器的配置。
前言:
汽車嵌入式由于其特殊的流程規(guī)范,比如 ASPICE 審核等,開發(fā)工作一般是常用的V模型。V模型也是功能安全的需要,感興趣的朋友可以看看我的另外一個系列。到底啥是功能安全 - 5
V模型帶來的缺點也顯而易見,周期長,不靈活,對顧客需求的響應(yīng)慢等, 相比汽車軟件開發(fā),在新興的IT行業(yè),大部分公司已經(jīng)都轉(zhuǎn)型到了敏捷化開發(fā),就是所謂的Agile。Agile的主旨是最大限度的滿足顧客的需求。與之應(yīng)運而生的是一系列的工具,這些工具可以幫助加速軟件開發(fā),使軟件又快又高質(zhì)量的送到客戶手里。其中不得不提的就是我們今天的主角,Jenkins。
正文:
提起Jenkins,他的圖標(biāo)是一個管家的模樣。寓意明確,就是一個自動化的管家,
幫你做一切可以自動化的事情。概括起來有兩個,第一個是CI (Continues integration), 另一個是CD(continues delivery),此處劃重點,面試中必問問題:CI和CD有什么區(qū)別。知道的小伙伴請留言,有彩蛋。
好了,言歸正傳,本文的目標(biāo)是一步一步帶讀者了解,如何配置一臺遠(yuǎn)程服務(wù)器,并且部署jenkins, 讓它幫我們自動編譯我們編寫的代碼。達(dá)到 continues intgration。
下面是步驟:
1. 在云服務(wù)器上下載,安裝并配置Jenkins:
我用的是Linux Centos7,根據(jù)目標(biāo)系統(tǒng)的不一樣使用的命令有區(qū)別,讀者可以自行參考Jenkins安裝手冊。
-
yum install jenkins
安裝完之后,服務(wù)器8080端口為 jenkins 默認(rèn)端口,如果將來如果有需要https 加密傳輸?shù)脑?,?yīng)該設(shè)置成 443 端口并且配置 ssl 證書。
2. 下載Git 作為版本管理工具,將來jenkins會鏈接git,實現(xiàn)代碼管理。
此處注意,請下載最新版的Git,在yum 庫里還是1.x 版本的git,如果想要git 2.xx 版本的話,需要做一個更新,或者直接從git官網(wǎng)通過url鏈鏈接下載并解壓安裝。
git 和Jenkins 都安裝完成以后,讓我們來開始配置吧。
首先用瀏覽器登錄 域名:8080, 此處是我的
http://kfz.plus:8080
注意第一次登錄有一個起始密碼,這個密碼在linux系統(tǒng)的
/var/lib/jenkins/secrets/initialAdminPassword的這個位置,并且只有第一次會有,如果已經(jīng)登錄了,這個password就刪除了。讀者可以參考下圖路徑找到initialAdminPassword 這個文件。
注冊并登錄賬戶之后 jenkins的首頁面:
設(shè)置第一個任務(wù)給它吧:
我沒有選擇常用的 Pipeline, 而是選擇了freesytle 項目。、
drop job 之后在configuration里配置git 路徑:
請注意,習(xí)慣用Github的用戶千萬不要配置自己的Github,因為國內(nèi)的云服務(wù)自動封鎖了Github的訪問,每次都會返回Timeout 報錯。
不信的話你看:
祖國的長城真是太坑了,我一直以為是我自己配置的問題,從頭到尾查了一個多小時,經(jīng)歷了整整十次 build,才發(fā)現(xiàn)人家壓根就不讓你訪問。
無奈只能擁抱祖國,注冊了國行版github:Gitee, 不熟悉git命令的小伙伴可以參考下面:
git initgit commit -m "xxx"git pushgit fetch git pullgit clone ......
搞定了Git 配置,Jenkins就可以管理和下載你的代碼了,但是為了實現(xiàn)編譯,我們還需要在云服務(wù)器上下載編譯器。為了簡單演示,此處用免費開源的gcc 編譯。觸發(fā)編譯的話選擇用shell 執(zhí)行g(shù)it source 里的makefile
配置完成,開發(fā)編譯吧
Jenkins有build的歷史記錄,前十次是因為github沒法訪問,換了gitee之后,就可以編譯成功了。
現(xiàn)在我設(shè)置成每一個小時編譯一次,我們的TC264項目狀態(tài) W 欄就變成了大太陽
后言:
jenkins作為一個管家可以幫助用戶做的工作有很多,從CI的角度有很多人性化的功能,比如如何觸發(fā)編譯或者編譯完之后做什么的配置,我目前的配置是,每一個小時或者每次在git 里有新的commit 的話,jenkins 會自動編譯新的代碼,確保每一次改動都沒有影響軟件的編譯。如果編譯有錯誤,會郵件提醒我錯誤的地方。還有很多有意思的配置,感興趣的小伙伴可以去詳細(xì)了解,。
當(dāng)CI 做完之后,另一個功能CD,我們下回再見吧。