前言
一次服務(wù)維護(hù)中重啟了jenkins服務(wù)偷崩,然后發(fā)現(xiàn)服務(wù)部署一團(tuán)亂颗品,排查原因到j(luò)enkins配置時發(fā)現(xiàn)手形,jenkins在重啟之后配置丟失。如下圖
具體作用:
Do not build if only specified paths have changed : 發(fā)生變更時特定目錄不進(jìn)行編譯
Invert ignore?? :反轉(zhuǎn)忘伞,選中后效果:特定目錄發(fā)生變更時進(jìn)行編譯,這樣我們就實(shí)現(xiàn)了在提交一個子項(xiàng)目的時候只部署該子項(xiàng)目
嘗試解決方案:
還原老jenkins版本沙兰、升級jenkins版本至最新氓奈,均為解決。
暫定解決方案:
嘗試jenkins pipeline
一鼎天、創(chuàng)建新的gitlab項(xiàng)目舀奶,用于pipeline測試
check out?代碼并新建?Jenkinsfile文件并錄入最簡單的pipeline腳本
pipeline {
? ? agent any
? ? stages {
? ? ? ? stage('Build') {
? ? ? ? ? ? steps {
? ? ? ? ? ? ? ? echo 'Building..'
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? stage('Test') {
? ? ? ? ? ? steps {
? ? ? ? ? ? ? ? echo 'Testing..'
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? stage('Deploy') {
? ? ? ? ? ? steps {
? ? ? ? ? ? ? ? echo 'Deploying....'
? ? ? ? ? ? }
? ? ? ? }
? ? }
}
提交到git倉庫
現(xiàn)在測試用的git項(xiàng)目準(zhǔn)備好了。接下來配置jenkins
二斋射、創(chuàng)建新的jenkins任務(wù)
新建任務(wù)伪节,選擇流水線(pipeline)這里顯示中文有點(diǎn)low光羞,大家表示理解
勾選?Gitlab?webhook,選擇只在?Push?Events?觸發(fā)怀大,下方的Allowed branches?點(diǎn)擊?Advance?選擇?Filter branches by regex纱兑,通過正則匹配master分支。
注:因?yàn)樾掳鎔itlab在接受merge request后會再次觸發(fā)push?event化借,在配置jenkins的時候就不需要勾選?accept?merge request?選項(xiàng)潜慎。如果是舊版gitlab是需要勾選的。
注意:這里的正則 .*master?和下面配置pipeline選項(xiàng)里的 Branches to build 的正則 */master?不一樣蓖康。
回到gitlab配置webhook铐炫,這里也只選擇?Push?events即可。
重點(diǎn)來了?pipeline設(shè)置選擇?Pipeline script from SCM
配置git倉庫蒜焊,下方Script Path中默認(rèn)填寫Jenkinsfile倒信,會使用git項(xiàng)目中的Jenkinsfile執(zhí)行,我們之前已經(jīng)創(chuàng)建了泳梆。也可以自定義文件名鳖悠,這里我們使用默認(rèn)文件名Jenkinsfile。
點(diǎn)擊save保存优妙,這樣jenkins就配置好了
三乘综、執(zhí)行Jenkins任務(wù)
是不是迫不及待了,點(diǎn)擊jenkins里的?立即構(gòu)建?套硼,開始了卡辰。
這里會顯示pipeline里的每個步驟執(zhí)行的時間及結(jié)果,綠色表示通過邪意。
點(diǎn)擊左側(cè) Build History?里的小球球九妈,查看log。上邊一大段check?git?代碼信息雾鬼,這里忽略允蚣。重點(diǎn)看我們各階段的輸出:Building..、Testing..呆贿、Deploying....嚷兔,最后的?Finished: SUCCESS。
First time build. Skipping changelog.
[Pipeline] }
[Pipeline] // stage
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Build)
[Pipeline] echo
Building..
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Test)
[Pipeline] echo
Testing..
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Deploy)
[Pipeline] echo
Deploying....
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
結(jié)束語
到這里做入,jenkins上的配置就已經(jīng)完成了冒晰。接下來我們來學(xué)習(xí)?pipeline?的概念和不斷的完善?Jenkinsfile。