Gym (Fastlane): এটি কী, আইপিএ বিল্ডিং এবং অ্যাপ ডেভেলপমেন্টে অটোমেশন

লেখক: IT Sectr প্রকাশিত: 2026-04-14 পড়ার সময়: 9 মিনিট

Gym (Fastlane) একটি টুল যা কমান্ড লাইনের মাধ্যমে iOS অ্যাপ্লিকেশনকে IPA ফরম্যাটে বিল্ড এবং সাইন করে। Xcode-এর বিপরীতে, যা ম্যানুয়ালি স্কিম এবং প্রোফাইল নির্বাচন প্রয়োজন, Gym সম্পূর্ণ এক্সপোর্ট এবং প্যাকেজিং প্রক্রিয়া স্বয়ংক্রিয় করে। অফিসিয়াল Fastlane ডকুমেন্টেশন (2026) অনুসারে, Gym xcodebuild প্যারামিটার অপ্টিমাইজেশন এবং সমান্তরাল রিসোর্স প্রসেসিংয়ের মাধ্যমে বিল্ড সময় 30% কমিয়ে দেয়।

মূল পয়েন্ট

  • Gym একটি ইউনিফায়েড কমান্ড-লাইন ইন্টারফেস সহ iOS অ্যাপ্লিকেশনকে IPA-তে স্বয়ংক্রিয়ভাবে বিল্ড করার জন্য Fastlane-এর একটি ইউটিলিটি।
  • টুলটি xcodebuild-এর উপর কাজ করে, কিন্তু জটিল এক্সপোর্ট ফ্ল্যাগগুলি লুকিয়ে রাখে এবং স্বয়ংক্রিয়ভাবে সঠিক সাইনিং পদ্ধতি নির্বাচন করে।
  • Gym সব ধরনের প্রোফাইলের জন্য বিল্ডিং সাপোর্ট করে: development, appstore, adhoc এবং enterprise — export_method প্যারামিটারের মাধ্যমে।
  • কনফিগারেশন Gymfile ফাইলের মাধ্যমে করা হয়, যা সোর্স কোডের সাথে প্রজেক্ট রিপোজিটরিতে ভার্সন করা যায়।
  • CI/CD ইন্টিগ্রেশন ডেভেলপারের হস্তক্ষেপ ছাড়াই রিপোজিটরিতে প্রতিটি পুশের পরে স্বয়ংক্রিয়ভাবে IPA বিল্ড চালানোর অনুমতি দেয়।

Gym (Fastlane) কী?

Gym (Fastlane) হল Fastlane ইকোসিস্টেমের একটি উপাদান যা একটি টার্মিনাল কমান্ড দিয়ে iOS অ্যাপ্লিকেশনকে IPA ফরম্যাটে বিল্ড করে। এটি ডজন ডজন ফ্ল্যাগ সহ xcodebuild কল করার জটিল প্রক্রিয়াকে বিমূর্ত করে এবং ডেভেলপারকে যুক্তিসঙ্গত ডিফল্ট মান সহ একটি সরল ইন্টারফেস প্রদান করে।

Xcode-এ, একটি IPA তৈরি করতে প্রজেক্ট খোলা, একটি স্কিম নির্বাচন, Archive এবং Export কনফিগার করা, বিতরণ পদ্ধতি নির্দিষ্ট করা এবং সম্পূর্ণ হওয়ার জন্য অপেক্ষা করা প্রয়োজন। বিল্ড অটোমেশন Gym-এর মাধ্যমে ম্যানুয়াল ধাপগুলি দূর করে এবং নিশ্চিত করে যে প্রতিটি বিল্ড একই প্যারামিটারে চলে — যা পূর্বাভাসযোগ্য CI/CD পাইপলাইনের জন্য গুরুত্বপূর্ণ।

