Как мне клонировать репозиторий из репозиториев исходного кода в Compute Engine, чтобы вручную извлекать его при необходимости

На моем локальном macOS следующая команда работала нормально:

$ gcloud source repos clone myrepo --project=myproject

(хотя я не уверен, что это сработало не потому, что ранее я следовал ~/.gitcookies процедура)

Но когда я делаю это на CE:

$ gcloud source repos clone myrepo --project=myproject
ERROR: (gcloud.source.repos.clone) PERMISSION_DENIED: Request had insufficient authentication scopes.

$ gcloud source repos list
ERROR: (gcloud.source.repos.list) User [<digits>-compute@developer.gserviceaccount.com] does not have permission to access project [<myproject>] (or it may not exist): Request had insufficient authentication scopes.

$ gcloud auth list
                  Credentialed Accounts
ACTIVE  ACCOUNT
*       <digits>-compute@developer.gserviceaccount.com

На вкладке IAM я вижу, что эта учетная запись службы имеет "Редактор доступа ко всем ресурсам", но это не помогает. Даже если я добавлю роли Source Repository Read + Write.

UPD: тоже не могу найти .clone роль на вкладке Роли:

$ gcloud help source repos

COMMANDS
    COMMAND is one of the following:

     clone
        Clone a cloud source repository.
     create
        Create a cloud source repository.
     delete
        Delete a cloud source repository.
     describe
        Describe a cloud source repository.
     get-iam-policy
        Get the IAM policy for the named cloud source repository.
     list
        List the repositories the currently active project.
     set-iam-policy
        Set the IAM policy for the named repository.

Но это, вероятно, включено в .get так что Reader что я уже пробовал

UPD2: sudo /usr/local/share/google/google-cloud-sdk/bin/gcloud components update не помогло.

Единственные два варианта, которые я себе представляю, это либо редактировать

(это единственное, что я нашел в Интернете, и это похоже на решение, но это сообщение в блоге написано на каком-то восточном языке, поэтому я не уверен), но для этого потребуется остановка виртуальной машины, что недопустимо.

Или создайте другую учетную запись службы, но я не уверен, что переключаю ее в gcloud CLI не сломает другие приложения, работающие на этом компьютере. Или, может быть, я могу использовать его только один раз, когда клонирую репо, и он останется с ним?

1 ответ

Вы можете включить Full Access to All Cloud APIsиз настроек экземпляра. Но сначала вам нужно будет остановить виртуальную машину. Просто щелкните имя экземпляра, нажмите "Стоп", затем подождите, а когда он остановится, нажмите "Изменить" и проверьте соответствующие настройки для доступа к API. Затем запустите экземпляр.

Если вы используете служебную учетную запись экземпляра Google Compute Engine, как вы можете прочитать здесь [1], вам нужно предоставить области доступа для облачных исходных репозиториев на Полный или Чтение / Запись. Для этого вы должны остановить экземпляр.

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

$ gcloud auth activit-service-account --key-file=[KEY.JSON]

и вот этот, чтобы начать использовать новую учетную запись службы с помощью инструмента gcloud:

$ gcloud init

Если вы используете редактор ролей в этой новой учетной записи службы, возникает известная проблема, поскольку у редактора ролей нет разрешения source.repos.create.

Роли $ gcloud iam описывают роли / редактор | grep "source.repos"

  • source.repos.get
  • source.repos.getIamPolicy
  • source.repos.list
  • source.repos.update

В качестве обходного пути для создания облачных исходных репозиториев вам потребуется роль: "role /source.admin", которую вы можете прочитать здесь [2]: "Предоставляет разрешения на создание, обновление, удаление, список, клонирование, извлекать и просматривать репозитории. Также предоставляет разрешения на чтение и изменение политик IAM."

Здесь [3] вы можете отслеживать статус этой проблемы, но помните, что нет никаких ETA или гарантий, которые будут исправлены.

[1] https://cloud.google.com/compute/docs/access/service-accounts

[2] https://cloud.google.com/iam/docs/understanding-roles

[3] https://issuetracker.google.com/80329938

Другие вопросы по тегам