2012-02-18 19 views
82

पर गुप्त एपी कुंजी का उपयोग करना मैं में से किसी एक के लिए travis-ci का उपयोग करना चाहता हूं।ट्रेविस-सीआई

प्रोजेक्ट एक एपीआई रैपर है, इसलिए कई परीक्षण गुप्त एपीआई कुंजी के उपयोग पर भरोसा करते हैं। स्थानीय रूप से परीक्षण करने के लिए, मैं उन्हें पर्यावरण चर के रूप में स्टोर करता हूं। ट्रैविस पर उन चाबियों का उपयोग करने का एक सुरक्षित तरीका क्या है?

उत्तर

88

ट्रैविस में पर्यावरण चर को एन्क्रिप्ट करने की सुविधा है ("Encrypting environment variables")। इसका उपयोग आपकी गुप्त एपीआई कुंजी की सुरक्षा के लिए किया जा सकता है। मैंने सफलतापूर्वक यह मेरी हेरोकू एपीआई कुंजी के लिए उपयोग किया है।

आपको केवल ट्रेविस मणि इंस्टॉल करना है, अपनी इच्छित स्ट्रिंग एन्क्रिप्ट करें और एन्क्रिप्टेड स्ट्रिंग को अपने .travis.yml में जोड़ें। एन्क्रिप्शन केवल एक भंडार के लिए मान्य है। travis कमांड को आपके रेपो के लिए आपकी सार्वजनिक कुंजी मिलती है और फिर बिल्ड के दौरान स्ट्रिंग को डिक्रिप्ट कर सकती है।

Please add the following to your .travis.yml file: 

    secure: "OrEeqU0z6GJdC6Sx/XI7AMiQ8NM9GwPpZkVDq6cBHcD6OlSppkSwm6JvopTR\newLDTdtbk/dxKurUzwTeRbplIEe9DiyVDCzEiJGfgfq7woh+GRo+q6+UIWLE\n3nowpI9AzXt7iBhoKhV9lJ1MROrnn4DnlKxAEUlHTDi4Wk8Ei/g=" 
+11

दस्तावेज को भूलना न भूलें कि आप किस चर का उपयोग कर रहे हैं, और क्यों, क्योंकि एक बार उन्हें एन्क्रिप्ट किया गया केवल मूल कुंजी वाले किसी भी व्यक्ति को पुनर्प्राप्त किया जा सकता है उन्हें। – jerseyboy

+1

ऐसा लगता है जैसे ट्रैविस मणि के नए संस्करणों को उनके तर्कों को विपरीत क्रम में रखना पसंद है: 'ट्रैविस एन्क्रिप्ट [तर्क ..] [विकल्प]', यानी आप 'ट्रैविस एन्क्रिप्ट करना चाहते हैं MY_SECRET_ENV = super_secret -r my_username/my_repo'। पहले विकल्पों को डालने और डेटा को एन्क्रिप्ट करने के लिए आखिरकार एक चेतावनी प्रदर्शित करता है। –

+0

@ जोर्डन अपडेट के लिए धन्यवाद, मैंने तदनुसार अपना जवाब अपडेट किया। – Odi

0

एपीआई कुंजी के एक अलग सेट का उपयोग करें और इसे वैसे ही करें। आपका ट्रैविस बॉक्स आपके निर्माण के लिए सेटअप हो जाता है और फिर आपके निर्माण समाप्त होने के बाद पूरी तरह से टूट जाता है। बिल्ड के दौरान आपके पास अपने बॉक्स में रूट पहुंच है, इसलिए आप जो भी चाहें कर सकते हैं।

+4

पर आपका क्या मतलब है "इसे वैसे ही करें"? मुझे वास्तव में रेपो में एपीआई कुंजी को संग्रहीत करने का विचार पसंद नहीं है (यानी .travis.yml फ़ाइल में), लेकिन ट्रेविस पर पर्यावरण चर कॉन्फ़िगर करने का एक और तरीका प्रतीत नहीं होता है। – BM5k

+0

एनवी वैरिएबल को सार्वजनिक कुंजी से एन्क्रिप्ट किया जाएगा, इसलिए केवल गुप्त कुंजी का मालिक इसे डिक्रिप्ट कर सकता है।आपको एक महत्वपूर्ण टोकन का उपयोग नहीं करना चाहिए। मेरे मामले में मैंने उस व्यक्ति का उपयोग किया जो पहले से ही गिटहब के लिए था। यह काफी अच्छा काम करता है और जिथब के भीतर से जब भी मुझे लगता है कि ट्रेविस जोखिम है तो मैं उस टोकन को रद्द कर सकता हूं। मेरे रेपो में एन्क्रिप्टेड टोकन होने से मुझे बुरा सोना नहीं पड़ता है। https://github.com/ecki/GCViewer/blob/topic-ciupload/.travis.yml – eckes

2

तुम भी परिभाषित कर सकते हैं गुप्त variables in repository settings:

gem install --user travis 
travis encrypt MY_SECRET_ENV=super_secret -r my_username/my_repo 

यह आप निम्नलिखित उत्पादन देता है सभी बनाता है के लिए

चर भंडार सेटिंग में निर्दिष्ट किया ही कर रहे हैं, और जब आप पुनः आरंभ एक पुराना निर्माण, यह नवीनतम मूल्यों का उपयोग करता है। ये चर स्वचालित रूप से कांटे के लिए उपलब्ध नहीं हैं।

  • भंडार प्रति अलग:

    भंडार सेटिंग्स है कि में चर को परिभाषित करें।

  • में संवेदनशील डेटा, जैसे तृतीय-पक्ष प्रमाण-पत्र शामिल हैं।

भंडार सेटिंग्स पर चर निर्धारित करने के लिए, सुनिश्चित करें कि आप में लॉग इन किया है, प्रश्न में भंडार पर जाएँ, कॉग मेनू से "सेटिंग" का चयन करें, और "पर्यावरण चर में" नया चर जोड़ें "पर क्लिक करें " अनुभाग।

+1

* गुप्त * चर बनाने के तरीके को समझ में नहीं आया। जब इसे गुगल करते हैं, तो परिणाम बताते हैं कि एन्क्रिप्ट कैसे करें। – XedinUnknown

+0

@Xedin अज्ञात यह गुप्त चर के लिए उपयोग किया जा सकता है। लिंक से: "डिफ़ॉल्ट रूप से, इन नए पर्यावरण चर का मान लॉग में निर्यात लाइन से छिपा हुआ है। यह आपके .travis.yml में एन्क्रिप्टेड चर के व्यवहार से मेल खाता है। चर हमारे सिस्टम में एन्क्रिप्टेड संग्रहित होते हैं, और निर्माण स्क्रिप्ट उत्पन्न होने पर डिक्रिप्ट हो जाएं। " – bmaupin

3
ट्रैविस ci दस्तावेज में this के अनुसार

यह है कि कहा है:

तुम दोनों Heroku और ट्रैविस सीआई कमांड लाइन ग्राहकों स्थापित है, तो आप अपनी कुंजी प्राप्त कर सकते हैं, यह एन्क्रिप्ट और में जोड़ने के अपने .travis.yml अपनी परियोजना निर्देशिका से निम्न आदेश चलाकर:

travis encrypt $(heroku auth:token) --add deploy.api_key 

Heroku ग्राहक आवश्यकताएँ स्थापित करने के लिए the following ट्यूटोरियल को देखें आपके ओएस

+0

मैं सिर्फ यह सत्यापित करना चाहता हूं: आपकी फ़ाइल में जो कुंजी जोड़ती है वह संस्करण नियंत्रण पर अपलोड करने के लिए सुरक्षित है, है ना? – vapurrmaid

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^