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

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

वेब कंटेनर इंस्टॉल करने से पहले

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

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

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

फ़िलहाल, इसका मतलब अपने एक्सटेंशन सोर्स कोड को 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 सीएलआई का 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

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

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

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

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

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

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

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

  2. Firebase सीएलआई का 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. रिलीज़ चरण के तौर पर stable को बताकर, Firebase सीएलआई का ext:dev:upload कमांड चलाएं:

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

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

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

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

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

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

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

बंद किए गए सेल को हटाने के लिए, पब्लिशर डैशबोर्ड का इस्तेमाल करें या Firebase सीएलआई का ext:dev:undeprecate कमांड चलाएं:

firebase ext:dev:undeprecate your_publisher_id/your_extension_id versions

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

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

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

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

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

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

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

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

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

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