2015-02-06 18 views
5

के साथ gcloud का उपयोग करें मैं समय-समय पर Google क्लाउड स्टोरेज को चुनावित करने वाली एक स्क्रिप्ट लिखने की कोशिश कर रहा हूं। जब मैं इसे सामान्य रूप से चलाता हूं तो यह ठीक काम करता है, लेकिन अगर मैं इसे जेनकींस में एक बिल्ड चरण के रूप में शामिल करता हूं, तो यह 403 Forbidden त्रुटि देता है। ऐसा इसलिए है क्योंकि जेनकिंस उपयोगकर्ता के लिए कोई gcloud auth login प्रक्रिया पूरी नहीं हुई है, जिसके लिए सत्यापन कोड की प्रतिलिपि बनाने की आवश्यकता है .. मैं जेनकींस का उपयोग करके ऐसा कैसे करूं?जेनकिंस

संपादित करें:

मैं कम से चरणों को आज़मा: 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

आपका सबसे अच्छा शर्त शायद GCS सेवा के साथ 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 रिलीज की आवश्यकता होगी।

वहां से आपकी जेनकींस प्रक्रिया सामान्य रूप से जीसीएस तक पहुंचने में सक्षम होना चाहिए।

{ 
    "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/google-cloud-sdk/lib/googlecloudsdk/gcloud/sdktools/auth /activate_service_account.py ", लाइन 90, रन service_account_id = json_key ['client_id'], कुंजी त्रुटि: 'client_id'' –

+1

क्या आप चल रहे कमांड लाइन आमंत्रण में पेस्ट कर सकते हैं, और कुंजी के साथ कुंजी फ़ाइल * और उपयोगकर्ता नाम redacted *? –

+0

मैं प्रश्न –