CI/CD পাইপলাইন: GitHub Actions দিয়ে ব্যাখ্যা

DevOps2026-09-12TryQuickToolBox

আপনি সবেমাত্র একটি কমিট পুশ করেছেন এবং এখন ম্যানুয়ালি টেস্ট চালাচ্ছেন, অ্যাপ বিল্ড করছেন এবং সার্ভারে ফাইল আপলোড করছেন। এটি কাজ করে, কিন্তু এটি ধীর, ভুলপ্রবণ এবং স্কেল করে না। এখানেই CI/CD পাইপলাইন আসে।

এই গাইডে, আমরা CI/CD ধারণাগুলো ভেঙে দেখাবো এবং GitHub Actions দিয়ে একটি বাস্তব পাইপলাইন তৈরি করতে দেখাবো। শেষে, আপনি যেকোনো প্রজেক্টের জন্য টেস্টিং, বিল্ডিং এবং ডিপ্লয়মেন্ট অটোমেট করতে শিখবেন।

CI/CD কী?

CI (Continuous Integration) হলো স্বয়ংক্রিয়ভাবে কোড পরিবর্তন টেস্ট এবং শেয়ার্ড ব্রাঞ্চে মার্জ করার অভ্যাস। প্রতিটি পুশ একটি বিল্ড এবং টেস্ট রান ট্রিগার করে, যা ইন্টিগ্রেশন সমস্যাগুলো আগেই ধরে ফেলে।

CD (Continuous Delivery/Deployment) CI-কে বাড়িয়ে দেয় স্বয়ংক্রিয়ভাবে আপনার অ্যাপ্লিকেশন প্রোডাকশনে প্রস্তুত (এবং ঐচ্ছিকভাবে ডিপ্লয়) করার মাধ্যমে। Continuous Delivery মানে কোড সবসময় ডিপ্লয় করার জন্য প্রস্তুত; Continuous Deployment মানে এটি স্বয়ংক্রিয়ভাবে ডিপ্লয় হয়।

একসাথে, CI/CD একটি পাইপলাইন গঠন করে: স্বয়ংক্রিয় ধাপের একটি সিরিজ যা আপনার কোডকে কমিট থেকে প্রোডাকশনে নিয়ে যায়।

CI/CD-এর জন্য GitHub Actions কেন ব্যবহার করবেন?

GitHub Actions হলো GitHub-এ অন্তর্নির্মিত একটি CI/CD প্ল্যাটফর্ম। এটি পাবলিক রিপোজিটরির জন্য বিনামূল্যে এবং প্রাইভেটের জন্য উদার মিনিট অফার করে। মূল সুবিধা:

GitHub Actions-এর মূল ধারণা

আপনার প্রথম ওয়ার্কফ্লো লেখার আগে, এই শব্দগুলো বুঝুন:

শব্দ বর্ণনা
Workflow .github/workflows/ এর অধীনে একটি YAML ফাইলে সংজ্ঞায়িত স্বয়ংক্রিয় প্রক্রিয়া।
Event একটি ট্রিগার যা একটি ওয়ার্কফ্লো শুরু করে (যেমন, push, pull_request)।
Job একই রানারে চালানো ধাপের একটি সেট। জবগুলো ডিফল্টভাবে সমান্তরালে চলে।
Step একটি জবের মধ্যে একটি একক কাজ। একটি কমান্ড চালাতে পারে বা একটি অ্যাকশন ব্যবহার করতে পারে।
Action পুনঃব্যবহারযোগ্য কোডের একটি ইউনিট (যেমন, actions/checkout) যা আপনি একটি ধাপে অন্তর্ভুক্ত করতে পারেন।
Runner একটি ভার্চুয়াল মেশিন যা জবগুলো চালায় (Ubuntu, Windows, macOS)।

আপনার প্রথম CI পাইপলাইন তৈরি করা

একটি Node.js প্রজেক্টের জন্য একটি বেসিক CI ওয়ার্কফ্লো তৈরি করি। এটি মেইন ব্রাঞ্চে প্রতিটি পুশ এবং পুল রিকোয়েস্টে টেস্ট চালাবে।

.github/workflows/ci.yml তৈরি করুন:

name: CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  test:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [18.x, 20.x]

    steps:
    - uses: actions/checkout@v4
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v4
      with:
        node-version: ${{ matrix.node-version }}
    - run: npm ci
    - run: npm test

এই ওয়ার্কফ্লো:

  1. main-এ পুশ এবং PR-এ ট্রিগার হয়।
  2. সর্বশেষ Ubuntu রানারে test নামে একটি জব চালায়।
  3. Node.js 18 এবং 20-এর বিরুদ্ধে টেস্ট করতে একটি ম্যাট্রিক্স ব্যবহার করে।
  4. কোড চেকআউট করে, Node সেট আপ করে, নির্ভরতা ইনস্টল করে এবং টেস্ট চালায়।

এই ফাইলটি পুশ করুন এবং Actions ট্যাব দেখুন। আপনি দুটি সমান্তরাল জব দেখতে পাবেন (প্রতি Node সংস্করণের জন্য একটি)। যদি কোনো টেস্ট ব্যর্থ হয়, ওয়ার্কফ্লো ব্যর্থ হয় এবং GitHub আপনাকে অবহিত করে।

কন্টিনিউয়াস ডিপ্লয়মেন্ট যোগ করা

CI দুর্দান্ত, কিন্তু CD হলো যেখানে অটোমেশন জ্বলজ্বল করে। চলুন ওয়ার্কফ্লোটি বাড়িয়ে দিই যাতে মেইন ব্রাঞ্চে টেস্ট পাস করার পরে একটি সার্ভারে ডিপ্লয় করা যায়।

আমরা একটি deploy জব যোগ করব যা test-এর উপর নির্ভর করে এবং শুধুমাত্র main-এ পুশে চলে।

  deploy:
    needs: test
    if: github.ref == 'refs/heads/main' && github.event_name == 'push'
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v4
    - name: Deploy to server
      uses: appleboy/ssh-action@v1.0.0
      with:
        host: ${{ secrets.SSH_HOST }}
        username: ${{ secrets.SSH_USER }}
        key: ${{ secrets.SSH_KEY }}
        script: |
          cd /var/www/myapp
          git pull origin main
          npm ci --production
          pm2 restart myapp

মূল পয়েন্ট:

এই প্যাটার্নটি অনেক ডিপ্লয়মেন্ট টার্গেটের জন্য কাজ করে: SSH, Docker রেজিস্ট্রি, ক্লাউড প্ল্যাটফর্ম (AWS, Vercel, Netlify), বা Kubernetes।

GitHub Actions-এর সাথে CI/CD-এর জন্য সেরা অনুশীলন

ব্যর্থ ওয়ার্কফ্লো ডিবাগ করা

যখন একটি ওয়ার্কফ্লো ব্যর্থ হয়, GitHub প্রতিটি ধাপের লগ দেখায়। সাধারণ সমস্যাগুলোর মধ্যে রয়েছে:

আপনি রিপোজিটরি সিক্রেটস ACTIONS_STEP_DEBUG কে true সেট করে ডিবাগ লগিং সক্রিয় করতে পারেন।

FAQ

CI এবং CD-এর মধ্যে পার্থক্য কী?

CI কোড পরিবর্তনের টেস্টিং এবং ইন্টিগ্রেশন স্বয়ংক্রিয় করে। CD সেই পরিবর্তনগুলো একটি এনভায়রনমেন্টে ডেলিভারি বা ডিপ্লয়মেন্ট স্বয়ংক্রিয় করে। CI কোডের গুণমান নিশ্চিত করে; CD নিশ্চিত করে যে এটি দ্রুত এবং নির্ভরযোগ্যভাবে ব্যবহারকারীদের কাছে পৌঁছায়।

GitHub Actions কি বিনামূল্যে?

GitHub Actions পাবলিক রিপোজিটরির জন্য বিনামূল্যে। প্রাইভেট রিপোজিটরির জন্য, আপনি মাসিক বিনামূল্যে মিনিটের ভাতা পান (যেমন, ফ্রি অ্যাকাউন্টের জন্য 2,000 মিনিট) এবং অতিরিক্ত ব্যবহারের জন্য অর্থ প্রদান করেন। সেলফ-হোস্টেড রানারও একটি বিকল্প।

আমি কি নন-GitHub প্রজেক্টের জন্য GitHub Actions ব্যবহার করতে পারি?

হ্যাঁ, GitHub Actions যেকোনো কমান্ড-লাইন টুল চালাতে পারে। আপনি এটি অন্যত্র হোস্ট করা প্রজেক্ট বিল্ড এবং ডিপ্লয় করতে ব্যবহার করতে পারেন, যতক্ষণ কোড GitHub-এ থাকে বা আপনি এটি আনতে অ্যাকশন ব্যবহার করেন।

আপনার CI/CD স্ট্রিমলাইন করতে প্রস্তুত? GitHub Actions দিয়ে আপনার টেস্ট অটোমেট করে শুরু করুন। ডিপ্লয়মেন্ট লগ দ্রুত বিশ্লেষণ করার জন্য, প্রতিটি ডিপ্লয়ের পরে ত্রুটি এবং পারফরম্যান্স সমস্যা সনাক্ত করতে আমাদের Nginx Log Analyzer ব্যবহার করে দেখুন।