আপনার এক্সটেনশন প্রকাশ করুন

এই পৃষ্ঠায় ব্যাখ্যা করা হয়েছে কীভাবে আপনি এক্সটেনশনস হাব-এ একটি এক্সটেনশন প্রকাশ করতে পারেন।

শুরু করার আগে

একটি এক্সটেনশন প্রকাশ করতে হলে, প্রথমে আপনাকে এক্সটেনশন প্রকাশক হিসেবে নিবন্ধন করতে হবে।

যাচাইযোগ্য উৎস

এক্সটেনশনস হাবে প্রকাশিত সমস্ত এক্সটেনশনের একটি সর্বজনীনভাবে যাচাইযোগ্য উৎস থাকতে হবে। আপনার এক্সটেনশনের সোর্স কোড সরাসরি এক্সটেনশনস হাবে আপলোড করার পরিবর্তে, আপনি উৎসের অবস্থান নির্দিষ্ট করে দেবেন এবং এক্সটেনশনস হাব সেখান থেকে এটি ডাউনলোড করে বিল্ড করবে।

বর্তমানে, এর অর্থ হলো আপনার এক্সটেনশনের সোর্স কোড একটি পাবলিক গিটহাব রিপোজিটরিতে উপলব্ধ করা।

যাচাইযোগ্য উৎস থেকে আপলোড করার বেশ কিছু সুবিধা রয়েছে:

  • ব্যবহারকারীরা এক্সটেনশনটির যে নির্দিষ্ট সংস্করণটি ইনস্টল করা হবে, তার সোর্স কোড পরিদর্শন করতে পারেন।
  • আপনি নিশ্চিত করতে পারেন যে আপনি কেবল যা আপলোড করতে চান, তাই আপলোড করছেন; উদাহরণস্বরূপ, কোনো চলমান কাজ বা উন্নয়নের পর অবশিষ্ট থাকা কোনো ফাইল নয়।

প্রস্তাবিত উন্নয়ন চক্র

ফায়ারবেস এক্সটেনশন ডেভেলপমেন্ট টুলস আপনার এক্সটেনশনগুলোর প্রি-রিলিজ সংস্করণ আপলোড করা সমর্থন করে, যার ফলে আপনি যে পরিবেশে এক্সটেনশনগুলো অবশেষে প্রকাশ করবেন, ঠিক সেই একই পরিবেশে সেগুলোর পরীক্ষা এবং ইনস্টলেশন প্রক্রিয়া সহজেই করতে পারেন।

এই সক্ষমতা নিম্নলিখিত ধরনের একটি উন্নয়ন চক্রকে সম্ভব করে তোলে:

  1. Firebase Emulator Suite ব্যবহার করে আপনার এক্সটেনশনটি তৈরি করুন এবং দ্রুত এর উন্নতি সাধন করুন।

  2. স্থানীয় উৎস থেকে ইনস্টল করে একটি বাস্তব প্রকল্পে আপনার এক্সটেনশনটি পরীক্ষা করুন:

    firebase ext:install /path/to/extension
    firebase deploy --only extensions
  3. এক্সটেনশনস হাব-এ একটি প্রি-রিলিজ সংস্করণ আপলোড করুন (নিচে দেখুন)। ব্যাপক পরীক্ষার জন্য ইনস্টলেশন লিঙ্কটি বিতরণ করুন, এবং প্রয়োজন অনুযায়ী আরও প্রি-রিলিজ সংস্করণ আপলোড করে পুনরাবৃত্তি করুন।

  4. চূড়ান্ত ও স্থিতিশীল সংস্করণটি এক্সটেনশন হাব-এ (নিচে দেখুন) আপলোড করুন এবং পর্যালোচনার জন্য জমা দিন। এক্সটেনশনটি পর্যালোচনায় উত্তীর্ণ হলে, এটি এক্সটেনশন হাব-এ প্রকাশিত হবে।

  5. extension.yaml ফাইলে ভার্সন নম্বরটি বাড়িয়ে দিন এবং আপনার এক্সটেনশনের পরবর্তী ভার্সনের জন্য এই চক্রটি পুনরাবৃত্তি করুন।

একটি নতুন এক্সটেনশন আপলোড করুন

প্রথমবার এক্সটেনশন আপলোড করতে:

  1. ঐচ্ছিক : আপনার কোডটি একটি পাবলিক গিটহাব রিপোজিটরিতে কমিট করুন।

  2. Firebase CLI-এর ext:dev:upload কমান্ডটি চালান:

    গিটহাব

    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

    কমান্ডটি আপনার কাছে অতিরিক্ত তথ্য চাইবে:

    • আপনি যদি গিটহাব থেকে আপলোড করেন:

      • গিটহাবে এক্সটেনশনটির রিপোজিটরির ইউআরএল। উল্লেখ্য যে, একটি রিপোজিটরিতে একাধিক এক্সটেনশন থাকতে পারে, তবে শর্ত হলো প্রতিটি এক্সটেনশনের একটি অনন্য রুট থাকতে হবে।

        আপনি যখন প্রথমবারের মতো একটি নতুন এক্সটেনশন আপলোড করবেন, তখন রিপোজিটরিটি আপনার এক্সটেনশনের জন্য প্রামাণিক উৎস হিসেবে নিবন্ধিত হবে।

      • রিপোজিটরির সেই ডিরেক্টরি যেখানে আপনার এক্সটেনশনটি রয়েছে।

      • যে কমিট থেকে আপনি আপনার এক্সটেনশন ভার্সনের সোর্স তৈরি করতে চান, তার গিট রেফারেন্স। এটি একটি কমিট হ্যাশ, ট্যাগ বা ব্রাঞ্চের নাম হতে পারে।

    • আপনি যে সংস্করণটি আপলোড করছেন তার প্রকাশের পর্যায়।

      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. ঐচ্ছিক : আপনার কোড একটি পাবলিক গিট রিপোজিটরিতে কমিট করুন।

  2. Firebase CLI-এর ext:dev:upload কমান্ডটি চালান:

    গিটহাব

    firebase ext:dev:upload your_publisher_id/your_extension_id

    এইবার আপনাকে গিটহাব রিপোজিটরি বা এক্সটেনশন রুট ডিরেক্টরি নির্দিষ্ট করতে বলা হবে না, কারণ সেগুলি আপনার এক্সটেনশনের জন্য ইতিমধ্যেই কনফিগার করা আছে। যদি এর পরে আপনি আপনার রিপোজিটরি কাঠামো রিফ্যাক্টর করে থাকেন বা একটি নতুন রিপোজিটরিতে স্থানান্তরিত হয়ে থাকেন, তাহলে আপনি --root এবং --repo কমান্ড আর্গুমেন্ট ব্যবহার করে সেগুলি পরিবর্তন করতে পারেন।

    স্থানীয় উৎস

    cd /path/to/extension
    firebase ext:dev:upload your_publisher_id/your_extension_id --local

প্রকাশের জন্য সময় বাড়ানোর আবেদন জমা দিন

যখন আপনি আপনার এক্সটেনশনটি সর্বসমক্ষে প্রকাশ করার জন্য প্রস্তুত হবেন:

  1. আপনার কোড একটি পাবলিক গিট রিপোজিটরিতে কমিট করুন। (পাবলিক রিলিজের জন্য এটি আবশ্যক।)

  2. রিলিজ স্টেজ হিসেবে stable উল্লেখ করে Firebase CLI-এর ext:dev:upload কমান্ডটি চালান:

    firebase ext:dev:upload your_publisher_id/your_extension_id
  3. আপনি যদি পূর্বে আপনার এক্সটেনশনের কোনো সংস্করণ প্রকাশ করে থাকেন, তাহলে একটি নতুন স্থিতিশীল রিলিজ আপলোড করলে এক্সটেনশনটি স্বয়ংক্রিয়ভাবে পর্যালোচনার জন্য জমা হয়ে যাবে।

    আপনি যদি এক্সটেনশনটির প্রথম স্থিতিশীল সংস্করণ আপলোড করে থাকেন, তাহলে আপনার পাবলিশার ড্যাশবোর্ডে এক্সটেনশনটি খুঁজুন এবং ‘Publish to Extensions Hub’-এ ক্লিক করুন।

জমা দেওয়ার পর পর্যালোচনা হতে কয়েক দিন সময় লাগতে পারে। গৃহীত হলে, এক্সটেনশনটি এক্সটেনশনস হাব-এ প্রকাশ করা হবে। প্রত্যাখ্যাত হলে, আপনি কারণ ব্যাখ্যা করে একটি বার্তা পাবেন; এরপর আপনি উল্লিখিত সমস্যাগুলো সমাধান করে পর্যালোচনার জন্য পুনরায় জমা দিতে পারবেন।

