伺服器:jenkins server
git server
ngrok
github webhook
在配置jenkins實現前端自動化構建的過程中,對於自動化的過程理解很模糊,只是知道jenkins伺服器,git倉庫和後端應用伺服器這三個概念。
答案就是:git webhook機制發出請求,告知jenkins伺服器你要自動構建了。
webhook與非同步程式設計中"訂閱-發布模型"非常類似,一端觸發事件,一端監聽執行。
如果僅僅想學習webhook,可以直接閱讀。但是一定要注意,知識點是"非同步程式設計模型",webhook僅僅是它的乙個實現。
開啟正文!
以github webhook,koa,ngrok學習webhook。維基百科:
**當事件發生時,源**可以發起乙個http請求到webhook配置的url。**配置之後,使用者可以通過在乙個站點觸發事件,之後再呼叫另乙個站點的行為。可以是任何操作。
普通使用者可以使用ci系統或者通知bug追蹤系統觸發build。
由於webhook使用http協議,因此可以直接被整合到web service。所以他們有時會被用來構建訊息佇列服務,例如一些restful的例子:ironmq和restms。
以github webhook為例,學習webhook。webhook 允許我們通過在github.com訂閱事件後構建後或者安裝github應用。當其中之一的事件被觸發時,我們可以傳送http post請求到webhook的配置url。**webhook可以用作公升級乙個issue追蹤,觸發ci構建,公升級乙個後端映象,或者甚至是部署你的生產伺服器。**只有想不到,沒有做不到。
事件在配置webhook的時候,你可以選擇自己想要接收的事件。你甚至可以選擇參加觸發所有事件。只有訂閱特殊的需要的事件,可以有效限**務器http請求數。可以通過api或者ur隨時訂閱事件。預設情況下,webhook只訂閱push事件。
每個事件與乙個動作集合聯絡,這些動作可以在你的組織或者repo中發生。例如,如果你訂閱了issues事件,你將在issue open,close以及labeled時接收到detailed payload。
下面是一些可用的事件:
name
description
*
any time any event is triggered (wildcard event).
check_run
any time a check run is created, requested, or rerequested.
check_suite
any time a check suite is completed, requested, or rerequested.
commit_comment
any time a commit is commented on.
push
any git push to a repository, including editing tags or branches. commits via api actions that update references are also counted. this is the default event.
載荷每乙個事件型別都有乙個指定的與相關事件資訊有關的payload格式。所有的事件載荷都是事件型別的載荷映象,push除外,因為他有更加詳細的webhook負載。
傳送報文頭
傳送到webhook配置url的http post負載會包含幾個指定的報文頭。
header
description
x-github-event
觸發分發的事件型別。
x-github-delivery
唯一識別分發的guid。
x-hub-signature
hmac十六進製制的響應體。如果secret配置了,這個頭資訊將被傳送。hmac十六進製制由sha1雜湊演算法生成,secret作為hmac的key。
user-agent也將會加上字首github-hookshot/. 示例:
}複製**ping 事件 ping事件負載
| key | value |
| --- | --- |
| zen | random string of github zen |
| hook_id | the id of the webhook that triggered the ping |
| hook | the [webhook configuration]( |
複製**
}複製**
1. 配置並建立webhook
content型別
secret
events
2. 配置接收和管理負載的伺服器
./ngrok http 4567
複製**
將生成的只有8小時有效時間的url複製到payload url。
複製**
var koa = require('koa');
var router = require('koa-router');
var router = new router();
router
.post('/payload', (ctx, next) => )
.use(router.routes())
.use(router.allowedmethods());
複製**
執行以下命令啟動服務:
node server.js
複製**
},
response: },
originalurl: '/payload',
req: '',
res: '',
socket: '' }
複製**
3.測試webhooks
在每乙個webhook下都有乙個觸發事件記錄列表。
單擊後會展開webhook的請求和響應。
4.在github和server設定token核心知識點是什麼? "發布-訂閱" 事件非同步程式設計模型,要注意這個模型是只針對git repo自身的,它訂閱了來自local的push事件,觸發者則是某乙個開發者的git push操作。
如果還是不懂,建議先閱讀樸靈大神的《深入淺出nodejs》的非同步章節,並且涉獵大量的非前端技術,並實踐。
不過對於這篇博文來說,webhook是git的一種機制,可用於前端自動化構建是關鍵知識點。
當然,關於這篇博文,其實有些流程還不是很清晰,文章內容可能在我做完一次完整的jenkins自動化構建實驗後更新。
參考:that it !
elemtype到底是個啥?
以前對這個東西的一知半解,今天有時間,查了多方面的資料,總結下 elemtype簡單來說就是 用來更好的替代,他也可以叫做別的名字,比如說 define elemtype int 寫程式,就可以用elemtype來進行替代int,若以後想要改elemtype所定義的資料型別為char,直接 defi...
generator yield到底是個啥
先來乙個函式 function show let gen show gen.next 12 gen.next 5 通過函式我們可以看到,定義a接收了yield傳進來的引數,現在請大家和我玩個遊戲,猜猜看a是幾 好了,不賣關子了,咱們執一下看看 那麼現在反過來就有乙個問題了,可能有些人會說,等會,我有...
構造方法到底是個啥?
來來來,搞這個構造方法之前我們來看看啥是方法,方法就是一些語句湊在一塊實現一些功能的集合,方法通常由兩部分組成 引數和返回值。引數是進入方法裡面的資料,通過方法體裡面的語句執行啊執行,哎!出來乙個產物也就是乙個返回值。格式參照 修飾符 返回值型別 方法名 引數型別 引數名,我們知道,方法裡面可以有引...