1. 程式人生 > >微服務下的持續整合-Jenkins自動化部署GitHub專案

微服務下的持續整合-Jenkins自動化部署GitHub專案

@[TOC] ## 一、前言 只從公司用了Jenkins後就很想寫這個了,因為這個真真真的是太方便了,想起小農剛工作的時候,那個時候部署專案怎麼部署呢?首先需要將對應的class檔案和xml一個一個匯出來,放到對應的包檔案裡面,有時候一不小心很有可能會導錯,這個時候又要去重新拉一下對應的class檔案,然後對比看有沒有匯入錯誤,是不是class檔案,先停止對應的tomcat服務,然後放到伺服器上,之後再啟動tomcat,這個過程簡直就是繁瑣重複而且沒有技術含量,為此公司還專門配置了一個做這個工作的運維人員,完全沒有必要,這點工資給我,我來做還做開發,它不香嗎?言歸正傳,自從用了Jenkins,才發現那是真的香,只需要提交到GIT上,然後在Jenkins上滑鼠輕輕一點,等待發布,順便還可以喝杯咖啡,省時省力,今天這篇文章就將介紹,如果搭建一個自動化部署的Jenkins。 附圖一張我們的Jenkins: ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201117153434961.png) ## 二、DevOps概念 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201116161202395.png) DevOps 一詞的來自於 Development 和 Operations 的組合,突出重視軟體開發人員和運維人員的溝通合作,通過自動化流程來使得軟體構建、測試、釋出更加快捷、頻繁和可靠。DevOps 其實包含了三個部分:開發、測試和運維。換句話 DevOps 希望做到的是軟體產品交付過程中IT工具鏈的打通,使得各個團隊減少時間損耗,更加高效地協同工作。 DevOps 強調的是高效組織團隊之間如何通過自動化的工具協作和溝通來完成軟體的生命週期管理,從而更快、更頻繁地交付更穩定的軟體 如果從字面上來理解,DevOps 只是Dev(開發人員)+Ops(運維人員),實際上,它是一組過程、方法與系統的統稱,其概念從2009 年首次提出發展到現在,內容非常豐富,有理論也有實踐,包括組織文化、自動化、精益、反饋和分享等不同方面。 ## 三、為什麼要做持續整合 - 持續整合服務(Continuous Integration,簡稱 CI) - 它繫結 Github 上面的專案,只要有新的程式碼,就會自動抓取。然後,提供一個執行環境,執行測試,完成構建,還能部署到伺服器。 - 持續整合指的是隻要程式碼有變更,就自動執行構建和測試,反饋執行結果。確保符合預期以後,再將新程式碼"整合"到主幹。 - 持續整合的好處在於,每次程式碼的小幅變更,就能看到執行結果,從而不斷累積小的變更,而不是在開發週期結束時,一下子合併一大塊程式碼。 ## 四、常見雲服務 1. travis-ci Travis CI 是在軟體開發領域中的一個線上的,分散式的持續整合服務,用來構建及測試在GitHub託管的程式碼。與 Jenkis 不同,Travis 不需要自己在伺服器部署服務,並且是高度整合 GitHub 的,所以對於開源專案還是非常友好的。 適用於開源軟體 官網:[https://travis-ci.org/](https://travis-ci.org/) 2. CircleCI CircleCI 和travis-ci類似也是一個持續整合/持續部署的服務,不需要自己搭建伺服器。適用於開源軟體 3. 阿里雲 4. 華為雲 5. IBM 6. daocloud 7. Jenkins ## 五、手動部署Jenkins #### 5.1 準備工作 **1.JDK** 下載地址:[https://pan.baidu.com/s/1Q2CSqX5PE8PghFOgSGwOZQ](https://pan.baidu.com/s/1Q2CSqX5PE8PghFOgSGwOZQ) 提取碼:l8uo ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201117220255622.png) **2. Maven** 連結:[https://pan.baidu.com/s/101f74xd7ljtynklUo-KBdg](https://pan.baidu.com/s/101f74xd7ljtynklUo-KBdg) 提取碼:nwgj ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201117220318646.png) **3. Git** git安裝命令:```yum install git``` ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201117220355495.png) **4. 環境配置:** ```vi /etc/profile``` ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201117221324557.png) #### 5.2 下載 Jenkins 專案產生兩個發行線, 長期支援版本 (LTS) 和每週更新版本 兩個版本都以 `.war` 檔案, 原生包, 安裝程式, 和 Docker 容器的形式分發 **最新下載地址:**[https://jenkins.io/zh/download/](https://jenkins.io/zh/download/) 要是下載不下來的小夥伴,也可以用過百度雲下載: [https://pan.baidu.com/s/1ZqX_3JUsQ88_hJuJZhkXrw](https://pan.baidu.com/s/1ZqX_3JUsQ88_hJuJZhkXrw) 提取碼:w1vj ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201116230221402.png) #### 5.3 啟動 下載好我們的 **jenkins.war** 後,放到linux服務上,執行```java -jar Jenkins.war```啟動服務,啟動過程中我們會看到下面的日誌資訊: ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201117222710856.png) 第一次載入的時候Jenkins會比較慢,它會把需要持久化的資訊放到資料夾```/root/.jenkins/```,所以會比較慢,我們需要耐心進行等待,當出現下面日誌的時候才說明我們啟動成功了,如圖: ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/2020111723223883.png) 訪問地址:http://ip地址:8080/ **注意:如果你的地址加埠不能訪問,首先確定你的Jenkins起來沒有,如果Jenkins啟動成功了,那麼記得開放8080埠** ```firewall-cmd --permanent --zone=public --add-port=8080/tcp``` ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201117232257314.png) 輸入我們在控制檯中看到的金鑰,如果找不到可以到```/root/.jenkins/secrets/initialAdminPassword```中檢視金鑰 #### 5.4 配置 1 選擇外掛來安裝,不要選擇安裝推薦的外掛,不然你可能會下載一天,會很慢 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201117232539951.png) 2. 這裡選擇無,不安裝外掛,點選安裝,,外掛我們後續只需安裝我們需要的即可 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201117232749568.png) 3.輸入我們的使用者名稱和密碼之後,點選儲存並完成 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201117232859364.png) 4.例項配置,預設就行,一般是和伺服器地址匹配的 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201117232934970.png) 5.開始使用 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201117233040479.png) #### 5.5 Jenkins 首頁 這裡就是我們配置成功之後看到的Jenkins的首頁地址,但是裡面什麼外掛都沒有,接下來就需要我們去配置對應的外掛地址 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201117233120223.png) #### 5.6 手動安裝外掛 ##### 5.6.1. 中文漢化外掛(Localization: Chinese (Simplified)) 點選 Manage Jenkins -> Manage Plugins ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201117233446454.png) ##### 5.6.2.安裝漢化外掛 在搜尋框中輸入:**Chinese** 點選安裝 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201117233755893.png) ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201117234235188.png) 重啟之後Jenkins會自動重新整理,到登入頁面,這個時候我們輸入我們剛開始配置的使用者名稱和密碼,就可以進行登入了 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201117234301221.png) 這裡就是漢化之後的Jenkins ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201117234309389.png) ##### 5.6.3.安裝Git 選擇系統管理,點選外掛管理 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201118215950968.png) 下載外掛包 1 選擇可選外掛 2 輸入Git 3 選擇Git 4 下載待重啟後安裝 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201118220235159.png) 這個時候下載會比較慢,大家要耐心等待一會 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201118220432568.png) ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201118220802279.png) ##### 5.6.4.Maven Integration 在外掛管理中下載外掛```Maven Integration```,然後在重複我們上面的操作 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201118221153162.png) 開始下載,等下載後我們對Jenkins進行重啟 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201118221302470.png) **到這裡我們的Jenkins安裝和配置就已經安裝完成了!!!可以進入正式的專案新建專案了** ## 六、Jenkins + Maven +Git 自動化繼承/測試 #### 6.1 Git拉取專案 生成公鑰私鑰對出來,命令:```ssh-keygen``` ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201118230938423.png) 進入金鑰目錄:```cd .ssh/``` ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201118231216985.png) 開啟我們的git地址:[https://github.com/](https://github.com/) ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201118231909461.png) 新建一個SSH金鑰 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201118232019380.png) 在下方輸入我們剛才生成的公鑰 ```vi id_rsa.pub``` ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201118232133470.png) 這裡我們用一個測試專案,專案程式碼很簡單,就不做展示了,有興趣的可以直接下載,專案地址:[https://github.com/muxiaonong/ci-test.git](https://github.com/muxiaonong/ci-test.git) 使用命令下載專案到我們的伺服器上:```git clone https://github.com/muxiaonong/ci-test.git``` ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201119214129539.png) 如果下載成功了說明我們就配置好了 #### 6.2 新建Jenkins專案 ##### 1 選擇新建任務 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/2020111921454819.png) ##### 2 輸入任務名稱,然後選擇Maven專案,點選確定 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201119214634224.png) ##### 3 輸入描述,原始碼管理選擇git 輸入我們剛才管理的Git地址 ```https://github.com/muxiaonong/ci-test.git``` ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201119215038399.png) ##### 4 點選新增,選擇Jenkins配置 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201119215120584.png) ##### 4 配置憑據 型別選擇SSH 私鑰輸入我們剛才生成的,在目錄 ```/root/.ssh```,檔名為:```id_rsa```,將裡面的私鑰複製進去 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201119215354246.png) 新增好憑據後選擇root ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201119215429712.png) ##### 5 輪詢 填寫 ```* * * * * ```意思是每分鐘執行 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201119215549521.png) ##### 6 環境變數 當我們第一次配置Jenkins 的時候,由於我們沒有在Jenkins上配置環境變數,會提醒我們需要配置變數,我們點選下圖中的連結,進入配置頁面 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201119215847562.png) ##### 7 JDK配置 點選新增JDK -》 自動安裝前面的勾選,去掉 -》 輸入別名和JAVA_HOME 注意:JAVA_HOME的輸入框下面,不要有警告或者錯誤資訊,否則就是路徑不正確。 使用 ```mvn -version```命令時,就已經列印了Java home變數,**注意:去除最後的jre** ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201119220154628.png) ##### 8 Maven配置 點選新增Maven -》 自動安裝前面的勾選,去掉 -》 輸入Name和MAVEN_HOME 注意:使用 ```mvn -version```命令,就可以看到Maven home變數 MAVEN_HOME 輸入框下面,不要有警告或者錯誤資訊,否則就是路徑不正確。 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201119220323745.png) ![##### 9 成功](https://img-blog.csdnimg.cn/20201119224612884.png) 如果Build還是報錯,我們先點選儲存,然後在進行配置 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201119224526814.png) 這個時候我們什麼都不需要進行操作,只需要點選,應用儲存即可 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201119224404350.png) ##### 10 大功告成 我們點選立即構建, ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201119224655375.png) 然後在執行狀態就可以看到我們在執行,然後滑鼠放到 #2上面,會有一個小三角,點選控制檯輸出 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201119224717557.png) ##### 11 專案執行 當我們看到下面的一句話的時候,說明我們的專案已經成功 配置到Jenkins上,並且成功運行了 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201119224836578.png) ## 七、總結 如果安裝Maven Integration失敗,需要手動下載javadoc.hpi檔案,具體下載路徑,報錯資訊中會有提示的,使用迅雷下載即可。 然後在jenkins外掛管理中選擇高階模式,然後上傳安裝就可以解決! [https://plugins.jenkins.io/](https://plugins.jenkins.io/%20%20%E4%B8%8B%E8%BD%BD%E5%A5%BDhpi%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E5%AE%89%E8%A3%85%E5%8D%B3%E5%8F%AF)下載好hpi檔案上傳安裝即可 Jenkins對於現在越來越火的微服務來說,簡直就是如魚得水,讓運維和開發都方便了很多,記得之前小農面試的時候,面試官還問,會Jenkins嗎,或者自己搭建嗎,小農相信,當你看過這篇文章之後,如果恰好有面試官或者同事問你,你可以告訴他答案了,感興趣的小夥伴可以動手搭建起來了,有不懂的可以在下面留言,小農看見了會第一時間回覆大家,謝謝,大家