Использование Google Cloud Source Repositories с учетной записью службы

Можно ли получить доступ к Google Cloud Source Repository в автоматическом режиме, то есть из экземпляра GCE, используя служебную учетную запись?

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

4 ответа

Если вы хотите клонировать с git вместо того, чтобы пробежать gcloud, Вы можете запустить:

git config --global credential.helper gcloud.sh

... и тогда это будет работать:

git clone https://source.developers.google.com/p/$PROJECT/r/$REPO

На GCE vms работает

gcloud source repos clone default ~/my_repo

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

Если вы работаете на другом компьютере, вы можете скачать с https://console.cloud.google.com/ служебную учетную запись.json файл ключа и активировать его с помощью

gcloud auth activate-service-account --key-file KEY_FILE

и затем выполните вышеупомянутую команду клона.

В случае, если кто-то вроде меня пытался сделать это как часть Dockerfile, после непродолжительной борьбы мне только удалось заставить его работать так:

RUN gcloud auth activate-service-account --key-file KEY_FILE ; \
    gcloud source repos clone default ~/my_repo

Как видите, ключ к тому, чтобы он был частью одной и той же команды RUN, в противном случае он продолжал давать сбой

ERROR: (gcloud.source.repos.clone) You do not currently have an active account selected.
  1. Разрешите доступ к облачному API-интерфейсу Cloud Source Repositories для экземпляра. Это следует делать при создании или редактировании экземпляра в консоли администратора.
  2. Из оболочки внутри экземпляра выполните gcloud source repos clone <repo_name_in_cloud_source> <target_path_to_clone_into>

Если вы работаете на GCE, воспользуйтесь новым методом аутентификации, который требует меньше строк кода.

При создании экземпляра виртуальной машины в разделе "Доступ и безопасность" установите для "Облачной платформы" значение "Включено".

Тогда код аутентификации такой простой:

from oauth2client.client import GoogleCredentials
credentials = GoogleCredentials.get_application_default()
http = credentials.authorize(httplib2.Http())

См. https://developers.google.com/identity/protocols/application-default-credentials

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