k8s下的jenkins如何設定maven

程式設計師欣宸發表於2020-10-02

關於k8s環境的jenkins叢集

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

關於jenkins構建maven

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

實戰簡介

本次實戰是在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外掛:

  • 在設定頁面進入"Global Tool Configuration",如下圖:
    在這裡插入圖片描述
  • 新建一個Maven配置,如下圖,名為mvn-3.6.3,版本選擇3.6.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私有倉庫;

  • 如果您想了解更多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;

  • 在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

相關文章