1、概述
- Jenkins 與 Git 的結(jié)合使用,可以理解為是 Jenkins 的一個(gè)強(qiáng)大之處。為什么要這么說(shuō),簡(jiǎn)要說(shuō)明一下這個(gè)工作模式就能理解:
一個(gè)軟件項(xiàng)目,開(kāi)發(fā)過(guò)程中通常都會(huì)使用到一些源碼管理工具,來(lái)達(dá)到團(tuán)隊(duì)協(xié)作的目的。而 Jenkins 所能實(shí)現(xiàn)的功能是,待開(kāi)發(fā)人員將代碼提交到源碼管理工具中,通過(guò)提前設(shè)計(jì)好的 Jenkins 構(gòu)建策略等,可以實(shí)現(xiàn)一鍵測(cè)試、部署等等。開(kāi)發(fā)人員所要做的就是提交代碼至倉(cāng)庫(kù),其余的工作可以交給 Jenkins 完成。
2、具體操作
- 準(zhǔn)備工作:
1、部署 Jenkins 的主機(jī)上要安裝 Git,安裝成功后,可以通過(guò)whereis命令獲取到 Git 的安裝路徑。
2、準(zhǔn)備好另外一個(gè)服務(wù)器,Jenkins 將通過(guò)節(jié)點(diǎn)方式對(duì)其實(shí)現(xiàn)遠(yuǎn)程操作。(只使用部署了 Jenkins 這一個(gè)服務(wù)器進(jìn)行這個(gè)示例也是可行的,即這個(gè)服務(wù)器即部署了 Jenkins 也“承擔(dān)”部署軟件項(xiàng)目)
3、一個(gè)遠(yuǎn)程的源碼倉(cāng)庫(kù)。GitHub、GitLab、Gitee 等均可。
4、上傳一個(gè) HTML 文件到這個(gè)遠(yuǎn)程倉(cāng)庫(kù)(上傳至master分支即可)。

5、在遠(yuǎn)程服務(wù)器中安裝好并開(kāi)啟 Tomcat,將通過(guò) Jenkins 將這個(gè) HTML 文件部署至遠(yuǎn)程服務(wù)器的 Tomcat 中。
- 流程:

注意:上述的操作僅是簡(jiǎn)單示例,可能會(huì)有不合適的地方。
- 1、通過(guò)
whereis命令在部署了 Jenkins 的服務(wù)器上獲取到 Git 的安裝路徑。在 Jenkins 主頁(yè)(首頁(yè))點(diǎn)擊左側(cè)的“系統(tǒng)管理”,再點(diǎn)擊“全局工具配置”,進(jìn)入“全局工具配置”頁(yè)面:

- 2、填寫(xiě)有關(guān) Git 的配置:
Name自定義;Path to Git executable為git命令的路徑,可以通過(guò)whereis git命令得到;“自動(dòng)安裝”不要勾選。配置后保存。

- 3、新建一個(gè)項(xiàng)目(選擇“構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目”即可),進(jìn)入該項(xiàng)目的配置頁(yè)面,進(jìn)行一些常規(guī)配置:

- 4、進(jìn)行項(xiàng)目配置中的“源碼管理”配置,配置后保存:


勾選Git;
輸入遠(yuǎn)程倉(cāng)庫(kù)的 URL,注意這個(gè) URL 是 Clone 操作(git clone)所用的那個(gè) URL;
憑據(jù),與創(chuàng)建、配置“節(jié)點(diǎn)”時(shí)類(lèi)似,已經(jīng)添加過(guò)就直接選擇,沒(méi)有的話就添加。添加的話一般常用的就是Username with password、SSH Username with private key這兩種類(lèi)型。Username with password就是配置你遠(yuǎn)程源碼倉(cāng)庫(kù)的用戶名和密碼,比如 GitHub 的用戶名和密碼。SSH Username with private key就是使用密鑰對(duì),使用的前提是需要將部署了 Jenkins 的服務(wù)器中的密鑰對(duì)中的公鑰($User_home_directory/.ssh/······_pub)配置在遠(yuǎn)程源碼倉(cāng)庫(kù)中,然后“憑據(jù)”中配置密鑰對(duì)中的私鑰;
指定分支,根據(jù)實(shí)際情況;
Additional Behaviours:有很多選項(xiàng)供選擇,類(lèi)似于“構(gòu)建策略”,但一般是執(zhí)行在“構(gòu)建策略”之前。這里選擇的是“檢出到子目錄”,作用是從遠(yuǎn)程倉(cāng)庫(kù)拉取代碼到本地,作用類(lèi)似于git clone命令。所以,需要先在遠(yuǎn)程服務(wù)器上建立一個(gè)本地倉(cāng)庫(kù)目錄。
- 5、保存項(xiàng)目配置,立即構(gòu)建,先測(cè)試是否能從遠(yuǎn)程倉(cāng)庫(kù)拉取代碼到本地:


上面的圖說(shuō)明,Git 的配置是成功的。
- 6、編寫(xiě)一個(gè)簡(jiǎn)單的用于部署的 Shell 腳本,重新回到項(xiàng)目的配置中,新增“構(gòu)建策略”,選擇“執(zhí)行 Shell”,編寫(xiě)一個(gè)將這個(gè) HTML 文件拷貝至 Tomcat 中的
webapps/jenkins/目錄下,重命名為jenkins.html。保存配置:

- 7、先進(jìn)行一次構(gòu)建,一來(lái)看看 Shell 腳本是否正常運(yùn)行,二是看看 HTML 頁(yè)面的效果,便于與修改后區(qū)分:

- 8、在 Windows 中拉取代碼,編輯 HTML,來(lái)模擬開(kāi)發(fā)場(chǎng)景,修改后提交再提交至遠(yuǎn)程倉(cāng)庫(kù):


- 9、再次構(gòu)建,構(gòu)建成功后刷新瀏覽器頁(yè)面:

綜上,便是一個(gè)較為完整的 Jenkins 與 Git 結(jié)合使用。
3、補(bǔ)充
- 上述只是簡(jiǎn)單的示例?,F(xiàn)實(shí)中,不論是項(xiàng)目復(fù)雜程度、部署的環(huán)境、部署所編寫(xiě)的腳本等都比示例復(fù)雜的多。希望先通過(guò)這樣簡(jiǎn)單的示例,了解 Jenkins 可以與 Git 結(jié)合使用,并且對(duì) Jenkins 可以自動(dòng)拉取遠(yuǎn)程倉(cāng)庫(kù)中的代碼并且實(shí)現(xiàn)部署這種常規(guī)操作不再“懷疑”即可。