2.3 Jenkins共享庫應用

您好,本模塊主要學習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版本。images

接下來我們配置共享庫的倉庫地址,我的倉庫在github中,所以這裏我填寫的是github的方式。(如果你用的是gitlab可以使用gitlab方式或者git方式)。如果倉庫是私有的方式,需要在jenkins的憑據中添加一個賬號用於下載共享庫。images

好,到此共享庫在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上面運行一下吧,測試一下是否能夠看到帶有綠色的文字呢?

 

 掃碼關注,獲取課程:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章