> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cloudthinker.io/llms.txt
> Use this file to discover all available pages before exploring further.

# GitLab

> Kết nối GitLab.com hoặc GitLab tự quản lý để agent có thể đọc project, merge request và pipeline, và Review có thể bình luận

Kết nối GitLab để các agent CloudThinker có thể đọc project, merge request, issue và pipeline CI/CD của bạn, và [Review](https://docs.cloudthinker.io/vi/guide/code-review/overview.md) có thể đăng review mã bằng AI trên merge request. Bạn đăng nhập bằng **OAuth** trên GitLab.com, hoặc dán một **project hoặc group access token** cho GitLab.com hoặc instance tự quản lý.

## Điều kiện tiên quyết

* Quyền truy cập các project GitLab mà bạn muốn agent đọc.
* Với phương thức token: vai trò **Maintainer** hoặc **Owner** trên project hoặc group, để bạn có thể tạo access token.
* Với Review: vai trò **Maintainer** trên project hoặc group, vì GitLab chỉ cho Maintainer thêm webhook. Bản thân token có thể giữ ở **Developer**.
* Vai trò **Admin** trong workspace CloudThinker, vai trò có thể thêm và chỉnh sửa kết nối. Xem [Vai trò](https://docs.cloudthinker.io/vi/guide/security/roles.md).

## Chọn phương thức

| Phương thức | Dùng khi | Bình luận hiển thị dưới tên | Gói GitLab |
| - | - | - | - |
| **OAuth** | Bạn dùng GitLab.com và muốn thiết lập nhanh nhất | Người dùng GitLab đã đăng nhập | Mọi gói trên GitLab.com |
| **Access Token** | Bạn chạy GitLab tự quản lý, hoặc muốn giới hạn quyền truy cập trong một project hoặc group | Một bot user gắn với token | GitLab.com: Premium hoặc Ultimate. Tự quản lý: mọi gói |

OAuth chỉ khả dụng trên GitLab.com. Instance tự quản lý dùng access token.

## Thiết lập

Trước tiên, mở kết nối. Trên thanh bên, nhấn **More → Workspace settings → Connections**. Ở tab **Builtin Connections**, tìm **GitLab** và nhấn **Connect**. Hộp thoại **Connect GitLab** mở ra với hai tab.

**OAuth**

**1. Bắt đầu đăng nhập**

Ở tab **OAuth**, nhấn **Connect to GitLab**. GitLab mở ra và liệt kê những gì CloudThinker yêu cầu: quyền đọc và ghi repository, quyền API cho webhook và merge request, và hồ sơ của bạn (email, username).

**2. Cấp quyền cho CloudThinker**

Đăng nhập bằng một người dùng GitLab có thể thấy các project bạn muốn, rồi nhấn **Authorize**. Review đăng bình luận dưới tên người dùng này, nên hãy cân nhắc dùng một tài khoản GitLab riêng.

**Trạng thái thành công:** bạn quay lại CloudThinker với thông báo **GitLab Connected!** và GitLab hiển thị **Connected** trên tab **Builtin Connections**.

**Access Token**

**1. Tạo token trong GitLab**

Trong GitLab, mở project hoặc group và vào **Settings → Access Tokens**. Nhấn **Add new token** và đặt:

* **Role**: `Developer` trở lên
* **Scopes**: `api`
* **Expiration date**: ngày phù hợp với chính sách xoay vòng của bạn. GitLab giới hạn token ở 365 ngày theo mặc định, và admin của bản tự quản lý có thể đặt giới hạn ngắn hơn

Nhấn **Create** và sao chép token. Token bắt đầu bằng `glpat-`.

**2. Nhập chi tiết kết nối**

Trong hộp thoại **Connect GitLab**, mở tab **Access Token** và điền các trường trong [Chi tiết kết nối](#chi-tiết-kết-nối).

**3. Xác thực và kết nối**

Nhấn **Validate Token**. CloudThinker hiển thị **Token works** và số project token có thể thấy. Nhấn **Connect**.

**Trạng thái thành công:** CloudThinker hiển thị **Connected to GitLab** và GitLab hiển thị **Connected** trên tab **Builtin Connections**.

> [!NOTE]
>
> Không như GitHub và Bitbucket, CloudThinker không tự đăng ký webhook GitLab cho bạn. Trước khi Review có thể bình luận, một Maintainer cần thêm webhook trong project hoặc group theo hướng dẫn [Cấu hình webhook](https://docs.cloudthinker.io/vi/guide/code-review/provider-auth.md#cấu-hình-webhook). Câu hỏi cho agent vẫn hoạt động khi chưa có webhook.

## Chi tiết kết nối

Các trường này chỉ xuất hiện ở tab **Access Token**. OAuth không có trường nào: GitLab cấp thông tin xác thực và CloudThinker lưu trữ chúng.

| Trường | Mô tả | Ví dụ |
| - | - | - |
| **GitLab URL** | URL instance của bạn, không có dấu gạch chéo ở cuối. Nếu GitLab chạy dưới một đường dẫn tương đối, hãy bao gồm đường dẫn đó | `https://gitlab.com`, `https://gitlab.example.com` hoặc `https://example.com/gitlab` |
| **Token Type** | **Project Access Token** truy cập một project. **Group Access Token** truy cập mọi project trong group | **Group Access Token** |
| **Access Token** | Token bạn đã tạo trong GitLab | `glpat-<your-token>` |

## Quyền yêu cầu

| Phương thức | Yếu tố quyết định quyền truy cập |
| - | - |
| **OAuth** | Mọi thứ người dùng GitLab đã đăng nhập có thể thấy |
| **Project hoặc group access token** | Scope `api` cộng với role của token, giới hạn trong project hoặc group đó |

Token cần role **Developer** trở lên. Token Guest và Reporter có thể đọc nhưng không thể đăng bình luận trên merge request, nên Review không thể đăng các phát hiện.

> [!TIP]
>
> Dùng group access token cho group sở hữu các dịch vụ của bạn. Quyền truy cập nằm gọn trong group đó, bình luận đến từ bot user thay vì đồng nghiệp, và thu hồi token không ảnh hưởng gì khác.

## Kiểm soát quyền truy cập trong CloudThinker

Hai cài đặt trên bảng chi tiết của kết nối giới hạn những gì agent làm. Mở **More → Workspace settings → Connections**, chọn **GitLab** và xem phần **Settings**.

| Cài đặt | Tùy chọn | Tác dụng |
| - | - | - |
| **Repository access** | **All** hoặc **Selected** | **All** cho phép agent đọc mọi project mà thông tin xác thực truy cập được, kể cả project mới. **Selected** giới hạn agent trong các project bạn chọn, và project mới vẫn bị loại trừ cho đến khi bạn thêm vào. |
| **Allow writes** | Bật (mặc định) hoặc tắt | Bật: agent có thể đề xuất thay đổi, và [Rule cùng Approval mode](https://docs.cloudthinker.io/vi/guide/approvals/overview.md) của bạn quyết định từng thay đổi. Tắt: agent chỉ có thể đọc, và mọi thay đổi đều bị từ chối. |

Các cài đặt này chỉ thu hẹp những gì GitLab đã cấp. Việc chọn project nào chạy Review là một bước riêng trong [thiết lập Review](https://docs.cloudthinker.io/vi/guide/code-review/setup.md).

## Khả năng của agent

Thao tác đọc chạy mà không cần hỏi. Thao tác ghi cần bật **Allow writes** và phải qua Rule và Approval mode của bạn trước.

| Khả năng | Agent có thể làm gì |
| - | - |
| **Project** | Liệt kê các project mà kết nối truy cập được và đọc mã nguồn cùng lịch sử |
| **Merge request** | Tóm tắt các merge request đang mở, phê duyệt và thảo luận |
| **Pipeline** | Tìm pipeline thất bại và đọc log job để giải thích lỗi |
| **Issue** | Đọc issue để có ngữ cảnh phân loại và bàn giao |
| **Thay đổi** | Tạo branch, bình luận hoặc mở merge request, thông qua Rule và Approval mode của bạn |

### Xác minh kết nối

```text theme={null}
List the GitLab projects you can reach and how many open merge requests each one has
```

Kết nối hoạt động sẽ nêu đúng tên và số liệu project thật của bạn. Nếu thiếu project, hãy so sánh loại token với nơi các project đó nằm.

### Ví dụ prompt

```text theme={null}
Which open merge requests in the platform group have had no review for more than 3 days?
Why did the latest pipeline on main fail in the api project?
Summarize the merge requests merged into main across our GitLab projects this week
```

## Khắc phục sự cố

> **Validate Token thất bại**
>
> Token đã hết hạn hoặc bị thu hồi, thiếu scope `api`, hoặc **GitLab URL** sai. Kiểm tra URL không có dấu gạch chéo ở cuối và có bao gồm đường dẫn tương đối nếu có, tạo token mới với scope `api` và role **Developer**, rồi xác thực lại.

> **GitLab at your host did not respond in time**
>
> CloudThinker không thể truy cập instance tự quản lý của bạn. Xác nhận URL mở được từ bên ngoài mạng của bạn, hoặc thêm các egress IP của CloudThinker vào allowlist của firewall. Tài liệu này không công bố danh sách egress IP của CloudThinker: hãy hỏi đầu mối liên hệ CloudThinker của bạn, hoặc [liên hệ chúng tôi](https://cloudthinker.io/contact). Xem [Truy cập dịch vụ nội bộ](https://docs.cloudthinker.io/vi/guide/connections/overview.md#truy-cập-dịch-vụ-nội-bộ) để biết các lựa chọn khác, rồi thử lại.

> **Agent không tìm thấy project**
>
> Project token chỉ truy cập một project, và group token chỉ truy cập group đó cùng các subgroup. Dùng group token cho group sở hữu, hoặc đăng nhập OAuth bằng người dùng có thể thấy project. Sau đó kiểm tra **Repository access** có bao gồm project đó.

> **Đã kết nối, nhưng Review không bình luận trên merge request**
>
> Webhook bị thiếu hoặc chưa đầy đủ, hoặc role của token thấp hơn **Developer**. Thêm webhook theo [Cấu hình webhook](https://docs.cloudthinker.io/vi/guide/code-review/provider-auth.md#cấu-hình-webhook) và kiểm tra role của token.

> **Reconnect GitLab to renew its OAuth credentials.**
>
> GitLab không còn chấp nhận phiên đăng nhập đã lưu, ví dụ sau khi người dùng thu hồi quyền truy cập của CloudThinker. Mở kết nối và nhấn **Connect** để đăng nhập lại.

## Bảo mật

* **Quyền tối thiểu** — chỉ cấp các quyền mà agent cần cho trường hợp sử dụng của bạn; bắt đầu với quyền chỉ đọc và mở rộng sau.
* **Chỉ đọc theo mặc định** — sử dụng thông tin xác thực chỉ đọc trừ khi bạn muốn agent thực hiện thay đổi qua kết nối này.
* **Xoay vòng thông tin xác thực** — xoay vòng khóa và token theo lịch trình thông thường của bạn; CloudThinker sẽ lấy giá trị mới khi bạn cập nhật kết nối.
* **Thu hồi khi bàn giao** — xóa thông tin xác thực tại nhà cung cấp khi bạn xóa một kết nối hoặc khi đồng nghiệp rời nhóm.

- **Ưu tiên project hoặc group token.** Loại token này giữ quyền truy cập trong các project bạn chọn và đăng bình luận dưới tên bot user, nên không tài khoản cá nhân nào phát ngôn thay CloudThinker.
- **Đặt ngày hết hạn.** Xoay vòng token trước khi hết hạn, nếu không Review và agent sẽ mất quyền truy cập vào ngày đó. Token GitLab không phải là trường được lưu trong **More → Workspace settings → Connections**, nên biểu tượng bút chì và **Replace…** ở đó không áp dụng. Để thay token mới, mở **Review → Settings**, mở menu **Connection actions** (⋯) trong phần **Connection** và nhấn **Update token**.

## Liên quan

> **[Thiết lập Review](https://docs.cloudthinker.io/vi/guide/code-review/setup.md)**
>
> Chọn project và bắt đầu review mã bằng AI trên merge request

> **[Xác thực nhà cung cấp](https://docs.cloudthinker.io/vi/guide/code-review/provider-auth.md)**
>
> Thêm webhook GitLab và so sánh các nhà cung cấp Git khác


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.