Jenkins自動化部署_第1頁
Jenkins自動化部署_第2頁
Jenkins自動化部署_第3頁
Jenkins自動化部署_第4頁
Jenkins自動化部署_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、2020-7-7Jenkins 自動化(CI/DI )部署目錄Jenkins自動化(CI/DI )部署 31. 背景介紹 32. Jenkins服務(wù)器搭建于基本配置 32.1. Jenkins自動化/持續(xù)集成部署實現(xiàn)原理 32.2. Pytho n3.0自動化發(fā)布腳本 42.3. Jenkins 環(huán)境插件 93. Jenkins自動化部署 113.1. Springboot 項目發(fā)布部署(git) 113.2. 構(gòu)建完成后自動打 Tag 133.3. Tag項目發(fā)布部署 143.4. 靜態(tài)代碼審查之 fireli ne 163.5. 靜態(tài)代碼審查之 checkstyle 183.6. WebH

2、ook自動觸發(fā)構(gòu)建 203.7. 循環(huán)構(gòu)建遠(yuǎn)程服務(wù)完成提示 21Jenkins 自動化(CI/DI )部署1.背景介紹在實際開發(fā)中,經(jīng)常要一邊開發(fā)一邊測試,經(jīng)常為了一個功能而不斷更新版 本,這些情況都會涉及到頻繁的打包、部署;手動打包的涉及到項目上傳、打 包、發(fā)布等很多重復(fù)工作;那么,有一種工具能夠?qū)崿F(xiàn),將代碼提交到git后就自動打包部署,替換手動認(rèn)為打包,答案是肯定的:Jenkins,當(dāng)然除了 Jenkins以外,也還有其他的工具可以實現(xiàn)自動化部署;2. Jenkins服務(wù)器搭建于基本配置2.1. Jenkins自動化/持續(xù)集成部署實現(xiàn)原理初自誼化言富二曲呼F?3;卻3iLJL廠1I”.古9

3、91T彳tie竝申科+呻卅卸書Jenkins 特綠隼成部署分點控制分點控制開發(fā)持絞第咸Test. H'S分之合并至Master分之合并至MasterMaster分壹Master分壹枚發(fā)布枚發(fā)布發(fā)布生產(chǎn)(T磚標(biāo)簽)發(fā)布生產(chǎn)(T磚標(biāo)簽)l I *,11_ 亠_貢布生嚴(yán)T竺版本T竺版本l I *,11_ 亠_貢布生嚴(yán)T唇蠢藪(回滾岌布)T唇蠢藪(回滾岌布)22Python3.0自動化發(fā)布腳本DevOps remote.py 文件#!/usr/b in/env pyth on#codi ng=utf-8import paramikoimport sys#shell 傳入?yún)?shù)sourcePath

4、 = sys.argv1; #源目錄targetPath = sys.argv2; #目標(biāo)目錄jarName = sys.argv3; #文件名run Port = sys.argv4; #運行端口#部署服務(wù)器配置serveHost 目標(biāo)服務(wù)器IPserveKey=208.135":"?" #目標(biāo)服務(wù)器密碼serveUser=#目標(biāo)服務(wù)器登錄用戶名serveSSHPort=目標(biāo)服務(wù)器 SSH 端口#監(jiān)聽invoke_shell交互動態(tài)結(jié)果#cmd交互對象,en dParam結(jié)尾對象def mutualResult(cmd,e ndParam):buff =&quo

5、t;"while not buff.e ndswith(e ndParam):line = cmd.recv(9999);try:#進(jìn)行異常捕捉,如果解碼有問題,則換一種解碼方式buff += lin e.decode("utf8");except Excepti on :buff += lin e.decode("gb18030");return buff;#kill運行端口def killPort(ssh,port):print ("run cmd >> " + "netstat -tunlp |

6、grep "+port+" | awk 'print $7'| awk -F'/' 'print $1'");std in, stdout, stderr = ssh.exec_comma nd(” netstat -tunlp | grep "+port+"| awk 'pri nt $7' | awk -F'/' 'print $1'");pid = stdout.read().decode();prin t(pid)if pid:pr

