

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 正在连接 GitLab
<a name="connecting-to-cicd-pipelines-connecting-gitlab"></a>

GitLab 集成使 AWS DevOps 代理能够监控来自 GitLab 管道的部署，为事件响应期间的因果调查提供信息。这种集成遵循两个步骤：在账户级别注册 GitLab，然后将特定项目连接到单个代理空间。

## 注册 GitLab （账户级别）
<a name="registering-gitlab-account-level"></a>

GitLab 在 AWS 账户级别注册，并在该账户中的所有代理空间之间共享。每个注册都链接到一个 GitLab 用户或一个 GitLab 群组。

### 第 1 步：导航到管道提供商
<a name="step-1-navigate-to-pipeline-providers"></a>

1. 登录到 AWS 管理控制台

1. 导航到 AWS DevOps 代理控制台

1. 转到**能力提供者**页面（可从侧面导航中访问）

1. **GitLab**在 “**管道” 下的 “**可用**提供商” 部分中查找**，然后选择 “**注册” **

### 步骤 2：配置 GitLab 连接
<a name="step-2-configure-gitlab-connection"></a>

在 GitLab 注册页面上，配置以下内容：

**连接类型 **-选择您是以个人身份还是群组进行连接：
+ **个人**（默认）-带有 GitLab 用户名和个人资料的个人用户帐户
+ **群组 ** — 在中 GitLab，您可以使用群组同时管理一个或多个相关项目

**GitLab 实例类型 ** — 选择您要连接的 GitLab 实例类型：
+ **GitLab.com**（默认）— 公共 GitLab 服务
+ **GitLab Self-Managed**— 选中 “**使用 GitLab 自托管终端节点**” 复选框并提供您的 GitLab 实例的 URL

#### 的私有连接 GitLab Self-Managed
<a name="private-connectivity-for-gitlab-self-managed"></a>

**使用私有连接连接到终端节点 **-如果无法通过公共互联网访问您的 GitLab Self-Managed 实例，请选择此选项，让 AWS DevOps 代理通过私有连接访问您的 VPC。在注册之前创建私有连接 GitLab，然后在此处选择现有连接。有关更多信息，请参阅 [连接到私有托管的工具](configuring-integrations-and-knowledge-connecting-to-privately-hosted-tools.md)。

**访问令牌 ** — 提供 GitLab 个人访问令牌：

1. 在单独的浏览器选项卡中，登录您的 GitLab 账户

1. 导航到您的用户设置并选择**访问令牌 **

1. 使用以下权限创建新的个人访问令牌：
   + `read_repository`— 需要访问存储库内容
   + `read_virtual_registry`— 需要访问虚拟注册表信息
   + `read_registry`— 需要访问注册表信息
   + `api`— 读取和写入 API 访问权限所必需的
   + `self_rotate`-轮换代币是必需的。 AWS DevOps 代理目前不支持此功能，但将在以后支持。现在添加可以防止将来需要创建新代币。

1. 将令牌到期时间设置为自当前日期起最多 365 天

1. 复制生成的代币

1. 返回 AWS DevOps 代理控制台

1. 将令牌粘贴到 “访问令牌” 字段中

### 第 3 步：完成注册
<a name="step-3-complete-registration"></a>

**（可选）标签 **-为组织目的向 GitLab 注册添加 AWS 标签。

选择 “**下一步**” 查看您的配置，然后选择 “**提交” ** 以完成 GitLab 注册过程。系统将验证您的访问令牌并建立连接。

## 将项目连接到代理空间
<a name="connecting-projects-to-an-agent-space"></a>

在账户 GitLab 级别注册后，您可以将特定项目连接到单个代理空间：

1. 在 AWS DevOps 代理控制台中，选择您的代理空间

1. 转到 ** “**能力” 选项卡

1. 在 “**管道**” 部分，选择 “**添加” **

1. **GitLab**从可用提供商列表中选择

1. 选择包含您要使用的项目的 GitLab 注册

1. 选择与您的代理空间相关的 GitLab 项目

1. 选择**保存**

AWS DevOps 代理监控这些项目是否有来自 GitLab 管道的部署，为因果调查提供信息。单个代理空间可以使用来自多个注册的项目。要从其他注册中添加项目，请重复这些步骤。

## 配置代码审查和自动测试
<a name="configuring-code-review-and-automated-testing"></a>

当您在 GitLab 连接步骤中选择项目时，它们会自动添加到 “**代码审查和自动测试**” 部分。本节配置哪些项目会自动触发[发布就绪代码审查](release-management-release-readiness-code-review.md)和自动测试功能。

代码审查和自动测试配置包括：
+ **功能 **-为每个项目选择代码审查和自动测试功能。该部分提供了两个每个项目的设置：
  + **自动触发变更审查 **-为项目启用后，[发布就绪代码审查](release-management-release-readiness-code-review.md)每次打开或更新合并请求时， DevOps 代理都会自动运行。审查结果以对合并请求的行内注释的形式显示。默认情况下，所有关联的项目均处于启用状态。
  + **自动验证测试 ** — 启用项目后， DevOps Agent 将在代码审查期间在托管验证环境中构建、运行和测试您的代码更改。这提供了除静态分析之外的功能验证。有关更多信息，请参阅[自动验证测试](release-management-release-readiness-code-review.md)。默认情况下，所有关联的项目均处于启用状态。
+ **项目列表 **-显示您在连接步骤中选择的所有项目。使用搜索字段按名称筛选项目。每个项目都有针对这两种功能的独立复选框。
+ **运行时角色**（可选）-选择 DevOps 代理为在所选项目上运行自动化功能而代入的 IAM 角色。此角色用于访问构建期间所需的内部服务，例如私有包注册表和工件存储系统。我们建议使用与您的主要代理角色不同的角色。

