jenkins:部署多倉庫多pom的maven項目

一 工程背景

本工程是一個springboot的項目,共有五個倉庫,其中一個父工程,三個是依賴工程,一個是啓動工程,每個工程還是父子pom,大致結構如下

FatherEngine 父工程,最頂級工程
Son1Engine 依賴工程
	son1-base
	son1-test
Son2Engine 依賴工程
	son2-mail
	son2-user
	son2-security
Son3Engine 依賴工程
	son3-pa
	son3-sa
springbootRun 啓動工程

二 Jenkins多任務部署插件

jenkins想要部署這樣的工程項目,就沒有辦法採用傳統的maven項目去部署,因爲單獨倉庫的工程沒有啓動類,會報main class 找不到,所幸jenkins提供了一個插件,多模塊部署,可以解決這種問題。

Multijob plugin
Multiple SCMs plugin

三 創建多任務

將上述插件安裝成功以後便可以創建一個mutijob project任務
在這裏插入圖片描述
任務創建成功後,仍然按照部署一個springboot工程的正常思路,拉取git源碼,maven打包,jar包啓動
git源碼管理
選擇新插件 Mutiple ScMS, 選擇git,然後輸入git倉庫的地址…
注意:因爲是多倉庫多pom工程,在配置了多個git地址的時候,如果按照以前的方式直接拉下來,會導致pom文件覆蓋,所以我們需要爲每個git倉庫地址都新建一個文件夾來存放,就如同剛開始的工程目錄結構一樣,jenkins可以通過 check out to a sub-directory 實現,在當前任務空間下創建一個子目錄
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
配置完一個之後,將其他倉庫的git也按照同樣的方式配置下來
在這裏插入圖片描述
maven構建
因爲都是父子pom,所以我們構建的時候直接選擇 構建最頂層maven目標,這裏需要注意的是,因爲我們的項目有多個,所以需要將每個倉庫目錄下的pom打包一次,這就需要指定特定目錄的pom,jenkins也可以實現這一功能,在高級選項中可以指定pom的位置
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
多添加幾個構建過程,分別指向不同目錄下的pom將他們打包
在這裏插入圖片描述
maven打包成功後,便是執行shell腳本去啓動項目
在這裏插入圖片描述
在這裏插入圖片描述
構建成功後還可以通過ssh 發送到目標服務器上
在這裏插入圖片描述

四 構建

保存後便可以直接構建。
shell腳本

echo "check $port"
grep_port=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }')
echo "grep port is $grep_port"
if [ -n "$grep_port" ]
then
  echo "port $port is in use"
  kill -9 "$grep_port"
else
  echo "port is not in use"
fi

cd bootRun
nohup mvn clean install -DskipTests spring-boot:run -Dspring-boot.run.arguments="p.lifecycle=AUTO"  > out 2>&1 &
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章