Как мне клонировать репозиторий из репозиториев исходного кода в 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