इस पेज पर, Extensions Hub पर एक्सटेंशन पब्लिश करने का तरीका बताया गया है.
शुरू करने से पहले
एक्सटेंशन पब्लिश करने के लिए, आपको सबसे पहले एक्सटेंशन पब्लिशर के तौर पर रजिस्टर करना होगा.
पुष्टि किए जा सकने वाले सोर्स
Extensions Hub पर पब्लिश किए गए सभी एक्सटेंशन का सोर्स, सार्वजनिक तौर पर पुष्टि किया जा सकने वाला होना चाहिए. एक्सटेंशन के सोर्स कोड को सीधे Extensions Hub पर अपलोड करने के बजाय, सोर्स लोकेशन तय करें. इसके बाद, Extension Hub उसे डाउनलोड करेगा और वहीं से उसे बनाएगा.
फ़िलहाल, इसका मतलब है कि आपको अपने एक्सटेंशन का सोर्स कोड, GitHub के सार्वजनिक डेटाबेस पर उपलब्ध कराना होगा.
पुष्टि किए गए सोर्स से अपलोड करने के कई फ़ायदे हैं:
- उपयोगकर्ता, एक्सटेंशन के उस खास वर्शन के सोर्स कोड की जांच कर सकते हैं जिसे इंस्टॉल किया जाएगा.
- इससे यह पक्का किया जा सकता है कि आपने सिर्फ़ वही कॉन्टेंट अपलोड किया है जिसे आपको अपलोड करना है. जैसे, डेवलपमेंट के दौरान बची हुई फ़ाइलें या अधूरा काम अपलोड न हो.
सुझाया गया डेवलपमेंट साइकल
Firebase Extensions के डेवलपमेंट टूल, एक्सटेंशन के रिलीज़ से पहले वाले वर्शन अपलोड करने की सुविधा देते हैं. इससे, एक्सटेंशन और एक्सटेंशन इंस्टॉल करने की प्रोसेस को उसी एनवायरमेंट में टेस्ट करना आसान हो जाता है जिसमें उन्हें आखिर में रिलीज़ किया जाएगा.
इस सुविधा की मदद से, डेवलपमेंट साइकल को इस तरह से पूरा किया जा सकता है:
Firebase Emulator Suite का इस्तेमाल करके, एक्सटेंशन को डेवलप करें और उसे तुरंत दोहराएं.
स्थानीय सोर्स से एक्सटेंशन इंस्टॉल करके, उसे किसी असली प्रोजेक्ट में आज़माएं:
firebase ext:install /path/to/extensionfirebase deploy --only extensionsExtensions Hub पर, रिलीज़ से पहले वाला वर्शन अपलोड करें (नीचे देखें). ज़्यादा लोगों से टेस्टिंग कराने के लिए, ऐप्लिकेशन इंस्टॉल करने का लिंक शेयर करें. साथ ही, ज़रूरत के मुताबिक रिलीज़ से पहले वाले वर्शन अपलोड करके, टेस्टिंग को दोहराएं.
Extensions Hub पर फ़ाइनल और स्टेबल वर्शन अपलोड करें. इसके बाद, इसे समीक्षा के लिए सबमिट करें. इसके बारे में यहां बताया गया है. अगर एक्सटेंशन की समीक्षा में कोई समस्या नहीं मिलती है, तो इसे Extension Hub पर पब्लिश कर दिया जाएगा.
extension.yamlमें वर्शन नंबर बढ़ाएं और अपने एक्सटेंशन के अगले वर्शन के लिए, इस प्रोसेस को दोहराएं.
नया एक्सटेंशन अपलोड करना
पहली बार एक्सटेंशन अपलोड करने के लिए:
ज़रूरी नहीं: अपने कोड को GitHub की सार्वजनिक रिपॉज़िटरी में कमिट करें.
Firebase CLI की
ext:dev:uploadकमांड चलाएं:GitHub
firebase ext:dev:upload your_publisher_id/your_extension_idलोकल सोर्स
cd /path/to/extensionfirebase 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 कंसोल में अपग्रेड करने के लिए कहा जाएगा.
अपडेट अपलोड करने के लिए:
ज़रूरी नहीं: अपने कोड को सार्वजनिक Git डेटा स्टोर करने की जगह पर कमिट करें.
Firebase CLI की
ext:dev:uploadकमांड चलाएं:GitHub
firebase ext:dev:upload your_publisher_id/your_extension_idइस बार, आपको GitHub रिपॉज़िटरी या एक्सटेंशन की रूट डायरेक्ट्री के बारे में बताने के लिए नहीं कहा जाएगा. ऐसा इसलिए, क्योंकि इन्हें आपके एक्सटेंशन के लिए पहले ही कॉन्फ़िगर किया जा चुका है. अगर आपने अपनी रिपॉज़िटरी के स्ट्रक्चर को फिर से व्यवस्थित किया है या किसी नई रिपॉज़िटरी पर माइग्रेट किया है, तो कमांड आर्ग्युमेंट
--rootऔर--repoका इस्तेमाल करके, उन्हें बदला जा सकता है.लोकल सोर्स
cd /path/to/extensionfirebase ext:dev:upload your_publisher_id/your_extension_id --local
पब्लिश करने के लिए एक्सटेंशन सबमिट करना
जब आपको अपना एक्सटेंशन सार्वजनिक तौर पर रिलीज़ करना हो, तब:
अपने कोड को सार्वजनिक Git रिपॉज़िटरी में कमिट करें. (सभी के लिए रिलीज़ करने की सुविधा के लिए ज़रूरी है.)
Firebase CLI की
ext:dev:uploadकमांड चलाएं. साथ ही,stableको रिलीज़ स्टेज के तौर पर तय करें:firebase ext:dev:upload your_publisher_id/your_extension_idअगर आपने पहले एक्सटेंशन का कोई वर्शन पब्लिश किया है, तो नई स्टेबल रिलीज़ अपलोड करने पर, एक्सटेंशन की समीक्षा के लिए उसे अपने-आप सबमिट कर दिया जाएगा.
अगर आपने एक्सटेंशन की पहली स्टेबल रिलीज़ अपलोड की है, तो अपने पब्लिशर डैशबोर्ड पर जाकर एक्सटेंशन ढूंढें. इसके बाद, 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एक्सटेंशन के किसी वर्शन को बंद करना
कभी-कभी, ऐसा हो सकता है कि आपको अपने एक्सटेंशन के पुराने वर्शन को बंद करना पड़े. उदाहरण के लिए, अगर आपने कोई नया वर्शन रिलीज़ किया है, जिसमें किसी गंभीर गड़बड़ी को ठीक किया गया है या सुरक्षा से जुड़े ज़रूरी अपडेट के साथ किसी डिपेंडेंसी को अपडेट किया गया है, तो नए उपयोगकर्ताओं को पुराना वर्शन इंस्टॉल करने से रोकना ज़रूरी है. साथ ही, मौजूदा उपयोगकर्ताओं को अपग्रेड करने के लिए बढ़ावा देना भी ज़रूरी है.
एक्सटेंशन के किसी वर्शन को बंद करने के लिए, इनमें से कोई एक तरीका अपनाएं:
पब्लिशर डैशबोर्ड
- पब्लिशर डैशबोर्ड पर, एक्सटेंशन पर क्लिक करके उसकी जानकारी वाला व्यू खोलें.
- वह वर्शन चुनें जिसे आपको बंद करना है.
- वर्शन को बंद करें पर क्लिक करें.
Firebase CLI
ext:dev:deprecate कमांड चलाएं:
firebase ext:dev:deprecate your_publisher_id/your_extension_id versions \
[--message "deprecation_message"]एक वर्शन या वर्शन की रेंज तय की जा सकती है. उदाहरण:
1.0.21.1.0-1.1.7<1.2.01.1.*
एक्सटेंशन के पुराने वर्शन, एक्सटेंशन हब में नहीं दिखते और उन्हें इंस्टॉल नहीं किया जा सकता. जिन उपयोगकर्ताओं के प्रोजेक्ट में बंद हो चुका वर्शन इंस्टॉल है उन्हें अपग्रेड करने के लिए एक मैसेज दिखेगा. हालांकि, वे इस दौरान एक्सटेंशन का इस्तेमाल कर सकते हैं और उसे फिर से कॉन्फ़िगर कर सकते हैं.
अगर किसी एक्सटेंशन के हर वर्शन को बंद कर दिया जाता है, तो एक्सटेंशन को बंद माना जाता है. साथ ही, इसे Extensions Hub से हटा दिया जाता है. बंद किए गए एक्सटेंशन का नया वर्शन अपलोड करने पर, समीक्षा करने की प्रोसेस अपने-आप शुरू हो जाएगी. समीक्षा के बाद, इसे Extensions Hub पर फिर से पब्लिश कर दिया जाएगा.
किसी एक्सटेंशन को बंद होने से रोकने के लिए, पब्लिशर डैशबोर्ड का इस्तेमाल करें या Firebase CLI की ext:dev:undeprecate कमांड चलाएं:
firebase ext:dev:undeprecate your_publisher_id/your_extension_id versions
अपेंडिक्स: बिल्ड से जुड़ी गड़बड़ियां ठीक करना
एक्सटेंशन अपलोड करने पर, बैकएंड सबसे पहले आपके सोर्स कोड को इस प्रोसेस का इस्तेमाल करके बनाता है:
यह आपकी GitHub रिपॉज़िटरी को क्लोन करता है और तय किए गए सोर्स रेफ़रंस की जांच करता है.
यह हर फ़ंक्शन की सोर्स डायरेक्ट्री में
npm clean-installचलाकर, NPM डिपेंडेंसी इंस्टॉल करता है. यह डायरेक्ट्री,extension.yamlमें दी गई होती है. इसके बारे में जानने के लिए, Cloud Functions के संसाधन मेंsourceDirectoryदेखें.निम्न पर ध्यान दें:
हर
package.jsonफ़ाइल के लिए, उससे जुड़ीpackage-lock.jsonफ़ाइल होनी चाहिए. ज़्यादा जानकारी के लिए, npm-ci देखें.डिपेंडेंसी इंस्टॉल करने के दौरान, पोस्ट-इंस्टॉल स्क्रिप्ट नहीं चलाई जाएंगी. अगर आपका सोर्स कोड बिल्ड, इंस्टॉल करने के बाद चलने वाली स्क्रिप्ट पर निर्भर करता है, तो उसे अपलोड करने से पहले फिर से बनाएं.
यह
extension.yamlमें बताए गए हर फ़ंक्शन सोर्स डायरेक्ट्री मेंnpm run buildचलाकर, आपका कोड बनाता है.
आपके एक्सटेंशन की सिर्फ़ रूट डायरेक्ट्री को फ़ाइनल एक्सटेंशन पैकेज में सेव किया जाएगा. इस पैकेज को शेयर किया जाएगा.
अगर एक्सटेंशन अपलोड करते समय आपको बिल्ड से जुड़ी गड़बड़ियां मिलती हैं, तो ऊपर दिए गए बिल्ड के चरणों को स्थानीय तौर पर नई डायरेक्ट्री में दोहराएं. ऐसा तब तक करें, जब तक कोई गड़बड़ी न हो. इसके बाद, फिर से अपलोड करने की कोशिश करें.