Skip to main content

プレビルドで他のリポジトリにアクセスできるようにする

正常にビルドできるように、プレビルドが他の GitHub リポジトリにアクセスすることを許可できます。

この機能を使用できるユーザーについて

People with admin access to a repository can configure prebuilds for the repository.

GitHub Codespaces のリポジトリ レベルの設定は、個人アカウントが所有するすべてのリポジトリで使用できます。

Organization が所有するリポジトリの場合、GitHub Codespaces のリポジトリ レベルの設定は、GitHub Team および GitHub Enterprise プランの Organization で使用できます。 設定にアクセスするには、Organization またはその親 Enterprise が支払い方法を追加し、GitHub Codespaces の使用制限を設定する必要があります。 詳細については、「組織内の codespace を誰が所有し、支払うかの選択」および「GitHub のプラン」を参照してください。

既定では、事前ビルド構成の GitHub Actions ワークフローは、それ自身のリポジトリ コンテンツにのみアクセスできます。 プロジェクトで、他の場所にある追加のリソースを使って、開発環境を構築できます。

プレビルドに外部リソースの読み取りアクセスを許可する

プレビルド構成で使われる devcontainer.json ファイルにアクセス許可を指定すると、リポジトリ所有者が同じである他の GitHub リポジトリへの読み取りアクセスを構成できます。 詳しくは、「codespace 内の他のリポジトリへのアクセスの管理」を参照してください。

注:

  • 読み取りアクセス許可はこの方法でのみ承認でき、ターゲット リポジトリの所有者は、プレビルドを作成するリポジトリの所有者と同じである必要があります。 たとえば、octo-org/octocatrepository のプレビルド構成を作成する場合は、これが devcontainer.json ファイルで指定されていて、自分自身にそのアクセス許可があれば、他のリポジトリ (asocto-org/octodemo など) に対する読み取りアクセス許可を付与できます。
  • ワイルドカードを使用してリポジトリを指定することはできません。 アクセス権を付与するリポジトリごとにアクセス許可を定義する必要があります。

リポジトリ所有者が同じである他のリポジトリへの読み取りアクセスを設定する devcontainer.json ファイルに対してプレビルド構成を作成または編集するとき、 [作成] または [更新] をクリックすると、これらのアクセス許可を付与するように求められます。 詳しくは、「プレビルドの構成」を参照してください。

プレビルドに外部リソースの書き込みアクセスを許可する

プロジェクトでリソースへの書き込みアクセスが必要な場合、または外部リソースが、プレビルド構成を作成しているリポジトリとは所有者が異なるリポジトリに存在する場合は、personal access token を使用してこのアクセス権を付与できます。

新しい個人アカウントを作り、このアカウントを使って、適切なスコープを持つpersonal access token (classic) を作る必要があります。

  1. GitHub に新しい個人アカウントを作成します。

    警告: 既存の個人アカウントを使用してpersonal access token (classic) を生成することはできますが、ご自分のシナリオに必要なターゲット リポジトリにのみアクセスできる新しいアカウントを作成することを強くお勧めします。 これは、アクセス トークンの repository アクセス許可によって、そのアカウントからアクセスできるすべてのリポジトリへのアクセス権が付与されるからです。 詳細については、「GitHub でのアカウントの作成」および「GitHub Actions のセキュリティ強化」を参照してください。

  2. 新しいアカウントに、必要なリポジトリへの読み取りアクセス権を付与します。 詳しくは、「Organization のリポジトリへの個人のアクセスを管理する」を参照してください。

  3. 新しいアカウントにサインインしている間に、repo スコープを持つpersonal access token (classic) を作成します。 必要に応じて、事前ビルドで GitHub Container registry からパッケージをダウンロードする必要がある場合は、read:packages スコープも選択します。 詳しくは、「個人用アクセス トークンを管理する」を参照してください。

    [リポジトリ] スコープと [読み取り:パッケージ] スコープが選ばれている personal access token (classic) の [スコープの選択] 構成オプションのスクリーンショット。

    事前ビルドで GitHub Container registry のパッケージを使用する場合は、新しいアカウントにパッケージへのアクセス権を付与するか、事前ビルドするリポジトリのアクセス許可を継承するようにパッケージを構成する必要があります。 詳しくは、「パッケージのアクセス制御と可視性の設定」を参照してください。

  4. トークン文字列をコピーします。 これを Codespaces リポジトリ シークレットに割り当てます。

  5. リポジトリへの管理者アクセス権を持つアカウントにもう一度サインインします。

  6. GitHub Codespaces 事前ビルドを作成するリポジトリで、CODESPACES_PREBUILD_TOKEN という名前の新しい Codespaces リポジトリ シークレットを作成して、作成してコピーしたトークンの値を指定します。 詳しくは、「リポジトリまたは Organization の開発環境シークレットの管理」を参照してください。

このpersonal access tokenは、リポジトリ用に作成された後続のすべての事前ビルドに使用されます。 他の Codespaces リポジトリ シークレットとは異なり、CODESPACES_PREBUILD_TOKEN シークレットはプレビルドのみに使用され、リポジトリから作成される codespace では使用できません。

参考資料