IBM Cloud Docs
將 GitHub 事件傳送至應用程式

將 GitHub 事件傳送至應用程式

您可以設定 Webhook 以傳送 GitHub 事件,例如 IBM Cloud® Code Engine 應用程式的新問題或確定。 您的應用程式必須使用公用端點來接收 Webhook POST 要求。

如需 GitHub Webhook 的相關資訊,請參閱 關於 Webhook。 有關GitHub,請參閱 GitHub文件

必要條件

開始之前,請先設定帳戶並安裝指令行環境。 雖然您可以使用主控台來建立應用程式,但此範例使用 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,請依照下列步驟操作。

  1. 移至 GitHub 儲存庫,然後選取 設定
  2. 選取 Webhook-> 新增 Webhook。 請注意,您的 GitHub 儲存庫可能使用 連結鉤 而非 Webhook
  3. 輸入您的應用程式 URL 作為 有效負載 URL
  4. 選取應用程式需要的 內容類型。 如果您使用範例 github 應用程式,請選取 application/json 作為內容類型。
  5. 選用。 將密鑰新增至 Webhook。 如需相關資訊,請參閱 保護 Webhook 安全
  6. 選取 啟用 SSL 驗證
  7. 選取 僅推送事件 以觸發 Webhook。
  8. 確定已選取 作用中。 您可以移除勾號來停用 Webhook 而不刪除它。
  9. 按一下 新增 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 儲存庫中確定變更。

  1. 在 GitHub 儲存庫中,執行觸發 Webhook 的動作。 對於 github 應用程式,確定對儲存庫中檔案的變更。

  2. 在一或兩分鐘之後,尋找應用程式的日誌。 如果您的應用程式調整為零,您可能會看到一則訊息,指出您的應用程式沒有任何執行中實例。 您的應用程式會在收到事件時擴增,因此請在幾分鐘後重試。 如需日誌的相關資訊,請參閱 使用 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

清除

完成本指導教學之後,您可以清除使用下列指令所建立的資源。

  1. 刪除您的應用程式

    ibmcloud ce app delete --name my-github-app
    

    當您刪除應用程式時,也會刪除相關聯的建置檔。

  2. 開啟 GitHub 設定-> Webhook,並在 Webhook 名稱之後按一下 刪除,以刪除 Webhook。

  3. 刪除建置從 IBM Cloud Container Registry建立的映像檔。

    1. 導覽至 IBM Cloud 主控台中的 登錄
    2. 透過搜尋應用程式名稱,尋找與應用程式相關聯的保存檔及映像檔。
    3. 選取保存檔和映像檔,然後刪除。