পর্যালোচনা দ্রুত করতে এবং প্রথম চেষ্টাতেই পাশ করার সম্ভাবনা বাড়াতে, জমা দেওয়ার আগে নিম্নলিখিত বিষয়গুলো পুনরায় যাচাই করে নিন:

  • আপনি আপনার এক্সটেনশন এবং ইনস্টলেশন প্রক্রিয়াটি পুঙ্খানুপুঙ্খভাবে পরীক্ষা করেছেন।
  • আপনার ডকুমেন্টেশন সম্পূর্ণ ও সঠিক এবং ফায়ারবেস কনসোলে এটি ভালোভাবে প্রদর্শিত হয়।
  • আপনার প্রকাশকের নাম এবং ব্র্যান্ডিং আপনাকে প্রকাশক হিসেবে স্পষ্টভাবে ও নির্ভুলভাবে চিহ্নিত করে।
  • আপনার এক্সটেনশনের নাম, বিবরণ এবং আইকন এর উদ্দেশ্যকে সুস্পষ্ট ও নির্ভুলভাবে তুলে ধরে।
  • আপনি সহায়ক ও সঠিক ট্যাগ প্রয়োগ করেছেন।
  • আপনি extension.yaml ফাইলে আপনার ব্যবহৃত সমস্ত গুগল ও নন-গুগল এপিআই এবং আপনার এক্সটেনশন দ্বারা নির্গত সমস্ত ইভেন্টের ধরন ঘোষণা করেছেন।
  • আপনি শুধুমাত্র এক্সটেনশনটি সঠিকভাবে কাজ করার জন্য প্রয়োজনীয় রোলগুলোর অ্যাক্সেসের অনুরোধ করছেন, এবং আপনার কেন এই ধরনের অ্যাক্সেস প্রয়োজন তা আপনি ব্যবহারকারীদের কাছে স্পষ্টভাবে ব্যাখ্যা করেছেন।
  • আপনার সোর্স ফাইলগুলো Apache-2.0 এর শর্তাবলীর অধীনে সুস্পষ্টভাবে লাইসেন্সপ্রাপ্ত।

আপলোড করা এবং প্রকাশিত এক্সটেনশনগুলি পরিচালনা করুন

আপনার আপলোড করা এক্সটেনশনগুলির তালিকা করুন

আপনার পাবলিশার আইডির অধীনে আপলোড করা এক্সটেনশনগুলির তালিকা দেখতে, নিম্নলিখিতগুলির মধ্যে একটি করুন:

প্রকাশক ড্যাশবোর্ড

প্রকাশক ড্যাশবোর্ডে সেগুলি দেখুন।

ফায়ারবেস সিএলআই

ext:dev:list কমান্ডটি চালান:

firebase ext:dev:list your_publisher_id

আপনার আপলোড করা এক্সটেনশনগুলির ব্যবহার দেখুন

আপনার পাবলিশার আইডির অধীনে আপলোড করা এক্সটেনশনগুলোর ব্যবহার দেখতে, নিম্নলিখিতগুলির মধ্যে একটি করুন:

প্রকাশক ড্যাশবোর্ড

পাবলিশার ড্যাশবোর্ডে আপনার সমস্ত এক্সটেনশনের মোট ব্যবহারের মেট্রিক এবং প্রতিটি এক্সটেনশনের স্বতন্ত্র মেট্রিক রয়েছে।

ফায়ারবেস সিএলআই

ext:dev:usage কমান্ডটি চালান:

firebase ext:dev:usage your_publisher_id

একটি এক্সটেনশনের সংস্করণ বাতিল করুন

কোনো এক সময়ে, আপনি আপনার এক্সটেনশনের পুরোনো সংস্করণটি বাতিল করতে চাইতে পারেন। উদাহরণস্বরূপ, যদি আপনি এমন একটি নতুন সংস্করণ প্রকাশ করেন যা একটি গুরুতর বাগ সংশোধন করে বা একটি গুরুত্বপূর্ণ নিরাপত্তা আপডেটের মাধ্যমে কোনো ডিপেন্ডেন্সি আপডেট করে, তবে নতুন ব্যবহারকারীদের পুরোনো সংস্করণটি ইনস্টল করা থেকে বিরত রাখা এবং বিদ্যমান ব্যবহারকারীদের আপগ্রেড করতে উৎসাহিত করা জরুরি।

কোনো এক্সটেনশনের সংস্করণ বাতিল করতে, নিম্নলিখিতগুলির মধ্যে একটি করুন:

প্রকাশক ড্যাশবোর্ড

  1. পাবলিশার ড্যাশবোর্ডে , এক্সটেনশনটির বিস্তারিত ভিউ খুলতে সেটিতে ক্লিক করুন।
  2. যে সংস্করণটি বাতিল করতে চান, সেটি নির্বাচন করুন।
  3. অপ্রচলিত সংস্করণ ক্লিক করুন।

ফায়ারবেস সিএলআই

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.*

কোনো এক্সটেনশনের অপ্রচলিত সংস্করণগুলো এক্সটেনশনস হাব-এ তালিকাভুক্ত থাকে না এবং ইনস্টল করা যায় না। যেসব ব্যবহারকারীর প্রজেক্টে অপ্রচলিত সংস্করণ ইনস্টল করা আছে, তারা আপগ্রেড করার জন্য একটি উৎসাহমূলক বার্তা দেখতে পাবেন; তবে এর মধ্যে তারা এক্সটেনশনটি ব্যবহার এবং পুনরায় কনফিগার করতে পারবেন।

যদি কোনো এক্সটেনশনের প্রতিটি সংস্করণই অপ্রচলিত (deprecated) হয়ে যায়, তবে এক্সটেনশনটিকে অপ্রচলিত বলে গণ্য করা হবে এবং এক্সটেনশনস হাব (Extensions Hub) থেকে এটি তালিকাচ্যুত করা হবে। একটি অপ্রচলিত এক্সটেনশনের নতুন সংস্করণ আপলোড করলে স্বয়ংক্রিয়ভাবে একটি পর্যালোচনা শুরু হবে এবং গৃহীত হলে, এটি এক্সটেনশনস হাব-এ পুনরায় প্রকাশিত হবে।

কোনো বাতিলকরণ প্রত্যাহার করতে, পাবলিশার ড্যাশবোর্ড ব্যবহার করুন, অথবা Firebase CLI-এর ext:dev:undeprecate কমান্ডটি চালান:

firebase ext:dev:undeprecate your_publisher_id/your_extension_id versions

পরিশিষ্ট: বিল্ড ত্রুটি সমাধান

যখন আপনি আপনার এক্সটেনশন আপলোড করেন, তখন ব্যাকএন্ড প্রথমে নিম্নলিখিত প্রক্রিয়াটি ব্যবহার করে আপনার সোর্স কোড বিল্ড করে:

  1. আপনার গিটহাব রিপোজিটরি ক্লোন করে এবং নির্দিষ্ট সোর্স রেফটি চেক আউট করে।

  2. extension.yaml এ নির্দিষ্ট করা প্রতিটি ফাংশন সোর্স ডিরেক্টরিতে ( ক্লাউড ফাংশন রিসোর্সের sourceDirectory দেখুন) npm clean-install চালিয়ে NPM ডিপেন্ডেন্সিগুলো ইনস্টল করে।

    নিম্নলিখিত বিষয়গুলো লক্ষ্য করুন:

    • প্রতিটি package.json ফাইলের একটি সংশ্লিষ্ট package-lock.json ফাইল থাকতে হবে। আরও তথ্যের জন্য, npm-ci দেখুন।

    • ডিপেন্ডেন্সি ইনস্টলেশনের সময় পোস্ট-ইনস্টল স্ক্রিপ্টগুলো চালানো হবে না। যদি আপনার সোর্স কোড বিল্ড পোস্ট-ইনস্টল স্ক্রিপ্টের উপর নির্ভরশীল হয়, তবে আপলোড করার আগে কোডটি রিফ্যাক্টর করুন।

  3. extension.yaml এ নির্দিষ্ট করা প্রতিটি ফাংশন সোর্স ডিরেক্টরিতে npm run build চালিয়ে আপনার কোড বিল্ড করা হয়।

শেয়ার করা চূড়ান্ত এক্সটেনশন প্যাকেজটিতে শুধুমাত্র আপনার এক্সটেনশনের রুট ডিরেক্টরিটি সংরক্ষিত হবে।

আপনার এক্সটেনশন আপলোড করার সময় যদি বিল্ড এরর আসে, তাহলে উপরের বিল্ড ধাপগুলো স্থানীয়ভাবে একটি নতুন ডিরেক্টরিতে পুনরায় অনুসরণ করুন যতক্ষণ না কোনো এরর থাকে, তারপর আবার আপলোড করার চেষ্টা করুন।