2015-02-06 9 views
5

Próbowałem napisać skrypt, który okresowo odpytuje Google Cloud Storage. Działa to dobrze, gdy uruchomię go normalnie, ale jeśli dołączę go jako krok kompilacji w Jenkins, daje on błąd 403 Forbidden. Dzieje się tak dlatego, że dla użytkownika Jenkins nie ukończono procesu gcloud auth login, który wymaga skopiowania kodu weryfikacyjnego. Jak to zrobić, używając Jenkinsa?używać gcloud z Jenkinsem

EDIT:

Próbowałem kroki na: https://cloud.google.com/storage/docs/authentication#service_accounts i pobrać klucz JSON, który wygląda tak:

{"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"}} 

który jest cholernie dziwne, ponieważ wszystkie linki wskazują na rzeczy jak bad request, invalid request ..I musi robić coś złego. Komenda wpadłem było:

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

Odpowiedz

6

Najprościej jest prawdopodobnie użyć „konto usługi”, aby uwierzytelnić gcloud/gsutil z usług GCS. Główne kroki są do korzystania wygenerować klucz prywatny JSON-formatowany zgodnie z instrukcjami tutaj:

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

kopia że kluczem do miejsca, w którym użytkownik Jenkins może go czytać, a jako użytkownik Jenkins run

gcloud auth activate-service-account ... 

(Patrz https://cloud.google.com/storage/docs/authentication#service_accounts). Zwróć uwagę, że obsługa plików kluczy JSON jest całkiem nowa i będziesz potrzebować aktualnej wersji gcloud.

Stamtąd Twój proces Jenkinsa powinien móc normalnie korzystać z GCS.

Plik klucza powinien mieć następujący format:

{ 
    "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

dziękuję! Jednak to właśnie otrzymuję (nie mogę go sformatować, przepraszam: /): ' Plik"/usr/local/share/google/google-cloud-sdk/lib/googlecloudsdk/gcloud/sdktools/auth /activate_service_account.py ", wiersz 90, w Run service_account_id = json_key ['client_id'], KeyError: 'client_id'' –

+1

Czy możesz wkleić w uruchomionym wierszu poleceń, a plik klucza * z kluczem i nazwa użytkownika redacted *? –

+0

Będę aktualizować pytanie –

Powiązane problemy