碼雲Webhook觸發Jenkins自動構建 - Jenkins演練(一)

  今天本身看着插件文檔摸索了一下,實現了git push後Webhook自動觸發Jenkins進行代碼構建,可通用gitlab、github等平臺,中文關於這方面自動部署的文檔比較少,因此把個人學習過程記錄下來,讓其餘人少走點彎路。git


  模擬場景:開發人員在dev分支提交代碼後,Jenkins自動構建和部署,非dev分支提交代碼不會觸發。github


  實戰環境:碼雲(git.oschina.net)、Jenkins(可在公網訪問)、插件Generic Webhook Triggerweb


  步驟1:bash

  碼雲新增一個項目,新增兩個分支(uat、dev),放一些文件ide

wKioL1mlMpmxLCb5AAAYdoYggqg584.jpg


  步驟2:gitlab

  Jenkins安裝Generic Webhook Trigger插件,插件的文檔在這裏(https://plugins.jenkins.io/generic-webhook-trigger)學習

wKioL1mlM53hA1COAABmEWzGMIE289.jpg-wh_50


  步驟3:測試

  新建一個自由任務,Geneal留空不影響本次實驗;源碼管理填入碼雲的項目地址,添加碼雲的登錄用戶和密碼;本次實驗是構建dev分支,因此我填了 */devui

wKiom1mlNFOjLvBtAACKpqFQm3g140.jpg-wh_50


  步驟4:url

  構建觸發器這一步比較關鍵,卡了很久,首先咱們先去看看碼雲關於Webhook文檔(http://git.mydoc.io/?t=154711 ),咱們要抓取研發push這個Webhook POST過來的數據,而後根據裏面內容關鍵字ref判斷是否爲開發分支,若是是開發分支,則讓Jenkins拉開發分支最新的代碼下來構建。因此圖四,勾選插件觸發器,給抓出來的數據起個變量名ref,抓取內容爲$.ref(看碼雲的文檔)。

wKiom1mlNZuiPohpAAB8EsTTEBw192.jpg


  好,稍微下來一點,咱們只須要獲取POST數據,header和request不用理。接下來也很關鍵,定義過濾出來什麼字串才觸發這個任務。因此使用正則匹配,text爲匹配出什麼結果就觸發這個任務,因而咱們填入剛纔抓取臨時存放的變量$ref,注意這裏不是原始數據的$.ref。

wKioL1mlNnLwxm8eAABXpvl0bHQ021.jpg


  步驟5:剩下就是告訴拉完代碼下來以後作什麼操做了,後面的文章會講到,這裏我就隨便輸出點東西了。

wKiom1mlN1KR1VVzAABn5I-6ACM834.jpg-wh_50


  步驟6:點擊保存以後,回到碼雲的項目管理頁面,填入URL

  URL格式爲 http://有讀權限的用戶名:該用戶名密碼@jenkis地址/generic-webhook-trigger/invoke

  密碼可不填(看了文檔還沒明白是包含在哪裏,還得研究)

wKioL1mlN8GxBCLeAADFRt-m-MM312.jpg-wh_50


     點擊測試,返回ok就說明接口能用了,若是返回以下,則用戶名密碼可能沒填或者沒對。

{"status":"ok","data":{"triggerResults":{"ANY":"Did not find any jobs to trigger! 
The user invoking /generic-webhook-trigger/invoke must have read permission to any 
jobs that should be triggered. You may try adding http://user:passw@url... or configuring
 and passing an authentication token like ...trigger/invoke?token=TOKENHERE"}}}


    最後,在dev分支提交代碼,就會觸發任務了,至此需求完成。

wKioL1mlOi6zVMYWAAB27qbapO0261.jpg-wh_50


ps:碼雲點測試按鈕默認是觸發master push,實驗過程有問題,能夠只勾選一項,不做判斷,就能夠測試觸發了,以下圖。

wKioL1mlOpWw1jdvAABcNKsHC8E574.jpg

相關文章
相關標籤/搜索