微服務(wù)下的持續(xù)集成-Jenkins自動(dòng)化部署GitHub項(xiàng)目
一、前言
只從公司用了Jenkins后就很想寫這個(gè)了,因?yàn)檫@個(gè)真真真的是太方便了,想起小農(nóng)剛工作的時(shí)候,那個(gè)時(shí)候部署項(xiàng)目怎么部署呢?首先需要將對(duì)應(yīng)的class文件和xml一個(gè)一個(gè)導(dǎo)出來(lái),放到對(duì)應(yīng)的包文件里面,有時(shí)候一不小心很有可能會(huì)導(dǎo)錯(cuò),這個(gè)時(shí)候又要去重新拉一下對(duì)應(yīng)的class文件,然后對(duì)比看有沒(méi)有導(dǎo)入錯(cuò)誤,是不是class文件,先停止對(duì)應(yīng)的tomcat服務(wù),然后放到服務(wù)器上,之后再啟動(dòng)tomcat,這個(gè)過(guò)程簡(jiǎn)直就是繁瑣重復(fù)而且沒(méi)有技術(shù)含量,為此公司還專門配置了一個(gè)做這個(gè)工作的運(yùn)維人員,完全沒(méi)有必要,這點(diǎn)工資給我,我來(lái)做還做開(kāi)發(fā),它不香嗎?言歸正傳,自從用了Jenkins,才發(fā)現(xiàn)那是真的香,只需要提交到GIT上,然后在Jenkins上鼠標(biāo)輕輕一點(diǎn),等待發(fā)布,順便還可以喝杯咖啡,省時(shí)省力,今天這篇文章就將介紹,如果搭建一個(gè)自動(dòng)化部署的Jenkins。
附圖一張我們的Jenkins:
二、DevOps概念
DevOps 一詞的來(lái)自于 Development 和 Operations 的組合,突出重視軟件開(kāi)發(fā)人員和運(yùn)維人員的溝通合作,通過(guò)自動(dòng)化流程來(lái)使得軟件構(gòu)建、測(cè)試、發(fā)布更加快捷、頻繁和可靠。DevOps 其實(shí)包含了三個(gè)部分:開(kāi)發(fā)、測(cè)試和運(yùn)維。換句話 DevOps 希望做到的是軟件產(chǎn)品交付過(guò)程中IT工具鏈的打通,使得各個(gè)團(tuán)隊(duì)減少時(shí)間損耗,更加高效地協(xié)同工作。
DevOps 強(qiáng)調(diào)的是高效組織團(tuán)隊(duì)之間如何通過(guò)自動(dòng)化的工具協(xié)作和溝通來(lái)完成軟件的生命周期管理,從而更快、更頻繁地交付更穩(wěn)定的軟件
如果從字面上來(lái)理解,DevOps 只是Dev(開(kāi)發(fā)人員)+Ops(運(yùn)維人員),實(shí)際上,它是一組過(guò)程、方法與系統(tǒng)的統(tǒng)稱,其概念從2009 年首次提出發(fā)展到現(xiàn)在,內(nèi)容非常豐富,有理論也有實(shí)踐,包括組織文化、自動(dòng)化、精益、反饋和分享等不同方面。
三、為什么要做持續(xù)集成
- 持續(xù)集成服務(wù)(Continuous Integration,簡(jiǎn)稱 CI)
- 它綁定 Github 上面的項(xiàng)目,只要有新的代碼,就會(huì)自動(dòng)抓取。然后,提供一個(gè)運(yùn)行環(huán)境,執(zhí)行測(cè)試,完成構(gòu)建,還能部署到服務(wù)器。
- 持續(xù)集成指的是只要代碼有變更,就自動(dòng)運(yùn)行構(gòu)建和測(cè)試,反饋運(yùn)行結(jié)果。確保符合預(yù)期以后,再將新代碼"集成"到主干。
- 持續(xù)集成的好處在于,每次代碼的小幅變更,就能看到運(yùn)行結(jié)果,從而不斷累積小的變更,而不是在開(kāi)發(fā)周期結(jié)束時(shí),一下子合并一大塊代碼。
四、常見(jiàn)云服務(wù)
1.travis-ci
Travis CI 是在軟件開(kāi)發(fā)領(lǐng)域中的一個(gè)在線的,分布式的持續(xù)集成服務(wù),用來(lái)構(gòu)建及測(cè)試在GitHub托管的代碼。與 Jenkis 不同,Travis 不需要自己在服務(wù)器部署服務(wù),并且是高度集成 GitHub 的,所以對(duì)于開(kāi)源項(xiàng)目還是非常友好的。
適用于開(kāi)源軟件
官網(wǎng):https://travis-ci.org/
2.CircleCI
CircleCI 和travis-ci類似也是一個(gè)持續(xù)集成/持續(xù)部署的服務(wù),不需要自己搭建服務(wù)器。適用于開(kāi)源軟件
3.阿里云
4.華為云
5.IBM
6.daocloud
7.Jenkins
五、手動(dòng)部署Jenkins
5.1 準(zhǔn)備工作
1.JDK
下載地址:
https://pan.baidu.com/s/1Q2CSqX5PE8PghFOgSGwOZQ
提取碼:l8uo
2. Maven
鏈接:https://pan.baidu.com/s/101f74xd7ljtynklUo-KBdg
提取碼:nwgj
3. Git
git安裝命令:yum install git
4. 環(huán)境配置: vi /etc/profile
5.2 下載
Jenkins 項(xiàng)目產(chǎn)生兩個(gè)發(fā)行線, 長(zhǎng)期支持版本 (LTS) 和每周更新版本
兩個(gè)版本都以 .war 文件, 原生包, 安裝程序, 和 Docker 容器的形式分發(fā)
最新下載地址:https://jenkins.io/zh/download/
要是下載不下來(lái)的小伙伴,也可以用過(guò)百度云下載:https://pan.baidu.com/s/1ZqX_3JUsQ88_hJuJZhkXrw 提取碼:w1vj
5.3 啟動(dòng)
下載好我們的 jenkins.war 后,放到linux服務(wù)上,執(zhí)行java -jar Jenkins.war啟動(dòng)服務(wù),啟動(dòng)過(guò)程中我們會(huì)看到下面的日志信息:
第一次加載的時(shí)候Jenkins會(huì)比較慢,它會(huì)把需要持久化的信息放到文件夾/root/.jenkins/,所以會(huì)比較慢,我們需要耐心進(jìn)行等待,當(dāng)出現(xiàn)下面日志的時(shí)候才說(shuō)明我們啟動(dòng)成功了,如圖:
訪問(wèn)地址:http://ip地址:8080/
注意:如果你的地址加端口不能訪問(wèn),首先確定你的Jenkins起來(lái)沒(méi)有,如果Jenkins啟動(dòng)成功了,那么記得開(kāi)放8080端口
- firewall-cmd --permanent --zone=public --add-port=8080/tcp
輸入我們?cè)诳刂婆_(tái)中看到的密鑰,如果找不到可以到/root/.jenkins/secrets/initialAdminPassword中查看密鑰
5.4 配置
1 選擇插件來(lái)安裝,不要選擇安裝推薦的插件,不然你可能會(huì)下載一天,會(huì)很慢
這里選擇無(wú),不安裝插件,點(diǎn)擊安裝,,插件我們后續(xù)只需安裝我們需要的即可
3.輸入我們的用戶名和密碼之后,點(diǎn)擊保存并完成
4.實(shí)例配置,默認(rèn)就行,一般是和服務(wù)器地址匹配的
5.開(kāi)始使用
5.5 Jenkins 首頁(yè)
這里就是我們配置成功之后看到的Jenkins的首頁(yè)地址,但是里面什么插件都沒(méi)有,接下來(lái)就需要我們?nèi)ヅ渲脤?duì)應(yīng)的插件地址
5.6 手動(dòng)安裝插件
5.6.1. 中文漢化插件(Localization: Chinese (Simplified))
點(diǎn)擊 Manage Jenkins -> Manage Plugins
5.6.2.安裝漢化插件
在搜索框中輸入:Chinese 點(diǎn)擊安裝
重啟之后Jenkins會(huì)自動(dòng)刷新,到登錄頁(yè)面,這個(gè)時(shí)候我們輸入我們剛開(kāi)始配置的用戶名和密碼,就可以進(jìn)行登錄了
這里就是漢化之后的Jenkins
5.6.3.安裝Git
選擇系統(tǒng)管理,點(diǎn)擊插件管理
下載插件包
1 選擇可選插件
2 輸入Git
3 選擇Git
4 下載待重啟后安裝
這個(gè)時(shí)候下載會(huì)比較慢,大家要耐心等待一會(huì)
5.6.4.Maven Integration
在插件管理中下載插件Maven Integration,然后在重復(fù)我們上面的操作
開(kāi)始下載,等下載后我們對(duì)Jenkins進(jìn)行重啟
到這里我們的Jenkins安裝和配置就已經(jīng)安裝完成了!!!可以進(jìn)入正式的項(xiàng)目新建項(xiàng)目了
六、Jenkins + Maven +Git 自動(dòng)化繼承/測(cè)試
6.1 Git拉取項(xiàng)目
生成公鑰私鑰對(duì)出來(lái),命令:ssh-keygen
進(jìn)入密鑰目錄:cd .ssh/
打開(kāi)我們的git地址:https://github.com/
新建一個(gè)SSH密鑰
在下方輸入我們剛才生成的公鑰 vi id_rsa.pub
這里我們用一個(gè)測(cè)試項(xiàng)目,項(xiàng)目代碼很簡(jiǎn)單,就不做展示了,有興趣的可以直接下載,項(xiàng)目地址:https://github.com/muxiaonong/ci-test.git
使用命令下載項(xiàng)目到我們的服務(wù)器中
- git clone https://github.com/muxiaonong/ci-test.git
如果下載成功了說(shuō)明我們就配置好了
6.2 新建Jenkins項(xiàng)目
1 選擇新建任務(wù)
2 輸入任務(wù)名稱,然后選擇Maven項(xiàng)目,點(diǎn)擊確定
3 輸入描述,源碼管理選擇git
輸入我們剛才管理的Git地址
- https://github.com/muxiaonong/ci-test.git
4 點(diǎn)擊添加,選擇Jenkins配置
4 配置憑據(jù)
類型選擇SSH
私鑰輸入我們剛才生成的,在目錄 /root/.ssh,文件名為:id_rsa,將里面的私鑰復(fù)制進(jìn)去
添加好憑據(jù)后選擇root
5 輪詢
填寫 * * * * *意思是每分鐘執(zhí)行
6 環(huán)境變量
當(dāng)我們第一次配置Jenkins 的時(shí)候,由于我們沒(méi)有在Jenkins上配置環(huán)境變量,會(huì)提醒我們需要配置變量,我們點(diǎn)擊下圖中的鏈接,進(jìn)入配置頁(yè)面
7 JDK配置
點(diǎn)擊新增JDK -》 自動(dòng)安裝前面的勾選,去掉 -》 輸入別名和JAVA_HOME
注意:JAVA_HOME的輸入框下面,不要有警告或者錯(cuò)誤信息,否則就是路徑不正確。
使用 mvn -version命令時(shí),就已經(jīng)打印了Java home變量,注意:去除最后的jre
8 Maven配置
點(diǎn)擊新增Maven -》 自動(dòng)安裝前面的勾選,去掉 -》 輸入Name和MAVEN_HOME
注意:使用 mvn -version命令,就可以看到Maven home變量
MAVEN_HOME 輸入框下面,不要有警告或者錯(cuò)誤信息,否則就是路徑不正確。
9 成功
如果Build還是報(bào)錯(cuò),我們先點(diǎn)擊保存,然后在進(jìn)行配置
這個(gè)時(shí)候我們什么都不需要進(jìn)行操作,只需要點(diǎn)擊,應(yīng)用保存即可
10 大功告成
我們點(diǎn)擊立即構(gòu)建,
然后在執(zhí)行狀態(tài)就可以看到我們?cè)趫?zhí)行,然后鼠標(biāo)放到 #2上面,會(huì)有一個(gè)小三角,點(diǎn)擊控制臺(tái)輸出
11 項(xiàng)目運(yùn)行
當(dāng)我們看到下面的一句話的時(shí)候,說(shuō)明我們的項(xiàng)目已經(jīng)成功 配置到Jenkins上,并且成功運(yùn)行了
七、總結(jié)
如果安裝Maven Integration失敗,需要手動(dòng)下載javadoc.hpi文件,具體下載路徑,報(bào)錯(cuò)信息中會(huì)有提示的,使用迅雷下載即可。
然后在jenkins插件管理中選擇高級(jí)模式,然后上傳安裝就可以解決!
https://plugins.jenkins.io/下載好hpi文件上傳安裝即可
Jenkins對(duì)于現(xiàn)在越來(lái)越火的微服務(wù)來(lái)說(shuō),簡(jiǎn)直就是如魚(yú)得水,讓運(yùn)維和開(kāi)發(fā)都方便了很多,記得之前小農(nóng)面試的時(shí)候,面試官還問(wèn),會(huì)Jenkins嗎,或者自己搭建嗎,小農(nóng)相信,當(dāng)你看過(guò)這篇文章之后,如果恰好有面試官或者同事問(wèn)你,你可以告訴他答案了,感興趣的小伙伴可以動(dòng)手搭建起來(lái)了,大家加油~