一 基本概念
學習目的:學習Jenkins共享庫的配置,編寫更加靈活強大的流水線!
理解上:類似編程語言中的代碼複用,不同階段可能有共用的地方!
Jenkins中:使用'Groovy語法',共享庫中存儲的'每個文件都是一個Groovy的類',每個文件(類)中包含'一個或多個方法',每個方法包含groovy語句塊
'題外話':對於具有編程能力的同學應該清楚一些;
理解:在'編程語言Python中',我們可以將Python代碼寫到一個文件中,當代碼數量增加,我們可以將代碼打包成模塊然後再以import的方式使用此模塊中的方法。
二 share-lib的結構和內容
(1)共享庫的結構如下所示
說明:這個倉庫中包含了很多類,後續-->kubernetes中的API方法封裝在了kubernetes.groovy文件中,便於後面引用。
(3)解釋說明
src目錄主要存放我們要'編寫的groovy類',執行流水線時,此目錄將添加到class_path中
vars目錄主要存放'腳本文件',這些腳本文件在流水線中作爲'變量公開'
resources目錄允許從'外部庫中'使用步驟來'加載相關聯的非Groovy的資源文件'
三 實驗
說明:本次實驗以github爲例後續以gitlab爲例,聲明式
(1)創建項目
(2)遞歸的創建層級目錄-->src
(3)vars
(4)jenkins上配置做引入
說明:全局配置--->ctrl+f(Google瀏覽器)--->lib進行定位
'額外說明':不要把gitlab和github在jenkins中弄'混淆了'
(5)在jenkins中的jenkinsfile上引入共享庫
備註:三個缺1不可-->(1)'幻數';(2)'@_加載';(3)'創建對象'使用share-lib中的方法
過程:先遠程下載jenkinslib庫,然後檢查,最後在jenkinsfile中引用
(6)測試共享庫的方法是否能調用
說明:tools相當於整個文件(實例對象),然後調用裏面的方法(傳參)!
後續:測試進行上圖
進一步需求:對jenkinsfile也做版本控制
(1)在github上增加一個jenkinsfile
目的:jenkinsfile也放在github上目的是做版本控制的,省的過了一段時間改了什麼都忘記了!
(2)更改pipeline的方式
備註:之前是在本地書寫pipeline,現在是通過遠程拉取pipeline(jenkinsfile)文件來執行
之前
現在
'好處':做開發的時候基於不同分支的jenkinsfile進行構建!
(3)使用vars
備註:似乎'vars目錄下'類只有一個方法的時候是'直接調用'的
需求:printMes目的是做一個顏色的輸出!
核心:'排查問題'的時候'打印顏色'
(1)下載插件
備註:'不需要重啓'
(2)將顏色封裝到PrintMes裏面,代碼生成器的使用
(3)相關demo下載
(4)tools.groovy的變更
package org.devops
//格式化輸出-->信息和顏色傳參
def PrintMes(value,color){
//定義字典
colors = ['red' : "\033[40;31m >>>>>>>>>>>${value}<<<<<<<<<<< \033[0m",
'blue' : "\033[47;34m ${value} \033[0m",
'green' : "[1;32m>>>>>>>>>>${value}>>>>>>>>>>[m",
'green1' : "\033[40;32m >>>>>>>>>>>${value}<<<<<<<<<<< \033[0m" ]
//調用
ansiColor('xterm') {
println(colors[color])
}
}
備註:資料
(5)類似這種在不同的階段標註不同的顏色
核心:把相當的代碼'集成到share lib中',然後在'Jenkinsfile'中引用!
說明:聲明式是'結構化'的,往裏面填充東西即可!
(6)結果