自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

玩轉(zhuǎn)觸發(fā)器之Jenkins Generic Webhook使用技巧

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
學(xué)習(xí)HTTP基礎(chǔ)知識,掌握如何使用Postman和Curl調(diào)用接口的方法。HTTP超文本傳輸協(xié)議,是確保服務(wù)器(Server)和客戶端(Client)之間的正確通信。

[[423664]]

1. 預(yù)備知識

目標(biāo):學(xué)習(xí)HTTP基礎(chǔ)知識,掌握如何使用Postman和Curl調(diào)用接口的方法。

1.1 Web HTTP基礎(chǔ)知識

HTTP請求是什么?

HTTP超文本傳輸協(xié)議,是確保服務(wù)器(Server)和客戶端(Client)之間的正確通信。

一個請求和響應(yīng)的過程:

Request用戶通過瀏覽器向服務(wù)端發(fā)起請求。Response服務(wù)端將客戶端請求的資源數(shù)據(jù)進行響應(yīng)。

HTTP常見的錯誤碼

1xx : 服務(wù)已收到請求,請求者繼續(xù)執(zhí)行操作。

2xx:請求成功,常見(201)

3xx:請求成功,頁面發(fā)生重定向(301)

4xx:客戶端發(fā)生了錯誤

  • 常見的是資源找不到了(404)
  • 資源請求需要認證認證失敗(401)
  • 認證成功但是權(quán)限不夠(403)

5xx:服務(wù)端發(fā)生了錯誤

  • 網(wǎng)關(guān)超時(504)
  • 內(nèi)部錯誤(500)
  • 網(wǎng)關(guān)錯誤(502)
  • 服務(wù)不可用(503)

2. Jenkins Generic Webhook實踐

目的:為Jenkins作業(yè)添加觸發(fā)器,便于其他系統(tǒng)調(diào)用。

安裝配置Generic WebHook

插件名稱:Generic Webhook Trigger

重啟后,進入一個Pipeline項目設(shè)置,已經(jīng)可以選擇這個觸發(fā)器了....

插件文檔:https://plugins.jenkins.io/generic-webhook-trigger/


Jenkins作業(yè)配置觸發(fā)器

