Skip to main content

GitLab 组织数据

可以设置 Backstage 目录,以便直接从 GitLab 获取组织数据(用户和组)。用户实体,以反映您的组织设置。

由于该提供程序不在默认提供程序之列,因此首先需要安装 Gitlab 提供程序插件:

# From your Backstage root directory
yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-gitlab

然后将插件添加到插件目录中packages/backend/src/plugins/catalog.ts:

/* packages/backend/src/plugins/catalog.ts */
import { GitlabOrgDiscoveryEntityProvider } from '@backstage/plugin-catalog-backend-module-gitlab';

const builder = await CatalogBuilder.create(env);
/** ... other processors and/or providers ... */
builder.addEntityProvider(
...GitlabOrgDiscoveryEntityProvider.fromConfig(env.config, {
logger: env.logger,
// optional: alternatively, use scheduler with schedule defined in app-config.yaml
schedule: env.scheduler.createScheduledTaskRunner({
frequency: { minutes: 30 },
timeout: { minutes: 3 },
}),
}),
);

配置

要使用实体提供程序,您需要一个Gitlab 集成设置.

integrations:
gitlab:
- host: gitlab.com
token: ${GITLAB_TOKEN}

这将查询 GitLab 实例中的所有用户和组。 视数据量而定,这可能需要大量时间和资源。

使用的令牌必须具有read_api范围,获取的用户和组将是供应令牌的账户可见的用户和组。

catalog:
providers:
gitlab:
yourProviderId:
host: gitlab.com
orgEnabled: true
group: org/teams # Required for gitlab.com when `orgEnabled: true`. Optional for self managed. Must not end with slash. Accepts only groups under the provided path (which will be stripped)
groupPattern: '[\s\S]*' # Optional. Filters found groups based on provided pattern. Defaults to `[\s\S]*`, which means to not filter anything

小组

group参数,在计算唯一实体名称时,将从每个匹配组中去掉相应的路径前缀。grouporg/teams的名称org/teams/avengers/gotgavengers-gotg.

对于 gitlab.com,当orgEnabled: true,"......group参数是必需的,以便将摄取限制在组织内的一个组。Group只有包含成员的组才会被摄取。

用户

对于自助托管,所有User实体从整个实例中摄取。

对于 gitlab.comUser的用户的实体直系或继承成员的顶层组将被摄取。

限制在提供程序中摄取 "用户 "和 "组 "实体

时,可以限制提供程序摄取的实体类型。orgEnabled: true有以下内容rules配置,使其仅限于UserGroup实体。

catalog:
providers:
gitlab:
yourOrgDataProviderId:
host: gitlab.com
orgEnabled: true
group: org/teams
rules:
- allow: [Group, User]

疑难解答

注意:如果正在摄取的任何组都是空组(即不包含任何项目),且提供令牌的用户通过小组共享你没有看到预期数量的Group目录中的实体,您可能会遇到以下问题Gitlab 问题.