SwiftLee (2024) অনুসারে, Gym ব্যবহারকারী দলগুলি Xcode Organizer-এর মাধ্যমে ম্যানুয়াল এক্সপোর্টের তুলনায় রিলিজ প্রক্রিয়া কনফিগার করতে 40% কম সময় ব্যয় করে। Gym প্রতিটি xcodebuild ধাপের সাথে বিস্তারিত বিল্ড লগও তৈরি করে, যা ব্যর্থ বিল্ড ডিবাগিং এবং কম্পাইলেশন ত্রুটি বিশ্লেষণকে সহজ করে।

যেকোনো iOS প্রজেক্টে Gym ব্যবহার করুন যার জন্য পরীক্ষা বা প্রকাশনার জন্য নিয়মিত IPA বিল্ড প্রয়োজন — এটি টিমের সমস্ত মেশিনে অভিন্ন বিল্ড কনফিগারেশন নিশ্চিত করার একমাত্র উপায়।

Gym কীভাবে IPA বানায়: প্রক্রিয়া এবং প্যারামিটার

Gym-এর মাধ্যমে IPA বিল্ড প্রক্রিয়া

Gym-এর মাধ্যমে IPA বিল্ড তিনটি ক্রমিক ধাপ নিয়ে গঠিত: xcodebuild-এর মাধ্যমে প্রজেক্ট আর্কাইভিং, বাইনারি প্যাকেজে আর্কাইভ এক্সপোর্ট, এবং সাইনিং সহ IPA ফরম্যাটে প্যাকেজিং। Gym স্বয়ংক্রিয়ভাবে প্রজেক্টের ধরন (একক target বা workspace) সনাক্ত করে এবং সঠিক বিল্ড পদ্ধতি নির্বাচন করে।

আর্কাইভিং ধাপে, Gym প্রজেক্টে নির্দিষ্ট স্কিম এবং কনফিগারেশন প্যারামিটার সহ xcodebuild archive চালায়। সফল আর্কাইভ তৈরি (.xcarchive) করার পর, Gym নির্বাচিত এক্সপোর্ট পদ্ধতি সহ xcodebuild -exportArchive চালায়। IPA এক্সপোর্ট হল .xcarchive-কে সমস্ত প্রয়োজনীয় রিসোর্স এবং স্বাক্ষর সহ একটি ইনস্টলযোগ্য .ipa ফাইলে রূপান্তর করার প্রক্রিয়া।

বিল্ড এক্সপোর্ট প্যারামিটার

এক্সপোর্ট পদ্ধতি IPA সাইনিংয়ের জন্য ব্যবহৃত Provisioning Profile-এর ধরন নির্ধারণ করে। Gym চারটি পদ্ধতি সমর্থন করে: development ডেভেলপার ডিভাইসে ডিবাগিংয়ের জন্য, app-store App Store প্রকাশনার জন্য, ad-hoc সীমিত সংখ্যক ডিভাইসে বিটা পরীক্ষার জন্য, এবং enterprise কর্পোরেট বিতরণের জন্য।

অতিরিক্ত প্যারামিটারগুলির মধ্যে সুনির্দিষ্ট এক্সপোর্ট কনফিগারেশনের জন্য export_options_plist নির্দিষ্ট করা, IPA আকার কমাতে Swift overlay দমন করা, এবং bitcode ব্যবস্থাপনা অন্তর্ভুক্ত। Gym --skip_package_ipa ফ্ল্যাগের মাধ্যমে সিমুলেটর বিল্ডও সমর্থন করে, যা সম্পূর্ণ এক্সপোর্ট ছাড়াই দ্রুত কোড যাচাইয়ের জন্য উপযোগী।

bash
# Gym-এর মাধ্যমে মৌলিক IPA বিল্ড
fastlane gym --workspace "MyApp.xcworkspace" --scheme "MyApp"

# এক্সপোর্ট পদ্ধতি নির্দেশ করে বিল্ড
fastlane gym --export_method app-store

# IPA এক্সপোর্ট ছাড়া শুধু আর্কাইভ বিল্ড
fastlane gym --skip_package_ipa

Gymfile-এর মাধ্যমে Gym কনফিগারেশন

