Build Server একটি ডেডিকেটেড সার্ভার বা ভার্চুয়াল মেশিন যা স্বয়ংক্রিয়ভাবে সোর্স কোড কম্পাইল করে, টেস্ট চালায় এবং ডিপ্লোয়ের জন্য প্রস্তুত আর্টিফ্যাক্ট তৈরি করে। এটি CI/CD পরিকাঠামোর কেন্দ্রীয় নোড হিসাবে কাজ করে এবং বিল্ডের কাজগুলি নিজে গ্রহণ করে, ডেভেলপারদের লোকাল মেশিনগুলিকে মুক্ত করে। GitLab Global DevSecOps Report, 2025 অনুসারে, 67% টিম স্থিতিশীলতা এবং বিল্ড গতি উন্নত করতে ডেডিকেটেড বিল্ড সার্ভার ব্যবহার করে।
মূল পয়েন্ট
Build Server (বিল্ড সার্ভার) হল একটি বিশেষায়িত কম্পিউটিং সিস্টেম যা কোড কম্পাইলেশন এবং রিলিজ প্রস্তুতির সাথে সম্পর্কিত কাজগুলি স্বয়ংক্রিয়ভাবে সম্পাদন করার জন্য ডিজাইন করা হয়েছে। ডেভেলপারের মেশিনে লোকাল বিল্ডের বিপরীতে, সার্ভার রিপোজিটরির একটি কপি নিয়ে কাজ করে, একটি পরিষ্কার পরিবেশ এবং নির্দিষ্ট ডিপেন্ডেন্সি সংস্করণ ব্যবহার করে।
বিল্ড সার্ভার Continuous Integration অনুশীলনের একটি মূল উপাদান। এটি নিশ্চিত করে যে প্রতিটি কমিট একই যাচাইকরণ প্রক্রিয়ার মধ্য দিয়ে যায়, কে এটি করেছে তা নির্বিশেষে। এটি “এটি আমার মেশিনে কাজ করে” সমস্যাটি দূর করে এবং একটি অভিন্ন গুণগত মান নিশ্চিত করে।
Google DORA, 2025 অনুসারে, ডেডিকেটেড বিল্ড সার্ভার ব্যবহারকারী টিমগুলি পরিবর্তন নিশ্চিতকরণ সময় ঘন্টা থেকে মিনিটে কমিয়ে আনে। এটি সরাসরি শেষ ব্যবহারকারীদের কাছে ফিচার এবং ফিক্স সরবরাহের গতিকে প্রভাবিত করে।
মোবাইল অ্যাপ্লিকেশন তৈরির জন্য উল্লেখযোগ্য সম্পদের প্রয়োজন: Kotlin বা Swift কম্পাইল করতে 5 থেকে 40 মিনিট সময় লাগতে পারে। যদি আপনি ডেভেলপারের লোকাল মেশিনে বিল্ড চালান, তবে এটি শেষ না হওয়া পর্যন্ত তারা উত্পাদনশীলভাবে কাজ করতে পারে না। বিল্ড সার্ভার এই সমস্যাটি সমাধান করে ডেভেলপারকে অন্যান্য কাজের জন্য মুক্ত করে।
ব্যবহারিক ক্ষেত্রে, শব্দগুলি প্রায়শই সমার্থকভাবে ব্যবহৃত হয়, তবে একটি সূক্ষ্মতা রয়েছে: একটি CI সার্ভার (Jenkins, CircleCI) হল একটি সিস্টেম যা পাইপলাইন পরিচালনা করে, যেখানে বিল্ড সার্ভার হল ভৌত বা ভার্চুয়াল হোস্ট যেখানে সেই পাইপলাইনগুলি সম্পাদিত হয়। একটি CI সার্ভার একাধিক বিল্ড এজেন্ট (build slaves) পরিচালনা করতে পারে।
একটি সাধারণ বিল্ড সার্ভারে বেশ কয়েকটি উপাদান থাকে, প্রতিটি প্রক্রিয়ার একটি নির্দিষ্ট পর্যায়ের জন্য দায়ী। আর্কিটেকচার বোঝা টিমের কাজের চাপ অনুযায়ী পরিকাঠামো সঠিকভাবে স্কেল করতে সহায়তা করে।
এক্সিকিউটর (নিষ্পাদন কোর) — বিল্ড কাজগুলি চালায়। এটি Docker কন্টেইনার, ভার্চুয়াল মেশিন বা সরাসরি হোস্টে কাজ করতে পারে। জব কিউ সমান্তরাল বিল্ডের অগ্রাধিকার পরিচালনা করে। আর্টিফ্যাক্ট স্টোরেজ পরবর্তী প্রকাশের জন্য ফলাফল (APK, IPA, AAB) সংরক্ষণ করে।
কাজের গতি বাড়ানোর জন্য, বিল্ড সার্ভার এজেন্টদের একটি পুল পরিচালনা করতে পারে। প্রতিটি এজেন্ট একটি পৃথক মেশিন বা কন্টেইনার যা বিল্ড সম্পাদনে সক্ষম। যখন লোড বাড়ে, অটো-স্কেলিং ক্লাউডে নতুন এজেন্ট যুক্ত করে। উদাহরণস্বরূপ, Kubernetes প্লাগইন সহ Jenkins প্রতিটি বিল্ডের জন্য গতিশীলভাবে pod তৈরি করতে পারে।
pipeline {
agent {
kubernetes {
yaml """
apiVersion: v1
kind: Pod
spec:
containers:
- name: android-sdk
image: openjdk:17-jdk
command: ['sleep','infinity']
"""
}
}
stages {
stage('Build') {
steps {
sh './gradlew assembleDebug'
}
}
}
}
বিল্ড সার্ভারগুলিকে স্থাপনার পদ্ধতি এবং লক্ষ্য স্ট্যাক অনুসারে বিভিন্ন বিভাগে ভাগ করা হয়। একটি নির্দিষ্ট সমাধানের পছন্দ টিমের আকার, বাজেট এবং সুরক্ষা প্রয়োজনীয়তার উপর নির্ভর করে।
Jenkins, TeamCity, Bamboo, GitLab Runner (self-hosted) — আপনার নিজস্ব সার্ভার বা VPS-এ ইনস্টল করা হয়। সুবিধা: কনফিগারেশনের উপর সম্পূর্ণ নিয়ন্ত্রণ, যেকোনো সফ্টওয়্যার ব্যবহারের ক্ষমতা, ডেটা কখনই কোম্পানির পরিকাঠামো ছেড়ে যায় না। অসুবিধা: প্রশাসন, আপডেট এবং স্কেলিং খরচ।
GitHub Actions, CircleCI, Bitrise, Codemagic, GitLab SaaS — সার্ভার পরিচালনার প্রয়োজন হয় না। বিল্ড মিনিট বা সাবস্ক্রিপশন অনুযায়ী অর্থ প্রদান করা হয়। ছোট টিমের জন্য, এটি সর্বোত্তম শুরু। উচ্চ বিল্ড ভলিউমযুক্ত বড় প্রকল্পের জন্য, খরচ self-hosted সমাধানের চেয়ে বেশি হতে পারে।
| সমাধান | প্রকার | প্ল্যাটফর্ম | শুরুর মূল্য |
|---|---|---|---|
| Jenkins | Self-hosted | যেকোনো | বিনামূল্যে (ওপেন-সোর্স) |
| GitHub Actions | ক্লাউড | Linux, macOS, Windows | 2000 মিনিট/মাস বিনামূল্যে |
| Bitrise | ক্লাউড | iOS, Android, Flutter, React Native | $0 (90 মিনিট/মাস) |
| TeamCity | Self-hosted | যেকোনো | বিনামূল্যে (100 বিল্ড) |
iOS-এর বিশেষত্ব হল বিল্ড শুধুমাত্র macOS-এ সম্ভব। বিকল্প: র্যাকে Mac mini, MacStadium (Mac ভাড়া), macOS runner সহ GitHub Actions, নিজস্ব Mac এজেন্ট সহ Bitrise। একটি self-hosted Mac বিল্ড সার্ভারের জন্য ব্যয়বহুল হার্ডওয়্যার এবং তার রক্ষণাবেক্ষণ প্রয়োজন।
আসুন Android এবং iOS বিল্ডযুক্ত একটি মোবাইল প্রকল্পের জন্য ধাপে ধাপে বিল্ড সার্ভার সেটআপ পর্যালোচনা করি। আমরা ভিত্তি হিসেবে iOS-এর জন্য self-hosted runner এবং Android-এর জন্য ক্লাউড runner সহ GitHub Actions ব্যবহার করব।
একটি ম্যানেজমেন্ট প্ল্যাটফর্ম চয়ন করুন (Jenkins, GitLab, GitHub Actions)। মাস্টার নোড ইনস্টল করুন, SSH বা personal access token-এর মাধ্যমে রিপোজিটরিতে অ্যাক্সেস কনফিগার করুন। রিপোজিটরিতে push ইভেন্টে স্বয়ংক্রিয়ভাবে বিল্ড শুরু করতে একটি webhook সেট আপ করুন।
এক বা একাধিক মেশিনকে এজেন্ট (slaves/runners) হিসাবে রেজিস্টার করুন। Android বিল্ডের জন্য, একটি এজেন্ট JDK, Android SDK, Gradle সহ Linux বা Windows-এ চলতে পারে। iOS-এর জন্য — Xcode Command Line Tools এবং CocoaPods সহ macOS-এ।
পর্যায়গুলি সংজ্ঞায়িত করুন: checkout, ডিপেন্ডেন্সি ইনস্টলেশন, বিল্ড, টেস্টিং, আর্টিফ্যাক্ট প্রকাশ। গতি বাড়ানোর জন্য, ডিপেন্ডেন্সি ক্যাশিং (Gradle ক্যাশ, CocoaPods ক্যাশ, Docker ইমেজ লেয়ার) ব্যবহার করুন।
name: Android Build
on:
push:
branches: [main, develop]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- name: Cache Gradle
uses: actions/cache@v4
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
- name: Build Release APK
run: ./gradlew assembleRelease
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: app-release.apk
path: app/build/outputs/apk/release/app-release.apk
self-hosted এবং ক্লাউড বিল্ড সার্ভারের মধ্যে পছন্দ শুধুমাত্র একটি প্রযুক্তিগত নয়, একটি আর্থিক সিদ্ধান্তও। খরচ বিল্ড ভলিউম, প্রয়োজনীয় নির্বাহ সময় এবং iOS-এর জন্য macOS-এর প্রয়োজনীয়তার উপর নির্ভর করে ব্যাপকভাবে পরিবর্তিত হয়।
একটি self-hosted সার্ভারের মূলধন ব্যয় (CAPEX) প্রয়োজন: সরঞ্জাম ক্রয় (Mac mini $699 থেকে, সার্ভার র্যাক, নেটওয়ার্কিং গিয়ার), সেটআপ এবং রক্ষণাবেক্ষণ। ক্লাউড সমাধান হল পরিচালন ব্যয় (OPEX): প্রতি বিল্ড মিনিটে অর্থ প্রদান। ছোট টিমের জন্য, OPEX বেশি সুবিধাজনক; প্রতিদিন শত শত বিল্ডযুক্ত বড় প্রকল্পের জন্য, CAPEX 6–12 মাসে পরিশোধ করে।
| প্যারামিটার | Self-hosted (Jenkins) | ক্লাউড (GitHub Actions) | বিশেষায়িত (Bitrise) |
|---|---|---|---|
| প্রাথমিক খরচ | $1000–$5000 | $0 | $0 |
| মাসিক ফি | $50–$200 (হোস্টিং) | $0–$500 (মিনিট সীমা) | $0–$300 (সাবস্ক্রিপশন) |
| macOS সমর্থন | Mac mini + CI সেটআপ প্রয়োজন | অন্তর্নির্মিত (macOS runner) | অন্তর্নির্মিত |
| প্রশাসন | 5–10 ঘন্টা/মাস | 1–2 ঘন্টা/মাস | 1–2 ঘন্টা/মাস |
বাজেট করার সময়, লুকানো খরচগুলি বিবেচনা করুন: সফ্টওয়্যার আপডেট, সমস্যা সমাধান, কনফিগারেশন ব্যাকআপ, নেটওয়ার্ক আর্টিফ্যাক্ট স্টোরেজের সময়। self-hosted সমাধানের জন্য, ভিত্তি রক্ষণাবেক্ষণ খরচে 20–30% যোগ করুন। ক্লাউড সমাধানের জন্য, নিশ্চিত করুন যে মিনিট সীমা পিক লোড কভার করে, বিশেষ করে রিলিজের আগে।
আপনি বিভিন্ন উপায়ে বিল্ড সার্ভার খরচ কমাতে পারেন: ক্লাউডে spot ইন্সট্যান্স ব্যবহার করুন (70% পর্যন্ত সস্তা), বিল্ডের মধ্যে ডিপেন্ডেন্সি ক্যাশ করুন, ব্যর্থ পাইপলাইনের নির্বাহ সময় সীমিত করুন এবং কাজের সময়ের বাইরে নিষ্ক্রিয় self-hosted এজেন্টগুলির স্বয়ংক্রিয় শাটডাউন কনফিগার করুন।
কার্যকর বিল্ড সার্ভার পরিচালনার জন্য বেশ কয়েকটি নীতি অনুসরণ করা প্রয়োজন। বিল্ড স্পিড অপ্টিমাইজেশন এবং পরিকাঠামোর স্থিতিশীলতা সরাসরি ডেভেলপমেন্ট টিমের উত্পাদনশীলতাকে প্রভাবিত করে।
Gradle Build Cache, C/C++-এর জন্য CCache, Kotlin এবং Swift-এর জন্য ইনক্রিমেন্টাল কম্পাইলার — সমস্ত উপলব্ধ ক্যাশিং প্রক্রিয়া সক্রিয় করুন। একটি রিমোট বিল্ড ক্যাশ (HTTP বা S3-এর মাধ্যমে) সেট আপ করুন যাতে বিভিন্ন ডেভেলপার এবং এজেন্ট কম্পাইলেশন ফলাফল ভাগ করে নিতে পারে।
প্রতিটি বিল্ড একটি পরিষ্কার পরিবেশে চলা উচিত। Docker কন্টেইনার বা অস্থায়ী ভার্চুয়াল মেশিন ব্যবহার করে পূর্ববর্তী বিল্ডগুলি বর্তমান বিল্ডকে প্রভাবিত করা থেকে বিরত রাখুন। এটি স্টেট দূষণ সমস্যা দূর করে।
বিল্ড সার্ভারের সোর্স কোড, সাইনিং কী এবং সিক্রেটগুলিতে অ্যাক্সেস রয়েছে। কমিয়ে আনুন আক্রমণের পৃষ্ঠ: বিভিন্ন প্রকল্পের জন্য বিচ্ছিন্ন এজেন্ট ব্যবহার করুন, মাস্টার নোডে অ্যাক্সেস সীমাবদ্ধ করুন, স্বাক্ষরিত কমিট ব্যবহার করুন এবং দুর্বলতার জন্য ডিপেন্ডেন্সি পরীক্ষা করুন।
সচরাচর জিজ্ঞাসিত প্রশ্ন
ছোট টিমের জন্য, ক্লাউড সমাধানগুলি সর্বোত্তম: GitHub Actions (2000 মিনিট/মাস পর্যন্ত বিনামূল্যে) বা মোবাইল প্রকল্পের জন্য Bitrise। এগুলির প্রশাসনের প্রয়োজন নেই এবং দ্রুত সেট আপ করা যায়।
হ্যাঁ, তবে দুই ধরনের এজেন্টের প্রয়োজন হবে: iOS-এর জন্য macOS-এ এবং Android-এর জন্য Linux/Windows-এ। CI সার্ভার (Jenkins, GitLab) একটি ইন্টারফেস থেকে উভয় ধরনের এজেন্ট পরিচালনা করতে পারে।
Android বিল্ডের জন্য — সর্বনিম্ন 8 GB RAM, 16 GB সুপারিশ করা হয়। iOS-এর জন্য — 8 GB থেকে। যদি পাইপলাইন একাধিক সমান্তরাল বিল্ড চালায়, মেমোরি রৈখিকভাবে স্কেল হয়: N বিল্ড x 8 GB।
Self-hosted সার্ভার কনফিগারেশনের উপর সম্পূর্ণ নিয়ন্ত্রণ দেয়, এর কোন বিল্ড মিনিট সীমা নেই (উচ্চ ভলিউমে লাভজনক), এবং ডেটা বিচ্ছিন্নতা নিশ্চিত করে। ক্লাউড সমাধান ছোট এবং মাঝারি টিমের জন্য বেশি ব্যয়-কার্যকর।
হ্যাঁ, Flutter প্রকল্পগুলিরও বিভিন্ন প্ল্যাটফর্মের জন্য বিল্ড প্রয়োজন। Codemagic হল Flutter-এর জন্য একটি বিশেষায়িত CI/CD যা একটি একক রিপোজিটরি থেকে একসঙ্গে Android, iOS, Web এবং Desktop বিল্ড সমর্থন করে।
সারাংশ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন