Orbit

प्रत्येक Environment के लिए Environment Variables सेट करना

Orbit lets you decide exactly which builds see which environment variables, so production credentials never end up in a publicly reachable branch preview. This guide covers how scope and precedence…

यह महत्वपूर्ण क्यों है

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

यह पूरा कारण है कि यह पेज मौजूद है। नीचे सब कुछ एक नियम की सेवा में है: प्रोडक्शन सीक्रेट प्रोडक्शन स्कोप में रहते हैं, और कहीं और नहीं।

स्कोपिंग कैसे काम करती है

हर वेरिएबल का एक स्कोप होता है जो यह तय करता है कि बिल्ड समय पर इसे कब इंजेक्ट किया जाता है।

स्कोपमें इंजेक्ट किया जाता है
सभी एनवायरनमेंट (प्रोजेक्ट-व्यापी)इस प्रोजेक्ट का हर बिल्ड, जब तक आप इसे प्रतिबंधित न करें
एक विशिष्ट एनवायरनमेंट ओवरराइडकेवल उस एक एनवायरनमेंट के बिल्ड

जब एक ही कुंजी दोनों स्तरों पर मौजूद होती है, तो अधिक विशिष्ट वाली जीतती है। एक एनवायरनमेंट-स्तर का ओवरराइड एक ही कुंजी वाले प्रोजेक्ट-व्यापी वेरिएबल को हराता है। Env vars पेज सभी एनवायरनमेंट सेक्शन के सबटाइटल में इसे बताता है: प्रोजेक्ट-व्यापी वेरिएबल हर बिल्ड में उपलब्ध होते हैं, और एनवायरनमेंट-स्तर के ओवरराइड को प्राथमिकता दी जाती है।

प्रोजेक्ट-व्यापी वेरिएबल को एक ओवरराइड बने बिना भी संकीर्ण किया जा सकता है। उपलब्ध है नियंत्रण तीन एनवायरनमेंट प्रकार प्रदान करता है (production, staging, preview) और आप उनमें से किसी को भी अनचेक कर सकते हैं।

स्कोप के साथ एक वेरिएबल जोड़ना

  1. अपने प्रोजेक्ट को Orbit में खोलें और Env vars टैब पर क्लिक करें।
  2. निचले भाग में वेरिएबल जोड़ें फॉर्म तक स्क्रॉल करें।
  3. कुंजी और मान भरें।
  4. स्कोप ड्रॉपडाउन का उपयोग करें:
    • सभी एनवायरनमेंट (प्रोजेक्ट-व्यापी) इसे हर बिल्ड में इंजेक्ट करता है।
    • [एनवायरनमेंट नाम] केवल ([प्रकार] ओवरराइड) इसे उस एक एनवायरनमेंट में स्कोप करता है।
  5. यदि आपने प्रोजेक्ट-व्यापी चुना है, तो उपलब्ध है बटन का उपयोग करके एनवायरनमेंट प्रकारों को अनचेक करें जहां यह वेरिएबल नहीं पहुंचना चाहिए।
  6. किसी भी संवेदनशील जानकारी के लिए सीक्रेट के रूप में चिह्नित करें पर टिक करें।
  7. जोड़ें पर क्लिक करें।

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

एक प्रोडक्शन-केवल वेरिएबल जोड़ना

दो समान तरीके:

  • स्कोप ड्रॉपडाउन में, अपनी प्रोडक्शन एनवायरनमेंट चुनें (इसमें एक हरा production बैज होता है), या
  • स्कोप को सभी एनवायरनमेंट के रूप में रखें और उपलब्ध है के तहत staging और preview को अनचेक करें।

किसी भी तरीके से, वेरिएबल तब अनुपस्थित होता है जब कोई प्रिव्यू या स्टेजिंग बिल्ड चलता है।

"अनुपस्थित" का मतलब अनुपस्थित है, खाली नहीं। कोड जो एक प्रिव्यू बिल्ड में process.env.STRIPE_SECRET_KEY को पढ़ता है, वह undefined प्राप्त करता है, और यह कैसे लिखा गया है इस पर निर्भर करता है, बिल्ड समय पर थ्रो हो सकता है या, बदतर, चुपचाप गलत शाखा ले सकता है। प्रिव्यू को कोई मान न देने के बजाय एक परीक्षण-मोड मान दें।

सुरक्षित पैटर्न

वह पैटर्न जो अधिकांश प्रोजेक्ट के लिए इसे स्वच्छ रूप से हल करता है:

  1. प्रोडक्शन क्रेडेंशियल को केवल प्रोडक्शन एनवायरनमेंट में स्कोप किया हुआ जोड़ें।
  2. एक ही कुंजी वाला एक वेरिएबल जोड़ें, जिसमें एक परीक्षण या सैंडबॉक्स मान है, प्रोजेक्ट-व्यापी स्कोप पर।

प्रोडक्शन बिल्ड को प्रोडक्शन-स्कोप्ड मान मिलता है क्योंकि अधिक विशिष्ट स्कोप जीतता है। प्रिव्यू और स्टेजिंग को परीक्षण मान मिलता है। कहीं भी कुछ परिभाषित नहीं है, और कोई भी प्रोडक्शन क्रेडेंशियल कभी भी प्रिव्यू तक नहीं पहुंचता।

इसे लागू करें:

  • प्रोडक्शन डेटाबेस URL
  • भुगतान प्रदाता सीक्रेट कुंजियां, प्रिव्यू के लिए प्रदाता की परीक्षण कुंजियों का उपयोग करते हुए
  • ईमेल भेजने की कुंजियां, ताकि कोई प्रिव्यू वास्तविक ग्राहकों को मेल न कर सके
  • प्रशासक टोकन और हस्ताक्षर सीक्रेट
  • कुछ भी जिसमें एक प्रति-कॉल लागत हो

स्टेजिंग में प्रोडक्शन वेरिएबल विरासत प्राप्त करना

यदि आपकी स्टेजिंग एनवायरनमेंट प्रोडक्शन के करीब है और आप केवल कुछ मानों को ओवरराइड करना चाहते हैं, तो आपको सब कुछ डुप्लिकेट करने की आवश्यकता नहीं है।

सेटिंग्स में, स्टेजिंग: एनवायरनमेंट वेरिएबल खोजें और प्रोडक्शन एनवायरनमेंट वेरिएबल विरासत प्राप्त करें को चालू करें। प्रोडक्शन वेरिएबल फिर स्टेजिंग बिल्ड में निम्न प्राथमिकता पर मर्ज किए जाते हैं स्टेजिंग-विशिष्ट ओवरराइड की तुलना में, इसलिए जो कुछ भी आप स्टेजिंग पर स्पष्ट रूप से सेट करते हैं वह अभी भी जीतता है।

विरासत प्रोडक्शन मानों को स्टेजिंग बिल्ड में कॉपी करती है, प्रोडक्शन क्रेडेंशियल सहित। इसे केवल तभी चालू करें जब आपकी स्टेजिंग एनवायरनमेंट सुरक्षित हो। स्टेजिंग एक पासवर्ड और एक IP अनुमति सूची दोनों का समर्थन करती है, सेटिंग्स के स्टेजिंग: एक्सेस सुरक्षा और स्टेजिंग: IP अनुमति सूची सेक्शन में। एक असुरक्षित स्टेजिंग एनवायरनमेंट के लिए विरासत को चालू करना बिल्कुल यही जोखिम फिर से बनाता है जो इस पेज के बारे में है।

मौजूदा वेरिएबल को देखना और संपादित करना

Env vars टैब वेरिएबल को निम्नानुसार समूहित करता है:

  • शीर्ष पर सभी एनवायरनमेंट, प्रोजेक्ट-व्यापी वेरिएबल होते हैं
  • प्रति एनवायरनमेंट एक संक्षिप्त सेक्शन, उस एनवायरनमेंट के ओवरराइड होते हैं, कितने हैं इसकी संख्या के साथ

उनके ऊपर एक खोज बॉक्स और एक केवल सीक्रेट फिल्टर है।

हर वेरिएबल नाम के बगल में बैज दिखाता है कि यह किन एनवायरनमेंट प्रकारों तक पहुंचता है। एक वेरिएबल production और preview दिखा रहा है लेकिन staging नहीं, स्टेजिंग बिल्ड से अनुपस्थित होगा, और यह बैज पंक्ति एक लंबी सूची को ऑडिट करने का सबसे तेज़ तरीका है।

एक मान को बदलने के लिए संपादित आइकन पर क्लिक करें। एक सीक्रेट वेरिएबल का वर्तमान मान प्रकट नहीं किया जा सकता, केवल बदला जा सकता है।

एनवायरनमेंट के बीच कॉपी करना और तुलना करना

एनवायरनमेंट के बीच वेरिएबल कॉपी करें एक पूरे सेट को एक स्कोप से दूसरे में कॉपी करता है। एक से और एक को चुनें, वैकल्पिक रूप से लक्ष्य में पहले से मौजूद वेरिएबल को ओवरराइट करें पर टिक करें, और कमिट करने से पहले कितने जोड़े, अपडेट और स्किप किए जाएंगे यह देखने के लिए पूर्वावलोकन पर क्लिक करें।

Env सिंक चेक पेज प्रोडक्शन और स्टेजिंग को कुंजी दर कुंजी तुलना करता है और रिपोर्ट करता है कि क्या केवल एक में मौजूद है, किसके अलग-अलग मान हैं, और क्या मेल खाता है। यह "स्टेजिंग काम करता है और प्रोडक्शन नहीं करता" के लिए या इसके विपरीत पहला सही पड़ाव है।

प्रोडक्शन और स्टेजिंग के बीच मानों में अंतर अधिकांश सीक्रेट के लिए सामान्य और अपेक्षित है। सिंक पेज कहता है कि ऐसा है। आप जो देख रहे हैं वह एक कुंजी है जो एक एनवायरनमेंट में मौजूद है और दूसरे में अनुपस्थित है।

प्रोजेक्ट के बीच वेरिएबल साझा करना

यदि कई प्रोजेक्ट को एक ही क्रेडेंशियल की आवश्यकता है, तो इसे हर प्रोजेक्ट में पेस्ट करने के बजाय एक env ग्रुप का उपयोग करें। Orbit पर जाएं, फिर Env ग्रुप, एक ग्रुप बनाएं, वेरिएबल जोड़ें, और जिन प्रोजेक्ट को उनकी आवश्यकता है उन्हें लिंक करें।

ग्रुप वेरिएबल बिल्ड समय पर इंजेक्ट किए जाते हैं और निचले प्राथमिकता क्रम में बैठते हैं: प्रोजेक्ट-स्तर और एनवायरनमेंट-स्तर के वेरिएबल दोनों ग्रुप वेरिएबल पर प्राथमिकता लेते हैं। आप एक खाते पर 20 ग्रुप तक रख सकते हैं।

एक ग्रुप को हटाने से हर लिंक किए गए प्रोजेक्ट के भविष्य के बिल्ड से वे वेरिएबल हटा देते हैं। पहले से पूर्ण किए गए बिल्ड अप्रभावित रहते हैं।

थोक में आयात करना

आयात .env बटन एक पेस्ट बॉक्स खोलता है। एक .env फाइल पेस्ट करें, एक स्कोप चुनें, और Orbit रिपोर्ट करता है कि इसे कितने वेरिएबल मिले और कितने को सीक्रेट के रूप में चिह्नित करेगा। SECRET, TOKEN, KEY, PASSWORD और समान शर्तें वाली कुंजियां स्वचालित रूप से फ्लैग की जाती हैं। एक समान कुंजी के साथ मौजूदा वेरिएबल को ओवरराइट करें विकल्प है, डिफ़ॉल्ट रूप से बंद है।

डाउनलोड .env केवल वेरिएबल नाम का एक टेम्पलेट बनाता है, कोई मान नहीं, एक साथी के साथ साझा करने के लिए जो अपना स्वयं का आपूर्ति करेगा।

आयात करने के बाद नहीं, आयात संवाद में स्कोप चुनें। एक पूरी प्रोडक्शन .env को प्रोजेक्ट-व्यापी स्कोप में आयात करना एक कार्य में आपके सभी प्रोडक्शन क्रेडेंशियल को आपके प्रिव्यू बिल्ड में धकेल देता है, और ठीक करना एक सेटिंग बदलना नहीं है, हटाना और फिर से जोड़ना है।

सत्यापित करना कि एक बिल्ड को वास्तव में क्या मिला

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

मान कभी भी संग्रहीत या दिखाए नहीं जाते। एक कुंजी पर होवर करने से एक SHA-256 फिंगरप्रिंट मिलता है, जो दो एनवायरनमेंट समान मान रखते हैं यह पुष्टि करने के लिए पर्याप्त है इसे प्रकट किए बिना।

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

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

संबंधित पठन

क्या आपको अभी भी सहायता की आवश्यकता है?

हमें ईमेल करें support@kapsulehost.com या KPanel में चैट खोलें।

KPanel खोलें
प्रत्येक Environment के लिए Environment Variables सेट करना