第1章 GitHub リポジトリーの検出を有効にする
GitHub リポジトリーを自動的に検出して取り込むように Developer Hub を設定することを検討してください。リポジトリーに catalog-info.yaml ファイルが含まれている場合、Developer Hub はリポジトリーをコンポーネントとしてカタログに取り込みます。
前提条件
- カスタムの Developer Hub アプリケーション設定を追加した。また、その設定を変更するための十分な権限を持っている。
- GitHub アプリケーション を作成および管理するのに十分な権限が GitHub にある。
手順
Developer Hub が GitHub API にアクセスできるようにするには、GitHub アプリケーションを作成します。きめ細かな権限を使用し、アプリケーションがアクセスできるリポジトリーをより細かく制御して、有効期間の短いトークンを使用するには、OAuth アプリケーションではなく GitHub アプリケーションを選択します。
次の設定で GitHub アプリケーションを登録します。
- GitHub App 名
-
GitHub アプリケーションを識別する一意の名前 (例:
integrating-with-rhdh-<GUID>) を入力します。 - Homepage 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" をクリアします。
- アプリケーションの権限
アプリケーションのアクセスレベルを定義するには、権限を選択します。ニーズに合わせて権限を調整します。
- ソフトウェアコンポーネントの読み取り
- 内容
-
Read-only - コミットステータス
-
Read-only
- 組織データの読み取り
- メンバー
-
Read-only
- ソフトウェアテンプレートの公開
ソフトウェアテンプレートに同じ GitHub アプリケーションを使用する場合は、権限を設定します。
- 管理
-
Read & write(リポジトリーの作成用) - 内容
-
Read & write - メタデータ
-
Read-only - プルリクエスト
-
Read & write - Issues
-
Read & write - ワークフロー
-
Read & write(テンプレートに GitHub ワークフローが含まれている場合) - Variables
-
Read & write(テンプレートに GitHub Action リポジトリー変数が含まれている場合) - シークレット
-
Read & write(テンプレートに GitHub Action リポジトリーシークレットが含まれている場合) - 環境
-
Read & write(テンプレートに GitHub 環境が含まれている場合)
- 組織の権限
- メンバー
-
Read-only
- この GitHub App はどこにインストールできますか?
-
Only on this accountを選択します。
-
General
Clients secrets セクションで、Generate a new client secret をクリックします。 -
General
Private keys セクションで、Generate a private key をクリックします。 - Install App タブで、GitHub アプリケーションをインストールするアカウントを選択します。
次のステップのために以下の値を保存します。
- アプリケーション ID
- クライアント ID
- クライアントシークレット
- 秘密鍵
GitHub 認証情報を Developer Hub に追加するには、以下のキーと値のペアを Developer Hub シークレット に追加します。それぞれの環境変数名を使用することで、Developer Hub 設定ファイルでこれらのシークレットを使用できます。
GITHUB_INTEGRATION_APP_ID- 保存した アプリケーション ID を入力します。
GITHUB_INTEGRATION_CLIENT_ID- 保存した クライアント ID を入力します。
GITHUB_INTEGRATION_CLIENT_SECRET- 保存した クライアントシークレット を入力します。
GITHUB_INTEGRATION_HOST_DOMAIN-
GitHub ホストドメインを入力します (
github.com)。 GITHUB_INTEGRATION_ORGANIZATION- '<your_github_organization_name>' などの GitHub 組織名を入力します。
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 統合を設定します。GitHub 統合を有効にするための必須フィールドを含む
app-config.yamlファイルフラグメント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}