GitHub
透過 GitHub 連接器,您可以對 GitHub 資料執行插入、刪除、更新和讀取作業。
事前準備
使用 GitHub 連接器前,請先完成下列工作:
- 在 Google Cloud 專案中:
- 確認已設定網路連線。如要瞭解網路模式,請參閱「網路連線」。
- 將 roles/connectors.admin IAM 角色授予設定連線器的使用者。
- 將下列 IAM 角色授予要用於連接器的服務帳戶:
roles/secretmanager.viewer
roles/secretmanager.secretAccessor
服務帳戶是特殊的 Google 帳戶類型,主要用於代表需要驗證且必須取得授權才能存取 Google API 資料的非人類使用者。如果您沒有服務帳戶,請建立服務帳戶。詳情請參閱「建立服務帳戶」。
- 啟用下列服務
secretmanager.googleapis.com
(Secret Manager API)connectors.googleapis.com
(Connectors API)
如要瞭解如何啟用服務,請參閱「啟用服務」。
如果專案先前未啟用這些服務或權限,系統會在設定連結器時提示您啟用。
- 在 GitHub 中,根據您的需求完成下列工作:
設定連接器
連線專屬於資料來源。也就是說,如果您有多個資料來源,則必須為每個資料來源建立個別的連線。如要建立連線,請按照下列步驟操作:
- 在 Cloud 控制台中,前往「Integration Connectors」>「Connections」頁面,然後選取或建立 Google Cloud 專案。
- 按一下「+ 建立新連線」,開啟「建立連線」頁面。
- 在「位置」部分中,選擇連線位置。
- 區域:從下拉式清單中選取位置。
如需所有支援的地區清單,請參閱「位置」一文。
- 點按「下一步」。
- 區域:從下拉式清單中選取位置。
- 在「連線詳細資料」部分,完成下列步驟:
- 連接器:從可用連接器的下拉式清單中選取「GitHub」。
- 連接器版本:從可用版本的下拉式清單中選取連接器版本。
- 在「連線名稱」欄位中,輸入連線執行個體的名稱。
連線名稱必須符合下列條件:
- 連線名稱可使用英文字母、數字或連字號。
- 字母必須為小寫。
- 連線名稱開頭須為英文字母,結尾則須為英文字母或數字。
- 連結名稱不得超過 49 個字元。
- 視需要輸入連線執行個體的「Description」(說明)。
- 或者,可啟用 Cloud Logging,然後選取記錄層級。記錄層級預設為
Error
。 - 服務帳戶:選取具備必要角色的服務帳戶。
- (選用) 指定 OwnerLogin:使用者或機構專屬的登入名稱。
- (選用) 指定「架構」:使用架構將動態擷取的架構限制為特定專案或存放區架構。如要擷取所有結構定義,請勿在這個欄位中指定任何值。如要瞭解支援的結構定義,請參閱「結構定義和範圍」一文。
- 視需要設定「連線節點設定」:
- 節點數量下限:輸入連線節點數量下限。
- 節點數量上限:輸入連線節點數量上限。
節點是用來處理交易的連線單位 (或備用資源)。連線處理的交易量越多,就需要越多節點;反之,處理的交易量越少,需要的節點就越少。如要瞭解節點對連接器定價的影響,請參閱「 連線節點定價」。如未輸入任何值,系統預設會將節點下限設為 2 (提高可用性),節點上限則設為 50。
- 選用:按一下「+ 新增標籤」,以鍵/值組合的形式為連線新增標籤。
- 點按「下一步」。
- 在「目的地」部分,輸入要連線的遠端主機 (後端系統) 詳細資料。
- 目的地類型:選取目的地類型。
- 如要指定目的地主機名稱或 IP 位址,請選取「主機地址」,然後在「主機 1」欄位中輸入地址。
- 如要建立私人連線,請選取「Endpoint attachment」(端點連結),然後從「Endpoint Attachment」(端點連結) 清單中選擇所需連結。
如要建立與後端系統的公開連線,並加強安全性,建議為連線設定靜態輸出 IP 位址,然後設定防火牆規則,只允許特定靜態 IP 位址。
如要輸入其他目的地,請按一下「+新增目的地」。
- 點按「下一步」。
- 目的地類型:選取目的地類型。
-
在「Authentication」(驗證) 部分中,輸入驗證詳細資料。
如要瞭解如何設定這些驗證類型,請參閱「設定驗證」。
- 點按「下一步」。
- 檢查:檢查連線和驗證詳細資料。
- 點選「建立」。
設定驗證機制
根據要使用的驗證方式輸入詳細資料。
- 用戶端 ID:用於要求存取權杖的用戶端 ID。
- 範圍:以半形逗號分隔的所需範圍清單。
- 用戶端密鑰:Secret Manager 密鑰,內含您建立的已連結應用程式用戶端密鑰。
連線設定範例
本節列出建立連線時設定的各個欄位範例值。
OAuth 2.0 - 授權碼連線類型
欄位名稱 詳細資料 位置 europe-west1 連接器 GitHub 連接器版本 1 連線名稱 GitHub 連接器 啟用 Cloud Logging 否 服務帳戶 Your_Project_Number@serviceaccount OwnerLogin souvikg-Your_Owner_Login 結構定義 節點數量下限 2 節點數量上限 50 用戶端 ID ClientID 範圍 repo repo:status repo_deployment 用戶端密鑰 用戶端密鑰 Secret 版本 1 GitHub 結構定義和範圍
GitHub 連接器支援下列結構定義:- 資訊結構定義:這個結構定義包含的資料表含有授權資訊,以及與已驗證帳戶相關聯的專案和存放區概要資訊。只有一個資訊結構定義。如要擷取資訊結構定義,請在結構定義欄位中指定「Information」
- 存放區結構定義:這個連結器支援已驗證使用者或機構帳戶中每個存放區的結構定義。請使用下列格式指定存放區結構定義:Repository_
. - 專案結構定義:連結器支援已驗證使用者或機構帳戶中每個專案的結構定義。請使用以下格式指定專案結構定義:Project_
如要進一步瞭解範圍,請參閱 GitHub 範圍。
實體、作業和動作
所有整合連接器都會為所連應用程式的物件提供抽象層。您只能透過這個抽象化程序存取應用程式的物件。抽象化會以實體、作業和動作的形式呈現。
- 實體: 實體可以視為已連結應用程式或服務中的物件,或是屬性集合。實體的定義因連接器而異。舉例來說,在資料庫連接器中,資料表是實體;在檔案伺服器連接器中,資料夾是實體;在訊息系統連接器中,佇列是實體。
不過,連接器可能不支援或沒有任何實體,在這種情況下,
Entities
清單會是空白。 - 作業: 作業是指您可以在實體上執行的活動。您可以對實體執行下列任一操作:
從可用清單中選取實體,系統會產生該實體可用的作業清單。如需作業的詳細說明,請參閱 Connectors 工作的實體作業。 不過,如果連接器不支援任何實體作業,系統就不會在
Operations
清單中列出這些不支援的作業。 - 動作: 動作是透過連接器介面提供給整合的第一類函式。動作可讓您變更一或多個實體,且因連接器而異。一般來說,動作會有一些輸入參數和輸出參數。不過,連接器可能不支援任何動作,此時
Actions
清單會是空白。
系統限制
GitHub 連接器每秒可處理 2 筆交易,每個節點超出此限制的交易都會遭到節流。根據預設,Integration Connectors 會為連線分配 2 個節點 (以提高可用性)。
如要瞭解 Integration Connectors 適用的限制,請參閱「限制」一文。
動作
本節列出 GitHub 連接器支援的動作。如要瞭解如何設定動作,請參閱動作範例。
UpdatePullRequestBranch 動作
這項操作會更新提取要求分支。
UpdatePullRequestBranch 動作的輸入參數
名稱 類型 說明 PullRequestId 字串 提取要求的節點 ID。 ExpectedHeadOid 字串 上游分支的指標參照 OID。 UpdateMethod 字串 要使用的更新分支方法。預設值為「MERGE」。 允許的值為 MERGE 和 REBASE。 AppsDeployStatus 動作的輸出參數
這項動作會傳回狀態 200 (OK),並更新提取要求分支。
如要瞭解如何設定
UpdatePullRequestBranch
動作,請參閱範例。MergePullRequest 動作
這項操作會合併提取要求。
MergePullRequest 動作的輸入參數
名稱 類型 說明 PullRequestId 字串 要合併的提取要求節點 ID。 ExpectedHeadOid 字串 提取要求開頭參照必須相符的 OID,才能允許合併;如果省略,系統不會執行檢查。 CommitHeadline 字串 用於合併提交的提交標題;如果省略,系統會使用預設訊息。 CommitBody 字串 用於合併提交的提交內容主體;如果省略,系統會使用預設訊息。 MergeMethod 字串 要使用的合併方法。預設值為「MERGE」。 允許的值為 MERGE、SQUASH 和 REBASE。 AuthorEmail 字串 要與這次合併作業建立關聯的電子郵件地址。 MergePullRequest 動作的輸出參數
這項操作會傳回狀態 200 (OK),並合併提取要求。
如要瞭解如何設定
MergePullRequest
動作,請參閱範例。DownloadFile 動作
這項操作會從存放區下載檔案。
DownloadFile 動作的輸入參數
名稱 類型 必填 說明 路徑 字串 否 存放區中檔案的路徑。 分支版本 字串 否 檔案下載來源存放區的分支名稱。預設值為主要分支。 LocalPath 字串 否 下載後檔案儲存的本機路徑。 OutputStream 二進位檔 是 檔案資料寫入的輸出串流例項。只有在未提供 LocalPath 時,才會使用輸出串流。 如要瞭解如何設定
DownloadFile
動作,請參閱範例。UploadFile 動作
這項操作會將檔案上傳至存放區。
UploadFile 動作的輸入參數
名稱 類型 必填 說明 路徑 字串 否 存放區中檔案的路徑。 分支版本 字串 否 要上傳檔案的存放區分支版本名稱。預設值為主要分支。 CommitMessage 字串 否 說明檔案上傳期間所做變更的訊息。 SHA 字串 否 檔案的雜湊,用於驗證及更新存放區中的現有檔案。 CommitterName 字串 否 提交檔案的使用者。預設值為已驗證的使用者。 CommitterEmail 字串 否 提交檔案的使用者電子郵件地址。預設值為已驗證的使用者。 AuthorName 字串 否 上傳檔案的作者名稱。預設值為提交者的名稱或已驗證的使用者。 AuthorEmail 字串 否 上傳檔案的作者電子郵件地址。預設值為提交者的電子郵件地址或已驗證使用者的電子郵件地址。 LocalPath 字串 否 下載後檔案儲存的本機路徑。 輸入串流 二進位檔 是 用於讀取檔案資料的輸入串流執行個體。只有在未指定 LocalPath 時,才會使用此屬性。 FileData 字串 否 代表檔案內容的 Base64 編碼字串。只有在未指定 LocalPath 和 InputStream 時,才會使用這個屬性。 如要瞭解如何設定
UploadFile
動作,請參閱範例。動作範例
本節說明如何在這個連接器中執行部分動作。
範例 - UpdatePullRequestBranch
這個範例會擷取應用程式的部署狀態。
- 在「
Configure connector task
」對話方塊中,按一下Action
。 - 選取
UpdatePullRequestBranch
動作,然後按一下「完成」。 - 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下
connectorInputPayload
,然後在Default Value
欄位中輸入類似下列的值:{ "PullRequestId": "PR_kwDOLywhW8537gcA" }
如果動作成功,
UpdatePullRequestBranch
工作的connectorOutputPayload
回應參數會包含類似下列內容的值:{ "pullrequestid": "PR_kwDOLywhW8537gcA" }
範例 - MergePullRequest
這個範例會合併提取要求。
- 在「
Configure connector task
」對話方塊中,按一下Action
。 - 選取
MergePullRequest
動作,然後按一下「完成」。 - 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下
connectorInputPayload
,然後在Default Value
欄位中輸入類似下列的值:{ "PullRequestId": "PR_kwDOLywhW8537gcA", "CommitHeadline": "Google MERGE", "CommitBody": "This is Google Merge" }
如果動作成功,
MergePullRequest
工作的connectorOutputPayload
回應參數會包含類似下列內容的值:{ "pullrequestid": "PR_kwDOLywhW8537gcA" }
範例 - 從存放區下載檔案
- 在「
Configure connector task
」對話方塊中,按一下Actions
。 - 選取
DownloadFile
動作,然後按一下「完成」。 - 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下
connectorInputPayload
,然後在Default Value
欄位中輸入類似下列的值:{ "Repository": "Google_GitHub_Testing", "Path": "Test_Document.txt" }
如果動作成功,
DownloadFile
工作的connectorOutputPayload
回應參數會包含類似下列內容的值:{ "Success": true, "Details": null, "FileData": "SGkgR29vZ2xlIEhvdyBSIHlvdT8KCkknbSBmaW5l" }
範例 - 將檔案上傳至存放區
- 在「
Configure connector task
」對話方塊中,按一下Actions
。 - 選取
UploadFile
動作,然後按一下「完成」。 - 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下
connectorInputPayload
,然後在Default Value
欄位中輸入類似下列的值:{ "Path": "Sample.txt", "Repository": "Google_GitHub_Testing", "AuthorName": "Cruz", "FileData": "dXBsb2FkIGR0YWEgaW50byB0aGlzIGZpbGUgZnJvbSBHQ1A=", "CommitMessage": "TestCommitFrom GCPcloud", "CommitterEmail": "Charlie@altrostrat.com", "CommitterName": "Charlie", "AuthorEmail": "cruz@altrostrat.com" }
如果動作成功,
UploadFile
工作的connectorOutputPayload
回應參數會包含類似下列內容的值:{ "Success": false, "Details": "Invalid request.\n\n\"sha\" wasn't supplied. ", "CommitSHA": null, "FileSHA": null }
實體作業範例
本節說明如何使用這個連接器執行部分實體作業。
範例 - 列出所有分支
- 在「
Configure connector task
」對話方塊中,按一下Entities
。 - 從
Entity
清單中選取Branches
。 - 選取「
List
」作業,然後按一下「完成」。 - 在「連線器」工作的「工作輸入」部分,您可以根據需求設定 filterClause。
範例 - 列出所有提交
- 在「
Configure connector task
」對話方塊中,按一下Entities
。 - 從
Entity
清單中選取Commits
。 - 選取「
List
」作業,然後按一下「完成」。 - 在「連線器」工作的「工作輸入」部分,您可以根據需求設定 filterClause。
注意事項
- 「Commits」是實體的名稱。您必須使用單引號 (') 傳遞篩選子句的值,例如 City='Redwood City'。其中「City」是資料欄名稱,「Redwood city」是值。
- 您可以使用篩選子句,根據資料欄篩選記錄。舉例來說,如果有 20 筆記錄含有
name = demo16975280986860
,我們可以篩選出 Address 欄為「Redwood City」且 region 欄為「us-east1」的記錄。
您可以對下列實體執行 List 作業:
CommitComments、Forks、IssueComments、Issue、IssueAssignees、AssignableUser、Labels、Milestones、PullRequestReviews、PullRequests、PullRequestComments、 ReleaseAssets、Releases、Watcher、Users、Repositories、Collaborators、OrganizationTeams、OrganizationsMannequins、OrganizationMember、Organization、 Licenses、LicensePermission、LicenseLimitation、LicenseConditions、Projects 和 PullRequestReviewRequests
範例 - 取得 Branches 記錄
- 在「
Configure connector task
」對話方塊中,按一下Entities
。 - 從
Entity
清單中選取Branches
。 - 選取「
Get
」作業,然後按一下「完成」。 - 在此,實體 ID 設為 4。如要設定實體 ID,請在「Connectors」(連結器) 任務的「Task Input」(工作輸入) 部分中,按一下「EntityId」(實體 ID),然後在「Default Value」(預設值) 欄位中輸入
4
。
範例 - 取得存放區記錄
- 在「
Configure connector task
」對話方塊中,按一下Entities
。 - 從
Entity
清單中選取Repositories
。 - 選取「
Get
」作業,然後按一下「完成」。 - 將實體 ID 設為 4,也就是要傳遞的鍵。如要設定實體 ID,請在「Connectors」(連結器) 任務的「Task Input」(工作輸入) 部分中,按一下「EntityId」(實體 ID),然後在「Default Value」(預設值) 欄位中輸入
4
。
在某些情況下,由於有兩個複合鍵,傳遞單一實體 ID 可能會導致錯誤。在這種情況下,請使用篩選子句和必要資料欄。
由於檢視畫面沒有主鍵,因此 Get 作業無法運作。您可以改用 List 作業,並在檢視畫面中套用篩選器,這項作業的功能與 Get 作業類似。
您可以對下列實體執行 Get 作業:
CommitComments、Commits、IssueAssignees、Labels、Milestones、PullRequestReviews、PullRequests、PullRequestComments、ReleaseAssets、Release、Topics、Users、Collaborators、Organizations 和 Licenses
範例 - 建立問題記錄
- 在「
Configure connector task
」對話方塊中,按一下Entities
。 - 從
Entity
清單中選取Issues
。 - 選取「
Create
」作業,然後按一下「完成」。 - 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下
connectorInputPayload
,然後在Default Value
欄位中輸入類似下列的值:{ "Title": "Google_Cloud_GitHub_Issues_Create", "Body": "Please check hence raising the Feature Request for the same." }
執行這個範例後,Connector 工作的
connectorOutputPayload
輸出變數會傳回類似下列內容的回應:{ "Id": "I_kwDOLywhW86Sd-xF" }
範例 - 建立 PullRequests 記錄
- 在「
Configure connector task
」對話方塊中,按一下Entities
。 - 從
Entity
清單中選取PullRequests
。 - 選取「
Create
」作業,然後按一下「完成」。 - 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下
connectorInputPayload
,然後在Default Value
欄位中輸入類似下列的值:{ "BaseRefName": "main", "HeadRefName": "New_Branch", "Title": "DEMO_Google_Cloud_PULLRequest", "Body": "This is demo Google_Cloud pull" }
執行這個範例後,Connector 工作的
connectorOutputPayload
輸出變數會傳回類似下列內容的回應:{ "Id": "PR_kwDOLywhW8537gcA" }
範例 - 建立存放區記錄
- 在「
Configure connector task
」對話方塊中,按一下Entities
。 - 從
Entity
清單中選取Repositories
。 - 選取「
Create
」作業,然後按一下「完成」。 - 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下
connectorInputPayload
,然後在Default Value
欄位中輸入類似下列的值:{ "Name": "Google_Cloud_DEMO_REPO", "OwnerId": "O_kgDOCaxLsg", "Visibility": "PUBLIC" }
執行這個範例後,Connector 工作的
connectorOutputPayload
輸出變數會傳回類似下列內容的回應:{ "Id": "R_kgDOMhWBEQ" }
範例 - 更新問題記錄
- 在「
Configure connector task
」對話方塊中,按一下Entities
。 - 從
Entity
清單中選取Issues
。 - 選取「
Update
」作業,然後按一下「完成」。 - 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下
connectorInputPayload
,然後在Default Value
欄位中輸入類似下列的值:{ "Title": "New_Updated_Google_Cloud_Issue", "Body": "Newly Updated from Google_Cloud" }
- 將 entityId 的值設為 I_kwDOLywhW86Sd-xF。如要設定 filterClause 的值,請按一下「entityId」,然後在「Default Value」(預設值) 欄位中輸入
I_kwDOLywhW86Sd-xF
。執行這個範例後,Connector 工作的
connectorOutputPayload
輸出變數會傳回類似下列內容的回應:{ "Id": "I_kwDOLywhW86Sd-xF" }
範例 - 更新 PullRequests 記錄
- 在「
Configure connector task
」對話方塊中,按一下Entities
。 - 從
Entity
清單中選取PullRequests
。 - 選取「
Update
」作業,然後按一下「完成」。 - 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下
connectorInputPayload
,然後在Default Value
欄位中輸入類似下列的值:{ "Title": "Updated_Google_Cloud_PULL", "Body": "Update New pull Body" }
- 將 entityId 的值設為 PR_kwDOLywhW8537gcA。如要設定 filterClause 的值,請按一下「entityId」,然後在「Default Value」(預設值) 欄位中輸入
PR_kwDOLywhW8537gcA
。執行這個範例後,Connector 工作的
connectorOutputPayload
輸出變數會傳回類似下列內容的回應:{ "Id": "PR_kwDOLywhW8537gcA" }
範例 - 更新存放區記錄
- 在「
Configure connector task
」對話方塊中,按一下Entities
。 - 從
Entity
清單中選取Repositories
。 - 選取「
Update
」作業,然後按一下「完成」。 - 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下
connectorInputPayload
,然後在Default Value
欄位中輸入類似下列的值:{ "Name": "Updated_New_Google_Cloud_Repo" }
- 將 entityId 的值設為 R_kgDOMhWBEQ。如要設定 filterClause 的值,請按一下「entityId」,然後在「Default Value」(預設值) 欄位中輸入
R_kgDOMhWBEQ
。執行這個範例後,Connector 工作的
connectorOutputPayload
輸出變數會傳回類似下列內容的回應:{ "Id": "R_kgDOMhWBEQ" }
範例 - 刪除 PullRequestReviewRequests 記錄
- 在「
Configure connector task
」對話方塊中,按一下Entities
。 - 從
Entity
清單中選取PullRequestReviewRequests
。 - 選取「
Delete
」作業,然後按一下「完成」。 - 設定 filterClause 的值,按一下 filterClause,然後在「Default Value」(預設值) 欄位中輸入
PullRequestId= 'PR_kwDOLywhW85yNWPa' and RequestedReviewerUserId= 'U_kgDOCebPLA'
。
在本例中,PullRequestReviewRequests 是資料表的名稱,篩選子句的值應直接傳遞。
例如 PullRequestId= 'PR_kwDOLywhW85yNWPa' 和 RequestedReviewerUserId= 'U_kgDOCebPLA'。
在此,PullRequestId= 'PR_kwDOLywhW85yNWPa' 和 RequestedReviewerUserId= 'U_kgDOCebPLA' 是應傳遞的不重複主鍵值。在整合中建立 GitHub 連線
建立連線後,Apigee Integration 和 Application Integration 都會提供該連線。您可以在整合中透過「連接器」工作使用連線。
- 如要瞭解如何在 Apigee Integration 中建立及使用「連線器」工作,請參閱「連線器工作」。
- 如要瞭解如何在 Application Integration 中建立及使用「連線器」工作,請參閱「連線器工作」。
向 Google Cloud 社群尋求協助
如要發布問題及討論這個連接器,請前往 Cloud 論壇的 Google Cloud 社群。後續步驟