iT邦幫忙

2023 iThome 鐵人賽

DAY 19
0
DevOps

從0開始學習DevOps,並部署CICD至Java專案中系列 第 19

Jenkins 配置 Maven、JDK、以及取得本地微服務一起打包專案

  • 分享至 

  • xImage
  •  

把Maven 跟 JDK 複製進去 Jenkins container 中

如果本機沒有Maven,就先到Maven官方下載Maven檔案

https://ithelp.ithome.com.tw/upload/images/20231004/201620585k5xwlXYyA.png

接著可以把Maven跟JDK放在差不多的路徑位置,方便統一管理(JDK如果沒有也請到官方下載)

開始複製Maven 跟 JDK 到 Jenkins 容器中

docker cp <要複製的檔案路徑> <container id 或 container name>:<這個container的路徑位址>

# 把 maven 複製到 jenkins 容器中
docker cp /usr/local/build/maven jenkins:/var/jenkins_home/
# 把 jdk 複製到 jenkins 容器中
docker cp /usr/local/build/jdk jenkins:/var/jenkins_home/

https://ithelp.ithome.com.tw/upload/images/20231004/20162058JLufeIVsuQ.png

進到Jenkins 容器中確認是不是有複製進去了

docker exec -it jenkins bash

https://ithelp.ithome.com.tw/upload/images/20231004/20162058YyvwmHqC7d.png

配置Jenkins的JDK與Maven

Jenkins首頁選擇Tools配置

https://ithelp.ithome.com.tw/upload/images/20231004/20162058qu5VUQfUJf.png

找到JDK與Maven的區塊,名稱自行定義,JAVA_HOME 及 MAVAN_HOME 就選擇前面複製進去Jenkins Container 資料夾內的路徑,如果路徑指定錯誤時,輸入框下會有提示訊息。

https://ithelp.ithome.com.tw/upload/images/20231004/20162058rPVAjQp6zq.png

https://ithelp.ithome.com.tw/upload/images/20231004/20162058qblEuPrVMT.png

測試看看Maven 有沒有配置成功

先在Jenkins專案項目中 > Configuration > 組態(設定) > Build Steps
選擇Maven版本,會帶出前面所設定的名稱可供直接選擇
Goal:輸入每次Build 的過程中Maven要做哪些事?
先使用打包專案並且跳過test來做測試。

https://ithelp.ithome.com.tw/upload/images/20231004/201620587tAjIrt1BN.png

接著回到專案項目首頁,點選Build,馬上建置
就會看到已經開始打包專案了
(第一次打包如果沒有錯誤的話,時間會比較久,因為很多maven的依賴都會需要下載到container中)

https://ithelp.ithome.com.tw/upload/images/20231004/20162058I3uH4669Ws.png

如何取得專案的其他服務依賴引用jar/pom檔?

因為我的專案有引用其他微服務專案,所以在透過maven打包時會發生以下錯誤,找不到依賴引用的pom檔。

https://ithelp.ithome.com.tw/upload/images/20231004/20162058MmVUcyfj0F.png

於是我實際到Jenkins container中確認m2資料夾中,是不是真的沒有。
疑~怎麼是.lastUpdated?
那是因為在下載不到goal-life-common的依賴,所以預設會先直接命名為.lastUpdated,因為maven pull失敗。
→ 刪除該檔案:find ./ -name "*.lastUpdated" | xargs rm -rf

https://ithelp.ithome.com.tw/upload/images/20231004/20162058b4Z9X2i1bX.png

這邊先介紹本地端處理的做法

  1. 找到該服務在本機.m2資料夾的路徑位址。
  2. 把該檔案複製進去docker Jenkins container的目標位置。
docker cp /Users/lulu/.m2/repository/tw/com/goalLife/goal-life-common/0.1.0/goal-life-common-0.1.0.pom jenkins:/var/jenkins_home/.m2/repository/tw/com/goalLife/goal-life-common/0.1.0

看到Successfully copied就是複製成功囉!

重新在Jenkins build 專案,確認能不能打包成功

上方我們已經把依賴的其他服務複製到Jenkins 容器中的指定位置了,重新build Jenkis確認能不能順利完成打包。

執行過程中若有其他錯誤,都會build失敗,並且能從log中確認到失敗的原因,一個一個排解問題之後,終於成功啦!

https://ithelp.ithome.com.tw/upload/images/20231004/201620581IZi8x6w7K.png


上一篇
如何查看Jenkins build log,以及設定觸發 build 的方式
下一篇
什麼是SonarQube?使用docker 下載 SonarQube
系列文
從0開始學習DevOps,並部署CICD至Java專案中30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言