2012-02-27 13 views
11

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

सीआई/सीडी से पहले, हम Web.config ले लेंगे, कनेक्शन स्ट्रिंग को डिक्रिप्ट करने के लिए aspnet_regiis का उपयोग करें, पासवर्ड बदलें, फिर पुन: एन्क्रिप्ट करें। जाहिर है, यह त्रुटि प्रवण है और सीआई/सीडी की भावना में बिल्कुल नहीं।

मेरे पास कई अन्य विचार हैं जो मूल रूप से तैनाती स्क्रिप्ट में कुछ लिखने के लिए कुछ लिखने के लिए थे और फिर फाइल के कनेक्शन स्ट्रिंग सेक्शन को एन्क्रिप्ट करते थे, लेकिन ऐसा लगता है कि यह एक आम समस्या होनी चाहिए और वहां कुछ आम तौर पर स्वीकार्य समाधान होना चाहिए। लेकिन अब तक, मुझे यह नहीं मिल रहा है। क्या कोई "सही तरीका" है?

धन्यवाद!

+1

यदि आप सीडी पर जा रहे हैं, तो स्पष्ट रूप से * आपके द्वारा श्रृंखला बनाने/तैनात करने में कुछ * पासवर्ड (या पासवर्ड के लिए प्रॉक्सी) को जानना है। –

+0

संभावित डुप्लिकेट [निजी फाइलों के साथ टीमसिटी को कैसे कॉन्फ़िगर करें?] (Http://stackoverflow.com/questions/6721000/how-to-configure-teamcity-with-private-files) –

+1

@Damien_The_Unbeliever हाँ, लेकिन कुछ ऐसा कर सकता है TeamCity सर्वर बनें, जिसे आपके वीसीएस की तुलना में लोगों के एक अलग सेट द्वारा एक्सेस किया जाता है। – thelem

उत्तर

12

टीमसिटी 7.0 के बाद से उपलब्ध एक संभावित समाधान टाइप किए गए पैरामीटर (http://confluence.jetbrains.net/display/TCD7/What%27s+New+in+TeamCity+7.0#What%27sNewinTeamCity7.0 का उपयोग करना है -Typedbuildparameters)। आप TeamCity प्रकार के पासवर्ड में पैरामीटर को परिभाषित कर सकते हैं, और इसे किसी भी तरह अपनी बिल्ड स्क्रिप्ट (या तो पर्यावरण चर या अपनी बिल्ड स्क्रिप्ट संपत्ति के रूप में) पास कर सकते हैं।

टीमसिटी ऐसे पैरामीटर के मूल्यों को अपनी कॉन्फ़िगरेशन फ़ाइलों और डेटाबेस में स्कैम्बल रूप में संग्रहीत करता है। यदि बिल्ड लॉग या बिल्ड पैरामीटर पेज पर पासवर्ड दिखाई देता है, तो इसे * से बदल दिया जाएगा।

+0

ध्यान दें कि कच्चे पासवर्ड लॉग में दिखाई दे सकते हैं और यहां तक ​​कि टीमसिटी साइट कहती है: 'पासवर्ड टाइप करने के लिए पैरामीटर सेट करना यह गारंटी नहीं देता है कि कच्चे मान को पुनर्प्राप्त नहीं किया जा सकता है।' जिस स्थिति का सामना करना पड़ा: जब आपका गिट पुश विफल रहता है तो यह लाइन को प्रिंट करता है' अनुरोधित यूआरएल त्रुटि लौटाता है: तक पहुंचते समय 400 खराब अनुरोध '। तो यदि आप उपयोगकर्ता/पासवर्ड सूचना पासवर्ड के साथ गिट यूआरएल का उपयोग करते हैं तो यहां **** के साथ प्रतिस्थापित नहीं किया जाएगा, भले ही आपने उचित तरीके से टाइप किया हो –

2

कॉन्फ़िगरेशन रूपांतरणों का उपयोग करें। आप अपने स्वयं के परिवर्तन भी बना सकते हैं जो एन्क्रिप्शन/डिक्रिप्शन को संभाल सकता है। सबसे आसान तरीका रिलीज.web.config में उत्पादन तारों को एन्क्रिप्ट करता है और कनेक्शन स्ट्रिंग को बदलने के लिए एक रूपांतरण का उपयोग करता है।

http://msdn.microsoft.com/en-us/library/dd465318.aspx

http://sedodream.com/2010/09/09/ExtendingXMLWebconfigConfigTransformation.aspx

यदि यह आपके लिए काम नहीं करता है, aspnet_regiis कॉल करने के लिए एक postbuild घटना का उपयोग करें। यदि आपने कॉन्फ़िगरेशन रूपांतरण का विस्तार करना चुना है, तो आप इसके साथ कुछ भी कर सकते हैं। जब तक आप उन्हें प्राप्त कर सकते हैं तब तक एन्क्रिप्शन कुंजी चंद्रमा पर हो सकती है।

+0

यह इतना आसान नहीं है, आप एन्क्रिप्शन कुंजी कहां स्टोर करेंगे? – oleksii

+0

एक पोस्टबिल्ड घटना के बारे में कैसे? मुझे नहीं पता कि आप टीमसिटी में ऐसा कर सकते हैं, लेकिन जेनकींस इसका समर्थन करता है। – Darthg8r

0

क्या आप आईआईएस में कनेक्शन स्ट्रिंग को परिभाषित नहीं कर सकते हैं। क्या वे बहुत बदलते हैं? मुझे लगता है कि मैं उन्हें सिर्फ एक साइट के लिए आईआईएस में सेट कर दूंगा, और फिर ऐप के हिस्से के रूप में उन्हें तैनात नहीं करूंगा, या कम से कम मेरी आईआईएस सेटिंग्स की वरीयता लेता हूं।

+2

मैंने सोचा कि आईआईएस उपकरण ने एप्लिकेशन की वेब.कॉन्फिग फ़ाइल को संपादित करने के लिए अभी एक अच्छा फ्रंट-एंड प्रदान किया है, हालांकि मुझे दस्तावेज नहीं मिल रहा है जो अब पुष्टि करता है। – Jacob

+0

यदि आप निरंतर वितरण/तैनाती कर रहे हैं तो बिल्ड सर्वर को आईआईएस की कॉन्फ़िगरेशन के लिए जिम्मेदार होना चाहिए। यह एक मैन्युअल कदम नहीं होना चाहिए। –

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