2015-02-06 3 views
5

Я пытался написать сценарий, периодически опроса Google Cloud Storage. Это нормально работает, когда я запускаю его нормально, но если я включу его как шаг сборки в Jenkins, он даст ошибку 403 Forbidden. Это связано с тем, что для пользователя Jenkins не завершен процесс gcloud auth login, для которого требуется скопировать код проверки. Как это сделать, используя Jenkins?использовать gcloud с Jenkins

EDIT:

Я попытался шаги по: https://cloud.google.com/storage/docs/authentication#service_accounts и загрузить ключ JSON, который выглядит как:

{"web":{"auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://accounts.google.com/o/oauth2/token","client_email":"[email protected]","client_x509_cert_url":"https://www.googleapis.com/robot/v1/metadata/x509/[email protected]","client_id":"....project.googleusercontent.com","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs"}} 

которая штопка странно, потому что все ссылки указывают на такие вещи, как bad request, invalid request ..Я должно делать что-то неправильно. Команда, которую я побежал было:

gcloud auth activate-service-account [email protected] --key-file /var/lib/jenkins/....project.googleusercontent.com.json 

ответ

6

Лучше всего, вероятно, использовать «учетной записи службы» для аутентификации gcloud/GSUtil с сервисом ГКС. Основные шаги, чтобы использовать генерировать JSON-отформатированный закрытый ключ, следуя инструкциям здесь:

https://cloud.google.com/storage/docs/authentication#service_accounts 

Скопируйте этот ключ к месту, где пользователь Дженкинс может читать его, и как пользователь Дженкинс выполнения

gcloud auth activate-service-account ... 

(См. https://cloud.google.com/storage/docs/authentication#service_accounts). Обратите внимание, что поддержка файлов ключей JSON довольно новая, и вам понадобится обновленная версия gcloud.

Оттуда ваш процесс Jenkins должен иметь доступ к GCS, как обычно.

Ключевой файл должен иметь следующий формат:

{ 
    "private_key_id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", 
    "private_key": "-----BEGIN PRIVATE KEY-----\n ... \n-----END PRIVATE KEY-----\n", 
    "client_email": "[email protected]", 
    "client_id": "..." 
    "type": "service_account" 
} 
+0

Спасибо! Тем не менее, это то, что я получаю (не могу его форматировать, извините: /): « Файл«/usr/local/share/google-cloud-sdk/lib/googlecloudsdk/gcloud/sdktools/auth /activate_service_account.py ", строка 90, в поле« Выполнить » service_account_id = json_key ['client_id'], KeyError: 'client_id'' –

+1

Не могли бы вы вставить приглашение командной строки, в котором вы работаете, и файл ключа * с ключом и имя пользователя redacted *? –

+0

Я обновлю вопрос –

Смежные вопросы