GitHub webhook是GitHub提供的一種機制,允許項目中任何事件都能夠及時地通知第三方應用程序,通過webhook,您可以實時了解到有關您感興趣的GitHub事件,例如提交,拉取請求,問題等等。那么,在php中如何使用GitHub webhook來增加代碼的開發效率呢?
首先我們需要知道一個基本流程,接收GitHub webhook的數據,然后根據數據進行相應操作,比如自動構建、部署或是發送通知等等。這個流程并不是特別復雜,下文會詳細介紹。
在GitHub中設置webhook只需四步:
1. 進入GitHub項目中的“Settings”選項卡。
2. 在“Webhooks”中點擊“Add webhook”按鈕。
3. 填寫Payload URL、Content type、Secret等信息。
4. 點擊“Create webhook”按鈕提交保存。
如下是一個簡單的例子:
$headers = apache_request_headers(); $hubSignature = $headers['X-Hub-Signature']; $payload = file_get_contents('php://input'); $secret = 'your_secret'; if ($hubSignature !== 'sha1=' . hash_hmac('sha1', $payload, $secret, false)) { header('HTTP/1.1 403 Forbidden'); die; } $data = json_decode($payload, true);在這段代碼中,我們獲取GitHub webhook請求頭中的X-Hub-Signature,并且將內容與webhook密鑰(secret)進行比較,確保數據來源可信。 接下來我們就可以通過$data獲取到GitHub webhook傳遞來的數據,數據不同的類型有相應的數據結構。比如:push事件包含了commit對象、分支名等信息。可以通過打印出$data,再手冊查看能獲取到哪些數據。 例如,我們可以在GitHub push代碼之后,讓CI——持續集成自動跑一遍代碼,更改后立馬給您反饋測試報告,從而在代碼漏洞及時暴露的同時,還能迅速反饋讓您進行下一步開發。 最后,我們來看一下一個完整的例子。當收到GitHub push事件以后,它將檢查最新提交的代碼,如果發現有新的變化,那么這個PHP程序將導出最新的代碼。注意,本例子中的-d和-l參數可能需根據機器設置修改。
$path = "/path/to/destination"; if (file_exists($path)) { $cmd = "cd {$path} && git pull"; exec($cmd); $cmd = "cd {$path} && git checkout -f"; exec($cmd); $cmd = "cd {$path} && git clean -f"; exec($cmd); $cmd = "cd {$path} && npm install"; exec($cmd); $cmd = "cd {$path} && bower install"; exec($cmd); $cmd = "cd {$path} && gulp build"; exec($cmd); file_put_contents('php://stdout', $cmd . "\n"); }以上是我使用GitHub webhook php的歷程,這項工具極大的促進了我的代碼自動部署流程,使我便捷輕松地實現了代碼的自動化升級,如果你對于這項優質的工具感興趣,不妨試試使用GitHub webhook,相信它會極大地減輕您的工作壓力。
上一篇php ini木馬
下一篇github php項目