Skip to main content

Предоставление предварительной сборке доступа к другим репозиториям

Предварительной сборке можно предоставить доступ к другим репозиториям GitHub для выполнения сборки.

Кто может использовать эту функцию?

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

Параметры уровня репозитория для GitHub Codespaces доступны для всех репозиториев, принадлежащих личная учетная запись.

Для репозиториев, принадлежащих организациям, параметры уровня репозитория для GitHub Codespaces доступны для организаций на GitHub Team и GitHub Enterprise планов. Чтобы получить доступ к параметрам, организация или ее родительская организация должны добавить метод оплаты и установить ограничение расходов для GitHub Codespaces. Дополнительные сведения см. в разделе "[AUTOTITLE" и "Выбор владельцев и оплаты пространств кода в вашей организации](/get-started/learning-about-github/githubs-plans)".

По умолчанию рабочий процесс GitHub Actions для конфигурации предварительной сборки может получить доступ только к содержимому в собственном репозитории. Для создания среды разработки в проекте могут использоваться дополнительные ресурсы, расположенные в других местах.

Разрешение предварительного доступа на чтение к внешним ресурсам

Можно настроить доступ на чтение других репозиториев GitHub, принадлежащих одному владельцу, для этого необходимо указать разрешения в файле devcontainer.json, который используется в конфигурации предварительной сборки. Дополнительные сведения см. в разделе Управление доступом к другим репозиториям в кодовом пространстве.

Примечания:

  • Таким образом вы можете авторизовать разрешения на чтение, и владелец целевого репозитория должен совпадать с владельцем репозитория, для которого создается предварительная сборка. Например, если вы создаете конфигурацию предварительной сборки для него octo-org/octocatrepository, вы сможете предоставить разрешения на чтение для других репозиториев, например asocto-org/octodemo, если это указано в devcontainer.json файле, и у вас есть разрешения самостоятельно.
  • Нельзя использовать подстановочные знаки для указания репозиториев. Необходимо определить разрешения для каждого репозитория, для которого требуется предоставить доступ.

Во время создания или изменения конфигурации предварительной сборки для файла devcontainer.json, который настраивает доступ на чтение других репозиториев с тем же владельцем, появится запрос на предоставление этих разрешений после нажатия кнопки Создать или Обновить. Дополнительные сведения см. в разделе Настройка предварительных сборок.

Разрешение доступа на запись предварительной сборки к внешним ресурсам

Если для проекта требуется доступ на запись к ресурсам или внешние ресурсы находятся в репозитории с другим владельцем, отличным от репозитория, для которого создается предварительная конфигурация, можно использовать personal access token для предоставления этого доступа.

Вам потребуется создать новую личная учетная запись, а затем использовать эту учетную запись для создания personal access token (classic) с соответствующими областями.

  1. Создайте новую личную учетную запись для GitHub.

    Предупреждение. Хотя вы можете создать personal access token (classic) с помощью существующей личная учетная запись, настоятельно рекомендуется создать новую учетную запись с доступом только к целевым репозиториям, необходимым для вашего сценария. Это связано с тем, что разрешение repository в маркере доступа предоставляет доступ сразу ко всем репозиториям, к которым есть доступ у соответствующей учетной записи. Дополнительные сведения см. в разделе "[AUTOTITLE" и "Создание учетной записи на GitHub](/actions/security-guides/security-hardening-for-github-actions#considering-cross-repository-access)".

  2. Предоставьте новой учетной записи доступ на чтение к необходимым репозиториям. Дополнительные сведения см. в разделе Управление доступом пользователя к репозиторию организации.

  3. Во время входа в новую учетную запись создайте personal access token (classic) с областью repo . При желании, если ваша предварительная сборка должна получать пакеты из GitHub Container registry, также выберите область read:packages. Дополнительные сведения см. в разделе Управление личными маркерами доступа.

    Снимок экрана: параметры конфигурации "Выбор областей" для выбранной области данных personal access token (classic), с выбранными областями репозитория и "read:packages".

    Если предварительная сборка будет использовать пакет из GitHub Container registry, необходимо предоставить новой учетной записи доступ к этому пакету или настроить для него наследование разрешений на доступ от репозитория, для которого выполняется предварительная сборка. Дополнительные сведения см. в разделе Настройка управления доступом и видимости пакета.

  4. Щелкните "Настроить единый вход " и авторизации маркера для использования с единым входом SAML (SSO), чтобы он смог получить доступ к репозиториям, принадлежащим организациям с включенным единым входом. Дополнительные сведения см. в разделе Авторизация личного токена доступа для использования с документами единого входа SAML.

    Снимок экрана: страница "Personal access tokens (classic)". Кнопка "Настроить единый вход" для PAT выделена темно-оранжевым контуром.

  5. Скопируйте строку маркера. Ее вам нужно назначить секрету репозитория Codespaces.

  6. Снова войдите в учетную запись с правами администратора для репозитория.

  7. В репозитории, для которого требуется создать предстроки GitHub Codespaces, создайте новый секрет CODESPACES_PREBUILD_TOKENрепозитория Codespaces и присвойте ему значение созданного и скопированного маркера. Дополнительные сведения см. в разделе Управление секретами среды разработки для репозитория или организации.

personal access token будет использоваться для всех последующих предстроек, созданных для репозитория. В отличие от других секретов CODESPACES_PREBUILD_TOKEN репозитория Codespaces секрет используется только для предварительной сборки и не будет доступен для использования в пространствах кода, созданных из репозитория.

Дополнительные материалы