По умолчанию рабочий процесс GitHub Actions для конфигурации предварительной сборки может получить доступ только к содержимому в собственном репозитории. Для создания среды разработки в проекте могут использоваться дополнительные ресурсы, расположенные в других местах.
Разрешение предварительного доступа на чтение к внешним ресурсам
Можно настроить доступ на чтение других репозиториев GitHub, принадлежащих одному владельцу, для этого необходимо указать разрешения в файле devcontainer.json
, который используется в конфигурации предварительной сборки. Дополнительные сведения см. в разделе Управление доступом к другим репозиториям в кодовом пространстве.
Note
- Таким образом вы можете авторизовать разрешения на чтение, и владелец целевого репозитория должен совпадать с владельцем репозитория, для которого создается предварительная сборка. Например, если вы создаете конфигурацию предварительной сборки для него
octo-org/octocatrepository
, вы сможете предоставить разрешения на чтение для других репозиториев, напримерocto-org/octodemo
, если это указано вdevcontainer.json
файле, и у вас есть разрешения самостоятельно. - Нельзя использовать подстановочные знаки для указания репозиториев. Необходимо определить разрешения для каждого репозитория, для которого требуется предоставить доступ.
Во время создания или изменения конфигурации предварительной сборки для файла devcontainer.json
, который настраивает доступ на чтение других репозиториев с тем же владельцем, появится запрос на предоставление этих разрешений после нажатия кнопки Создать или Обновить. Дополнительные сведения см. в разделе Настройка предварительных сборок.
Разрешение доступа на запись предварительной сборки к внешним ресурсам
Если для проекта требуется доступ на запись к ресурсам или внешние ресурсы находятся в репозитории с другим владельцем, отличным от репозитория, для которого создается предварительная конфигурация, можно использовать personal access token для предоставления этого доступа.
Вам потребуется создать новую личная учетная запись, а затем использовать эту учетную запись для создания personal access token (classic) с соответствующими областями.
-
Создайте новую личную учетную запись для GitHub.
Warning
Хотя вы можете создать personal access token (classic) с помощью существующей личная учетная запись, настоятельно рекомендуется создать новую учетную запись с доступом только к целевым репозиториям, необходимым для вашего сценария. Это связано с тем, что разрешение
repository
в маркере доступа предоставляет доступ сразу ко всем репозиториям, к которым есть доступ у соответствующей учетной записи. Дополнительные сведения см. в разделе [AUTOTITLE и Создание учетной записи на GitHub](/actions/security-guides/security-hardening-for-github-actions#considering-cross-repository-access). -
Предоставьте новой учетной записи доступ на чтение к необходимым репозиториям. Дополнительные сведения см. в разделе Управление доступом пользователя к репозиторию организации.
-
Во время входа в новую учетную запись создайте personal access token (classic) с областью
repo
. При желании, если ваша предварительная сборка должна получать пакеты из GitHub Container registry, также выберите областьread:packages
. Дополнительные сведения см. в разделе Управление личными маркерами доступа.Если предварительная сборка будет использовать пакет из GitHub Container registry, необходимо предоставить новой учетной записи доступ к этому пакету или настроить для него наследование разрешений на доступ от репозитория, для которого выполняется предварительная сборка. Дополнительные сведения см. в разделе Настройка управления доступом и видимости пакета.
-
Скопируйте строку маркера. Ее вам нужно назначить секрету репозитория Codespaces.
-
Снова войдите в учетную запись с правами администратора для репозитория.
-
В репозитории, для которого требуется создать предстроки GitHub Codespaces, создайте новый секрет
CODESPACES_PREBUILD_TOKEN
репозитория Codespaces и присвойте ему значение созданного и скопированного маркера. Дополнительные сведения см. в разделе Управление секретами среды разработки для репозитория или организации.
personal access token будет использоваться для всех последующих предстроек, созданных для репозитория. В отличие от других секретов CODESPACES_PREBUILD_TOKEN
репозитория Codespaces секрет используется только для предварительной сборки и не будет доступен для использования в пространствах кода, созданных из репозитория.