k8s下的jenkins如何設(shè)置maven

關(guān)于k8s環(huán)境的jenkins集群

k8s下搭建了jenkins集群后,執(zhí)行任務(wù)時會新建pod,任務(wù)完成后pod被銷毀,架構(gòu)如下圖所示:


在這里插入圖片描述

在k8s搭建jenkins集群的步驟請參照《》

關(guān)于jenkins構(gòu)建maven

作為java開發(fā)者,用jenkins構(gòu)建maven工程是常見的編譯構(gòu)建方式,當(dāng)jenkins部署到kubernetes之上后,要做一些設(shè)置才能順利編譯構(gòu)建;

實戰(zhàn)簡介

本次實戰(zhàn)是在k8s的jenkins環(huán)境編譯構(gòu)建<font color="blue">spring-cloud-alibaba</font>這個開源的maven工程,涉及到的環(huán)境信息如下:

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

設(shè)置maven

如果您已經(jīng)參考《》一文在kubernetes部署了jenkins,接下來要做的就是設(shè)置maven插件:

  • 在設(shè)置頁面進(jìn)入"Global Tool Configuration",如下圖:


    在這里插入圖片描述
  • 新建一個Maven配置,如下圖,名為mvn-3.6.3,版本選擇3.6.3


    在這里插入圖片描述
  • 點擊底部的Save按鈕保存配置,這樣,在pipeline任務(wù)中就能跳過名稱"mvn-3.6.3"使用此maven工具了;

關(guān)于maven的settings.xml

局域網(wǎng)內(nèi)的nexus私有倉庫是經(jīng)常用到的,作用如下:

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

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

  • 如果您想了解更多nexus的細(xì)節(jié),請參考文章《》

設(shè)置maven的settings.xml

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

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

接下來是實現(xiàn)上述思路的操作:

  • 準(zhǔn)備好settings.xml文件,里面已配置好nexus私有倉庫的信息,主要是server節(jié)點和mirror節(jié)點,參考下圖:


    在這里插入圖片描述
  • 將settings.xml上傳到kubernetes環(huán)境,執(zhí)行以下命令創(chuàng)建名為settings.xml的configmap:
kubectl create configmap settings.xml \
--from-file=settings.xml \
-n helm-jenkins

上述命令有以下兩點需要注意:
a. from-file參數(shù)表示此configmap的內(nèi)容來源,是當(dāng)前目錄下名為settings.xml的文件;
b. 此configmap的namespace名為helm-jenkins,這是jenkins所在的namespace;

  • 在Configure System頁面,找到Pod Templates的配置,增加一個Config Map Volume,如下圖:


    在這里插入圖片描述
  • Config Map名稱填寫settings.xml,掛載路徑是/home/jenkins/settings,如下圖:


    在這里插入圖片描述
  • 點擊底部的Save按鈕保存設(shè)置;
  • 經(jīng)過了以上設(shè)置,執(zhí)行pipeline任務(wù)時,pod的/home/jenkins/settings目錄下就會有settings.xml文件,您只需指定使用此文件即可,mvn命令的-s參數(shù)就是用來指定settings.xml文件的,下圖是一段pipeline腳本,可作為參考:


    在這里插入圖片描述

設(shè)置pod內(nèi)存和CPU

執(zhí)行任務(wù)的pod的內(nèi)存如果太小,可能會導(dǎo)致maven或者gradle編譯時報OutOfMemory錯誤,因此需要設(shè)置pod內(nèi)存:

  • 在Configure System頁面,找到Pod Templates的配置,點擊下圖紅框中的Advanced...按鈕:


    在這里插入圖片描述
  • 如下圖紅框所示,按照實際需求對CPU和內(nèi)存進(jìn)行調(diào)整,我這里設(shè)置了1G的內(nèi)存:


    在這里插入圖片描述
  • 點擊底部的Save按鈕保存設(shè)置;

輸出構(gòu)建結(jié)果

mavne工程編譯構(gòu)建成功后,想要得到構(gòu)建結(jié)果可以有多種途徑,這里提供一種參考:通過數(shù)據(jù)卷的方式將構(gòu)建結(jié)果保存到到宿主機(jī)

  • 在Configure System頁面,找到Pod Templates的配置,如下圖,添加卷選擇Host Path Volume:


    在這里插入圖片描述
  • 如下所示,主機(jī)路徑填寫/usr/local/jenkins_output,掛載路徑填寫/home/jenkins/jenkins_output,這樣就把pod的文件夾映射到宿主機(jī)上了
  • 注意:確保宿主機(jī)的/home/jenkins/jenkins_output有寫權(quán)限

經(jīng)過以上設(shè)置,jenkins環(huán)境現(xiàn)在可以順利構(gòu)建maven項目了,下一篇文章,會挑選一個熱門開源項目來實戰(zhàn)編譯構(gòu)建。

歡迎關(guān)注我的公眾號:程序員欣宸

https://github.com/zq2599/blog_demos

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容