javascript
jenkins 手动执行_我常用的SpringBoot+Jenkins自动化部署技巧,贼好用,推荐给大家...
項目源碼地址
項目源碼:麻煩轉發后關注@JAVA發量告急私信回復【自動化】即可獲取!
SpringBoot+Jenkins自動化部署技巧,遠程部署同樣適用,附通用自動化腳本!本文將從半自動化部署講起,到自動化部署,講解一套生產環境切實可用的自動化部署方案!
半自動化部署
之前寫過的SpringBoot應用打包Docker鏡像都是通過Maven插件來實現的,由于遠程服務器需要開發2375端口,存在一定的安全隱患。這次介紹另一種方法,使用DockerFile+Jar+自動化腳本的形式來部署。由于需要一定的手動操作,我把它稱之為半自動化部署。
項目打包
- 這次我們不使用Docker的Maven插件來打包,先在pom.xml中注釋掉它;
- 然后使用Maven的package命令直接將應用打成Jar包;
- 此時在target目錄下就會生成一個Jar包,我們打包Docker鏡像的時候會用到它。
DockerFile
主要是定義了如何將Jar包打包成Docker鏡像,具體內容如下。
#?該鏡像需要依賴的基礎鏡像FROM?java:8#?將當前目錄下的jar包復制到docker容器的/目錄下ADD?mall-tiny-jenkins-1.0-SNAPSHOT.jar?/mall-tiny-jenkins-1.0-SNAPSHOT.jar#?聲明服務運行在8088端口EXPOSE?8088#?指定docker容器啟動時運行jar包ENTRYPOINT?["java",?"-jar","/mall-tiny-jenkins-1.0-SNAPSHOT.jar"]#?指定維護者的名字MAINTAINER?macro自動化腳本
可以作為通用腳本來使用的模板腳本,只需改變其中的一些參數即可,具體執行流程為:停止舊服務->刪除舊容器->刪除舊鏡像->打包新鏡像->運行新鏡像。
#!/usr/bin/env?bash#?定義應用組名group_name='mall-tiny'#?定義應用名稱app_name='mall-tiny-jenkins'#?定義應用版本app_version='1.0-SNAPSHOT'#?定義應用環境profile_active='qa'echo?'----copy?jar----'docker?stop?${app_name}echo?'----stop?container----'docker?rm?${app_name}echo?'----rm?container----'docker?rmi?${group_name}/${app_name}:${app_version}echo?'----rm?image----'#?打包編譯docker鏡像docker?build?-t?${group_name}/${app_name}:${app_version}?.echo?'----build?image----'docker?run?-p?8088:8088?--name?${app_name}?--link?mysql:db?-e?'spring.profiles.active'=${profile_active}?-e?TZ="Asia/Shanghai"?-v?/etc/localtime:/etc/localtime?-v?/mydata/app/${app_name}/logs:/var/logs?-d?${group_name}/${app_name}:${app_version}echo?'----start?container----'下面講下自動化腳本里面值得注意的地方:
- group_name、app_name、app_version可以用來定義打包鏡像的屬性;
- profile_active可以讓你的應用使用不同環境下的配置,比如使用qa可以啟用測試環境的配置,使用prod可以啟用生產環境配置,真正的一包多用;
- docker rmi這步一定要有,如果不刪除舊鏡像,當新鏡像打包的時候會產生none鏡像;
- docker run命令中的-e TZ="Asia/Shanghai"時區一定要設置,否則容器時間會和宿主機會相差8個小時。
部署運行
- 直接上傳我們的應用Jar包、DockerFile文件和自動化部署腳本到指定目錄下;
- 將自動化腳本修改為可執行;
- 使用./run.sh命令直接運行腳本即可。
結合Jenkins自動化部署
之前的打包、上傳文件都是我們手動完成的,其實這些操作也可以讓Jenkins來幫我們實現,有了Jenkins才算得上是真正的自動化部署!
Publish Over SSH
這里推薦安裝這款Jenkins插件,它的主要作用是可以通過SSH在不同服務器之間傳輸文件和執行命令。比如說我們把Jenkins裝在了測試服務器上,我們可以使用Jenkins在測試服務器上從Git倉庫獲取代碼,然后打成Jar包。打包完成后我們可以通過這個插件將Jar包傳輸到正式服務器上去,然后執行正式服務器上的自動化腳本,從而實現正式服務器上的自動化部署。
- 首先我們可以在系統管理->插件管理中找到該插件,然后進行安裝;
- 然后在系統管理->插件管理中添加相應的SSH配置;
- 配置完成后創建一個應用的構建任務,源碼管理和構建中的Maven打包配置和之前的Jenkins教程中一樣,只有最后一步不同,添加構建步驟為通過SSH發送文件并執行命令;
- 配置好我們的SSH Publisher,主要是源文件路徑和目標文件路徑,以及需要執行的腳本;
- 之后執行構建任務即可實現自動化部署了,此方法在兩臺不同服務器之間同樣適用!
總結
從我寫過的幾篇自動化部署文章中,其實可以看出,令來實現的。Jenkins的自動化部署也是基于這些的,所以要學會自動化部署,Linux命令和Docker命令是必不可少的!
如果大家喜歡我們的文章,歡迎大家轉發,點擊在看讓更多的人看到。也歡迎大家熱愛技術和學習的朋友加入的我們的知識星球當中,我們共同成長,進步。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的jenkins 手动执行_我常用的SpringBoot+Jenkins自动化部署技巧,贼好用,推荐给大家...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 双眼融合训练一个月_视觉融合你知道多少
- 下一篇: spss主成分综合得分_【SPSS因子分