ফাস্টলেন ব্যবহার করে পরীক্ষকদের কাছে Android অ্যাপ বিতরণ করুন


এই ডকুমেন্টটিতে বর্ণনা করা হয়েছে কিভাবে ফাস্টলেন (fastlane) ব্যবহার করে পরীক্ষকদের কাছে APK বিল্ড বিতরণ করা যায়। ফাস্টলেন হলো একটি ওপেন সোর্স প্ল্যাটফর্ম যা iOS এবং Android অ্যাপ তৈরি ও রিলিজ করার প্রক্রিয়াকে স্বয়ংক্রিয় করে। এই ডকুমেন্টটি একটি Fastfile -এ সংজ্ঞায়িত নির্দেশাবলী অনুসরণ করে। ফাস্টলেন এবং আপনার Fastfile সেট আপ করার পরে, আপনি আপনার ফাস্টলেন কনফিগারেশনের সাথে App Distribution একীভূত করতে পারবেন।

শুরু করার আগে

যদি আগে থেকে না করে থাকেন, তাহলে আপনার অ্যান্ড্রয়েড প্রজেক্টে ফায়ারবেস যোগ করুন

আপনি যদি অন্য কোনো Firebase প্রোডাক্ট ব্যবহার না করেন, তাহলে আপনাকে শুধু একটি প্রজেক্ট তৈরি করে আপনার অ্যাপটি রেজিস্টার করতে হবে। তবে, ভবিষ্যতে যদি আপনি অতিরিক্ত প্রোডাক্ট ব্যবহার করার সিদ্ধান্ত নেন, তাহলে উপরে লিঙ্ক দেওয়া পৃষ্ঠার সমস্ত ধাপ অবশ্যই সম্পন্ন করবেন।

ধাপ ১. ফাস্টলেন সেট আপ করুন

  1. ফাস্টলেন ইনস্টল ও সেট আপ করুন

  2. আপনার fastlane কনফিগারেশনে App Distribution যোগ করতে, আপনার অ্যান্ড্রয়েড প্রজেক্টের রুট থেকে নিম্নলিখিত কমান্ডটি চালান:

    fastlane add_plugin firebase_app_distribution

    যদি কমান্ডটি আপনাকে কোনো অপশন দেখায়, তাহলে Option 3: RubyGems.org নির্বাচন করুন।

ধাপ ২. ফায়ারবেস দিয়ে প্রমাণীকরণ করুন।

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

ধাপ ৩. আপনার ফাস্টফাইল সেট আপ করুন এবং আপনার অ্যাপটি বিতরণ করুন।

  1. ./fastlane/Fastfile লেনে একটি firebase_app_distribution ব্লক যোগ করুন। ডিস্ট্রিবিউশনটি কনফিগার করতে নিম্নলিখিত প্যারামিটারগুলো ব্যবহার করুন:
    firebase_app_distribution প্যারামিটার
    app

    আবশ্যক : আপনার অ্যাপের ফায়ারবেস অ্যাপ আইডি। আপনি Firebase কনসোলের জেনারেল সেটিংস পৃষ্ঠায় অ্যাপ আইডিটি খুঁজে পাবেন।

    app: "1:1234567890:android:0a1b2c3d4e5f67890"
    firebase_cli_token

    একটি রিফ্রেশ টোকেন যা ফায়ারবেস সিএলআই Firebase CLI) দিয়ে আপনার সিআই (CI) এনভায়রনমেন্ট প্রমাণীকরণের সময় প্রিন্ট করা হয় (আরও তথ্যের জন্য "সিআই সিস্টেমের সাথে সিএলআই ব্যবহার করুন" পড়ুন)।

    service_credentials_file

    আপনার গুগল সার্ভিস অ্যাকাউন্ট json ফাইলের পাথ। সার্ভিস অ্যাকাউন্টের ক্রেডেনশিয়াল ব্যবহার করে কীভাবে প্রমাণীকরণ করতে হয়, তা জানতে উপরে দেখুন।

    android_artifact_type

    অ্যান্ড্রয়েড ফাইলের ধরণ (APK বা AAB) নির্দিষ্ট করে।

    android_artifact_path

    apk_path (অপ্রচলিত)-এর পরিবর্তে ব্যবহৃত হয়। আপনি যে APK বা AAB ফাইলটি আপলোড করতে চান, তার অ্যাবসোলিউট পাথ। যদি এটি নির্দিষ্ট না করা হয়, তাহলে fastlane ফাইলটি যে লেনে তৈরি হয়েছে, সেখান থেকে এর অবস্থান নির্ধারণ করে।

    release_notes
    release_notes_file

    এই বিল্ডের রিলিজ নোট।

    আপনি সরাসরি রিলিজ নোট উল্লেখ করতে পারেন:

    release_notes: "Text of release notes"

    অথবা, একটি প্লেইন টেক্সট ফাইলের পাথ নির্দিষ্ট করুন:

    release_notes_file: "/path/to/release-notes.txt"
    testers
    testers_file

    আপনি যে পরীক্ষকদের আমন্ত্রণ জানাতে চান, তাদের ইমেল ঠিকানাগুলো।

    আপনি পরীক্ষকদেরকে কমা দিয়ে আলাদা করা ইমেল ঠিকানার তালিকা হিসেবে নির্দিষ্ট করতে পারেন:

    testers: "ali@example.com, bri@example.com, cal@example.com"

    অথবা, আপনি কমা দিয়ে আলাদা করা ইমেল ঠিকানার তালিকা সম্বলিত একটি সাধারণ টেক্সট ফাইলের পাথ নির্দিষ্ট করে দিতে পারেন:

    testers_file: "/path/to/testers.txt"
    groups
    groups_file

    আপনি যে পরীক্ষক গোষ্ঠীগুলিকে আমন্ত্রণ জানাতে চান ( পরীক্ষক পরিচালনা দেখুন)। গোষ্ঠীগুলি নির্দিষ্ট করা হয় ব্যবহার করে গ্রুপ উপনাম যা আপনি Firebase কনসোলে খুঁজে দেখতে পারেন।

    আপনি গ্রুপগুলোকে কমা দিয়ে আলাদা করা তালিকা হিসেবে নির্দিষ্ট করতে পারেন:

    groups: "qa-team, trusted-testers"

    অথবা, আপনি একটি সাধারণ টেক্সট ফাইলের পাথ নির্দিষ্ট করে দিতে পারেন, যেখানে কমা দিয়ে আলাদা করা গ্রুপ নামগুলোর একটি তালিকা থাকবে:

    groups_file: "/path/to/groups.txt"
    test_devices
    test_devices_file

    নিম্নলিখিত বিতরণ প্রকারগুলি স্বয়ংক্রিয় পরীক্ষক বিটা বৈশিষ্ট্যের অংশ।

    যে টেস্ট ডিভাইসগুলিতে আপনি বিল্ডগুলি বিতরণ করতে চান ( স্বয়ংক্রিয় পরীক্ষাগুলি দেখুন)।

    আপনি সেমিকোলন দ্বারা পৃথক করা পরীক্ষার ডিভাইসগুলির একটি তালিকা হিসাবে পরীক্ষার ডিভাইসগুলি নির্দিষ্ট করতে পারেন:

    test_devices: "model=shiba,version=34,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait"

    অথবা, আপনি একটি সাধারণ টেক্সট ফাইলের পাথ নির্দিষ্ট করে দিতে পারেন, যেখানে সেমিকোলন দ্বারা পৃথক করা টেস্ট ডিভাইসগুলোর একটি তালিকা থাকবে:

    test_devices_file: "/path/to/test-devices.txt"
    test_username

    স্বয়ংক্রিয় পরীক্ষা চলাকালীন স্বয়ংক্রিয় লগইনের জন্য ব্যবহৃত ইউজারনেম।

    test_password
    test_password_file

    স্বয়ংক্রিয় পরীক্ষা চলাকালীন ব্যবহারের জন্য স্বয়ংক্রিয় লগইনের পাসওয়ার্ড।

    অথবা, আপনি পাসওয়ার্ড সম্বলিত একটি প্লেইন টেক্সট ফাইলের পাথ নির্দিষ্ট করে দিতে পারেন:

    test_password_file: "/path/to/test-password.txt"
    test_username_resource

    স্বয়ংক্রিয় পরীক্ষা চলাকালীন ব্যবহারের জন্য স্বয়ংক্রিয় লগইনের ইউজারনেম ফিল্ডের রিসোর্স নেম।

    test_password_resource

    স্বয়ংক্রিয় পরীক্ষা চলাকালীন ব্যবহারের জন্য স্বয়ংক্রিয় লগইনের পাসওয়ার্ড ফিল্ডের রিসোর্স নেম।

    test_non_blocking

    স্বয়ংক্রিয় পরীক্ষাগুলো অ্যাসিঙ্ক্রোনাসভাবে চালান। স্বয়ংক্রিয় পরীক্ষার ফলাফল জানতে ফায়ারবেস কনসোল দেখুন।

    debug

    একটি বুলিয়ান ফ্ল্যাগ। বিস্তারিত ডিবাগ আউটপুট প্রিন্ট করার জন্য আপনি এটিকে ' true সেট করতে পারেন।

platform :android do
    desc "My awesome app"
    lane :distribute do
        build_android_app(...)
        # build_android_app is a built-in fastlane action.
        release = firebase_app_distribution(
            app: "1:123456789:android:abcd1234",
            testers: "tester1@company.com, tester2@company.com",
            release_notes: "Lots of amazing new features to test out!"
        )
    end
end

পরীক্ষকদের কাছে বিল্ডটি উপলব্ধ করতে, আপনার লেনটি চালান:

fastlane <lane>

অ্যাকশনটির রিটার্ন ভ্যালু হলো একটি হ্যাশ, যা আপলোড করা রিলিজটিকে উপস্থাপন করে। এই হ্যাশটি lane_context[SharedValues::FIREBASE_APP_DISTRO_RELEASE] ব্যবহার করেও পাওয়া যায়। এই হ্যাশে উপলব্ধ ফিল্ডগুলো সম্পর্কে আরও তথ্যের জন্য, REST API ডকুমেন্টেশন দেখুন।

রিলিজ আপলোড করার পর ফাস্টলেন প্লাগইনটি নিম্নলিখিত লিঙ্কগুলি আউটপুট করে। এই লিঙ্কগুলি আপনাকে বাইনারিগুলি পরিচালনা করতে এবং পরীক্ষক ও অন্যান্য ডেভেলপারদের কাছে সঠিক রিলিজটি পৌঁছেছে কিনা তা নিশ্চিত করতে সাহায্য করে:

  • Firebase কনসোলের একটি লিঙ্ক, যেখানে একটিমাত্র রিলিজ প্রদর্শিত হয়। আপনি এই লিঙ্কটি আপনার প্রতিষ্ঠানের অন্যান্য ডেভেলপারদের সাথে শেয়ার করতে পারেন।
  • টেস্টার এক্সপেরিয়েন্সে (অ্যান্ড্রয়েড নেটিভ অ্যাপ) রিলিজটির একটি লিঙ্ক থাকে, যা টেস্টারদের রিলিজ নোট দেখতে এবং তাদের ডিভাইসে অ্যাপটি ইনস্টল করতে দেয়। লিঙ্কটি ব্যবহার করার জন্য টেস্টারের রিলিজটিতে অ্যাক্সেস থাকা প্রয়োজন।
  • একটি স্বাক্ষরিত লিঙ্ক যা সরাসরি অ্যাপের বাইনারি (APK বা AAB ফাইল) ডাউনলোড এবং ইনস্টল করে। লিঙ্কটি এক ঘণ্টা পর মেয়াদোত্তীর্ণ হয়ে যায়।

আপনার বিল্ড ডিস্ট্রিবিউট করার পর, এটি Firebase কনসোলের App Distribution ড্যাশবোর্ডে ১৫০ দিনের জন্য উপলব্ধ থাকে। বিল্ডটির মেয়াদ শেষ হওয়ার ৩০ দিন আগে, কনসোলে এবং পরীক্ষকের টেস্ট ডিভাইসে থাকা বিল্ডের তালিকায় একটি মেয়াদোত্তীর্ণ হওয়ার বিজ্ঞপ্তি প্রদর্শিত হয়।

যেসব পরীক্ষককে আগে অ্যাপটি পরীক্ষা করার জন্য আমন্ত্রণ জানানো হয়নি, তারা কাজ শুরু করার জন্য ইমেল আমন্ত্রণ পান। বিদ্যমান পরীক্ষকরা একটি নতুন বিল্ড পরীক্ষার জন্য প্রস্তুত হলে ইমেল বিজ্ঞপ্তি পান। টেস্ট অ্যাপটি কীভাবে ইনস্টল করতে হয় তা জানতে, পরীক্ষক সেট আপ গাইড দেখুন। প্রতিটি পরীক্ষক আমন্ত্রণ গ্রহণ করেছেন কিনা এবং Firebase কনসোলে অ্যাপটি ডাউনলোড করেছেন কিনা তা জানতে আপনি তাদের স্ট্যাটাস পর্যবেক্ষণ করতে পারেন।

(ঐচ্ছিক) অ্যাপ ডিস্ট্রিবিউশনে প্রতিবার নতুন রিলিজ তৈরি করার সময় আপনার বিল্ড নম্বর স্বয়ংক্রিয়ভাবে বাড়ানোর জন্য, আপনি ` firebase_app_distribution_get_latest_release অ্যাকশন এবং, উদাহরণস্বরূপ, ` increment_version_code ফাস্টলেন প্লাগইন ব্যবহার করতে পারেন। নিম্নলিখিত কোডটি আপনার বিল্ড নম্বর স্বয়ংক্রিয়ভাবে বাড়ানোর একটি উদাহরণ প্রদান করে:

lane :increment_version do
  latest_release = firebase_app_distribution_get_latest_release(
    app: "<your Firebase app ID>"
  )
  increment_version_code({ version_code: latest_release[:buildVersion].to_i + 1 })
end

firebase_app_distribution_get_latest_release অ্যাকশনটি সম্পর্কে আরও জানতে, `আপনার অ্যাপের সর্বশেষ রিলিজ সম্পর্কে তথ্য জানুন` দেখুন।

ধাপ ৪ (ঐচ্ছিক)। ডিস্ট্রিবিউশনের জন্য টেস্টারদের পরিচালনা করা।

আপনি আপনার Fastfile ফাইল ব্যবহার করে অথবা সরাসরি fastlane অ্যাকশন চালিয়ে আপনার প্রজেক্ট বা গ্রুপ থেকে টেস্টার যোগ বা অপসারণ করতে পারেন। সরাসরি অ্যাকশন চালালে আপনার Fastfile এ সেট করা মানগুলো ওভাররাইড হয়ে যায়।

একবার আপনার ফায়ারবেস প্রজেক্টে কোনো পরীক্ষককে যুক্ত করা হলে, আপনি তাদেরকে স্বতন্ত্র রিলিজগুলোতে অন্তর্ভুক্ত করতে পারেন। যেসব পরীক্ষককে আপনার ফায়ারবেস প্রজেক্ট থেকে সরিয়ে দেওয়া হয়, তারা আপনার প্রজেক্টের রিলিজগুলোতে আর অ্যাক্সেস পান না, তবে তারা একটি নির্দিষ্ট সময়ের জন্য আপনার রিলিজগুলোতে অ্যাক্সেস ধরে রাখতে পারেন।

আপনার পরীক্ষকের সংখ্যা বেশি হলে দল ব্যবহার করার কথা বিবেচনা করা উচিত।

Fastfile ব্যবহার করুন

# Use lanes to add or remove testers from a project.
lane(:add_testers) do
  firebase_app_distribution_add_testers(
    emails: "foo@google.com,bar@google.com"
    # or file: "/path/to/testers.txt"
    group_alias: "qa-team" # (Optional) add testers to this group
  )
end

lane(:remove_testers) do
  firebase_app_distribution_remove_testers(
    emails: "foo@google.com,bar@google.com"
    # or file: "/path/to/testers.txt"
    group_alias: "qa-team" # (Optional) remove testers from this group only
  )
end
# Add or remove testers with the terminal
$ fastlane add_testers
$ fastlane remove_testers

ফাস্টলেন অ্যাকশন চালান

fastlane run firebase_app_distribution_create_group display_name:"QA Team" alias:"qa-team"
fastlane run firebase_app_distribution_add_testers group_alias:"qa-team" emails:"foo@google.com,bar@google.com"
fastlane run firebase_app_distribution_remove_testers group_alias:"qa-team" emails:"foo@google.com,bar@google.com"
fastlane run firebase_app_distribution_delete_group alias:"qa-team"

আপনি --emails এর পরিবর্তে --file="/path/to/testers.txt ব্যবহার করেও পরীক্ষকদের নির্দিষ্ট করতে পারেন।

firebase_app_distribution_add_testers এবং firebase_app_distribution_remove_testers টাস্কগুলো নিম্নলিখিত আর্গুমেন্টগুলোও গ্রহণ করে:

  • project_name : আপনার Firebase প্রজেক্ট নম্বর।
  • group_alias (ঐচ্ছিক): এটি নির্দিষ্ট করা হলে, পরীক্ষকদের নির্দিষ্ট গ্রুপে যুক্ত (বা সেখান থেকে অপসারিত) করা হয়।
  • service_credentials_file : আপনার গুগল পরিষেবা ক্রেডেনশিয়াল ফাইলের পাথ।
  • firebase_cli_token : Firebase সিএলআই-এর জন্য প্রমাণীকরণ টোকেন।

` service_credentials_file এবং firebase_cli_token হলো সেই একই আর্গুমেন্ট যা `upload` অ্যাকশনে ব্যবহৃত হয়।

ধাপ ৫ (ঐচ্ছিক)। আপনার অ্যাপের সর্বশেষ রিলিজ সম্পর্কে তথ্য জানুন।

আপনি অ্যাপ ডিস্ট্রিবিউশন থেকে আপনার অ্যাপের সর্বশেষ রিলিজের তথ্য, যেমন অ্যাপ ভার্সনের তথ্য, রিলিজ নোট এবং তৈরির সময়, সংগ্রহ করতে firebase_app_distribution_get_latest_release অ্যাকশনটি ব্যবহার করতে পারেন। এর ব্যবহারিক ক্ষেত্রগুলোর মধ্যে রয়েছে স্বয়ংক্রিয়ভাবে ভার্সন বৃদ্ধি করা এবং পূর্ববর্তী রিলিজ থেকে রিলিজ নোটগুলো স্থানান্তর করা।

অ্যাকশনটির রিটার্ন ভ্যালু হলো একটি হ্যাশ, যা সর্বশেষ রিলিজকে নির্দেশ করে। এই হ্যাশটি lane_context[SharedValues::FIREBASE_APP_DISTRO_LATEST_RELEASE] ব্যবহার করেও পাওয়া যায়। এই হ্যাশে উপলব্ধ ফিল্ডগুলো সম্পর্কে আরও তথ্যের জন্য, REST API ডকুমেন্টেশন দেখুন।

প্যারামিটার

firebase_app_distribution_get_latest_release প্যারামিটার
app

আবশ্যক : আপনার অ্যাপের ফায়ারবেস অ্যাপ আইডি। আপনি Firebase কনসোলের জেনারেল সেটিংস পৃষ্ঠায় অ্যাপ আইডিটি খুঁজে পাবেন।

app: "1:1234567890:android:0a1b2c3d4e5f67890"
firebase_cli_token

একটি রিফ্রেশ টোকেন যা ফায়ারবেস সিএলআই Firebase CLI) দিয়ে আপনার সিআই (CI) এনভায়রনমেন্ট প্রমাণীকরণের সময় প্রিন্ট করা হয় (আরও তথ্যের জন্য "সিআই সিস্টেমের সাথে সিএলআই ব্যবহার করুন" পড়ুন)।

service_credentials_file

আপনার গুগল সার্ভিস অ্যাকাউন্ট json ফাইলের পাথ। সার্ভিস অ্যাকাউন্টের ক্রেডেনশিয়াল ব্যবহার করে কীভাবে প্রমাণীকরণ করতে হয়, তা জানতে উপরে দেখুন।

debug

একটি বুলিয়ান ফ্ল্যাগ। বিস্তারিত ডিবাগ আউটপুট প্রিন্ট করার জন্য আপনি এটিকে ' true সেট করতে পারেন।

পরবর্তী পদক্ষেপ