Gymfile হল একটি Fastlane কনফিগারেশন ফাইল যা সমস্ত বিল্ড প্যারামিটার একটি কাঠামোবদ্ধ Ruby ফরম্যাটে সংরক্ষণ করে। কমান্ড লাইনের মাধ্যমে ফ্ল্যাগ পাস করার বিপরীতে, Gymfile কনফিগারেশনটি রিপোজিটরিতে কমিট করতে এবং সমস্ত ডেভেলপার এবং CI একই বিল্ড সেটিংস ব্যবহার করে তা নিশ্চিত করতে দেয়।

ruby
# Gymfile — বিল্ড কনফিগারেশন
workspace("MyApp.xcworkspace")
scheme("MyApp")
export_method(:app-store)
configuration("Release")
output_directory("./build")
output_name("MyApp.ipa")
include_symbols(true)
include_bitcode(false)

Gymfile-এ export_method প্যারামিটার Apple Developer Portal-এর প্রোফাইল প্রকারের সাথে মিলে যায়। App Store রিলিজের জন্য :app-store, পরীক্ষার জন্য :development বা :ad-hoc ব্যবহার করুন। configuration প্যারামিটার বিল্ড কনফিগারেশন নির্ধারণ করে: রিলিজের জন্য Release বা ডিবাগ বিল্ডের জন্য Debug।

include_bitcode প্যারামিটার IPA-তে bitcode অন্তর্ভুক্তি নিয়ন্ত্রণ করে। Apple-এর watchOS এবং tvOS অ্যাপ্লিকেশনের জন্য bitcode প্রয়োজন ছিল, কিন্তু iOS-এর জন্য বাইনারি আকার কমাতে এই প্যারামিটারটি নিষ্ক্রিয় করা যেতে পারে। include_symbols .dSYM সিম্বল ডিবাগ ফাইল অন্তর্ভুক্ত করে, যা App Store Connect বা তৃতীয়-পক্ষ মনিটরিং পরিষেবা থেকে ক্র্যাশ লগ সিম্বলিকেশনের জন্য প্রয়োজন।

অতিরিক্ত Gymfile প্যারামিটারের মধ্যে কাস্টম plist এক্সপোর্ট ফাইলের জন্য export_options_plist, অতিরিক্ত লগ আউটপুট দমনের জন্য silent, এবং অস্থায়ী বিল্ড ডিরেক্টরি নির্দিষ্ট করার জন্য build_path অন্তর্ভুক্ত। এই প্যারামিটারগুলি নির্দিষ্ট আর্টিফ্যাক্ট প্রয়োজনীয়তা সহ জটিল CI/CD পাইপলাইনে Gym সংহত করার সময় কার্যকর।

অ্যাপ্লিকেশন বিল্ড করার জন্য Gym কমান্ড

কমান্ড ইন্টারফেস Gym-এ সাধারণ বিল্ড পরিস্থিতির জন্য মৌলিক প্যারামিটার এবং সুনির্দিষ্ট আচরণ সমন্বয়ের জন্য বর্ধিত ফ্ল্যাগ অন্তর্ভুক্ত। বেশিরভাগ প্যারামিটার কমান্ড লাইন এবং Gymfile উভয়ের মাধ্যমেই পাস করা যেতে পারে, যেখানে কমান্ড-লাইন আর্গুমেন্ট কনফিগারেশন ফাইলের উপর অগ্রাধিকার পায়।

প্যারামিটার ছাড়া fastlane gym কমান্ড Gymfile থেকে সেটিংস ব্যবহার করে বা বর্তমান ডিরেক্টরিতে স্বয়ংক্রিয়ভাবে প্রজেক্ট সনাক্ত করে। একাধিক target সহ প্রজেক্টের জন্য, সঠিক target বিল্ড কনফিগারেশন নির্বাচনের জন্য --scheme এবং --workspace নির্দিষ্ট করুন।

সাধারণ বিল্ড কমান্ড

দ্রুত ডিবাগ বিল্ডের জন্য fastlane gym --export_method development ব্যবহার করুন — এটি ডেভেলপার ডিভাইসে ইনস্টলেশনের জন্য Development প্রোফাইল সহ IPA বানায়। App Store-এর জন্য IPA বিল্ড-এ --export_method app-store ফ্ল্যাগ এবং একটি Distribution সার্টিফিকেট প্রয়োজন, যা Match বা Keychain-এ আগেই কনফিগার করা আবশ্যক।

bash
# কাস্টম নামসহ App Store-এর জন্য বিল্ড
fastlane gym --export_method app-store --output_name "Release_1.0.ipa"

# আর্কাইভের আগে পরিষ্কার করে বিল্ড
fastlane gym --clean --configuration Debug

# IPA ছাড়া সিমুলেটরের জন্য বিল্ড
fastlane gym --skip_package_ipa --destination "generic/platform=iOS Simulator"

--clean ফ্ল্যাগ শুরু করার আগে পূর্ববর্তী বিল্ড থেকে অস্থায়ী ফাইলগুলি সরিয়ে দেয়, পুরানো ক্যাশে ব্যবহার প্রতিরোধ করে এবং একটি পরিষ্কার বিল্ড নিশ্চিত করে। --destination ফ্ল্যাগ টার্গেট প্ল্যাটফর্ম নির্দিষ্ট করার অনুমতি দেয়: iOS Simulator, iOS Device, বা macOS Catalyst।

Gym প্যারামিটারউদ্দেশ্যউদাহরণ মান
--schemeবিল্ডের জন্য Xcode স্কিম নির্বাচন করুনMyApp
--export_methodপ্রোফাইল এক্সপোর্ট পদ্ধতিapp-store, ad-hoc
--configurationবিল্ড কনফিগারেশনRelease, Debug
--cleanবিল্ডের আগে পরিষ্কার করুনফ্ল্যাগ
--output_nameআউটপুট IPA ফাইলের নামApp_1.0.ipa

CI/CD পাইপলাইনে Gym ইন্টিগ্রেশন

Gym CI/CD ইন্টিগ্রেশন নিরবিচ্ছিন্ন ডেলিভারির দিকে অগ্রসর হওয়া iOS ডেভেলপমেন্ট টিমের জন্য মানক অনুশীলন। Gym পরীক্ষার পর্যায়ের পরে এবং TestFlight বা App Store-এ জমা দেওয়ার আগে GitHub Actions, GitLab CI, Bitrise বা Jenkins পাইপলাইনে চলে।

একটি সাধারণ iOS CI/CD পাইপলাইনে অন্তর্ভুক্ত: রিপোজিটরি ক্লোনিং, CocoaPods বা SPM-এর মাধ্যমে নির্ভরতা ইনস্টলেশন, Match-এর মাধ্যমে সার্টিফিকেট সেটআপ, Gym-এর মাধ্যমে IPA বিল্ড এবং Pilot বা Deliver-এর মাধ্যমে আপলোড। GitLab CI হল GitLab-এর একটি নিরবিচ্ছিন্ন ইন্টিগ্রেশন সিস্টেম যা রিপোজিটরিতে প্রতিটি পুশে বিল্ড চালায়।

bash
# GitLab CI-তে বিল্ড ধাপের উদাহরণ
fastlane gym --scheme "MyApp" \
      --export_method app-store \
      --output_directory "$CI_PROJECT_DIR/build"
      
# IPA বিল্ড আর্টিফ্যাক্ট হিসেবে সংরক্ষণ
cp "build/MyApp.ipa" "$CI_PROJECT_DIR/artifacts/"

CI-তে Gym সঠিকভাবে কাজ করার জন্য, xcodebuild-এর সার্টিফিকেট সহ Keychain-এ অ্যাক্সেস প্রয়োজন। এটি Gym চালানোর আগে security unlock-keychain কমান্ডের মাধ্যমে করা হয়। Match ব্যবহার করলে, সার্টিফিকেট স্বয়ংক্রিয়ভাবে ইনস্টল হয় এবং আলাদা Keychain সেটআপের প্রয়োজন হয় না — Match বিল্ডের জন্য একটি অস্থায়ী কীচেন তৈরি করে।

সফল IPA বিল্ডের পরে, এটি পরবর্তী পাইপলাইন ধাপে পাঠানো যেতে পারে: Pilot-এর মাধ্যমে TestFlight-এ আপলোড বা Deliver-এর মাধ্যমে App Store Connect-এ পাঠানো। CI সিস্টেম পরিবেশ চলক কনফিগার করুন Apple Developer ক্রেডেনশিয়াল সংরক্ষণ করতে, যার মধ্যে FASTLANE_APPLE_API_KEY এবং MATCH_PASSWORD অন্তর্ভুক্ত, যাতে সমস্ত পাইপলাইন ধাপ ইন্টারঅ্যাকটিভ ইনপুট ছাড়াই কাজ করে।

সাধারণ Gym বিল্ড ত্রুটি

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

ত্রুটি "error: No matching provisioning profiles found" নির্বাচিত এক্সপোর্ট পদ্ধতির জন্য কোনও উপযুক্ত Provisioning Profile নেই তা নির্দেশ করে। সমাধান: নিশ্চিত করুন যে Match বা Keychain-এ নির্দিষ্ট export_method-এর জন্য একটি বৈধ প্রোফাইল রয়েছে। Provisioning Profile-কে সফল IPA সাইনিংয়ের জন্য অ্যাপ্লিকেশন শনাক্তকারী এবং সার্টিফিকেট প্রকারের (Development বা Distribution) সাথে মেলতে হবে।

ত্রুটি "error: Signing for requires a development team" ঘটে যখন প্রজেক্টে কোনও ডেভেলপমেন্ট টিম নির্দিষ্ট করা না থাকে। সমাধান: প্রজেক্ট বিল্ড কনফিগারেশনে DEVELOPMENT_TEAM যোগ করুন বা export_team_id প্যারামিটারের মাধ্যমে Gymfile-এ team_id নির্দিষ্ট করুন। এটি বিশেষভাবে একাধিক Apple Developer অ্যাকাউন্টের সাথে কাজ করা প্রজেক্টের জন্য প্রাসঙ্গিক।

ত্রুটি "error: Multiple commands produce..."-এর জন্য, workspace-এ বিভিন্ন target-এর মধ্যে আউটপুট ফাইলের দ্বন্দ্ব হয়। সমাধান: Xcode প্রজেক্ট Build Settings-এ প্রতিটি target-এর জন্য অনন্য আউটপুট পাথ সেট করুন বা নতুন বিল্ড সিস্টেম ব্যবহার করুন, যা Xcode 14 এবং নতুন ভার্সনে ডিফল্টরূপে সক্রিয়। Gym --use_legacy_build_system ফ্ল্যাগের মাধ্যমে উভয় বিকল্প সমর্থন করে।

প্রায়শই জিজ্ঞাসিত প্রশ্ন

Gym সাধারণ Xcode বিল্ড থেকে কীভাবে আলাদা?

Gym xcodebuild প্রক্রিয়া স্বয়ংক্রিয় করে এবং ম্যানুয়াল Archive এবং Export ধাপগুলি দূর করে। Xcode-এর বিপরীতে, Gym সমস্ত মেশিনে অভিন্ন বিল্ড প্যারামিটার নিশ্চিত করে, বিস্তারিত লগ তৈরি করে এবং গ্রাফিক্যাল ইন্টারফেস খোলার প্রয়োজন ছাড়াই CI/CD পাইপলাইনে সংহত হয়।

Gym কোন এক্সপোর্ট পদ্ধতি সমর্থন করে?

Gym চারটি পদ্ধতি সমর্থন করে: development ডিবাগিংয়ের জন্য, app-store প্রকাশনার জন্য, ad-hoc সীমিত সংখ্যক ডিভাইসে বিটা পরীক্ষার জন্য, এবং enterprise কর্পোরেট In-House বিতরণের জন্য। পদ্ধতি --export_method প্যারামিটার বা Gymfile-এ export_method-এর মাধ্যমে সেট করা হয়।