7、int ("run cmd >>關(guān)閉 java 進(jìn)程 進(jìn)程 ID: "+pid);ssh.exec_comma nd("kill -9 "+pid);def deploy():print("開始部署"+jarName);for ip in serveHost:print ("連接服務(wù)器 IP: "+ip);#連接服務(wù)器ssh =paramiko.SSHCIie nt();ssh.set_miss in g_host_key_policy(paramiko.AutoAddPolicy();ssh.c on

8、n ect(host name=ip,port=serveSSHPortip,user name=serveUserip,password=serveKeyip);cmd = ssh.i nvoke_shell();# 連接交互prin t (mutualResult(cmd,"$ ");print (”開始復(fù)制"+jarName+" >> 服務(wù):"+ip);print("runcmd >> scp-r-P5321march33:/var/lib/je nkin s/workspace

9、/" "/target/"+jarName+" "+ targetPath +"n");+sourcePath+cmd.se nd("scp-rmarch33:/var/lib/je nkin s/workspace/"-P5321+sourcePath+"/target/"+jarName+" "+ targetPath +"n");#監(jiān)聽交互并輸入密碼mutualResult(cmd,"'s pas

10、sword:");cmd.se nd("?n"); mutualResult(cmd,"$ ");cmd.close();prin t("r un cmd >> scp suceess");#kill運行進(jìn)程killPort(ssh,ru nPort);#啟動服務(wù)cmd = ssh.i nvoke_shell();mutualResult(cmd,"$ ");print ("run cmd >> " + "nohup java -jar "

11、+ targetPath + "/" + jarName +" -server.port=" +run Port +" > " + targetPath + "/" + jarName + ".log 2>&1& n");prin t ("等待服務(wù)器:” + ip + " 啟動");cmd.se nd(” nohupjava -jar " + targetPath + "/"+ jarName +"

12、-server.port=" +run Port +" > " + targetPath + "/" + jarName + ".log 2>&1 & n");mutualResult(cmd,"$ ");print ("核心服務(wù):” + ip + "發(fā)布成功");cmd.close();ssh.close();if _name_ ="_deploy_":deploy()deploy()DevOps_remote.sh 腳本文件

13、#!/bi n/bashpython3 / var/lib/jenkins/workspace/dev_remote.py $1 $2 $3 $423Jenkins 環(huán)境插件這里建議選擇推薦安裝,保證基本常用功能可以使用自定義jenkins插件通過附加特性來擴Jenkins以滿足不同的需求選擇插件來安裝選擇芹安裝最適合旳樹札全局工具配置(Global Tool Configuration)系統(tǒng)配置配置發(fā)布通知郵箱2.34插件安裝|h| njravrinWM |tiw 卞那 wl l« wvwnn lUMmng Mcurfg 時* <IC *M3. Jenkins自動化部署3.1

14、. Springboot 項目發(fā)布部署(git )tB Jenkins鼻.MWIE 內(nèi) 3H鬥* W I* te«wra'«M* Wkra皿 M|tn d W faritt KtSnAi"=Qlk&4TFltHri14V ratal WW>iiVvi«bWfO kjFFWfc"0Ui EW fawrw Gfet但ZfTrV Hit2 SthaoJv auM:r nn _rtw-n 2 re KuxKriJ >«k1L WQ Ud rtn* Mtw fnviQbw Ur fcJH wkdB鮮OOnrcMms*

15、 Iwr tiMIM ma也 口 Z pEfeifPlEfFtilMWiM*4 冃IWJHfTfelLLfl._ J4rio»_nL ik亠.'aL-QjJ 3E_ .Sic ABn W - DtMUMl Puw Hwryl MW Ifh«lB E nM hviAmm32構(gòu)建完成后自動打 TagpHnkiru Kiwm 口 pdtaKja珂33燈曠ui- MtffH艸別卩“骨峠卄r方wm* - rdta ¥rjndmta USNM ” 巧IWHt -岷,J*Ml33Tag項目發(fā)布部署JrnkiiiKii*l 4 Z. n If¥11*11-9 I

16、WB li tflJ*iltW J-IDJV竝 l4;n*3EJmtfi.LVJ£HIVi3J Fj<NK0 feM&aL>i<iiAMjI hr* Ml B£SjfataHtii1 "iff!* |1TftKft Wm infljTaarHui IdMdiVdLrt. I fi使用參數(shù)構(gòu)建:JrnKinsMav«» project jenki ns-d«mo-rcllbacl(M£ 1-RHlMiIfl IX EIIBW1 » MH34 靜態(tài)代碼審查之fireline配置:衣;?毎晉田扭

17、工戸 KU音奩町芻"7匐|電1!1丹曲L VR -.*&VFBEZJ-*-(p<| . HUiht vtwi 匕農(nóng)血“如事 Lm# iw JywkBd iMtcdell:心審 AEtMiini Zmo sell In»3-沖耳側(cè) Mm tMmg miid <Hr« iPiJJ kKimM4A« p *wwfl代碼審查結(jié)果:U0MCHnoH4Bdfi7nFwhm MTMn*» A w hAl la b.M*n ikdfu “ 鼻圧一r楓尸I WiMTHjrfli «nRht-SEnM-r-JR Wisl-P1&quo

18、t; 1L3E 哥亡厲 PMrH. 1 厲lit* IQ#-*1-4 #釈rvw fcz*c-*T T vifeiJ* ''.=*: p-M-Vi-Erif-用皿 iDEOMRW >'h 4 V-k 'dKw MJ 二, Sil叫4h JdK74dift-si»vfviarn- ksH.:#«*pen*" & aMMJdibd_LmtfAh;«*«3.5.靜態(tài)代碼審查之 checkstylepom.xml 配置:vdependency> vgroupld>com.puppycrawl.t

19、ools</groupld> <artifactld>checkstyle</artifactld> vversi on> 8.33</versi on></depe ndency>vplugi n><groupld>org.apache.mave n.plugi ns</groupld><artifactld>mave n-checkstyle-plugi n</artifactld>vversi on> 3.1.1</versi on><con f

20、iguratio n><con soleOutput>true</c on soleOutput><outputFileFormat>xml</outputFileFormat><!-<con figLocati on>sun _checks.xmlv/c on figLocati on>-><con figLocati on> google_checks.xmlv/c on figLocati on><li nkXRef>false</li nkXRef>v/con

21、figuratio n> vdepe nden cies>vdependency>vgroupld>com.puppycrawl.tools</groupld>vartifactld>checkstyle</artifactld>vversi on> 8.33v/version>v/depe nden cy>v/depe nden cies>v/plugi n>vreport ing><plug ins><plugi n><groupld>org.apache.mave

22、 n.plugi ns</groupld><artifactId>mave n-checkstyle-plugi n</artifactld><versi on> 3.1.1</versi on><con figurati on><con figLocati on> google_checks.xml</con figLocatio n></con figuratio n>v/plugi n>v/plugi ns>v/report ing>Jenkins 配置:防klV

23、WSJO:代碼審查結(jié)果:> ClM-dhM|UiCheckStyle ResultTrendSummryliMiHWW*lfc wiPJUDet vite.fB呻IM f iiEii SiCM» g >Wh*遲葷褲H-lJMRiFEKW'伽 QjthaK*36WebHook自動觸發(fā)構(gòu)建i-I"WM# <* riwtqFFJSWVm KB MMm IntbYlK! 1時叨"«WW4IIiB 用二! HHBiT耒um«噸血禺emIHH; DGQ4WaUBAm'nEMe vm WiwPw! FWmj V-M-H ffia亦.rHJUfTW.ird 云節(jié)込巧ssnTWfflBM.ripi叩 5W!Ki - B W.16I1W I AS 1 < 1A Fit RWm *1 mu “ ffiE* £0 BI AIill 15恤 "rftp 1wwk/ ini' 丿ra>+w '審fL *IhZ 仃-ri4 t- tm>-*-ih, '4ri fiFv'Mrip*氏ntBpair u

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論