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

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

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

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

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

एक्सटेंशन हब पर पब्लिश किए गए सभी एक्सटेंशन का ऐसा सोर्स होना चाहिए जिसकी पुष्टि सार्वजनिक तौर पर की जा सके. अपने एक्सटेंशन के सोर्स कोड को सीधे 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 को चलाकर, आपका कोड बनाता है.

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

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