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

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

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

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

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

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

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

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

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

सुझाया गया डेवलपमेंट साइकल

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

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

  1. Firebase Emulator Suite का इस्तेमाल करके, एक्सटेंशन को डेवलप करें और उसे तुरंत दोहराएं.

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

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

  4. Extensions Hub पर फ़ाइनल और स्टेबल वर्शन अपलोड करें. इसके बाद, इसे समीक्षा के लिए सबमिट करें. इसके बारे में यहां बताया गया है. अगर एक्सटेंशन की समीक्षा में कोई समस्या नहीं मिलती है, तो इसे Extension Hub पर पब्लिश कर दिया जाएगा.

  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 स्टेज का इस्तेमाल, Extensions Hub पर पब्लिश करने के लिए सार्वजनिक रिलीज़ के लिए किया जाता है. 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

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

  • सीएलआई की मदद से: उपयोगकर्ता, एक्सटेंशन आईडी स्ट्रिंग को 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. अगर आपने पहले एक्सटेंशन का कोई वर्शन पब्लिश किया है, तो नई स्टेबल रिलीज़ अपलोड करने पर, एक्सटेंशन की समीक्षा के लिए उसे अपने-आप सबमिट कर दिया जाएगा.

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

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

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

  • आपने अपने एक्सटेंशन और इंस्टॉलेशन प्रोसेस की अच्छी तरह से जांच कर ली हो.
  • आपका दस्तावेज़ पूरा और सही है. साथ ही, Firebase कंसोल में अच्छी तरह से रेंडर होता है.
  • पब्लिशर के नाम और ब्रैंडिंग से, पब्लिशर के तौर पर आपकी पहचान साफ़ तौर पर और सटीक तरीके से होती हो.
  • आपके एक्सटेंशन के नाम, ब्यौरे, और आइकॉन से, एक्सटेंशन के मकसद के बारे में साफ़ तौर पर और सटीक जानकारी मिलती हो.
  • आपने काम के और सटीक टैग लगाए हों.
  • आपने 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.*

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

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

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

firebase ext:dev:undeprecate your_publisher_id/your_extension_id versions

अपेंडिक्स: बिल्ड से जुड़ी गड़बड़ियां ठीक करना

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

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

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

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

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

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

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

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

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