अपना एक्सटेंशन पब्लिश करें

इस पेज पर, एक्सटेंशन हब पर एक्सटेंशन पब्लिश करने का तरीका बताया गया है.

शुरू करने से पहले

एक्सटेंशन पब्लिश करने के लिए, आपको पहले एक्सटेंशन पब्लिशर के तौर पर रजिस्टर करना होगा.

पुष्टि किए जा सकने वाले सोर्स

एक्सटेंशन हब पर पब्लिश किए गए सभी एक्सटेंशन का सोर्स, सार्वजनिक तौर पर पुष्टि किए जा सकने वाला होना चाहिए. अपने एक्सटेंशन का सोर्स कोड सीधे Extensions Hub पर अपलोड करने के बजाय, सोर्स की जगह बताएं. इसके बाद, Extension Hub उसे डाउनलोड करके वहां से बनाएगा.

फ़िलहाल, इसका मतलब है कि अपने एक्सटेंशन का सोर्स कोड, सार्वजनिक GitHub डेटा स्टोर करने की जगह पर उपलब्ध कराना.

पुष्टि किए जा सकने वाले सोर्स से अपलोड करने के कई फ़ायदे हैं:

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

डेवलपमेंट साइकल के लिए सुझाव

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

इस सुविधा की मदद से, इस तरह का डेवलपमेंट साइकल बनाया जा सकता है:

  1. Firebase Emulator Suite का इस्तेमाल करके, अपने एक्सटेंशन को तेज़ी से डेवलप करें और उसमें बार-बार बदलाव करें.

  2. अपने एक्सटेंशन को लोकल सोर्स से इंस्टॉल करके, किसी असल प्रोजेक्ट में इसका टेस्ट करें:

    firebase ext:install /path/to/extension
    firebase deploy --only extensions
    
  3. एक्सटेंशन हब में, रिलीज़ से पहले का वर्शन अपलोड करें (यहां देखें). ज़्यादा से ज़्यादा टेस्टिंग के लिए, इंस्टॉलेशन लिंक को डिस्ट्रिब्यूट करें. साथ ही, ज़रूरत के हिसाब से रिलीज़ से पहले वाले ज़्यादा वर्शन अपलोड करके, इस प्रोसेस को दोहराएं.

  4. एक्सटेंशन हब (नीचे देखें) में, आखिरी और स्टेबल वर्शन अपलोड करें और उसे समीक्षा के लिए सबमिट करें. समीक्षा में पास होने के बाद, एक्सटेंशन को एक्सटेंशन हब पर पब्लिश किया जाएगा.

  5. extension.yaml में वर्शन नंबर बढ़ाएं और अपने एक्सटेंशन के अगले वर्शन के लिए, यह चक्र दोहराएं.

नया एक्सटेंशन अपलोड करना

पहली बार एक्सटेंशन अपलोड करने के लिए:

  1. ज़रूरी नहीं: अपने कोड को सार्वजनिक GitHub डेटा स्टोर करने की जगह पर कमिट करें.

  2. Firebase CLI का ext:dev:upload कमांड चलाएं:

    GitHub

    firebase ext:dev:upload your_publisher_id/your_extension_id
    

    स्थानीय सोर्स

    cd /path/to/extension
    firebase ext:dev:upload your_publisher_id/your_extension_id --local
    

    निर्देश देने के लिए, आपको यह जानकारी देनी होगी:

    • आपने जो पब्लिशर आईडी रजिस्टर किया है.

    • एक्सटेंशन की पहचान करने वाली आईडी स्ट्रिंग. अपने एक्सटेंशन को इस फ़ॉर्मैट में नाम दें: firebase-product-description-of-tasks-performed. उदाहरण के लिए: firestore-bigquery-export

    कमांड देने पर, आपसे ज़्यादा जानकारी मांगी जाएगी:

    • अगर GitHub से अपलोड किया जा रहा है, तो:

      • GitHub में एक्सटेंशन के डेटा स्टोर करने की जगह का यूआरएल. ध्यान दें कि किसी रिपॉज़िटरी में एक से ज़्यादा एक्सटेंशन हो सकते हैं. हालांकि, इसके लिए ज़रूरी है कि हर एक्सटेंशन का रूट यूनीक हो.

        जब पहली बार कोई नया एक्सटेंशन अपलोड किया जाता है, तो उस रिपॉज़िटरी को आपके एक्सटेंशन के लिए कैननिकल सोर्स के तौर पर रजिस्टर कर दिया जाता है.

      • रिपॉज़िटरी में मौजूद वह डायरेक्ट्री जिसमें आपका एक्सटेंशन शामिल है.

      • उस कमिट का Git रेफ़रंस जिससे आपको एक्सटेंशन का वर्शन बनाने के लिए सोर्स चाहिए. यह कोई कमिट हैश, टैग या शाखा का नाम हो सकता है.

    • अपलोड किए जा रहे वर्शन की रिलीज़ का स्टेज.

      alpha, beta, और rc (रिलीज़ कैंडिडेट) चरणों में, रिलीज़ से पहले के वर्शन अपलोड किए जाते हैं, ताकि टेस्टर उन्हें इंस्टॉल कर सकें. नए एक्सटेंशन को पहली बार अपलोड करने के लिए, इनमें से किसी एक चरण का इस्तेमाल करें.

      stable चरण का इस्तेमाल, एक्सटेंशन हब पर पब्लिश की जाने वाली सार्वजनिक रिलीज़ के लिए किया जाता है. stable रिलीज़ अपलोड करने पर, समीक्षा अपने-आप शुरू हो जाएगी. समीक्षा पास होने पर, एक्सटेंशन पब्लिश हो जाएगा.

    ध्यान दें कि आपने वर्शन नंबर नहीं दिया है—यह वैल्यू extension.yaml फ़ाइल से मिलती है. रिलीज़ से पहले वाले एक्सटेंशन वर्शन को अपलोड करने पर, वर्शन में चरण और अपलोड नंबर जोड़ दिया जाता है. उदाहरण के लिए, अगर extension.yaml में वर्शन 1.0.1 बताया गया है और आपने रिलीज़ कैंडिडेट अपलोड किया है, तो वर्शन 1.0.1-rc.0 बन जाएगा. उसी वर्शन का दूसरा रिलीज़ कैंडिडेट अपलोड करने पर, वर्शन की संख्या अपने-आप बढ़ जाएगी और वर्शन 1.0.1-rc.1 बन जाएगा.

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

  • कंसोल की मदद से: उपयोगकर्ता, इस फ़ॉर्मैट वाले लिंक पर क्लिक करके एक्सटेंशन इंस्टॉल कर सकते हैं:

    https://console.firebase.google.com/project/_/extensions/install?ref=your_publisher_id/your_extension_id@version

    टेस्टर के साथ सीधे लिंक शेयर किया जा सकता है.

  • CLI की मदद से: उपयोगकर्ता, ext:install कमांड में एक्सटेंशन आईडी स्ट्रिंग डालकर, एक्सटेंशन इंस्टॉल कर सकते हैं:

    firebase ext:install your_publisher_id/your_extension_id@version \
        --project=destination_project_id
    

अपडेट किया गया वर्शन अपलोड करना

किसी एक्सटेंशन का पहला वर्शन अपलोड करने के बाद, समस्याओं को ठीक करने, सुविधाएं जोड़ने या रिलीज़ के स्टेज को आगे बढ़ाने के लिए अपडेट अपलोड किए जा सकते हैं. नया वर्शन अपलोड करने पर, जिन उपयोगकर्ताओं के डिवाइस पर आपके एक्सटेंशन का पुराना वर्शन इंस्टॉल है उन्हें Firebase कंसोल में अपग्रेड करने के लिए कहा जाएगा.

अपडेट अपलोड करने के लिए:

  1. ज़रूरी नहीं: अपने कोड को सार्वजनिक Git डेटा स्टोर करने की जगह पर कमिट करें.

  2. Firebase CLI का ext:dev:upload कमांड चलाएं:

    GitHub

    firebase ext:dev:upload your_publisher_id/your_extension_id
    

    इस बार, आपको GitHub रिपॉज़िटरी या एक्सटेंशन की रूट डायरेक्ट्री की जानकारी देने के लिए नहीं कहा जाएगा, क्योंकि ये आपके एक्सटेंशन के लिए पहले से ही कॉन्फ़िगर कर दी गई हैं. अगर आपने इसके बाद अपनी रिपॉज़िटरी का स्ट्रक्चर बदला है या उसे किसी नई रिपॉज़िटरी पर माइग्रेट किया है, तो कमांड आर्ग्युमेंट --root और --repo की मदद से उन्हें बदला जा सकता है.

    स्थानीय सोर्स

    cd /path/to/extension
    firebase ext:dev:upload your_publisher_id/your_extension_id --local
    

पब्लिकेशन के लिए एक्सटेंशन सबमिट करना

जब आपका एक्सटेंशन सार्वजनिक तौर पर रिलीज़ करने के लिए तैयार हो, तो:

  1. अपने कोड को किसी सार्वजनिक Git रिपॉज़िटरी में जोड़ें. (सार्वजनिक रिलीज़ के लिए ज़रूरी है.)

  2. Firebase CLI का ext:dev:upload कमांड चलाएं और रिलीज़ के चरण के तौर पर stable की जानकारी दें:

    firebase ext:dev:upload your_publisher_id/your_extension_id
    
  3. अगर आपने पहले अपने एक्सटेंशन का कोई वर्शन पब्लिश किया है, तो नई और स्थिर रिलीज़ अपलोड करने पर, एक्सटेंशन अपने-आप समीक्षा के लिए सबमिट हो जाएगा.

    अगर आपने एक्सटेंशन की पहली स्टेबल रिलीज़ अपलोड की है, तो अपने पब्लिशर डैशबोर्ड पर एक्सटेंशन ढूंढें और एक्सटेंशन हब पर पब्लिश करें पर क्लिक करें.

सबमिट करने के बाद, समीक्षा होने में कुछ दिन लग सकते हैं. अगर आपका एक्सटेंशन स्वीकार कर लिया जाता है, तो उसे एक्सटेंशन हब में पब्लिश कर दिया जाएगा. अगर अनुरोध अस्वीकार कर दिया जाता है, तो आपको इसकी वजह बताने वाला एक मैसेज मिलेगा. इसके बाद, शिकायत की गई समस्याओं को ठीक करके, समीक्षा के लिए अनुरोध फिर से सबमिट किया जा सकता है.

समीक्षा जल्दी पूरी हो और पहली कोशिश में ही आपका खाता स्वीकार हो जाए, इसके लिए सबमिट करने से पहले इन बातों की दोबारा जांच करें:

  • आपने अपने एक्सटेंशन और इंस्टॉल करने की प्रोसेस की अच्छी तरह से जांच कर ली हो.
  • आपका दस्तावेज़ पूरा और सही है. साथ ही, यह Firebase Console में अच्छी तरह से रेंडर होता है.
  • पब्लिशर का नाम और ब्रैंडिंग, आपके पब्लिशर के तौर पर साफ़ तौर पर और सटीक तरीके से पहचान करती हो.
  • आपके एक्सटेंशन के नाम, ब्यौरे, और आइकॉन से, आपके एक्सटेंशन के मकसद के बारे में साफ़ तौर पर और सटीक जानकारी मिलती हो.
  • आपने काम के और सटीक टैग लागू किए हैं.
  • आपने extension.yaml में, Google और Google से बाहर के उन सभी एपीआई के बारे में एलान किया है जिनका इस्तेमाल किया जाता है. साथ ही, आपने उन सभी इवेंट टाइप के बारे में भी एलान किया है जिन्हें आपका एक्सटेंशन उत्सर्जित करता है.
  • आपने सिर्फ़ उन भूमिकाओं के ऐक्सेस का अनुरोध किया है जो एक्सटेंशन के काम करने के लिए ज़रूरी हैं. साथ ही, आपने उपयोगकर्ताओं को साफ़ तौर पर बताया है कि आपको इस तरह के ऐक्सेस की ज़रूरत क्यों है.
  • आपकी सोर्स फ़ाइलों को Apache-2.0 की शर्तों के तहत साफ़ तौर पर लाइसेंस मिला है.

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

अपलोड किए गए एक्सटेंशन की सूची देखना

अपने पब्लिशर आईडी में अपलोड किए गए एक्सटेंशन की सूची देखने के लिए, इनमें से कोई एक काम करें:

पब्लिशर डैशबोर्ड

उन्हें पब्लिशर डैशबोर्ड पर देखें.

Firebase CLI

ext:dev:list कमांड चलाएं:

firebase ext:dev:list your_publisher_id

अपलोड किए गए एक्सटेंशन के इस्तेमाल की जानकारी देखना

अपने पब्लिशर आईडी के तहत अपलोड किए गए एक्सटेंशन के इस्तेमाल की जानकारी देखने के लिए, इनमें से कोई एक तरीका अपनाएं:

पब्लिशर डैशबोर्ड

पब्लिशर डैशबोर्ड में, आपके सभी एक्सटेंशन के लिए कुल इस्तेमाल की मेट्रिक और हर एक्सटेंशन के लिए अलग-अलग मेट्रिक होती हैं.

Firebase CLI

ext:dev:usage कमांड चलाएं:

firebase ext:dev:usage your_publisher_id

किसी एक्सटेंशन के वर्शन को बंद करना

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

किसी एक्सटेंशन के वर्शन को बंद करने के लिए, इनमें से कोई एक तरीका अपनाएं:

पब्लिशर डैशबोर्ड

  1. पब्लिशर डैशबोर्ड पर, एक्सटेंशन पर क्लिक करके उसकी जानकारी वाला व्यू खोलें.
  2. वह वर्शन चुनें जिसे आपको बंद करना है.
  3. वर्शन को बंद करें पर क्लिक करें.

Firebase CLI

ext:dev:deprecate कमांड चलाएं:

firebase ext:dev:deprecate your_publisher_id/your_extension_id versions \
    [--message "deprecation_message"]

आपके पास एक वर्शन या वर्शन की सीमा तय करने का विकल्प होता है. उदाहरण:

  • 1.0.2
  • 1.1.0-1.1.7
  • <1.2.0
  • 1.1.*

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

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

किसी सुविधा के बंद होने की स्थिति को वापस लाने के लिए, पब्लिशर डैशबोर्ड का इस्तेमाल करें या Firebase CLI का ext:dev:undeprecate कमांड चलाएं:

firebase ext:dev:undeprecate your_publisher_id/your_extension_id versions

परिशिष्ट: बिल्ड से जुड़ी गड़बड़ियों को हल करना

एक्सटेंशन अपलोड करने पर, बैकएंड सबसे पहले इस प्रोसेस का इस्तेमाल करके आपका सोर्स कोड बनाता है:

  1. यह आपके GitHub डेटा स्टोर करने की जगह को क्लोन करता है और बताए गए सोर्स रेफ़रंस की जांच करता है.

  2. extension.yaml में बताई गई हर फ़ंक्शन सोर्स डायरेक्ट्री में npm clean-install चलाकर, NPM डिपेंडेंसी इंस्टॉल करता है. Cloud फ़ंक्शन के संसाधनों में sourceDirectory देखें.

    निम्न पर ध्यान दें:

    • हर package.json फ़ाइल के लिए, एक package-lock.json फ़ाइल होनी चाहिए. ज़्यादा जानकारी के लिए, npm-ci देखें.

    • इंस्टॉल के बाद चलने वाली स्क्रिप्ट, डिपेंडेंसी इंस्टॉल करने के दौरान नहीं चलेंगी. अगर आपका सोर्स कोड बिल्ड, इंस्टॉल के बाद चलने वाली स्क्रिप्ट पर निर्भर करता है, तो उसे अपलोड करने से पहले फिर से लिखें.

  3. extension.yaml में बताई गई हर फ़ंक्शन सोर्स डायरेक्ट्री में npm run build को चलाकर, आपका कोड बनाता है.

शेयर किए जाने वाले फ़ाइनल एक्सटेंशन पैकेज में, सिर्फ़ आपके एक्सटेंशन की रूट डायरेक्ट्री सेव की जाएगी.

अगर एक्सटेंशन अपलोड करते समय आपको बिल्ड से जुड़ी गड़बड़ियां मिलती हैं, तो ऊपर बताए गए बिल्ड करने के चरणों को किसी नई डायरेक्ट्री में दोहराएं. ऐसा तब तक करें, जब तक कि कोई गड़बड़ी न दिखे. इसके बाद, एक्सटेंशन को फिर से अपलोड करने की कोशिश करें.