Gym দিয়ে বিল্ড করার সময় IPA আকার কীভাবে কমানো যায়?

IPA আকার কমাতে, ইউনিভার্সাল বাইনারি জেনারেশনের জন্য thinning প্যারামিটার সহ --export_options_plist ব্যবহার করুন, include_bitcode(false)-এর মাধ্যমে bitcode নিষ্ক্রিয় করুন, এবং --include_symbols false-এর মাধ্যমে সিম্বল স্ট্রিপিং কনফিগার করুন যদি ক্র্যাশ লগের প্রয়োজন না হয়।

CI-তে Gym কেন Code Signing ত্রুটির সাথে ব্যর্থ হয়?

CI-তে Code Signing ত্রুটিগুলি সাধারণত Keychain-এ সার্টিফিকেটের অভাবের কারণে ঘটে। সমাধান: স্বয়ংক্রিয় সার্টিফিকেট ইনস্টলেশনের জন্য Match কনফিগার করুন বা Gym চালানোর আগে security unlock-keychain কমান্ড যোগ করুন। নিশ্চিত করুন যে MATCH_PASSWORD ভেরিয়েবল CI পরিবেশে পাস করা হয়েছে।

Gym কি macOS অ্যাপ্লিকেশন তৈরির জন্য ব্যবহার করা যেতে পারে?

হ্যাঁ, Gym শুধু iOS নয়, macOS, tvOS এবং watchOS অ্যাপ্লিকেশন তৈরিও সমর্থন করে। macOS-এর জন্য, --platform macos প্যারামিটারের মাধ্যমে প্ল্যাটফর্ম নির্দিষ্ট করুন বা Xcode-তে সংশ্লিষ্ট স্কিম কনফিগার করুন। Gym স্বয়ংক্রিয়ভাবে টার্গেট প্ল্যাটফর্মের জন্য সঠিক আর্কাইভ ফরম্যাট নির্বাচন করে।

সারসংক্ষেপ

  • Gym iOS অ্যাপ্লিকেশনকে IPA-তে স্বয়ংক্রিয়ভাবে বিল্ড করার জন্য Fastlane-এর একটি ইউটিলিটি, যা জটিল xcodebuild ফ্ল্যাগগুলিকে একটি ইউনিফায়েড কমান্ড-লাইন ইন্টারফেসের পিছনে বিমূর্ত করে।
  • বিল্ড প্রক্রিয়ায় xcodebuild archive-এর মাধ্যমে আর্কাইভ করা এবং নির্বাচিত সাইনিং পদ্ধতি এবং প্রোফাইল সহ IPA ফরম্যাটে এক্সপোর্ট করা অন্তর্ভুক্ত।
  • Gymfile-এর মাধ্যমে কনফিগারেশন সমস্ত প্যারামিটার রিপোজিটরিতে কমিট করে: স্কিম, workspace, এক্সপোর্ট পদ্ধতি, কনফিগারেশন এবং আউটপুট পাথ।
  • Gym চারটি এক্সপোর্ট পদ্ধতি সমর্থন করে: development, app-store, ad-hoc এবং enterprise — বিভিন্ন অ্যাপ্লিকেশন বিতরণ পরিস্থিতির জন্য।
  • GitHub Actions, GitLab CI বা Bitrise-এর মাধ্যমে CI/CD ইন্টিগ্রেশন রিপোজিটরিতে প্রতিটি কোড পরিবর্তনের পরে IPA বিল্ড স্বয়ংক্রিয় করে।
  • সাধারণ Gym ত্রুটিগুলি অনুপস্থিত সার্টিফিকেট, ভুল এক্সপোর্ট পদ্ধতি বা একাধিক target সহ workspace-এ আউটপুট ফাইল দ্বন্দ্বের সাথে সম্পর্কিত।

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন