k8s下的jenkins如何設置maven

關於k8s環境的jenkins集羣

k8s下搭建了jenkins集羣后,執行任務時會新建pod,任務完成後pod被銷燬,架構以下圖所示:
在這裏插入圖片描述在k8s搭建jenkins集羣的步驟請參照《》java

關於jenkins構建maven

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

實戰簡介

本次實戰是在k8s的jenkins環境編譯構建spring-cloud-alibaba這個開源的maven工程,涉及到的環境信息以下:程序員

  • kubernetes:1.15
  • jenkins:2.190.2
  • maven:3.6.3
  • spring-cloud-alibaba:2.1.1.RELEASE

設置maven

若是您已經參考《》一文在kubernetes部署了jenkins,接下來要作的就是設置maven插件:github

  • 在設置頁面進入"Global Tool Configuration",以下圖:
    在這裏插入圖片描述
  • 新建一個Maven配置,以下圖,名爲mvn-3.6.3,版本選擇3.6.3
    在這裏插入圖片描述
  • 點擊底部的Save按鈕保存配置,這樣,在pipeline任務中就能跳過名稱"mvn-3.6.3"使用此maven工具了;

關於maven的settings.xml

局域網內的nexus私有倉庫是常常用到的,做用以下:spring

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

一般是經過配置maven的settings.xml來訪問nexus私有倉庫的,所以,jenkins在構建maven項目時也要用到配置好的settings.xml文件,才能訪問nexus私有倉庫;shell

  • 若是您想了解更多nexus的細節,請參考文章《》

設置maven的settings.xml

這是本文的重點,思路以下:緩存

  1. 把settings.xml作成configmap;
  2. 掛載到執行任務的pod中;
  3. 執行jenkins的pipeline腳本中,執行mvn命令時指定使用掛載的settings.xml文件:

接下來是實現上述思路的操做:架構

  • 準備好settings.xml文件,裏面已配置好nexus私有倉庫的信息,主要是server節點和mirror節點,參考下圖:
    在這裏插入圖片描述
  • 將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;maven

  • 在Configure System頁面,找到Pod Templates的配置,增長一個Config Map Volume,以下圖:
    在這裏插入圖片描述
  • Config Map名稱填寫settings.xml,掛載路徑是/home/jenkins/settings,以下圖:
    在這裏插入圖片描述
  • 點擊底部的Save按鈕保存設置;
  • 通過了以上設置,執行pipeline任務時,pod的/home/jenkins/settings目錄下就會有settings.xml文件,您只需指定使用此文件便可,mvn命令的-s參數就是用來指定settings.xml文件的,下圖是一段pipeline腳本,可做爲參考:
    在這裏插入圖片描述

設置pod內存和CPU

執行任務的pod的內存若是過小,可能會致使maven或者gradle編譯時報OutOfMemory錯誤,所以須要設置pod內存:工具

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

輸出構建結果

mavne工程編譯構建成功後,想要獲得構建結果能夠有多種途徑,這裏提供一種參考:經過數據卷的方式將構建結果保存到到宿主機

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

通過以上設置,jenkins環境如今能夠順利構建maven項目了,下一篇文章,會挑選一個熱門開源項目來實戰編譯構建。

歡迎關注個人公衆號:程序員欣宸

https://github.com/zq2599/blog_demos

相關文章
相關標籤/搜索