fastlane ব্যবহার করে টেস্টারদের কাছে Android অ্যাপ ডিস্ট্রিবিউট করা


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

শুরু করার আগে

  1. আপনি আগে থেকে না করে থাকলে, আপনার Android প্রোজেক্টে Firebase যোগ করুন।

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

  2. Firebase কনসোলের App Distribution পৃষ্ঠা খুলুন। প্রম্পট করা হলে আপনার Firebase প্রোজেক্ট বেছে নিন, অ্যাপ সুইচার ব্যবহার করে আপনার অ্যাপ বেছে নিন এবং শুরু করুন বিকল্পে ক্লিক করুন।

ধাপ ১. fastlane সেট-আপ করা

  1. fastlane ইনস্টল ও সেট-আপ করুন।

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

    fastlane add_plugin firebase_app_distribution

    কমান্ডটি আপনাকে কোনও বিকল্প দেখালে, Option 3: RubyGems.org বেছে নিন।

ধাপ ২. Firebase-এর মাধ্যমে যাচাইকরণ

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

ধাপ ৩. আপনার Fastfile সেট-আপ করুন এবং অ্যাপ ডিস্ট্রিবিউট করুন

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

    প্রয়োজনীয়: আপনার অ্যাপের Firebase অ্যাপ আইডি। আপনি Firebase কনসোলে, সাধারণ সেটিংস পৃষ্ঠায় অ্যাপ আইডি দেখতে পাবেন।

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

    আপনি যখন Firebase CLI-এর মাধ্যমে আপনার CI এনভায়রনমেন্টকে যাচাই করেন তখন প্রিন্ট করা একটি রিফ্রেশ টোকেন (আরও তথ্যের জন্য CI সিস্টেমের সাথে CLI ব্যবহার করুন পড়ুন)।

    service_credentials_file

    আপনার Google পরিষেবা অ্যাকাউন্টের json ফাইলের পাথ। কীভাবে পরিষেবা অ্যাকাউন্টের ক্রেডেনশিয়াল ব্যবহার করে যাচাই করতে হয় তা উপরে দেখুন।

    android_artifact_type

    Android ফাইলের ধরন (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"

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

    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

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

    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 ডকুমেন্টেশন দেখুন।

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

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

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

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

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

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-এ সেট করা ভ্যালুকে ওভাররাইড করে।

Firebase প্রোজেক্টে কোনও টেস্টারকে যোগ করার পরে, আপনি তাকে আলাদা আলাদা রিলিজের জন্য যোগ করতে পারবেন। আপনার Firebase প্রোজেক্ট থেকে সরিয়ে দেওয়া পরীক্ষকরা আপনার প্রোজেক্টে রিলিজ আর অ্যাক্সেস করতে পারবেন না, তবে তারা কিছু সময়ের জন্য আপনার রিলিজ অ্যাক্সেস করতে পারবেন।

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

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 অ্যাকশন রান করা

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_number: আপনার Firebase প্রোজেক্ট নম্বর।
  • group_alias (ঐচ্ছিক): উল্লেখ করা থাকলে, পরীক্ষকদের উল্লেখ করা গ্রুপে যোগ করা হয় (বা সরানো হয়) ।
  • service_credentials_file: আপনার Google পরিষেবা ক্রেডেনশিয়াল ফাইলের পাথ।
  • firebase_cli_token: Firebase CLI-এর জন্য অনুমোদনের টোকেন।

আপলোড অ্যাকশন ব্যবহার করা service_credentials_file ও firebase_cli_token একই আর্গুমেন্ট।

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

আপনি firebase_app_distribution_get_latest_release অ্যাকশন ব্যবহার করে App Distribution-এ আপনার অ্যাপের লেটেস্ট রিলিজ সম্পর্কে তথ্য পেতে পারেন, এর মধ্যে অ্যাপ ভার্সন সংক্রান্ত তথ্য, রিলিজ নোট ও তৈরি করার সময় অন্তর্ভুক্ত। ব্যবহারের ক্ষেত্রে ভার্সন অটোমেটিক বাড়ানো এবং আগের রিলিজ থেকে রিলিজ নোট যোগ করা অন্তর্ভুক্ত।

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

প্যারামিটারগুলি

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

প্রয়োজনীয়: আপনার অ্যাপের Firebase অ্যাপ আইডি। আপনি Firebase কনসোলে, সাধারণ সেটিংস পৃষ্ঠায় অ্যাপ আইডি দেখতে পাবেন।

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

আপনি যখন Firebase CLI-এর মাধ্যমে আপনার CI এনভায়রনমেন্টকে যাচাই করেন তখন প্রিন্ট করা একটি রিফ্রেশ টোকেন (আরও তথ্যের জন্য CI সিস্টেমের সাথে CLI ব্যবহার করুন পড়ুন)।

service_credentials_file

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

debug

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

পরবর্তী ধাপ