Я хотел бы использовать вместе следующие инструменты:
- Docker
- gcloud SDK
- Учетная запись службы gcloud
- gcloud Source Repo (как часть зависимостей проекта)
Шаги, которые я предпринимаю:
1) Войдите в облачную консоль Google со страницы: https://console.cloud.google.com/iam-admin/serviceaccounts/project?project=project-name
2) Создайте учетную запись службы, а пока дайте разрешения «Владелец» и загрузите ключ json как account-name.json.
3) Добавьте Dockerfile:
FROM google/cloud-sdk
COPY account-name.json /tmp/account-name.json
RUN gcloud auth activate-service-account --key-file /tmp/account-name.json
RUN rm /tmp/account-name.json
RUN gcloud config set project project-name
RUN gcloud config set account [email protected]
RUN gcloud source repos clone default --project=project-name
4) Собираем и запускаем докер:
docker build -t service-account-repo .
docker run -ti service-account-repo
Я получаю следующую ошибку:
ОШИБКА: (gcloud.source.repos.clone) В настоящее время у вас не выбрана активная учетная запись. Пожалуйста, запустите:
$ gcloud авторизация входа
для получения новых учетных данных или, если вы уже вошли в систему с другой учетной записью:
$ gcloud config установить аккаунт ACCOUNT
чтобы выбрать для использования уже прошедшую аутентификацию учетную запись.
И независимо от того, какие команды я пробую, включая настройку учетной записи и авторизации, через docker exec это не работает.
Если я запускаю те же команды локально, это работает, потому что я уже вошел в свою основную учетную запись gcloud.
Учетные записи служб gcloud работают с репозиториями исходного кода gcloud? у кого-нибудь есть рабочий пример без входа в нормальные учетные записи? Нужно ли мне включать другие облачные API, чтобы заставить его работать?