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;請勿自行建立或修改。
需準備的值
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 > Plugins.
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 發佈及管理應用程式
建立草稿應用程式後,系統不會自動向成員提供該應用程式。檢查草稿後:
為草稿應用程式選取發佈。
前往工作區設定 > 外掛程式,並確認預期角色可使用 GitLab。
檢查應使用此應用程式之角色的角色存取權。
在設定操作中,檢查可用的讀取及寫入操作。
在設定核准中,選擇用戶何時必須先核准操作,ChatGPT 或 Codex 才可使用此應用程式。
要求具有存取權的測試用戶從外掛程式目錄或設定 > 外掛程式開啟 GitLab。確認用戶可安裝外掛程式,並連接至使用 GitLab Self-Managed 範本建立的應用程式。
這些應用程式核准設定適用於 ChatGPT 對話及 Codex 討論串。
為 Codex 程式碼審查設定 GitLab 活動
發佈應用程式後,如您計劃使用 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 應用程式。
