码云Webhook触发Jenkins自动构建 - Jenkins演练(一)
? 今天自己看著插件文檔摸索了一下,實(shí)現(xiàn)了git push后Webhook自動(dòng)觸發(fā)Jenkins進(jìn)行代碼構(gòu)建,可通用gitlab、github等平臺(tái),中文關(guān)于這方面自動(dòng)部署的文檔比較少,所以把我的學(xué)習(xí)過(guò)程記錄下來(lái),讓其他人少走點(diǎn)彎路。
? 模擬場(chǎng)景:開(kāi)發(fā)人員在dev分支提交代碼后,Jenkins自動(dòng)構(gòu)建和部署,非dev分支提交代碼不會(huì)觸發(fā)。
? 實(shí)戰(zhàn)環(huán)境:碼云(git.oschina.net)、Jenkins(可在公網(wǎng)訪問(wèn))、插件Generic Webhook Trigger
? 步驟1:
? 碼云新增一個(gè)項(xiàng)目,新增兩個(gè)分支(uat、dev),放一些文件
? 步驟2:
? Jenkins安裝Generic Webhook Trigger插件,插件的文檔在這里(https://plugins.jenkins.io/generic-webhook-trigger)
? 步驟3:
? 新建一個(gè)自由任務(wù),Geneal留空不影響本次實(shí)驗(yàn);源碼管理填入碼云的項(xiàng)目地址,添加碼云的登陸用戶和密碼;本次實(shí)驗(yàn)是構(gòu)建dev分支,所以我填了 */dev
? 步驟4:
? 構(gòu)建觸發(fā)器這一步比較關(guān)鍵,卡了好久,首先我們先去看看碼云關(guān)于Webhook文檔(http://git.mydoc.io/?t=154711?),我們要抓取研發(fā)push這個(gè)Webhook POST過(guò)來(lái)的數(shù)據(jù),然后根據(jù)里面內(nèi)容關(guān)鍵字ref判斷是否為開(kāi)發(fā)分支,如果是開(kāi)發(fā)分支,則讓Jenkins拉開(kāi)發(fā)分支最新的代碼下來(lái)構(gòu)建。所以圖四,勾選插件觸發(fā)器,給抓出來(lái)的數(shù)據(jù)起個(gè)變量名ref,抓取內(nèi)容為$.ref(看碼云的文檔)。
? 好,稍微下來(lái)一點(diǎn),我們只需要獲取POST數(shù)據(jù),header和request不用理。接下來(lái)也很關(guān)鍵,定義過(guò)濾出來(lái)什么字串才觸發(fā)這個(gè)任務(wù)。所以使用正則匹配,text為匹配出什么結(jié)果就觸發(fā)這個(gè)任務(wù),于是我們填入剛才抓取臨時(shí)存放的變量$ref,注意這里不是原始數(shù)據(jù)的$.ref。
? 步驟5:剩下就是告訴拉完代碼下來(lái)之后做什么操作了,后面的文章會(huì)講到,這里我就隨便輸出點(diǎn)東西了。
? 步驟6:點(diǎn)擊保存之后,回到碼云的項(xiàng)目管理頁(yè)面,填入U(xiǎn)RL
? URL格式為 http://有讀權(quán)限的用戶名:該用戶名密碼@jenkis地址/generic-webhook-trigger/invoke
? 密碼可不填(看了文檔還沒(méi)明白是包含在哪里,還得研究)
???? 點(diǎn)擊測(cè)試,返回ok就說(shuō)明接口能用了,如果返回如下,則用戶名密碼可能沒(méi)填或者沒(méi)對(duì)。
{"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?configuringand?passing?an?authentication?token?like?...trigger/invoke?token=TOKENHERE"}}}??? 最后,在dev分支提交代碼,就會(huì)觸發(fā)任務(wù)了,至此需求完成。
ps:碼云點(diǎn)測(cè)試按鈕默認(rèn)是觸發(fā)master push,實(shí)驗(yàn)過(guò)程有問(wèn)題,可以只勾選一項(xiàng),不作判斷,就可以測(cè)試觸發(fā)了,如下圖。
轉(zhuǎn)載于:https://blog.51cto.com/tseyuzen/1960905
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的码云Webhook触发Jenkins自动构建 - Jenkins演练(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 利用pylot进行性能测试
- 下一篇: Nodejs进阶:使用DiffieHel