Skip to main content

Управление доступом к другим репозиториям в кодовом пространстве

Вы можете управлять репозиториями, к которым у GitHub Codespaces есть доступ.

Обзор

По умолчанию пространство кода назначается маркером, область с read разрешением или read write разрешением на репозиторий, из которого он был создан. Область этого маркера автоматически изменяется в следующих обстоятельствах.

  • Если создать пространство кода для репозитория, к которому у вас есть доступ только для чтения, сделайте фиксацию в пространстве кода или отправьте новую ветвь, GitHub Codespaces автоматически связывает пространство кода с новым или существующим вилком репозитория и обновляет маркер, чтобы иметь read и write разрешение на вилку. Дополнительные сведения см. в разделе «AUTOTITLE».
  • Если вы создаете пространство кода из шаблона, опубликуйте пространство кода в новый репозиторий, GitHub Codespaces обновляет маркер read write и разрешение на новый репозиторий. Дополнительные сведения см. в разделе «AUTOTITLE».

Дополнительные сведения см. в разделе «AUTOTITLE».

Если в проекте требуются дополнительные разрешения для других репозиториев, его можно настроить в devcontainer.json файле, как описано в разделе "Настройка дополнительных разрешений репозитория" далее в этой статье. Если разрешения перечислены в файле devcontainer.json, вам будет предложено просмотреть и авторизовать дополнительные разрешения в процессе создания кодового пространства для этого репозитория. После того как вы авторизуете перечисленные разрешения, GitHub Codespaces запомнит ваш выбор и не будет запрашивать авторизацию, пока разрешения в файле devcontainer.json не изменятся.

Примечание. Обновление разрешений в devcontainer.json файле не изменяет разрешения существующих пространств кода. Если вам нужны дополнительные разрешения в существующем пространстве кода, см. разделУстранение неполадок проверки подлинности в репозитории.

Создание пространств кода с пользовательскими разрешениями

Чтобы создать пространство кода с пользовательскими разрешениями, необходимо использовать одно из следующих элементов:

Настройка дополнительных разрешений репозитория

Вы настраиваете разрешения репозитория для GitHub Codespaces в devcontainer.json файле. Все настраиваемые разрешения, которые вы добавляете или изменяете, будут применяться только к новым пространствам кода, созданным после фиксации изменений в репозитории. При добавлении или изменении разрешений из пространства кода эти разрешения не будут применяться к текущему пространству кода, даже если вы перестроите пространство кода.

  1. Если репозиторий еще не содержит файл devcontainer.json, добавьте его. Дополнительные сведения см. в разделе «AUTOTITLE».

  2. Измените файл devcontainer.json, добавив имя репозитория и необходимые разрешения в отношении объекта repositories:

    JSON
    {
      "customizations": {
        "codespaces": {
          "repositories": {
            "my_org/my_repo": {
              "permissions": {
                "issues": "write"
              }
            }
          }
        }
      }
    }
    

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

    Для каждого указанного репозитория можно предоставить любое количество следующих разрешений:

    • actions — чтение/запись;
    • checks — чтение/запись;
    • contents — чтение/запись;
    • deployments — чтение/запись;
    • discussions — чтение/запись;
    • issues — чтение/запись;
    • packages — чтение;
    • pages — чтение/запись;
    • pull_requests — чтение/запись;
    • repository_projects — чтение/запись;
    • statuses — чтение/запись;
    • workflows — запись.

    Чтобы задать разрешение для репозитория в организации, необходимо явно добавить это имя репозитория в repositories объект.

    {
      "customizations": {
        "codespaces": {
          "repositories": {
            "my_org/my_repo": {
              "permissions": {
                "issues": "write"
              }
            }
          }
        }
      }
    }
    

    Чтобы задать все разрешения для определенного репозитория, используйте в объекте репозитория "permissions": "read-all" или "permissions": "write-all".

    {
      "customizations": {
        "codespaces": {
          "repositories": {
            "my_org/my_repo": {
              "permissions": "write-all"
            }
          }
        }
      }
    }
    

Авторизация запрошенных разрешений

Если в файле devcontainer.json определены дополнительные разрешения репозитория, во время создания codespace или конфигурации предварительной сборки для этого репозитория появится запрос на просмотр и авторизацию разрешений при необходимости. При авторизации разрешений для репозитория GitHub Codespaces не будет повторно запрашивать данные, пока набор запрошенных разрешений для репозитория не будет изменен.

Снимок экрана: страница запрошенных разрешений. Два разрешения отображаются как запрошенные: разрешение на чтение метаданных и разрешение на запись для проблем.

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

Вы можете авторизовать только те разрешения, которые есть у вашей личной учетной записи. Если кодовое пространство запрашивает разрешения в отношении репозиториев, к которым у вас нет доступа, обратитесь к владельцу или администратору соответствующего репозитория для получения доступа, а затем попробуйте создать кодовое пространство еще раз.

Доступ и безопасность

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

При включении доступа и безопасности для репозитория, принадлежащего вашей личной учетной записи, все кодовые пространства, созданные для этого репозитория, получают разрешения на чтение для всех других принадлежащих вам репозиториев. Доступ среды codespace к репозиториям можно ограничить либо репозиторием, для которого среда codespace была открыта, либо конкретными репозиториями. Включайте доступ и безопасность только для тех репозиториев, которым вы доверяете.

  1. В правом верхнем углу любой страницы щелкните фотографию профиля, а затем выберите Параметры.

    Screenshot of a user's account menu on GitHub. The menu item "Settings" is outlined in dark orange.

  2. В разделе "Код, планирование и автоматизация" боковой панели щелкните Codespaces.

  3. В разделе "Доступ и безопасность" выберите нужный параметр для личная учетная запись:

    • Отключен. Ограничение доступа к личным пространствам кода в репозиторий, из который они были созданы.
    • Все репозитории — все личные пространства кода могут получить доступ к другим репозиториям, которые вы владеете.
    • Выбранные репозитории — личные пространства кода, созданные из определенных репозиториев, могут получить доступ к другим репозиториям, которые вы владеете.
  4. Если вы выбрали "Выбранные репозитории", выберите раскрывающееся меню "Выбор репозиториев", а затем выберите репозиторий, чтобы разрешить пространствам кода репозитория доступ к другим репозиториям, которые вы владеете. Повторите этот шаг для всех репозиториев, пространства кода которых требуется получить доступ к другим репозиториям.