啟動Generic Webhook觸發(fā)器后, 相當(dāng)于給Jenkins加了一個新的接口(http://JENKINS_URL/generic-webhook-trigger/invoke)。

調(diào)用的時候:這里要把 JENKINS_URL 換成自己真實的Jenkins 服務(wù)器地址,有端口就加上端口,是域名就寫域名。下面是一個參考的URL:

  1. http://192.168.1.200:8080/generic-webhook-trigger/invoke 

Post content parameters:獲取調(diào)用接口傳進來的數(shù)據(jù)

JsonPath語法文檔:https://github.com/json-path/JsonPath

Header parameters:獲取Header中的參數(shù)

Request parameters:獲取URL中的請求參數(shù)

  1. curl http://192.168.1.200:8080/generic-webhook-trigger/invoke?runopts=gitlab 

Token: 給URL添加一個觸發(fā)的認證

  1. curl http://192.168.1.200:8080/generic-webhook-trigger/invoke?token=devops-service 

打印調(diào)試信息到日志中

觸發(fā)條件過濾:僅滿足條件才能觸發(fā)此作業(yè)

實踐:demo

解析GET/POST請求數(shù)據(jù)

傳參注意,第一個參數(shù)使用?號連接, 后面的參數(shù)使用&符號連接。

  1. ?token=demo-pipeline-service&user=jenkins&a=1&b=2 

演示將postman中的請求轉(zhuǎn)換curl方式。

  1. [root@zeyang-nuc-service ~]# curl --location --request GET 'http://192.168.1.200:8080/generic-webhook-trigger/invoke?token=demo-pipeline-service' 
  2. {"jobs":{"demo-pipeline-service":{"regexpFilterExpression":"","triggered":true,"resolvedVariables":{},"regexpFilterText":"","id":209,"url":"queue/item/209/"}},"message":"Triggered jobs."}[root@zeyang-nuc-service ~]# 

解析GET數(shù)據(jù)

客戶端發(fā)送Get請求, 帶有兩個參數(shù) version 和 username 。

  1. http://192.168.1.200:8080/generic-webhook-trigger/invoke?token=demo-pipeline-service&version=1.1.1&username=jenkins 

Jenkins 配置Generic hook,獲取請求參數(shù)version 和 username (參數(shù)名稱要一致)

驗證測試(Jenkins日志中能夠打印出獲取的值,則正常)

通過jenkinsfile讀取傳遞的參數(shù)

  1. println("${username}"
  2. println("${version}"

解析HEADER參數(shù)數(shù)據(jù)

客戶端發(fā)送請求(什么請求都可以,這里的header與請求類型無關(guān)), 帶有兩個參數(shù) header_name 和 header_id 。

  1. curl --location --request GET 'http://192.168.1.200:8080/generic-webhook-trigger/invoke?token=demo-pipeline-service' \ 
  2. --header 'header_name: jenkins' \ 
  3. --header 'header_id: 100' 

Jenkins 配置Generic hook,獲取請求參數(shù)header_name 和 header_id 。

通過jenkinsfile讀取傳遞的參數(shù)

  1. println("${header_id}"
  2. println("${header_name}"
  3. println(header_id) 
  4. println(header_name) 
  5.  
  6. String headerName = "${header_id}" 
  7. println(headerName) 
  8.  
  9.  
  10. //pipeline {   
  11. //} 

解析POST數(shù)據(jù)

客戶端發(fā)送POST請求, 參數(shù)存儲在body體中(參考POSTMAN中的樣例)

  1. curl --location --request POST 'http://192.168.1.200:8080/generic-webhook-trigger/invoke?token=demo-pipeline-service' \ 
  2. --header 'Content-Type: application/json' \ 
  3. --data-raw '{ 
  4.     "name""zhangsan"
  5.     "id""123"
  6.     "group1": { 
  7.         "name""jenkins"
  8.         "id" : "001"
  9.         "age""40" 
  10.     } 
  11. }' 

Jenkins 配置觸發(fā)器來獲取Post參數(shù)。

獲取所有數(shù)據(jù)

獲取username字段

獲取group1Name字段

Jenkinsfile中使用參數(shù)

  1. println("所有body數(shù)據(jù) --> ${allData}"
  2. println('最外層name ---> $.name' + "${userName}"
  3. println('第二層name ---> $.group1.name' + "${group1Name}"

擴展流水線解析JSON數(shù)據(jù)

安裝插件:Pipeline Utility Steps

readJSON:處理json數(shù)據(jù)

  1. println("所有body數(shù)據(jù) --> ${allData}"
  2.  
  3. def webHookData = readJSON  text: "${allData}" 
  4.  
  5. String userName = webHookData["name"
  6. String userName2 = webHookData.name 
  7.  
  8. String group1Name = webHookData["group1"]["name"
  9. String group1Name2 = webHookData.group1.name 
  10.  
  11. println('最外層name ---> $.name' + "${userName}"
  12. println('最外層name ---> $.name' + "${userName2}"
  13.  
  14. println('第二層name ---> $.group1.name' + "${group1Name}"
  15. println('第二層name ---> $.group1.name' + "${group1Name2}"

Rebuilder 插件使用

可以直接攜帶原觸發(fā)參數(shù)進行觸發(fā),不用重復(fù)觸發(fā)(不用在重復(fù)的提交代碼了)。

進入某一次構(gòu)建后,可以點擊rebuild。

 

責(zé)任編輯:姜華 來源: DevOps云學(xué)堂
相關(guān)推薦

2010-05-18 15:58:39

MySQL觸發(fā)器

2011-05-20 14:06:25

Oracle觸發(fā)器

2010-10-12 10:10:55

mysql觸發(fā)器

2010-09-01 16:40:00

SQL刪除觸發(fā)器

2009-04-07 13:56:03

SQL Server觸發(fā)器實例

2010-04-09 09:07:43

Oracle游標(biāo)觸發(fā)器

2010-07-05 11:09:55

SQL Server觸

2009-09-18 14:31:33

CLR觸發(fā)器

2011-03-28 10:05:57

sql觸發(fā)器代碼

2009-12-24 17:38:18

WPF事件觸發(fā)器

2010-05-04 09:44:12

Oracle Trig

2010-05-19 09:40:05

MySQL觸發(fā)器

2010-04-26 14:12:23

Oracle使用游標(biāo)觸

2010-10-12 10:04:15

MySQL觸發(fā)器

2010-10-12 10:24:58

mysql觸發(fā)器

2010-05-31 18:06:07

MySQL 觸發(fā)器

2009-11-18 13:15:06

Oracle觸發(fā)器

2011-04-14 13:54:22

Oracle觸發(fā)器

2021-07-30 10:33:57

MySQL觸發(fā)器數(shù)據(jù)

2011-05-19 14:29:49

Oracle觸發(fā)器語法
點贊
收藏

51CTO技術(shù)棧公眾號