要配置自动审查，请执行以下操作：

1. 连接项目后，导航至 GitLab 集成设置中的 “**代码审查和自动测试” ** 部分。

1. 对于每个项目，启用或禁用 “**自动触发变更审查” ** 功能，具体取决于您是否想要自动审查合并请求。

1. 对于每个项目，启用或禁用**自动验证测试**功能，具体取决于您是否希望在托管验证环境[中进行](release-management-release-readiness-code-review.md)自动验证测试。

1. （可选）从 “**运行时角色” ** 下拉列表中选择一个 IAM 角色， DevOps 代理在对所选项目运行自动化功能时将代入该角色。

1. 选择 “**保存” ** 以应用您的配置。

配置完成后，**启用自动触发变更审查的**项目中的任何新合并请求都将自动触发发布就绪代码审查。如果还启用了**自动验证测试**，则审查包括验证环境中的功能验证。有关代码审查的更多信息，请参阅[发布就绪代码审查](release-management-release-readiness-code-review.md)。

### 高级设置：触发过滤器
<a name="advanced-settings-trigger-filters"></a>

默认情况下，**启用了**自动触发变更审查的项目会对任何目标分支上的每个适用的合并请求事件运行发布准备情况代码审查。使用**高级设置**添加触发过滤器，控制每个项目自动审阅的确切运行时间。

每个过滤器都是一个*过滤器组*，它结合了两个条件：
+ **目标分支**（必填）-一个或多个分支名称或模式，以正则表达式（例如，`main`或`release/.*`）形式输入。只有当合并请求的目标分支匹配其中一种模式时，审查才会触发。
+ **触发事件**（可选）-触发审查的合并请求事件：**合并请求准备好进行审核**或**合并请求已起草**。将此项留空以匹配所有适用事件。

在过滤器组中，所有条件都必须匹配 (AND)。您可以添加多个筛选群组，当任何群组匹配时，系统会触发审核 (OR)。

要配置触发器过滤器，请：

1. 在连接流程中打开 “**高级设置” ** 部分。（要更改现有连接上的过滤器，请在 “**管道” ** 部分选择该连接，选择 “**编辑”**，然后打开 “**高级设置” **。）

1. 找到要配置的项目，然后选择 “**更改审阅**” 选项卡。

1. 选择**添加过滤器组**，然后定义该组的条件：
   + 在**目标分支下**，输入分支名称或模式，然后按 Enter 键或选择**添加**。重复以添加更多图案。
   + （可选）在 “**触发事件” 下**，选择 “**合并请求准备审核” **、“已起草****合并请求” 或两者。将其留空以匹配所有事件。

1. （可选）**再次选择 “**添加筛选器组” 以表达备选条件。

1. 选择 “**保存” ** 以应用您的配置。

每个项目最多可以定义 5 个过滤器组，每个组最多可以定义 20 个模式。每种模式必须是最多 256 个字符的有效正则表达式。如果您未添加任何筛选群组，则审阅将在所有目标分支的所有适用事件上触发。

## 问题排查
<a name="troubleshooting"></a>

有关使用 GitLab Self-Managed 私有连接时出现的 DNS、网络可访问性、安全组或 TLS 错误，请参阅。[排除私有连接故障](configuring-integrations-and-knowledge-troubleshooting-private-connections.md)

### 有些项目没有出现在项目列表中
<a name="some-projects-dont-appear-in-the-project-list"></a>

**症状**

您可以 GitLab 成功注册，但是您希望连接的一个或多个项目未出现在项目列表中。

**原因**

对于个人连接， AWS DevOps 代理会列出访问令牌的用户为成员的项目。如果该用户不是成员，则该项目不会出现，即使该用户可以通过其他 GitLab 访问路径查看该项目也是如此。

**解决方法**
+ 确认访问令牌的用户是您要连接的每个项目的成员。
+ 确认令牌未过期且包含[步骤 2：配置 GitLab 连接中列出的范围](#step-2-configure-gitlab-connection)。
+ 更改项目成员资格或替换令牌后，刷新项目列表。

### 无法连接 GitLab 项目
<a name="a-gitlab-project-cant-be-connected"></a>

**症状**

使用`GitLab project '<path>' (ID: <id>) is not accessible to this GitLab token.`或连接项目失败 `GitLab is currently throttling requests (HTTP 429). Please retry the association later.`

**原因**

该令牌无法读取所选项目，或者 GitLab 暂时限制了项目验证请求。

**解决方法**
+ 确认令牌有效且其用户或群组可以访问所选项目。
+ 确认令牌包含[步骤 2：配置 GitLab 连接中所需的范围](#step-2-configure-gitlab-connection)。
+ 如果 GitLab 返回 HTTP 429，请等待并重试关联。

## 管理 GitLab 连接
<a name="managing-gitlab-connections"></a>
+ **更新访问令牌 ** — 如果您的访问令牌过期或需要更新，则可以在不取消注册的情况下对其进行轮换。在**能力提供者**页面上，选择您的 GitLab 注册，**从 “**操作**” 菜单中选择 “**更新”，然后输入新令牌。您的代理空间关联和项目连接将被保留。
+ **查看关联项目 **-在 AWS DevOps 代理控制台中，选择您的代理空间并转到功能选项卡，在 “管道” 部分查看关联项目。
+ **删除 GitLab 连接 **-要断开 GitLab 项目与代理空间的连接，请在 “管道” 部分选择该连接，然后选择 “**删除” **。要完全删除 GitLab 注册，请先将其从所有代理空间中删除，然后在账户级别删除注册。