Jenkins參數化構建指南

1.簡介

Jenkins是當今使用最流行的CI / CD工具之一。從構建到部署,它使我們能夠自動化軟件生命週期的各個方面。

在本教程中,我們將研究Jenkins的更強大功能之一:參數化構建。

2.定義構建參數

使用build參數可以將數據傳遞到Jenkins作業中。使用構建參數,我們可以傳遞所需的任何數據:git分支名稱,秘密憑證,主機名和端口,等等。

可以對任何Jenkins作業或管道進行參數化。我們要做的就是選中“常規設置”選項卡上的複選框,該選項顯示This project is parameterized

Jenkins參數化構建指南

然後,單擊Add Parameter按鈕。從這裡開始,我們必須指定一些信息:

  • Type :參數的數據類型(字符串,布爾值等)
  • Name :將用來標識參數的名稱
  • Default value :一個可選值,將在用戶未指定一個值時使用
  • Description :描述如何使用參數的可選文本

單個Jenkins作業或管道可以具有多個參數。唯一的限制是參數名稱必須唯一。

2.1 參數類型

Jenkins支持多種參數類型。以下是最常見的列表,但請記住,不同的插件可能會添加新的參數類型:

  • String :字符和數字的任意組合
  • Choice :一組預定義的字符串,用戶可以從中選擇一個值
  • Credentials :預定義的Jenkins憑證
  • File :文件系統上文件的完整路徑
  • Multi-line String :相同String ,但允許換行符
  • Password :類似於Credentials類型,但允許我們傳遞特定於作業或管道的純文本參數
  • Run :一個絕對URL,指向另一個作業的單次運行

3.使用構建參數

一旦定義了一個或多個參數,下一步就是利用它們。下面,我們將介紹訪問參數值的不同方法。

3.1 傳統工作

在傳統的詹金斯(Jenkins)工作中,我們定義了一個或多個構建steps最常見的構建步驟是執行Shell腳本或Windows批處理命令

假設我們有一個名為packageType的構建參數。在shell腳本中,我們可以像其他任何使用shell語法的環境變量一樣訪問構建參數:

${packageType}

對於批處理命令,我們使用本機Windows語法:

%packageType%

我們還可以創建執行Gradle任務或Maven目標的構建步驟。這兩個步驟類型都可以訪問構建參數,就像訪問其他任何環境變量一樣。

3.2 流水線

在Jenkins管道內部,可以多種方式訪問構建參數。

首先,將所有構建參數放入params變量中。這意味著我們可以使用點表示法來訪問參數值:

pipeline {

 agent any

 stages {

 stage('Build') {

 when {

 expression { params.jdkVersion == "14" }

 }

 }

 }

 }

其次,將構建參數添加到管道環境中。這意味著我們可以在執行Shell腳本的步驟中使用較短的Shell語法:

pipeline {

 agent any

 stages {

 stage('Build') {

 steps {

 echo "${packageType}"

 }

 }

 }

 }

4.設置參數值

到目前為止,我們已經了解瞭如何在Jenkins作業中定義參數並使用它們。最後一步是在執行作業時傳遞參數值。

4.1 Jenkins UI

使用Jenkins UI開始工作是傳遞構建參數的最簡單方法。我們要做的就是登錄,導航到我們的工作,然後單擊Build with Parameters鏈接:

Jenkins參數化構建指南

這將帶我們進入一個屏幕,詢問每個參數的輸入。根據參數的類型,我們輸入其值的方式將有所不同

例如, String參數將顯示為純文本字段。 Boolean參數將顯示為複選框。並且Choice參數顯示為下拉列表:

Jenkins參數化構建指南

為每個參數提供值後,我們要做的就是單擊Build按鈕,Jenkins開始執行作業。

4.2 遠程執行

Jenkins作業也可以通過遠程API調用執行。為此,我們在Jenkins服務器上為該工作調用一個特殊的URL:

http://<JENKINS_URL>/job/<JOB_NAME>/buildWithParameters/packageType=war&jdkVersion=11&debug=true

請注意,這些請求必須作為POST命令發送。我們還必須使用HTTP基本身份驗證提供憑據。

讓我們來看一個使用curl的完整示例:

curl -X POST --user user:apiToken \

 http://<JENKINS_URL>/job/<JOB_NAME>/buildWithParameters/packageType=war&jdkVersion=11&debug=true

user可以是任何Jenkins用戶,並且apiToken是該用戶的任何關聯的API令牌。

5.結論

在本文中,我們已經了解瞭如何在Jenkins作業和管道中使用構建參數。構建參數是使任何Jenkins工作動態化的有力方法,並且對於構建現代CI / CD管道至關重要。