kubernetes下的jenkins如何設置maven

關於kubernetes環境的jenkins集羣

在kubernetes環境部署的jenkins集羣,執行任務時會新建pod,任務完成後pod被銷燬,架構如下所示:
在這裏插入圖片描述
在kubernetes搭建jenkins集羣的細節,請參考《Helm部署和體驗jenkins》

關於jenkins構建maven

作爲java開發者,常用jenkins構建maven工程,當jenkins部署到kubernetes之上後,要做一些設置才能順利編譯構建

環境信息

本次實戰涉及到的環境信息如下:

  1. kubernetes:1.15
  2. jenkins:2.190.2
  3. maven:3.6.3

設置maven

如果您已經參考《Helm部署和體驗jenkins》在kubernetes部署了jenkins,接下來要做的是設置maven插件:

  1. 在設置頁面進入Global Tool Configuration,如下圖:
    在這裏插入圖片描述
  2. 新建一個Maven配置,如下圖,名爲mvn-3.6.3,版本選擇3.6.3:
    在這裏插入圖片描述
  3. 點擊底部的Save保存,今後在pipeline任務中就能通過名稱mvn-3.6.3使用此maven工具了;

關於maven的settings.xml

局域網內的nexus私有倉庫是經常用到的,作用如下:

  1. 緩存中央倉庫的jar,這樣局域網內的開發者在運行maven工程時,所需jar是從nexus下載的,而不必去中央倉庫下載,可節省下載時間;
  2. 自己做的二方庫發佈到nexus私有倉庫,給局域網內的其他人使用;

通常是通過配置maven的settings.xml來訪問nexus私有倉庫,因此,jenkins在構建maven項目時也要用到配置好的settings.xml文件,才能訪問nexus私有倉庫;

PS:如果您想了解更多nexus的細節,請參考文章《Ubuntu部署和體驗Nexus3》

設置maven的settings.xml

這是本文的重點,思路如下:

  1. 把settings.xml做成configmap;
  2. 掛載到執行任務的pod中(在jenkins上配置好,以後創建的pod都會按此配置掛載);
  3. jenkins任務的pipeline腳本中,執行mvn命令時指定掛載的settings.xml文件;

接下來是實現上述思路的操作:

  1. 準備好settings.xml文件,裏面已配置好nexus私有倉庫的信息,主要是server節點和mirror節點,內容參考下圖:
    在這裏插入圖片描述
  2. 將settings.xml上傳到kubernetes環境,執行以下命令創建名爲settings.xml的configmap:
kubectl create configmap settings.xml \
--from-file=settings.xml \
-n helm-jenkins

上述命令有以下兩點需要注意:
a. from-file參數表示此configmap的內容來源,是當前目錄下名爲settings.xml的文件;
b. 此configmap的namespace名爲helm-jenkins,這是jenkins所在的namespace;
3. Configure System頁面,找到Pod Templates的配置,增加一個Config Map Volume,如下:
在這裏插入圖片描述
4. Config Map名稱填寫settings.xml,掛載路徑是/home/jenkins/settings,如下圖:
在這裏插入圖片描述
5. 點擊底部的Save保存設置;
6. 經過以上設置,執行pipeline任務時,pod的/home/jenkins/settings目錄下就會有settings.xml文件,您只需指定使用此文件即可,mvn命令的-s參數就是用來指定settings.xml文件的,下圖是一段pipeline腳本,裏面有指定settings.xml的參數,可作爲參考:
在這裏插入圖片描述

設置pod內存和CPU

pod內存如果太小,可能導致maven或者gradle運行時報OutOfMemory錯誤,因此需要設置pod內存:

  1. Configure System頁面,找到Pod Templates配置,點擊下圖紅框中的Advanced…按鈕:
    在這裏插入圖片描述
  2. 如下圖紅框所示,按照實際需求對CPU和內存進行調整,我這裏設置了1G的內存:
    在這裏插入圖片描述
  3. 點擊底部的Save保存設置;

輸出構建結果

mavne工程編譯構建成功後,我們需要拿到構建結果(例如是個jar文件),這裏提供一種方式作爲參考:通過數據卷的方式將構建結果保存到宿主機

  1. Configure System頁面,找到Pod Templates配置,如下圖,添加捲選擇Host Path Volume
    在這裏插入圖片描述
  2. 如下所示,主機路徑填寫/usr/local/jenkinsoutput,掛載路徑填寫/home/jenkins/jenkinsoutput,這樣就把pod的文件夾映射到宿主機上了:
    在這裏插入圖片描述
  3. 請確保宿主機的/home/jenkins/jenkins_output有寫權限

經過以上設置,jenkins環境已經可以順利構建maven項目並取得結果了,下一篇文章會挑選一個熱門開源項目來實戰編譯構建。

歡迎關注我的公衆號:程序員欣宸

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章