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

ビルド前に他の GitHub リポジトリにアクセスして、正常にビルドできるようにすることができます。

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

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

ビルド前の構成で使用されるGitHub ファイルでアクセス許可を指定することで、同じリポジトリ所有者を使用して、他の`devcontainer.json` リポジトリへの読み取りアクセスを構成できます。 詳しくは、「[codespace 内の他のリポジトリへのアクセスの管理](/ja/codespaces/managing-your-codespaces/managing-repository-access-for-your-codespaces)」をご覧ください。

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

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

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

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

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

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

   > \[!WARNING]
   > 既存の個人用アカウントを使用して personal access token (classic) を生成できますが、シナリオに必要なターゲット リポジトリにのみアクセスできる新しいアカウントを作成することを強くお勧めします。 これは、アクセス トークンの `repository` アクセス許可によって、そのアカウントからアクセスできるすべてのリポジトリへのアクセス権が付与されるからです。 詳細については、「[GitHubでのアカウントの作成](/ja/account-and-profile/how-tos/account-management/creating-an-account-on-github)」および「[セキュリティで保護された使用に関するリファレンス](/ja/actions/reference/security/secure-use)」を参照してください。

2. 新しいアカウントに、必要なリポジトリへの読み取りアクセス権を付与します。 詳しくは、「[Organization のリポジトリへの個人のアクセスを管理する](/ja/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/managing-an-individuals-access-to-an-organization-repository)」をご覧ください。

3. 新しいアカウントにサインインした状態で、personal access token (classic) スコープを持つ `repo` を作成します。 必要に応じて、ビルド前に GitHubContainer registryからパッケージをダウンロードする必要がある場合は、 `read:packages` スコープも選択します。 詳しくは、「[個人用アクセス トークンを管理する](/ja/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)」をご覧ください。

   ![\[リポジトリ\] スコープと \[読み取り:パッケージ\] スコープが選ばれている personal access token (classic) の \[スコープの選択\] 構成オプションのスクリーンショット。](/assets/images/help/codespaces/prebuilds-select-scopes.png)

   ビルド前に GitHubContainer registryのパッケージを使用する場合は、パッケージへのアクセス権を新しいアカウントに付与するか、ビルド前のリポジトリのアクセス許可を継承するようにパッケージを構成する必要があります。 詳しくは、「[パッケージのアクセス制御と可視性の設定](/ja/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility)」をご覧ください。

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

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

6. GitHub Codespaces事前ビルドを作成するリポジトリで、Codespaces という名前の新しい`CODESPACES_PREBUILD_TOKEN` リポジトリ シークレットを作成し、作成してコピーしたトークンの値を指定します。 詳しくは、「[リポジトリまたは Organization の開発環境シークレットの管理](/ja/codespaces/managing-codespaces-for-your-organization/managing-development-environment-secrets-for-your-repository-or-organization#adding-secrets-for-a-repository)」をご覧ください。

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

## 参考資料

* [プレビルドの構成](/ja/codespaces/prebuilding-your-codespaces/configuring-prebuilds)
* [プレビルドのトラブルシューティング](/ja/codespaces/troubleshooting/troubleshooting-prebuilds)