ChatGPT 和 Codex 中的 GitLab 功能目前處於測試階段。
概覽
使用 GitLab Self-Managed 應用程式範本,為 GitLab Self-Managed 或 GitLab Dedicated 執行個體建立工作區專用的應用程式草稿。提供 GitLab 主機名稱和 OAuth 應用程式憑證,檢查應用程式草稿,然後發佈供符合資格的工作區成員使用。發佈後,即可在 ChatGPT 對話和 Codex 工作階段中使用應用程式已啟用的操作。
如需了解支援的 GitLab 功能、適用範圍、權限、資料使用方式及網絡要求,請參閱:將 GitLab 連接至 ChatGPT 和 Codex。
設定內容
你將從 GitLab Self-Managed 應用程式範本建立工作區專用的應用程式。此應用程式會使用:
在你的 GitLab Self-Managed 或 GitLab Dedicated 主機上註冊的 GitLab OAuth 應用程式。
GitLab OAuth 的應用程式 ID 和密鑰,用於使用者授權。
必要的 OAuth 權限範圍:api、write_repository 和 openid。
你的 GitLab 主機名稱,例如 gitlab.example.com,用以推導出網頁、API、授權和權杖端點。
開始前的準備
你需要:
ChatGPT 工作區管理員或擁有者權限。
在 GitLab 中建立 OAuth 應用程式的權限:由群組擁有的應用程式需要群組擁有者權限;適用於整個執行個體的應用程式則需要執行個體管理員權限。
只有 GitLab 主機名稱,不含 https://、連接埠或路徑。請使用 GitLab Self-Managed 或 GitLab Dedicated 主機,而非 gitlab.com。
決定 ChatGPT 和 Codex 應支援哪些 GitLab 操作,例如程式碼庫搜尋、合併請求工作流程、議題工作流程、檔案編輯,或更廣泛的 Codex 工作流程。
在不同分頁中保持開啟 ChatGPT 和 GitLab。原樣複製 ChatGPT 顯示的重新導向 URI;請勿自行建立或修改。
如要從管理控制台開啟應用程式頁面,請選取目標 ChatGPT 工作區,開啟外掛程式,然後選取管理舊版應用程式。
需要準備的值
GitLab 主機名稱:例如 gitlab.example.com。
重新導向 URI:從 ChatGPT 範本設定流程中複製。
GitLab OAuth 應用程式 ID。
GitLab OAuth 密鑰。
OAuth 權限範圍:從 ChatGPT 範本設定流程中複製。
Start the template setup in ChatGPT
In ChatGPT, switch to the workspace where the app should be available.
Go to Workspace settings > Apps.
In Directory, find GitLab, open its GitLab Self-Managed app template, and select Enable.
Enter a clear app name and description.
Enter the GitLab hostname, such as gitlab.example.com.
Copy the Redirect URI shown in ChatGPT, and keep this tab open.
Example: https://chatgpt.com/connector/oauth/<redirect_id>. Do not remove the redirect ID, add a trailing slash, or replace the URI with a generic ChatGPT URL.
在 GitLab 中建立 GitLab OAuth 應用程式
選擇建立應用程式的位置
開啟你的 GitLab 主機,例如 https://gitlab.example.com。
選擇建立適用於整個執行個體的應用程式,還是由群組擁有的應用程式。此選擇會決定由誰管理應用程式;專案存取權限仍取決於授權使用者的 GitLab 權限及已授予的 OAuth 權限範圍。
如要建立適用於整個執行個體的應用程式,請前往管理 > 應用程式。如要建立由群組擁有的應用程式,請前往該群組的設定 > 應用程式。
新增應用程式詳細資料
選取新增應用程式或加入新應用程式。
輸入清晰易辨的應用程式名稱,例如 GitLab Self-Managed 或 GitLab Dedicated。
在重新導向 URI 中,原樣貼上從 ChatGPT 複製的 URI。
為此伺服器端 OAuth 應用程式保持啟用機密選項。
設定存取權限並儲存
對於適用於整個執行個體的應用程式,GitLab 建議選取受信任。這樣便會略過使用者授權提示。
選取 api、write_repository 和 openid 權限範圍。
檢查哪些人可以管理應用程式,並確認授權的 GitLab 使用者具備適當的群組和專案權限。
儲存應用程式。
OAuth 權限範圍要求
範本會為 ChatGPT 和 Codex 中已啟用的 GitLab 操作,要求以下 OAuth 權限範圍:
api:應用程式提供的 GitLab API 操作所需,包括合併請求、議題及 CI/CD 操作。
write_repository:透過 Git 向程式碼庫執行寫入操作所需。
openid:取得 OpenID Connect 身分及成員資格資訊所需。
複製 GitLab OAuth 憑證
在已儲存的 GitLab 應用程式中,複製應用程式 ID 和密鑰。請將密鑰視為憑證妥善保管。如密鑰外洩,請在 GitLab 中重新產生密鑰,並建立新的工作區應用程式。
在 ChatGPT 中完成設定
返回 ChatGPT 範本設定分頁。
將 GitLab 的應用程式 ID 貼上至 OAuth 用戶端 ID。
將 GitLab 的密鑰貼上至 OAuth 用戶端密鑰。
確認 GitLab 主機名稱欄位只包含主機名稱,例如 gitlab.example.com。
選取建立草稿。
開啟應用程式草稿的詳細資料,並檢查「角色存取權限」和「設定操作」。
發佈及管理供 ChatGPT 和 Codex 使用的應用程式
建立應用程式草稿後,成員不會自動獲得使用權。檢查草稿後:
為應用程式草稿選取發佈。
前往管理控制台,選取目標 ChatGPT 工作區,開啟外掛程式,然後確認預定角色可使用 GitLab。
檢查應使用此應用程式的角色所獲授的角色存取權限。
在設定操作中,檢查可用的讀取和寫入操作。
在設定批准要求中,選擇哪些情況下 ChatGPT 或 Codex 使用應用程式前,必須先由使用者批准操作。
請一位具有存取權限的測試使用者,從外掛程式目錄或設定 > 外掛程式開啟 GitLab。確認使用者可以安裝外掛程式,並連接至從 GitLab Self-Managed 範本建立的應用程式。
這些應用程式批准設定適用於 ChatGPT 對話和 Codex 對話串。
設定 GitLab 活動以使用 Codex 程式碼審查
應用程式發佈後,如計劃使用 Codex 程式碼審查,請在 Codex 中設定 GitLab 活動。此活動設定會配置所需的 Webhook 事件。
開啟 Codex 連接器設定。
設定工作區服務帳戶。讓 Codex 建立帳戶,或提供現有服務帳戶的個人存取權杖。
為專案或其其中一個上層群組啟用 GitLab 活動。
如 Codex 需要執行編碼任務或使用專案專屬設定,請建立專案環境。
GitLab 應用程式會使用使用者的 OAuth 授權,在 ChatGPT 和 Codex 中執行讀取及已啟用的操作。當 Codex 在 GitLab Self-Managed 或 GitLab Dedicated 上執行審查寫入操作時,工作區管理的服務帳戶權杖會決定 Codex 以甚麼身分,以及在哪些專案中發表留言或回應。
延伸閱讀:使用 Codex 審查 GitLab 合併請求。
連接並測試 GitLab 應用程式
以具有存取權限的使用者身分,從外掛程式目錄或設定 > 外掛程式開啟 GitLab。選取安裝外掛程式,然後選取連接。
如工作區有多個 GitLab 應用程式,請選擇對應此 GitLab Self-Managed 或 GitLab Dedicated 主機的應用程式。
收到提示時,授權 GitLab OAuth 應用程式。
先在 ChatGPT 或 Codex 中執行小規模的讀取操作,例如列出可存取的專案,或擷取已知的合併請求。
如已啟用寫入操作,請先在低風險專案中,以及每個計劃使用這些操作的產品中進行測試,再擴大推行。
主機名稱與 OAuth 運作方式
應用程式會根據主機名稱推導出 GitLab 端點。只需輸入主機名稱,例如 gitlab.example.com。請勿包含 https://、API 或程式碼庫路徑、連接埠,亦不可使用 gitlab.com。此範本適用於 GitLab Self-Managed 或 GitLab Dedicated。如使用 GitLab.com (SaaS),請使用 GitLab 應用程式。
排解 GitLab Self-Managed 應用程式設定問題
重新導向 URI 不符:確認 GitLab OAuth 應用程式的重新導向 URI 與 ChatGPT 顯示的重新導向 URI 完全一致。
ChatGPT 無法建立或儲存應用程式草稿:確認已填寫主機名稱、應用程式 ID、密鑰及重新導向 URI。
驗證成功但專案呼叫失敗:確認授權的 GitLab 使用者可存取該專案,且 OAuth 應用程式具備範本要求的權限範圍。
API 傳回 403 或權限不足:確認已連接的 GitLab 帳戶具備所需的專案或群組權限,且 OAuth 應用程式包含範本要求的權限範圍。
無法存取任何專案:確認使用者具備專案存取權限、已連接至目標 GitLab 執行個體,並已在 ChatGPT 或 Codex 中選取正確的 GitLab 應用程式。
