第 1 章 启用 GitHub 仓库发现
考虑配置 Developer Hub 来自动发现和模拟您的 GitHub 存储库。如果存储库包含 catalog-info.yaml 文件,Developer Hub 会将存储库作为组件放入目录中。
先决条件
- 您 添加了自定义 Developer Hub 应用程序配置,并有足够的权限来修改它。
- 在 GitHub 中有足够的权限来创建和管理 GitHub 应用程序。
流程
要允许 Developer Hub 访问 GitHub API,请创建一个 GitHub 应用程序。选择 GitHub 应用程序而不是使用精细的权限,可以更好地控制应用程序可访问的存储库,并使用简短令牌。
使用以下配置注册 GitHub 应用程序:
- GitHub 应用程序名称
-
输入用于标识 GitHub 应用程序的唯一名称,如 integration
-with-rhdh- <GUID>。 - 主页 URL
-
输入您的 Developer Hub URL:
https:// <my_developer_hub_domain>。 - 授权回调 URL
-
输入您的 Developer Hub 身份验证后端 URL:
https:// <my_developer_hub_domain> /api/auth/github/handler/frame。 - Webhook
- 清除 "Active",因为身份验证和目录供应商不需要这样做。
- 应用程序权限
选择权限来为应用程序定义访问权限级别。根据您的需要调整权限:
- 读取软件组件
- 内容
-
只读 - 提交状态
-
只读
- 读取机构数据
- 成员
-
只读
- 发布软件模板
如果您打算为软件模板使用相同的 GitHub 应用程序,请设置权限。
- 管理
-
读写(用于创建软件仓库) - 内容
-
读取和写入 - 元数据
-
只读 - Pull requests
-
读取和写入 - 问题
-
读取和写入 - 工作流
-
读取和写入(如果模板包含 GitHub 工作流) - 变量
-
读取和写入(如果模板包含 GitHub Action 存储库变量) - Secrets
-
读取和写入(如果模板包含 GitHub Action Repository Secrets) - 环境
-
读取和写入(如果模板包含 GitHub 环境)
- 机构权限
- 成员
-
只读
- 在哪里可以安装此 GitHub 应用程序?
-
仅在此帐户上选择。
-
在 General
Clients secrets 部分中,点 Generate a new client secret。 -
在 General
Private key 部分中,点 Generate a private key。 - 在 Install App 选项卡中,选择要安装 GitHub App 的帐户。
为下一步保存以下值:
- App ID
- 客户端 ID
- 客户端 secret
- 私钥
要将 GitHub 凭证添加到 Developer Hub,请将以下键/值对添加到 Developer Hub secret 中。您可以使用其相应的环境变量名称在 Developer Hub 配置文件中使用这些 secret。
GITHUB_INTEGRATION_APP_ID- 输入保存 的应用程序 ID。
GITHUB_INTEGRATION_CLIENT_ID- 输入保存 的客户端 ID。
GITHUB_INTEGRATION_CLIENT_SECRET- 输入保存 的客户端 Secret。
GITHUB_INTEGRATION_HOST_DOMAIN-
输入 GitHub 主机域:
github.com。 GITHUB_INTEGRATION_ORGANIZATION- 输入您的 GitHub 机构名称,如 ' <your_github_organization_name>'。
GITHUB_INTEGRATION_PRIVATE_KEY_FILE- 输入保存 的私钥。
在
dynamic-plugins.yaml文件中启用plugin-catalog-backend-module-github插件。此插件通过在 GitHub 机构中扫描
catalog-info.yaml文件的存储库来发现目录实体。它提供通过catalog.locations手动注册组件的自动替代方案。当存储库包含catalog-info.yaml文件时,实体会作为组件放在目录中。dynamic-plugins.yaml文件片段plugins: - package: './dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github' disabled: false通过在自定义 Developer Hub
app-config.yaml配置文件中添加catalog.providers.github和integrations.github部分来配置 GitHub 集成:app-config.yaml文件片段与强制字段启用 GitHub 集成catalog: providers: github: providerId: organization: "${GITHUB_INTEGRATION_ORGANIZATION}" schedule: frequency: minutes: 30 initialDelay: seconds: 15 timeout: minutes: 15 integrations: github: - host: ${GITHUB_INTEGRATION_HOST_DOMAIN} apps: - appId: ${GITHUB_INTEGRATION_APP_ID} clientId: ${GITHUB_INTEGRATION_CLIENT_ID} clientSecret: ${GITHUB_INTEGRATION_CLIENT_SECRET} privateKey: | ${GITHUB_INTEGRATION_PRIVATE_KEY_FILE}