您好,本模塊主要學習Jenkins共享庫的配置,目的是能夠讓大家編寫更加靈活強大的流水線😀
目錄
概述
共享庫這並不是一個全新的概念,其實具有編程能力的同學應該清楚一些。例如在編程語言Python中,我們可以將Python代碼寫到一個文件中,當代碼數量增加,我們可以將代碼打包成模塊然後再以import的方式使用此模塊中的方法。
在Jenkins中使用Groovy語法,共享庫中存儲的每個文件都是一個groovy的類,每個文件(類)中包含一個或多個方法。每個方法包含groovy語句塊。
我把共享庫代碼上傳到了github,大家可以參考demo共享庫
共享庫內容
這是一個demo演示的共享庫,大家可以看到倉庫的結構與內容。這個倉庫中包含了很多類,例如:我將kubernetes中的API方法封裝在了kubernetes.groovy文件中,便於後面引用。在此你只需要知道共享庫的結構 ,具體該如何創建共享庫後面會講述😀
── docs
│ └── README.mdREADME.md
├── src
│ └── org
│ └── devops
│ └── tools.groovy
└── vars
src目錄主要存放我們要編寫的groovy類,執行流水線時,此目錄將添加到class_path中。 vars目錄主要存放腳本文件,這些腳本文件在流水線中作爲變量公開。 resources目錄允許從外部庫中使用步驟來加載相關聯的非Groovy文件。
創建共享庫
新建文件src/org/devops/tools.groovy
, 在此我將這個文件定義爲擴展工具類,主要放一些擴展方法。
例如:在構建日誌中查看流水線詳細日誌會很亂,我們可以在日誌中將重點步驟通過不同的顏色高亮顯示,便於排錯。 我們開始寫這樣的一個方法PrintMes()
,包含兩個參數,輸出內容value
和內容的顏色color
。
注意: 我們需要安裝 插件AnsiColor
,這樣才能使用ansiColor()方法,可以在片段生成器
查看更多的用法。
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])
}
}
使用共享庫
我們導航到 系統配置 -> Global Pipeline Libraries
首先,我們爲共享庫設置一個名稱jenkinslib
,注意這個名稱後續在Jenkinsfile中引用。 再設置一個默認的版本,這裏的版本是分支的名稱。我默認配置的是master
版本。
接下來我們配置共享庫的倉庫地址,我的倉庫在github中,所以這裏我填寫的是github的方式。(如果你用的是gitlab可以使用gitlab方式或者git方式)。如果倉庫是私有的方式,需要在jenkins的憑據中添加一個賬號用於下載共享庫。
好,到此共享庫在Jenkins的配置就完成了,接下來測試在Jenkinsfile中引用。
在Jenkinsfile中使用@Library('jenkinslib') _
來加載共享庫,注意後面符號_
用於加載。 類的實例化def tools = new org.devops.tools()
,使用類中的方法tools.PrintMes("獲取代碼",'green')
。
#!groovy
@Library('jenkinslib') _
def tools = new org.devops.tools()
pipeline {
agent { node { label "master" }}
stages {
//下載代碼
stage("GetCode"){
steps{
timeout(time:5, unit:"MINUTES"){
script{
tools.PrintMes("獲取代碼",'green')
}
}
}
}
}
}
接下來在你的Jenkins上面運行一下吧,測試一下是否能夠看到帶有綠色的文字呢?
掃碼關注,獲取課程: