Docker+Jenkins+Pipeline實(shí)現(xiàn)持續(xù)集成(三)更多配置

基本流程走通后,我們還可以為項(xiàng)目增加webhook、文件存檔、郵件發(fā)送、聲音提示等配置

插件推薦

插件名 作用
Gitlab 代碼提交到Gitlab上后自動(dòng)觸發(fā)Jenkins構(gòu)建
Jenkins Email Extension Plugin 可定制化的發(fā)送郵件
Sounds Plugin 構(gòu)建前/后發(fā)出聲音提示
HTTP Request Plugin 能夠發(fā)送HTTP請(qǐng)求
Build Monitor View 為Jenkins新建監(jiān)控視圖,便于在大屏幕上顯示項(xiàng)目構(gòu)建進(jìn)度

添加gitlab的webhook

當(dāng)開(kāi)發(fā)人員push代碼到gitlab上時(shí),我們想要立即觸發(fā)一次Jenkins構(gòu)建,因此需要添加gitlab的webhook。
方案1
(1)在項(xiàng)目配置里找到”構(gòu)建觸發(fā)器“,勾選Poll SCM,但不用填寫日程表(使用cron格式填寫日程表的話,會(huì)定時(shí)查詢git倉(cāng)庫(kù)是否有變更,如果有則自動(dòng)構(gòu)建,但不會(huì)因?yàn)閜ush而自動(dòng)觸發(fā)構(gòu)建)
(2)然后擁有項(xiàng)目git管理權(quán)限的人員,進(jìn)入需要接入Jenkins的git項(xiàng)目,點(diǎn)擊Settings,點(diǎn)擊頁(yè)面左側(cè)的WebHooks,在url的輸入框中輸入http://<jenkins_server>/git/notifyCommit?url=<git倉(cāng)庫(kù)地址>[&branches=分支名1,分支名2]后,點(diǎn)擊AddWebHook,即添加成功webhook,如下圖所示:

git中添加webhook

(3)當(dāng)webhook設(shè)置后,需要手動(dòng)構(gòu)建一次項(xiàng)目,否則webhook不會(huì)被識(shí)別到;且每一次修改pipeline中的gitlab倉(cāng)庫(kù)信息時(shí),都需要進(jìn)行一次手動(dòng)構(gòu)建。
方案2
方案1有一個(gè)缺陷,只能在分支提交時(shí)觸發(fā)自動(dòng)構(gòu)建,而且當(dāng)一個(gè)項(xiàng)目push代碼后,所有拉取該項(xiàng)目代碼的jenkins都會(huì)被自動(dòng)構(gòu)建。因此如果需要更強(qiáng)大靈活的webhook,可以參考方案2。
(1)下載插件Gitlab
(2)進(jìn)入項(xiàng)目配置頁(yè),可以看到在構(gòu)建觸發(fā)器中新增了Build when a change is pushed to Gitlab一項(xiàng),如下圖
Webhook配置

點(diǎn)擊更多能夠看到構(gòu)建分支等等更多配置,如下圖:
Webhook配置

(3)gitlab中添加Webhook
項(xiàng)目管理人員進(jìn)入git項(xiàng)目中,點(diǎn)擊Settings——Integrations,進(jìn)入到Webhook的添加頁(yè)面。將(2)中的webhook url以及Secret Token填寫到后,選擇相應(yīng)的trigger事件即可,如下圖:
gitlab中添加webhook

文件存檔

當(dāng)使用mvn進(jìn)行單元測(cè)試或打包構(gòu)建后,我們想要獲取測(cè)試報(bào)告或者二進(jìn)制包,因此需要將這些文件進(jìn)行存檔。
使用archiveArtifacts可以獲得任意滿足條件的文件,使用junit可以針對(duì)xml格式的測(cè)試報(bào)告進(jìn)行存檔,如下:

    archiveArtifacts 'target/*jar'
    junit '**/target/surefire-reports/TEST-*.xml'

構(gòu)建后,可以在Stage View中的箭頭處對(duì)文檔進(jìn)行查看下載。

郵件發(fā)送

這里主要介紹兩種郵件的發(fā)送方法,一個(gè)是Jenkins自帶的郵件發(fā)送,一個(gè)是插件Jenkins Email Extension Plugin提供的郵件發(fā)送。推薦使用第二種方法,可以定制復(fù)雜的郵件發(fā)送格式,更加靈活、強(qiáng)大。
1.Jenkins自帶的郵件通知的配置
進(jìn)入系統(tǒng)管理——系統(tǒng)設(shè)置中,找到Jenkins Location項(xiàng),配置其中的系統(tǒng)管理員郵件地址,如下圖所示:

配置系統(tǒng)管理員郵件地址

然后找到郵件通知項(xiàng),配置發(fā)送郵件的SMTP服務(wù)器和用戶認(rèn)證,如下圖所示
配置SMTP認(rèn)證

配置成功后,即可在Pipeline中添加郵件發(fā)送語(yǔ)句,格式為:

mail body: "", subject: "", to: ""

2.使用插件發(fā)送郵件
下載插件Jenkins Email Extension Plugin。
進(jìn)入系統(tǒng)管理——系統(tǒng)設(shè)置中,找到Extended E-mail Notification項(xiàng),如下圖所示配置SMTP服務(wù)器和用戶認(rèn)證:

配置STMP認(rèn)證

并且可以配置郵件的Default SubjectDefault Content(模板見(jiàn)下篇),然后在郵件發(fā)送時(shí)用變量DEFAULT_SUBJECT、DEFAULT_CONTENT進(jìn)行調(diào)用,在pipeline中發(fā)送郵件的格式如下:

     emailext attachlog:true, body: ‘$DEFAULT_CONTENT’, subject: ‘$DEFAULT_SUBJECT’, to: ‘xxxx@****.com' 

聲音提示

下載插件Sounds PluginHTTP Request Plugin。
插件安裝后,首頁(yè)右側(cè)會(huì)出現(xiàn)Sounds圖標(biāo),點(diǎn)擊可以進(jìn)入Sounds頁(yè)面測(cè)試聲音是否能夠正常發(fā)出,如下圖:

Sound插件

可以看到,Sounds提供了兩種聲音訪問(wèn)的形式:一個(gè)是插件自帶的音效即Play sound from internal sound archive,但是這種方式只能在freestyle的項(xiàng)目中使用;另一種方式是通過(guò)發(fā)送HTTP請(qǐng)求的方式,一旦請(qǐng)求成功,音效就在所有打開(kāi)Jenkins的瀏覽器中響起(可在系統(tǒng)管理——系統(tǒng)設(shè)置——Jenkins Sounds中更改),請(qǐng)求的url格式為http://jenkins_server/sounds/playSound?src=<URL>,其中,src的值為在jenkins服務(wù)器中的文件地址或一個(gè)http的url。

例如,我們?cè)贘enkins的容器中,下載一段音頻(wget http://xmdx.sc.chinaz.com/Files/DownLoad/sound1/201712/9563.wav)存放在/var/jenkins_home/sounds/文件夾下,那么我們可以通過(guò)URL http://localhost:8080/sounds/playSound?src=file:///var/jenkins_home/sounds/9563.wav來(lái)觸發(fā)音效的播放。在Pipeline中,我們利用插件HTTP Request Plugin進(jìn)行http請(qǐng)求的發(fā)送,語(yǔ)法生成配置如下:

Sounds消息發(fā)送語(yǔ)法生成

因此,pipeline中發(fā)送聲音請(qǐng)求的語(yǔ)句如下(soundsId即Jenkins管理員的賬號(hào)密碼認(rèn)證ID):

httpRequest authentication:"${soundsId}", url:"http://localhost:8080/sounds/playSound?src=file:///var/jenkins_home/sounds/9563.wav"

監(jiān)控視圖

常規(guī)的jenkins視圖并不利于實(shí)時(shí)監(jiān)控,只有一個(gè)小小的圖標(biāo)表示項(xiàng)目構(gòu)建成功還是失敗,失敗后也沒(méi)有更詳細(xì)的信息,因此可以使用監(jiān)控視圖,適合投屏到大屏幕上對(duì)項(xiàng)目的構(gòu)建進(jìn)行實(shí)時(shí)監(jiān)控。
(1)下載插件Build Monitor View
(2)添加新的視圖:在Jenkins的首頁(yè),所有項(xiàng)目上方的視圖選擇tab中點(diǎn)擊+后可新建視圖,如下:

添加新視圖1

然后在視圖新建頁(yè)面中選擇Build Monitor View、填寫視圖名稱后,點(diǎn)擊OK
添加新視圖2

然后進(jìn)入視圖的配置頁(yè)面,選擇需要添加到視圖中的項(xiàng)目,或者配置過(guò)濾規(guī)則后,點(diǎn)擊保存,即可在首頁(yè)看到該新視圖
新視圖

(3)實(shí)時(shí)監(jiān)控構(gòu)建情況
點(diǎn)擊進(jìn)入新視圖就可以實(shí)時(shí)查看構(gòu)建情況:紅色表示構(gòu)建失敗、綠色表示構(gòu)建成功、灰色表示構(gòu)建中斷;而且能夠看到時(shí)間、構(gòu)建趨勢(shì)等等、git提交人等等多個(gè)信息。如下是官方的效果展示圖:
圖片.png

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

相關(guān)閱讀更多精彩內(nèi)容

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