既定では、事前ビルド構成の GitHub Actions ワークフローは、それ自身のリポジトリ コンテンツにのみアクセスできます。 プロジェクトで、他の場所にある追加のリソースを使って、開発環境を構築できます。
プレビルドに外部リソースの読み取りアクセスを許可する
プレビルド構成で使われる devcontainer.json
ファイルにアクセス許可を指定すると、リポジトリ所有者が同じである他の GitHub リポジトリへの読み取りアクセスを構成できます。 詳しくは、「codespace 内の他のリポジトリへのアクセスの管理」を参照してください。
注:
- 読み取りアクセス許可はこの方法でのみ承認でき、ターゲット リポジトリの所有者は、プレビルドを作成するリポジトリの所有者と同じである必要があります。 たとえば、
octo-org/octocatrepository
のプレビルド構成を作成する場合は、これがdevcontainer.json
ファイルで指定されていて、自分自身にそのアクセス許可があれば、他のリポジトリ (asocto-org/octodemo
など) に対する読み取りアクセス許可を付与できます。 - ワイルドカードを使用してリポジトリを指定することはできません。 アクセス権を付与するリポジトリごとにアクセス許可を定義する必要があります。
リポジトリ所有者が同じである他のリポジトリへの読み取りアクセスを設定する devcontainer.json
ファイルに対してプレビルド構成を作成または編集するとき、 [作成] または [更新] をクリックすると、これらのアクセス許可を付与するように求められます。 詳しくは、「プレビルドの構成」を参照してください。
プレビルドに外部リソースの書き込みアクセスを許可する
プロジェクトでリソースへの書き込みアクセスが必要な場合、または外部リソースが、プレビルド構成を作成しているリポジトリとは所有者が異なるリポジトリに存在する場合は、personal access token を使用してこのアクセス権を付与できます。
新しい個人アカウントを作り、このアカウントを使って、適切なスコープを持つpersonal access token (classic) を作る必要があります。
-
GitHub に新しい個人アカウントを作成します。
警告: 既存の個人アカウントを使用してpersonal access token (classic) を生成することはできますが、ご自分のシナリオに必要なターゲット リポジトリにのみアクセスできる新しいアカウントを作成することを強くお勧めします。 これは、アクセス トークンの
repository
アクセス許可によって、そのアカウントからアクセスできるすべてのリポジトリへのアクセス権が付与されるからです。 詳細については、「GitHub でのアカウントの作成」および「GitHub Actions のセキュリティ強化」を参照してください。 -
新しいアカウントに、必要なリポジトリへの読み取りアクセス権を付与します。 詳しくは、「Organization のリポジトリへの個人のアクセスを管理する」を参照してください。
-
新しいアカウントにサインインしている間に、
repo
スコープを持つpersonal access token (classic) を作成します。 必要に応じて、事前ビルドで GitHub Container registry からパッケージをダウンロードする必要がある場合は、read:packages
スコープも選択します。 詳しくは、「個人用アクセス トークンを管理する」を参照してください。事前ビルドで GitHub Container registry のパッケージを使用する場合は、新しいアカウントにパッケージへのアクセス権を付与するか、事前ビルドするリポジトリのアクセス許可を継承するようにパッケージを構成する必要があります。 詳しくは、「パッケージのアクセス制御と可視性の設定」を参照してください。
-
トークン文字列をコピーします。 これを Codespaces リポジトリ シークレットに割り当てます。
-
リポジトリへの管理者アクセス権を持つアカウントにもう一度サインインします。
-
GitHub Codespaces 事前ビルドを作成するリポジトリで、
CODESPACES_PREBUILD_TOKEN
という名前の新しい Codespaces リポジトリ シークレットを作成して、作成してコピーしたトークンの値を指定します。 詳しくは、「リポジトリまたは Organization の開発環境シークレットの管理」を参照してください。
このpersonal access tokenは、リポジトリ用に作成された後続のすべての事前ビルドに使用されます。 他の Codespaces リポジトリ シークレットとは異なり、CODESPACES_PREBUILD_TOKEN
シークレットはプレビルドのみに使用され、リポジトリから作成される codespace では使用できません。