इस पेज पर, Extensions Hub पर एक्सटेंशन पब्लिश करने का तरीका बताया गया है.
शुरू करने से पहले
एक्सटेंशन पब्लिश करने के लिए, आपको सबसे पहले एक्सटेंशन पब्लिशर के तौर पर रजिस्टर करना होगा.
पुष्टि किए जा सकने वाले सोर्स
Extensions Hub पर पब्लिश किए गए सभी एक्सटेंशन का सोर्स, सार्वजनिक तौर पर पुष्टि किया जा सकने वाला होना चाहिए. एक्सटेंशन के सोर्स कोड को सीधे Extensions Hub पर अपलोड करने के बजाय, सोर्स लोकेशन तय करें. इसके बाद, Extension Hub उसे डाउनलोड करेगा और वहीं से उसे बनाएगा.
फ़िलहाल, इसका मतलब है कि आपको अपने एक्सटेंशन का सोर्स कोड, GitHub के सार्वजनिक डेटाबेस पर उपलब्ध कराना होगा.
पुष्टि किए गए सोर्स से कॉन्टेंट अपलोड करने के कई फ़ायदे हैं:
- उपयोगकर्ता, एक्सटेंशन के उस खास वर्शन के सोर्स कोड की जांच कर सकते हैं जिसे इंस्टॉल किया जाएगा.
- इससे यह पक्का किया जा सकता है कि आपने सिर्फ़ वही कॉन्टेंट अपलोड किया है जिसे आपको अपलोड करना है. जैसे, डेवलपमेंट के दौरान बची हुई फ़ाइलें या अधूरा काम अपलोड न हो.
सुझाया गया डेवलपमेंट साइकल
Firebase Extensions के डेवलपमेंट टूल, एक्सटेंशन के रिलीज़ से पहले वाले वर्शन अपलोड करने की सुविधा देते हैं. इससे, एक्सटेंशन और एक्सटेंशन इंस्टॉल करने की प्रोसेस को उसी एनवायरमेंट में टेस्ट करना आसान हो जाता है जिसमें उन्हें आखिर में रिलीज़ किया जाएगा.
इस सुविधा की मदद से, डेवलपमेंट साइकल को इस तरह से पूरा किया जा सकता है:
Firebase Emulator Suite का इस्तेमाल करके, एक्सटेंशन को डेवलप करें और उसे तुरंत दोहराएं.
स्थानीय सोर्स से एक्सटेंशन इंस्टॉल करके, उसे किसी असली प्रोजेक्ट में आज़माएं:
firebase ext:install /path/to/extension
firebase deploy --only extensions
Extensions 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/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 कंसोल में अपग्रेड करने के लिए कहा जाएगा.
अपडेट अपलोड करने के लिए:
ज़रूरी नहीं: अपने कोड को सार्वजनिक Git डेटा स्टोर करने की जगह पर कमिट करें.
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
पब्लिश करने के लिए एक्सटेंशन सबमिट करना
जब आपको अपना एक्सटेंशन सार्वजनिक तौर पर रिलीज़ करना हो, तब:
अपने कोड को सार्वजनिक 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.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
अपेंडिक्स: बिल्ड से जुड़ी गड़बड़ियों को ठीक करना
एक्सटेंशन अपलोड करने पर, बैकएंड सबसे पहले आपके सोर्स कोड को बनाता है. इसके लिए, वह यह प्रोसेस अपनाता है:
यह आपकी GitHub रिपॉज़िटरी को क्लोन करता है और तय किए गए सोर्स रेफ़रंस की जांच करता है.
यह हर फ़ंक्शन के सोर्स डायरेक्ट्री में
npm clean-install
चलाकर, NPM डिपेंडेंसी इंस्टॉल करता है. यह डायरेक्ट्री,extension.yaml
में दी गई होती है. इसके बारे में जानने के लिए, Cloud Functions के संसाधन मेंsourceDirectory
देखें.निम्न पर ध्यान दें:
हर
package.json
फ़ाइल के लिए, उससे जुड़ीpackage-lock.json
फ़ाइल होनी चाहिए. ज़्यादा जानकारी के लिए, npm-ci देखें.डिपेंडेंसी इंस्टॉल करने के दौरान, पोस्ट-इंस्टॉल स्क्रिप्ट नहीं चलाई जाएंगी. अगर आपके सोर्स कोड का बिल्ड, इंस्टॉल करने के बाद चलने वाली स्क्रिप्ट पर निर्भर करता है, तो उसे अपलोड करने से पहले फिर से तैयार करें.
यह
extension.yaml
में बताए गए हर फ़ंक्शन सोर्स डायरेक्ट्री मेंnpm run build
चलाकर, आपका कोड बनाता है.
आपके एक्सटेंशन की सिर्फ़ रूट डायरेक्ट्री को फ़ाइनल एक्सटेंशन पैकेज में सेव किया जाएगा. इस पैकेज को शेयर किया जाएगा.
अगर एक्सटेंशन अपलोड करते समय आपको बिल्ड से जुड़ी गड़बड़ियां मिलती हैं, तो ऊपर दिए गए बिल्ड के चरणों को स्थानीय तौर पर नई डायरेक्ट्री में दोहराएं. ऐसा तब तक करें, जब तक कोई गड़बड़ी न हो. इसके बाद, फिर से अपलोड करने की कोशिश करें.