成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

玩轉觸發器之Jenkins Generic Webhook使用技巧

網絡 網絡管理
學習HTTP基礎知識,掌握如何使用Postman和Curl調用接口的方法。HTTP超文本傳輸協議,是確保服務器(Server)和客戶端(Client)之間的正確通信。

[[423664]]

1. 預備知識

目標:學習HTTP基礎知識,掌握如何使用Postman和Curl調用接口的方法。

1.1 Web HTTP基礎知識

HTTP請求是什么?

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

一個請求和響應的過程:

Request用戶通過瀏覽器向服務端發起請求。Response服務端將客戶端請求的資源數據進行響應。

HTTP常見的錯誤碼

1xx : 服務已收到請求,請求者繼續執行操作。

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

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

4xx:客戶端發生了錯誤

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

5xx:服務端發生了錯誤

  • 網關超時(504)
  • 內部錯誤(500)
  • 網關錯誤(502)
  • 服務不可用(503)

2. Jenkins Generic Webhook實踐

目的:為Jenkins作業添加觸發器,便于其他系統調用。

安裝配置Generic WebHook

插件名稱:Generic Webhook Trigger

重啟后,進入一個Pipeline項目設置,已經可以選擇這個觸發器了....

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


Jenkins作業配置觸發器

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

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

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

Post content parameters:獲取調用接口傳進來的數據

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

Header parameters:獲取Header中的參數

Request parameters:獲取URL中的請求參數

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

Token: 給URL添加一個觸發的認證

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

打印調試信息到日志中

觸發條件過濾:僅滿足條件才能觸發此作業

實踐:demo

解析GET/POST請求數據

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

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

演示將postman中的請求轉換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數據

客戶端發送Get請求, 帶有兩個參數 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,獲取請求參數version 和 username (參數名稱要一致)

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

通過jenkinsfile讀取傳遞的參數

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

解析HEADER參數數據

客戶端發送請求(什么請求都可以,這里的header與請求類型無關), 帶有兩個參數 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,獲取請求參數header_name 和 header_id 。

通過jenkinsfile讀取傳遞的參數

  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數據

客戶端發送POST請求, 參數存儲在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 配置觸發器來獲取Post參數。

獲取所有數據

獲取username字段

獲取group1Name字段

Jenkinsfile中使用參數

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

擴展流水線解析JSON數據

安裝插件:Pipeline Utility Steps

readJSON:處理json數據

  1. println("所有body數據 --> ${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 插件使用

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

進入某一次構建后,可以點擊rebuild。

 

責任編輯:姜華 來源: DevOps云學堂
相關推薦

2010-05-18 15:58:39

MySQL觸發器

2011-05-20 14:06:25

Oracle觸發器

2009-04-07 13:56:03

SQL Server觸發器實例

2010-09-01 16:40:00

SQL刪除觸發器

2010-10-12 10:10:55

mysql觸發器

2010-04-09 09:07:43

Oracle游標觸發器

2010-07-05 11:09:55

SQL Server觸

2009-09-18 14:31:33

CLR觸發器

2011-03-28 10:05:57

sql觸發器代碼

2010-04-26 14:12:23

Oracle使用游標觸

2010-05-19 09:40:05

MySQL觸發器

2010-05-04 09:44:12

Oracle Trig

2009-12-24 17:38:18

WPF事件觸發器

2009-11-18 13:15:06

Oracle觸發器

2011-05-19 14:29:49

Oracle觸發器語法

2021-07-30 10:33:57

MySQL觸發器數據

2011-04-14 13:54:22

Oracle觸發器

2010-05-31 18:06:07

MySQL 觸發器

2010-10-12 10:04:15

MySQL觸發器

2010-10-12 10:24:58

mysql觸發器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美二区三区 | 一区二区三区精品 | 欧美综合久久 | 亚洲欧美视频一区 | 亚洲精品一区二区三区四区高清 | 久久精品成人 | 一区二区视频 | 精品国产一区久久 | 91精品国产一二三 | 久久看片| 国产高清精品一区二区三区 | 国产精品a一区二区三区网址 | av中文字幕在线 | 91麻豆精品国产91久久久久久久久 | 亚洲午夜精品久久久久久app | a视频在线 | 日韩精品成人免费观看视频 | 狠狠操狠狠搞 | 99re视频精品| 日韩欧美在线视频播放 | 中文字字幕一区二区三区四区五区 | 大伊人久久 | 国产日韩欧美一区 | 狠狠操操| 亚洲免费观看视频网站 | 一区二区三区成人 | 成人三级av | 国产精品久久久久久久免费观看 | 国产一区二区在线播放视频 | 国产精品成人一区二区三区 | 欧美精品综合在线 | av网址在线播放 | 91社区视频 | 国产一区二区在线免费观看 | 国产午夜在线观看 | 成人黄色电影免费 | 亚州av在线 | 狠狠色综合久久婷婷 | 欧美九九九 | 亚洲激精日韩激精欧美精品 | 欧美一区永久视频免费观看 |