12.19 微服務架構下的自動化部署,使用Jenkins來實現



摘要

在微服務架構中,隨著服務越來越多,服務的打包部署就會成為一個相當麻煩的事情。比如說我的mall-swarm項目目前就有8個服務需要部署,有沒有什麼辦法讓我們部署一次之後,只要點擊執行就可以自動部署呢?當然有!下面我們使用Jenkins來完成一個微服務架構中的自動化部署工作。

Jenkins的基本使用

關於Jenkins的基本使用可以參考:

執行腳本準備

首先我們先把需要遠程執行的腳本準備好。

  • 腳本文件都存放在了mall-swarm項目的/document/sh目錄下:
微服務架構下的自動化部署,使用Jenkins來實現

  • 上傳腳本前在IDEA中修改所有腳本文件的換行符格式為LF,否則腳本會無法執行;
微服務架構下的自動化部署,使用Jenkins來實現

  • 將所有腳本文件上傳到指定目錄,這裡我們上傳到/mydata/sh目錄下;
微服務架構下的自動化部署,使用Jenkins來實現

  • 將所有腳本文件都修改為可執行文件:

chmod +x ./mall-*

微服務架構下的自動化部署,使用Jenkins來實現

Jenkins中創建任務

接下來我們將通過在Jenkins中創建任務來實現自動化部署。由於我們的mall-swarm是個多模塊的項目,部署上面和曾經的單模塊項目還是有所區別的。

mall-admin

由於各個模塊的執行任務的創建都大同小異,下面將詳細講解mall-admin模塊任務的創建,其他模塊將簡略講解。

  • 首先我們選擇構建一個自由風格的軟件項目,然後輸入任務名稱為mall-admin,配置其Git倉庫地址,這裡我直接使用了Gitee上面的地址:
微服務架構下的自動化部署,使用Jenkins來實現


  • 之後我們創建一個構建,構建mall-swarm項目中的依賴模塊,否則當構建可運行的服務模塊時會因為無法找到這些模塊而構建失敗;

# 只install mall-common,mall-mbg,mall-security三個模塊 clean install -pl mall-common,mall-mbg,mall-security -am

  • 依賴項目構建示意圖:
微服務架構下的自動化部署,使用Jenkins來實現

  • 再創建一個構建,單獨構建並打包mall-admin模塊:
微服務架構下的自動化部署,使用Jenkins來實現

  • 添加一個構建來通過SSH去執行遠程任務,用於執行mall-admin的運行腳本:
微服務架構下的自動化部署,使用Jenkins來實現

  • 點擊保存,完成mall-admin的執行任務創建。

mall-registry

mall-registry和其他模塊與mall-admin創建任務方式基本一致,只需修改構建模塊時的pom.xml文件位置和執行腳本位置即可。

  • 我們可以直接從mall-admin模塊的任務複製一個過來創建:
微服務架構下的自動化部署,使用Jenkins來實現

  • 修改第二個構建中的pom.xml文件位置,改為:${WORKSPACE}/mall-registry/pom.xml
微服務架構下的自動化部署,使用Jenkins來實現


  • 修改第三個構建中的SSH執行腳本文件位置,改為:/mydata/sh/mall-registry.sh
微服務架構下的自動化部署,使用Jenkins來實現


  • 點擊保存,完成mall-registry的執行任務創建。

其他模塊

其他模塊的執行任務創建,參考mall-admin和mall-registry的創建即可。

任務創建完成

微服務架構下的自動化部署,使用Jenkins來實現

模塊啟動順序問題

關於各個模塊的啟動順序問題,mall-registry模塊必須第一個啟動,mall-config模塊必須第二個啟動,其他模塊沒有啟動順序限制。

推薦啟動順序:

  • mall-registry
  • mall-config
  • mall-monitor
  • mall-gateway
  • mall-admin
  • mall-portal
  • mall-search
  • mall-demo

總結

我們通過在Jenkins中創建任務,完成了微服務架構中服務的打包部署工作,這樣當我們每次修改完代碼後,只需點擊啟動任務,就可以實現一鍵打包部署,省去了頻繁打包部署的麻煩。

原文鏈接:https://juejin.im/post/5dfa250e51882579dc6f7c90


分享到:


相關文章: