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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  4. Extensions Hub पर, फ़ाइनल और स्टेबल वर्शन अपलोड करें. इसके बारे में नीचे बताया गया है. इसके बाद, इसे समीक्षा के लिए सबमिट करें. अगर एक्सटेंशन की समीक्षा में कोई समस्या नहीं पाई जाती है, तो उसे Extensions 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. `extension.yaml` में तय की गई हर फ़ंक्शन सोर्स डायरेक्ट्री में `npm clean-install` चलाकर, एनपीएम डिपेंडेंसी इंस्टॉल करता है. `Cloud Function resources` में `sourceDirectory` देखें.

    इन बातों का ध्यान रखें:

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

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

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

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

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