Jenkins - 觸發器
觸發方式
jenkins自帶的job觸發方式

Generic Webhook Trigger插件
在需要外界其他系統觸發Jenkins任務的場景,通常使用Generic Webhook Trigger插件來配置 Jenkins 觸發器
Generic Webhook Trigger 插件允許使用 Webhook將外部系統與 Jenkins 集成。
通過配置 Webhook,在特定事件發生時,外部系統可以觸發Jenkins 構建。

插件安裝完成后,在pipeline類型項目中可以看到Generic Webhook Trigger 選項

勾選后,會出現提示信息和參數填寫框

示例-1 解析Request參數
配置請求URL中傳遞的參數

配置觸發的token參數(Token值具有唯一性,避免同時出發其他配置相同的任務)

設置打印調試日志(用于調試和排錯)

對應的pipeline內容
pipeline {
agent {
label 'master'
}
stages {
stage('web-trigger') {
steps {
script {
echo "${version}"
echo "${username}"
}
}
}
}
}
curl命令模擬請求測試
curl "http://192.168.16.200:8080/generic-webhook-trigger/invoke?token=test-web-trigger&version=1.1.1&username=jenkins"
curl命令測試結果
$ curl "http://192.168.16.200:8080/generic-webhook-trigger/invoke?token=test-web-trigger&version=1.1.1&username=jenkins" | python -m json.tool
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 254 100 254 0 0 45035 0 --:--:-- --:--:-- --:--:-- 50800
{
"jobs": {
"dev-demo2": {
"regexpFilterExpression": "",
"triggered": true,
"resolvedVariables": {
"username": "jenkins",
"username_0": "jenkins",
"version": "1.1.1",
"version_0": "1.1.1"
},
"regexpFilterText": "",
"id": 58,
"url": "queue/item/58/"
}
},
"message": "Triggered jobs."
}
pipeline輸出日志
Generic Cause
[Pipeline] Start of Pipeline
Received:
Contributing variables:
username = jenkins
username_0 = jenkins
version = 1.1.1
version_0 = 1.1.1
[Pipeline] node
Running on Jenkins in /var/lib/jenkins/workspace/dev-demo
[Pipeline] {
[Pipeline] stage
[Pipeline] { (web-trigger)
[Pipeline] script
[Pipeline] {
[Pipeline] echo
1.1.1
[Pipeline] echo
jenkins
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
示例-2 解析Header參數
在示例-1的基礎上,配置Header參數

pipeline內容對應添加
echo "${header_name}"
echo "${header_id}"
curl命令模擬請求測試
$ curl --location --request GET "http://192.168.16.200:8080/generic-webhook-trigger/invoke?token=test-web-trigger&version=1.1.1&username=jenkins" --header 'header_name:admin' --header 'header_id:100' | python -m json.tool
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 338 100 338 0 0 57395 0 --:--:-- --:--:-- --:--:-- 67600
{
"jobs": {
"dev-demo2": {
"regexpFilterExpression": "",
"triggered": true,
"resolvedVariables": {
"header_id": "100",
"header_id_0": "100",
"header_name": "admin",
"header_name_0": "admin",
"username": "jenkins",
"username_0": "jenkins",
"version": "1.1.1",
"version_0": "1.1.1"
},
"regexpFilterText": "",
"id": 64,
"url": "queue/item/64/"
}
},
"message": "Triggered jobs."
}
pipeline日志輸出
Generic Cause
[Pipeline] Start of Pipeline
Received:
Contributing variables:
header_id = 100
header_id_0 = 100
header_name = admin
header_name_0 = admin
username = jenkins
username_0 = jenkins
version = 1.1.1
version_0 = 1.1.1
[Pipeline] node
Running on Jenkins in /var/lib/jenkins/workspace/dev-demo2
[Pipeline] {
[Pipeline] stage
[Pipeline] { (web-trigger)
[Pipeline] script
[Pipeline] {
[Pipeline] echo
1.1.1
[Pipeline] echo
jenkins
[Pipeline] echo
admin
[Pipeline] echo
100
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
示例-3 解析Post參數
配置Post參數
- Expression獲取數據并賦值給Variable,
- 變量名稱可以自定義,Expression根據數據格式和內容編寫

配置token

配置調試日志

pipeline內容
pipeline {
agent {
label 'master'
}
stages {
stage('web-trigger') {
steps {
script {
echo "${devopsName}"
}
}
}
}
}
curl命令模擬請求測試
$ curl --location --request POST "http://192.168.16.200:8080/generic-webhook-trigger/invoke?token=test-web-trigger-post" \
--header 'Content-Type: application/json' \
--data-raw "{'name':'admin','id':'100','group':{'name':'jenkins','id':'101'}}" | python -m json.tool
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 260 100 195 100 65 2199 733 --:--:-- --:--:-- --:--:-- 2954
{
"jobs": {
"dev-demo3": {
"regexpFilterExpression": "",
"triggered": true,
"resolvedVariables": {
"devopsName": "jenkins"
},
"regexpFilterText": "",
"id": 72,
"url": "queue/item/72/"
}
},
"message": "Triggered jobs."
}
pipeline輸出日志
Generic Cause
[Pipeline] Start of Pipeline
Received:
{'name':'admin','id':'100','group':{'name':'jenkins','id':'101'}}
Contributing variables:
devopsName = jenkins
[Pipeline] node
Running on Jenkins in /var/lib/jenkins/workspace/dev-demo3
[Pipeline] { (hide)
[Pipeline] stage
[Pipeline] { (web-trigger)
[Pipeline] script
[Pipeline] {
[Pipeline] echo
jenkins
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
行動是絕望的解藥!
歡迎轉載和引用,但請在明顯處保留原文鏈接和原作者信息!
本博客內容多為個人工作與學習的記錄,少數內容來自于網絡并略有修改,已盡力標明原文鏈接和轉載說明。如有冒犯,即刻刪除!
以所舍,求所得,有所獲,方所成。

浙公網安備 33010602011771號