最近使用jenkins自動部署項目時遇到一個問題,如果部署單個的maven工程,沒有什么問題,
但是在部署maven創建的父子工程,如果只從svn或者git上拉取子工程源碼時,會報找不到父
工程pom或者relativePath的錯誤,這是因為,maven子工程是依賴父工程的pom的,所以拉取
代碼的時候要先拉取整個父工程下來,然后再單個拉取子工程,也就是父工程創建一個任務,
然后子工程各一個任務。操作方式如下:
說明:我使用的jenkins是root權限
首先登陸jenkins到達jenkins工作台,Jenkins搭建可以搜一下,在這里只有使用方法
點擊新建任務
開始配置
點擊添加按鈕
至此,父工程就可以構建一下,第一次構建會比較慢,下載的jar包比較多
構建完以后,就可以到服務器上查看打的jar包,具體路徑可以問一下搭建jenkins的人員
下面就可以創建子工程的任務了,不同的地方主要是下面兩個:
第一個是在源碼管理的時候,選擇無,因為父工程打包后jar,所有工程都已經被打包
第二個是在構建的時候,就可以填寫執行shell腳本來進行自動化部署項目了
腳本如下,可根據自己需要進行更改
#Jekins構建完成后會自動關閉進程及其子進程,加上這一句可以避免自動關閉
BUILD_ID=DONTKILLME
# 下面這一句代表該文件使用的是bash語法 #!/bin/bash #獲取你想運行jar包的進程號,grep -v意為不包括(grep -v grep指的是不包括grep下的所有信息),awk '{print $2}'意為取第二個字段輸出,賦值給pid pid=`ps -ef | grep 子工程jar包名稱.jar | grep -v grep | awk '{print $2}'` #如果存在則把該進程殺掉,echo表示輸出日志,$符號表示獲取變量的值 if [ -n "$pid" ] then echo "kill -9 的pid:" $pid kill -9 $pid fi echo "復制jar包" #把jenkins打的jar包復制到自己指定的目錄下 cp /root/.jenkins/workspace/父工程項目名稱/子工程項目名稱/target/子工程jar包名稱.jar /自己指定的目錄路徑/ echo "啟動jar包" #最后啟動jar包並把日志輸出到指定的文件中以便查看 nohup java -jar /自己指定的目錄路徑/子工程jar包名稱.jar > /自己指定的目錄路徑/credit_manage.log &