持續的軟件版本發布/測試項目。
監控外部調用執行的工作。
為什么使用Jenkins?
先來看看一般的后端項目發布流程:
1、本地或打包服務器利用maven打成war包
2、遠程或者SSH連上項目服務器
3、停掉tomcat,刪除舊包和緩存,將新打的包放進去
4、重啟tomcat,完成
看似步驟簡單,其實占用了大量開發和運維的時間。
使用Jenkins后:
1、點擊立即構建,完成。
什么?點擊個按鈕就完成了?沒錯,就是個按鈕。其實在你點擊按鈕后Jenkins已經幫你把上述該走的流程后臺跑了一遍了。再搭配Gitlab的githooks可實現提交代碼后自動構建發布,連按鈕也不需要點了。
在開發項目的過程中會部署測試環境來驗證產品功能,重復以上操作會顯得很繁瑣,浪費大量時間,所以使用Jenkins來實現持續集成,對整個開發項目的過程有著重要的意義。使用Jenkins后,可節省手動發布時間成本,避免人工打包出錯,同時也能及時發現系統開發集成過程中產生的問題。
本文接下來介紹如何基于Jenkins+Maven+Git(GitLab)持續集成Java項目。
上圖為Java測試環境從代碼提交到應用部署的自動化完整流程。
下面我們具體來看Jenkins的安裝和配置。
現場測試環境如下,兩臺Linux虛擬機,安裝好以下軟件:
名稱 | IP | 安裝軟件 |
代碼托管、持續集成 | 192.168.3.144 | JDK1.8、Maven3.5.4、Git1.7.1、Gitlab、Jenkins |
應用服務器 | 192.168.3.145 | JDK1.8、Tomcat |
分別檢驗上述軟件的安裝情況:
檢驗JDK環境
檢驗Maven
檢驗Git
檢驗Gitlab
添加訪問Gitlab的ssh憑證
在192.168.3.144使用root用戶生成公鑰和私鑰
執行ssh-keygen-t rsa,在/root/.ssh/目錄生成公鑰和私鑰
id_rsa:私鑰文件
id_rsa.pub:公鑰文件
把生成的公鑰放在Gitlab中
登錄192.168.3.144->點擊頭像->Settings->SSHKeys
Jenkins提前安裝完畢。以Tomcat的war包形式來安裝,啟Jenkins。
安裝相關插件
發布插件Deploy to container Plugin
Maven插件Maven Integration plugin
Git插件Git plugin
SSH插件Publish Over SSH
Gitlab插件GitLab Plugin
Gitlab鉤子插件Gitlab Hook Plugin
在Jenkins中配置SSHServers
構建Maven項目
源碼管理
填寫git地址信息,由于已配置ssh,無需配置認證憑據
構建觸發器
Buildwhen a change is pushed to GitLab:檢測到Gitlab項目代碼提交后就觸發
同時需要在Gitlab的Webhooks中配置上圖圈出的地址,勾上Pushevents觸發
打包前步驟
根據自己需求可以添加一些操作:如一些shell命令
Build打包構建
RootPOM:指定pom.xml的文件路徑(這里是相對路徑)
Goalsand options:mvn的選項,構件參數
構建后操作
把構建好的jar包推送至應用主機,并執行啟停腳本拉起應用服務
stop.sh
#!/bin/sh
APP_NAME=amp_dev_server.jar
tpid=`ps-ef|grep $APP_NAME|grep -v grep|grep -v kill|awk {print $2}`
if [${tpid} ]; then
echoStop Process...
kill-15 $tpid
fi
sleep5
tpid=`ps-ef|grep $APP_NAME|grep -v grep|grep -v kill|awk {print $2}`
if [${tpid} ]; then
echoKill Process!
kill-9 $tpid
else
echoStop Success!
fi
start.sh
#!/bin/sh
source/etc/profile
APP_NAME=amp_dev_server.jar
tpid=`ps-ef|grep $APP_NAME|grep -v grep|grep -v kill|awk {print $2}`
if [${tpid} ]; then
echo App is running.
else
echo App is NOT running.
fi
#!/bin/sh
rm-f tpid
nohupjava -jar /home/gpadmin/soft/amp_dev_server/amp_dev_server.jar--spring.profiles.active=test>/home/gpadmin/soft/amp_dev_server/amp_dev_server.log 2>&1&
echo$! > tpid
echoStart Success!
到此配置完成,保存即可。
Jenkins常用構建方式有三種:
手動構建:用于測試環境或者預上線環境部署,只需要在Jenkins的界面點立即構建即可執行
觸發式構建:用于開發環境部署,開發人員可以push代碼或者合并代碼到Gitlab項目的開發分支上,Jenkins就自動部署代碼到對應服務器
定時構建:在參數化構建基礎上添加,可以每天定時打包
驗證項目是否構建成功
Jenkins使用各種顏色表示任務當前的狀態:
藍色:任務最近一次構建是成功的
紅色:任務最后一次構建是失敗的
黃色:任務最后一次構建表示成功了,但不穩定(主要是因為有失敗的測試)
灰色:任務從未被執行過或被禁用了
Jenkins使用一組天氣圖標表示任務長期的一個狀態,他們分別是:
萬里晴空,任務80%以上的集成都是成功的
稍有烏云,任務有60%~80%的集成是成功的
烏云密布,任務只有40%~60%的集成是成功的
陰雨綿綿,任務的集成成功率只有20%~40%
電閃雷鳴,任務的集成成功率不到20%
實際上,產品在從需求到部署的過程中,會經歷若干種不同環境,例如各種自動化測試運行環境、仿真環境、生產環境等。這些環境的搭建、配置、管理過程中,產品對應也需要在不同環境中進行部署,狀況也會比較復雜,從頭到尾地全自動持續部署的確困難。但如果能克服困難,做到持續交付,保證代碼在整個上線流程環境沒問題,整個團隊就能做到有的放矢,也更加有力的保證了代碼上線質量。所以,持續集成、持續部署和持續交付提供了一個優秀的DevOps環境,對于整個團隊來說,好處與挑戰并行。無論如何,頻繁部署、快速交付以及開發測試流程自動化都將成為未來軟件工程的重要組成部分。未來已經改變,不變者終將被淘汰。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/130189.html
摘要:如果還沒有搭建好可以使用的,請先移步到這篇文章進行搭建使用自動部署服務一搭建篇目標通過實現推送代碼后自動部署基于的服務準備工作獲取示例項目或者直接復制以下文件內容獲取示例項目項目文件頁面文件鏡像文件部署文件部署腳本文件頁面文件項目很簡單, 如果還沒有搭建好可以使用 Docker 的 Jenkins,請先移步到這篇文章進行搭建 使用 Jenkins 自動部署 Docker 服務(一、Je...
摘要:原博客地址實現前端項目自動化集成打包部署掘金地址前言以前寫前端項目打包部署,都是手動運行命令,打包完,然后壓縮,再上傳到服務器解壓。驗證提交代碼,成功自動打包部署提交代碼,觀察界面,出現構建任務,構建完成之后收到郵件通知。 原博客地址:https://yezihaohao.github.io/2017/09/09/Jenkins實現前端項目自動化集成打包部署/掘金地址:https://...
摘要:在本教程中,我們將使用在上部署和伸縮。它主要用來幫助操作人員部署伸縮更新和維護服務,以及提供服務發現機制來管理節點集群上的容器化應用程序。代理則使用,網絡啟動協議啟動,因此容器能夠在啟動和運行之后自動連接到。賬戶我們將在上部署集群。 在本教程中,我們將使用Rancher在Kubernetes上部署和伸縮Jenkins。按照本文的步驟一步步來,你將會使用到我們用來測試實際構建作業的mas...
摘要:本文將使用這些命令搭建一個持續集環境,解決不能聯網的問題來安裝各種常用插件。總結通過本章學習,你已經知道了基于如何在環境下搭建環境,并創建一個項目。以為基礎框架,為數據訪問層,為權限授權層,對常用數據進行緩存,基于構建的作為前端框架。 回顧:上一文對Docker常用的命令以羅列的方式做了一個詳盡的介紹。本文將使用這些命令搭建一個jenkins持續集環境,解決jenkins不能聯網的問題...
摘要:行業內各巨頭的自動化運維架構都各種功能各種酷炫,如下圖,讓人可望不可及。面對這么多問題,我就想啊,如何在低成本情況下實現自動化運維。自動擴縮容通過配置告警規則,調用相應就可以實現實戰以上就是筆者關于自動化運維的一些實踐。 行業內各巨頭的自動化運維架構都各種功能各種酷炫,如下圖,讓人可望不可及。現在最終的樣子大家都知道了,但問題是如何根據自己團隊當前的情況一步步向那個目標演進?筆者所在團隊,三...
摘要:對測試的影響讓單元測試運行的更順暢單元測試驅動開發是一個很好的應用程序開發方式,單元測試往往也是和代碼一起被提交到代碼倉庫中。但是很多單元測試通常依賴于很多其他服務,而這些服務的標準化配置往往是一個難點,如數據庫的搭建防火墻的配置等。 傳統的軟件開發、測試、運維需要三個團隊在三個不同的環境中進行,而三個環境的不同引發了很多的問題。如:工作內容的重復;開發環境中可運行的程序在測試和運維環...
閱讀 1353·2023-01-11 13:20
閱讀 1699·2023-01-11 13:20
閱讀 1211·2023-01-11 13:20
閱讀 1902·2023-01-11 13:20
閱讀 4161·2023-01-11 13:20
閱讀 2748·2023-01-11 13:20
閱讀 1397·2023-01-11 13:20
閱讀 3664·2023-01-11 13:20