Jenkins參數化構建指南
- Jenkins
- java
1.簡介
Jenkins是當今使用最流行的CI / CD工具之一。從構建到部署,它使我們能夠自動化軟件生命週期的各個方面。
在本教程中,我們將研究Jenkins的更強大功能之一:參數化構建。
2.定義構建參數
使用build參數可以將數據傳遞到Jenkins作業中。使用構建參數,我們可以傳遞所需的任何數據:git分支名稱,秘密憑證,主機名和端口,等等。
可以對任何Jenkins作業或管道進行參數化。我們要做的就是選中“常規設置”選項卡上的複選框,該選項顯示This project is parameterized
:
然後,單擊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
鏈接:
這將帶我們進入一個屏幕,詢問每個參數的輸入。根據參數的類型,我們輸入其值的方式將有所不同。
例如, String
參數將顯示為純文本字段。 Boolean
參數將顯示為複選框。並且Choice
參數顯示為下拉列表:
為每個參數提供值後,我們要做的就是單擊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管道至關重要。