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

來源:互聯網
上載者:User

標籤:jenkins webhook 自動觸發 自動構建

  今天自己看著外掛程式文檔摸索了一下,實現了git push後Webhook自動觸發Jenkins進行代碼構建,可通用gitlab、github等平台,中文關於這方面自動部署的文檔比較少,所以把我的學習過程記錄下來,讓其他人少走點彎路。


  類比情境:開發人員在dev分支提交代碼後,Jenkins自動構建和部署,非dev分支提交代碼不會觸發。


  實戰環境:碼雲(git.oschina.net)、Jenkins(可在公網訪問)、外掛程式Generic Webhook Trigger


  步驟1:

  碼雲新增一個項目,新增兩個分支(uat、dev),放一些檔案

650) this.width=650;" src="https://s2.51cto.com/wyfs02/M01/A4/23/wKioL1mlMpmxLCb5AAAYdoYggqg584.jpg" title="1.jpg" alt="wKioL1mlMpmxLCb5AAAYdoYggqg584.jpg" />


  步驟2:

  Jenkins安裝Generic Webhook Trigger外掛程式,外掛程式的文檔在這裡(https://plugins.jenkins.io/generic-webhook-trigger)

650) this.width=650;" src="https://s2.51cto.com/wyfs02/M01/A4/23/wKioL1mlM53hA1COAABmEWzGMIE289.jpg-wh_500x0-wm_3-wmp_4-s_1269405441.jpg" title="2.jpg" alt="wKioL1mlM53hA1COAABmEWzGMIE289.jpg-wh_50" />


  步驟3:

  建立一個自由任務,Geneal留空不影響本次實驗;源碼管理填入碼雲的項目地址,添加碼雲的登陸使用者和密碼;本次實驗是構建dev分支,所以我填了 */dev

650) this.width=650;" src="https://s2.51cto.com/wyfs02/M02/05/73/wKiom1mlNFOjLvBtAACKpqFQm3g140.jpg-wh_500x0-wm_3-wmp_4-s_3542296691.jpg" title="3.jpg" alt="wKiom1mlNFOjLvBtAACKpqFQm3g140.jpg-wh_50" />


  步驟4:

  構建觸發器這一步比較關鍵,卡了好久,首先我們先去看看碼雲關於Webhook文檔(http://git.mydoc.io/?t=154711 ),我們要抓取研發push這個Webhook POST過來的資料,然後根據裡面內容關鍵字ref判斷是否為開發分支,如果是開發分支,則讓Jenkins拉開發分支最新的代碼下來構建。所以圖四,勾選外掛程式觸發器,給抓出來的資料起個變數名ref,抓取內容為$.ref(看碼雲的文檔)。

650) this.width=650;" src="https://s3.51cto.com/wyfs02/M00/05/73/wKiom1mlNZuiPohpAAB8EsTTEBw192.jpg" title="4.jpg" alt="wKiom1mlNZuiPohpAAB8EsTTEBw192.jpg" />


  好,稍微下來一點,我們只需要擷取POST資料,header和request不用理。接下來也很關鍵,定義過濾出來什麼字串才觸發這個任務。所以使用正則匹配,text為匹配出什麼結果就觸發這個任務,於是我們填入剛才抓取臨時存放的變數$ref,注意這裡不是未經處理資料的$.ref。

650) this.width=650;" src="https://s5.51cto.com/wyfs02/M01/A4/24/wKioL1mlNnLwxm8eAABXpvl0bHQ021.jpg" title="5.jpg" alt="wKioL1mlNnLwxm8eAABXpvl0bHQ021.jpg" />


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

650) this.width=650;" src="https://s3.51cto.com/wyfs02/M01/05/73/wKiom1mlN1KR1VVzAABn5I-6ACM834.jpg-wh_500x0-wm_3-wmp_4-s_2292472221.jpg" title="6.jpg" alt="wKiom1mlN1KR1VVzAABn5I-6ACM834.jpg-wh_50" />


  步驟6:點擊儲存之後,回到碼雲的專案管理頁面,填入URL

  URL格式為 http://有讀許可權的使用者名稱:該使用者名稱密碼@jenkis地址/generic-webhook-trigger/invoke

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

650) this.width=650;" src="https://s4.51cto.com/wyfs02/M00/A4/24/wKioL1mlN8GxBCLeAADFRt-m-MM312.jpg-wh_500x0-wm_3-wmp_4-s_1703706356.jpg" title="7.jpg" alt="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:[email protected] or configuring and passing an authentication token like ...trigger/invoke?token=TOKENHERE"}}}


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

650) this.width=650;" src="https://s4.51cto.com/wyfs02/M01/A4/24/wKioL1mlOi6zVMYWAAB27qbapO0261.jpg-wh_500x0-wm_3-wmp_4-s_1517549604.jpg" title="8.jpg" alt="wKioL1mlOi6zVMYWAAB27qbapO0261.jpg-wh_50" />


ps:碼雲點測試按鈕預設是觸發master push,實驗過程有問題,可以只勾選一項,不作判斷,就可以測試觸發了,如。

650) this.width=650;" src="https://s4.51cto.com/wyfs02/M00/A4/24/wKioL1mlOpWw1jdvAABcNKsHC8E574.jpg" title="9.jpg" alt="wKioL1mlOpWw1jdvAABcNKsHC8E574.jpg" />

本文出自 “技術記錄” 部落格,請務必保留此出處http://tseyuzen.blog.51cto.com/2344243/1960905

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.