將 GitHub 事件傳送至應用程式
您可以設定 Webhook 以傳送 GitHub 事件,例如 IBM Cloud® Code Engine 應用程式的新問題或確定。 您的應用程式必須使用公用端點來接收 Webhook POST 要求。
如需 GitHub Webhook 的相關資訊,請參閱 關於 Webhook。 有關GitHub,請參閱 GitHub文件。
必要條件
開始之前,請先設定帳戶並安裝指令行環境。 雖然您可以使用主控台來建立應用程式,但此範例使用 CLI。
- 確保您具有「隨收隨付制」帳戶。
- 設定 Code Engine CLI 環境。
- 建立並使用專案。
所有 Code Engine 使用者都必須具有「隨收隨付制」帳戶。 指導教學可能會產生成本。 使用成本估算器根據您的預計使用情況產生成本估算。 如需相關資訊,請參閱 Code Engine 定價。
建立應用程式
建立應用程式以接收稱為 my-github-app
的 GitHub 事件,這些事件使用 ibmcloud ce app create
指令中稱為 github
的映像檔。 此應用程式會記載 GitHub 儲存庫中發生的每一個確定事件。
映像檔是從 github.go
建置,可從 Samples for IBM Cloud Code Engine GitHub 儲存庫取得。
ibmcloud ce application create --name my-github-app --image icr.io/codeengine/github --min-scale 1
在您的應用程式建立之後,請驗證您的應用程式是否處於 Ready
狀態,並尋找應用程式 URL。
ibmcloud ce application get --name my-github-app
應用程式 URL 位於範例輸出的 URL 欄位中。
Name: my-github-app
ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name: myproject
Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111
Age: 20h
Created: 2022-11-28T13:16:49-06:00
URL: https://my-github-app.abcdabcdabc.us-south.codeengine.appdomain.cloud
Cluster Local URL: http://my-github-app.abcdabcdabc.svc.cluster.local
Console URL: https://cloud.ibm.com/codeengine/project/us-south/abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f/application/my-github-app/configuration
Status Summary: Application deployed successfully
...
建立 Webhook
建立 GitHub Webhook,以將應用程式訂閱至 GitHub 事件。 您可以訂閱一個以上 Webhook 事件。 發生您訂閱的事件時,GitHub 會將有效負載傳送至應用程式。 如需相關資訊,請參閱 Webhook 事件及有效負載。
若要建立GitHub Webhook,請依照下列步驟操作。
- 移至 GitHub 儲存庫,然後選取 設定。
- 選取 Webhook-> 新增 Webhook。 請注意,您的 GitHub 儲存庫可能使用 連結鉤 而非 Webhook。
- 輸入您的應用程式 URL 作為 有效負載 URL。
- 選取應用程式需要的 內容類型。 如果您使用範例
github
應用程式,請選取application/json
作為內容類型。 - 選用。 將密鑰新增至 Webhook。 如需相關資訊,請參閱 保護 Webhook 安全。
- 選取 啟用 SSL 驗證。
- 選取 僅推送事件 以觸發 Webhook。
- 確定已選取 作用中。 您可以移除勾號來停用 Webhook 而不刪除它。
- 按一下 新增 Webhook。
完成之後,請檢查應用程式的日誌檔,以驗證應用程式是否已訂閱。 如需日誌的相關資訊,請參閱 使用 CLI 檢視日誌。
ibmcloud ce app logs --name my-github-app
在範例輸出中,尋找應用程式正在接聽的埠以及事件類型。
my-github-app-00001-deployment-abcdabcdabc-1234/user-container:
2022/12/02 17:07:27 Listening on port 8080
2022/12/02 17:10:08 Event Type: ping
2022/12/02 17:10:08 Not a 'push' event so exit
請注意,如果您的應用程式調整為零,您可能會收到一則訊息,指出應用程式沒有執行中的實例。 此應用程式的最小規模為 1,因此它一律具有執行中實例。
測試 GitHub 事件
透過觸發應用程式預期的事件來測試 Webhook。 在此情況下,應用程式預期會在 GitHub 儲存庫中確定變更。
-
在 GitHub 儲存庫中,執行觸發 Webhook 的動作。 對於
github
應用程式,確定對儲存庫中檔案的變更。 -
在一或兩分鐘之後,尋找應用程式的日誌。 如果您的應用程式調整為零,您可能會看到一則訊息,指出您的應用程式沒有任何執行中實例。 您的應用程式會在收到事件時擴增,因此請在幾分鐘後重試。 如需日誌的相關資訊,請參閱 使用 CLI 檢視日誌。
ibmcloud ce app logs --name my-github-app
例如,請參考以下輸出。
2022/11/28 19:45:28 Event: { "ref": "refs/heads/main", "before": "0a11d22ebdaacdbb7bf5fdb6c92565c7c00fa97b", "after": "af363efb8568874fe219bc73f3bccd0f4991907f", "repository": { ... "committer": { "name": "GitHub", "email": "noreply@github.com", "username": "web-flow" }, "added": [], "removed": [], "modified": [ "README.md" ] } } 2022/11/28 19:45:28 kersten1 committed "af363efb8568874fe219bc73f3bccd0f4991907f" to "refs/heads/main" branch 2022/11/28 19:45:28 ibmcloud ce buildrun submit ...
您的輸出取決於您使用的應用程式,以及包含 Webhook 的 GitHub 儲存庫。
您的 Webhook 正在運作! 現在,每當您將檔案確定至 GitHub 儲存庫時,您的應用程式都會收到通知。
此應用程式會將最小規模設為 1,以便應用程式實例一律在執行中。 您可以使用下列指令來更新應用程式,將規模設為 0。ibmcloud ce app update --name my-github-app --min-scale 0
。
清除
完成本指導教學之後,您可以清除使用下列指令所建立的資源。
-
刪除您的應用程式
ibmcloud ce app delete --name my-github-app
當您刪除應用程式時,也會刪除相關聯的建置檔。
-
開啟 GitHub 設定-> Webhook,並在 Webhook 名稱之後按一下 刪除,以刪除 Webhook。
-
刪除建置從 IBM Cloud Container Registry建立的映像檔。
- 導覽至 IBM Cloud 主控台中的 登錄。
- 透過搜尋應用程式名稱,尋找與應用程式相關聯的保存檔及映像檔。
- 選取保存檔和映像檔,然後刪除。