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