Continuous Integration (CI) হলো একটি সফটওয়্যার ডেভেলপমেন্ট প্র্যাকটিস, যেখানে কোডের পরিবর্তন বা আপডেট নিয়মিতভাবে (দিনে একাধিকবার) একটি শেয়ার্ড রিপোজিটোরিতে ইন্টিগ্রেট করা হয়। CI সিস্টেমটি এই পরিবর্তনগুলোকে অটোমেটিকভাবে টেস্ট, বিল্ড, এবং ডিপ্লয় করতে সাহায্য করে, যাতে সফটওয়্যারের মান নিশ্চিত থাকে। Yii ফ্রেমওয়ার্কে CI সেটআপ করা একটি গুরুত্বপূর্ণ পদক্ষেপ যা সফটওয়্যার ডেভেলপমেন্ট প্রক্রিয়াকে আরও কার্যকরী, দ্রুত এবং নির্ভরযোগ্য করে তোলে।
১. Continuous Integration (CI) এর ধারণা
CI মূলত ডেভেলপারদের জন্য একটি টুল বা পরিবেশ যা সফটওয়্যার ডেভেলপমেন্টের প্রতিটি ধাপে (কোডিং, বিল্ডিং, টেস্টিং) অটোমেশন এবং মনিটরিং প্রদান করে। এতে সাধারণত নিম্নলিখিত কাজগুলো অন্তর্ভুক্ত থাকে:
- কোড রিপোজিটরি: GitHub, GitLab, Bitbucket ইত্যাদিতে কোড সংরক্ষণ।
- অটোমেটিক বিল্ড এবং টেস্টিং: কোড রিপোজিটরিতে পুশ করার পর অটোমেটিক বিল্ড এবং ইউনিট টেস্ট চালানো।
- ডিপ্লয়মেন্ট: সফল বিল্ড এবং টেস্টের পর অটোমেটিক ডিপ্লয়মেন্ট পরিবেশে প্রোগ্রাম ডিপ্লয় করা।
CI-এর মাধ্যমে কোডের ত্রুটি দ্রুত ধরা পড়তে পারে এবং সফটওয়্যারের মান বজায় রাখা সহজ হয়।
২. Yii ফ্রেমওয়ার্কের জন্য CI সেটআপ
Yii ফ্রেমওয়ার্কে CI সেটআপ করতে আপনাকে একটি CI টুল (যেমন GitHub Actions, GitLab CI, Jenkins ইত্যাদি) নির্বাচন করতে হবে এবং এই টুলটির মাধ্যমে প্রোজেক্টটি অটোমেটিক বিল্ড, টেস্ট এবং ডিপ্লয় করা হবে।
২.১. GitHub Actions CI সেটআপ
GitHub Actions একটি CI/CD প্ল্যাটফর্ম যা GitHub রিপোজিটরির সাথে সংযুক্ত থাকে এবং কোড পুশ হলে স্বয়ংক্রিয়ভাবে কাজ করতে পারে।
২.১.১. GitHub Actions ফাইল তৈরি করা
- GitHub রিপোজিটরি তৈরি করুন: যদি আপনার Yii প্রজেক্টের জন্য GitHub রিপোজিটরি না থাকে, তাহলে প্রথমে একটি তৈরি করুন।
CI কনফিগারেশন ফাইল তৈরি করুন:
.github/workflowsডিরেক্টরির মধ্যে একটিci.ymlফাইল তৈরি করুন। এই ফাইলটি CI প্রক্রিয়ার জন্য প্রয়োজনীয় সেটিংস ধারণ করবে।উদাহরণস্বরূপ, একটি সাধারণ CI কনফিগারেশন ফাইল হতে পারে:
name: Yii2 CI Pipeline on: push: branches: - main pull_request: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v2 - name: Set up PHP uses: shivammathur/setup-php@v2 with: php-version: '7.4' - name: Install Composer run: | curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer - name: Install Dependencies run: | composer install --no-interaction - name: Run PHPUnit Tests run: | ./vendor/bin/phpunitএখানে,
ci.ymlফাইলটি GitHub Actions এ নির্দিষ্ট কর্ম (jobs) নির্ধারণ করে, যেমন:- PHP সেটআপ: PHP 7.4 সংস্করণ ইনস্টল করা।
- Composer ইনস্টল: Composer ডিপেনডেন্সি ইনস্টল করা।
- Unit Test চালানো: PHPUnit ব্যবহার করে ইউনিট টেস্ট চালানো।
২.১.২. CI পদ্ধতি কার্যকর করা
- GitHub রিপোজিটরিতে
ci.ymlফাইল পুশ করার পর, GitHub Actions স্বয়ংক্রিয়ভাবে সেটি চিনতে পারবে এবং প্রতিবার কোড পুশ হলে বা পুল রিকোয়েস্ট হলে CI প্রক্রিয়াটি চালু হবে। - এই CI ফাইলটি শুধুমাত্র একবার পুশ করার পর থেকেই কার্যকর হবে, এবং প্রতিবার রিপোজিটরিতে কোড পরিবর্তন হলে এটি নিজে থেকেই বিল্ড, টেস্ট এবং ডিপ্লয় করবে।
২.২. GitLab CI সেটআপ
GitLab CI একটি শক্তিশালী CI/CD প্ল্যাটফর্ম যা GitLab রিপোজিটরির মাধ্যমে ইন্টিগ্রেটেড থাকে এবং কোডের প্রতিটি পরিবর্তনের পর স্বয়ংক্রিয়ভাবে কাজ শুরু করতে পারে।
২.২.১. GitLab CI কনফিগারেশন ফাইল তৈরি করা
- GitLab রিপোজিটরি তৈরি করুন: আপনার Yii প্রজেক্টের জন্য GitLab রিপোজিটরি তৈরি করুন।
CI কনফিগারেশন ফাইল তৈরি করুন:
.gitlab-ci.ymlনামক একটি ফাইল তৈরি করুন আপনার প্রোজেক্টের রুট ডিরেক্টরিতে। এই ফাইলটি GitLab CI প্রক্রিয়া পরিচালনা করবে।উদাহরণস্বরূপ:
stages: - test - deploy test: image: php:7.4 before_script: - apt-get update && apt-get install -y libpng-dev libjpeg-dev libfreetype6-dev zip git - docker-php-ext-configure gd --with-freetype --with-jpeg - docker-php-ext-install gd - curl -sS https://getcomposer.org/installer | php - mv composer.phar /usr/local/bin/composer script: - composer install - ./vendor/bin/phpunit deploy: stage: deploy script: - echo "Deploying application"এখানে:
- test স্টেজ: PHP 7.4 ইমেজ ব্যবহার করে টেস্ট রান করা হচ্ছে।
- deploy স্টেজ: ডিপ্লয়মেন্ট স্ক্রিপ্ট চালানো হচ্ছে (এটি পছন্দসই ডিপ্লয়মেন্ট প্রক্রিয়া অনুযায়ী কাস্টমাইজ করা যেতে পারে)।
২.২.২. CI প্রক্রিয়া কার্যকর করা
GitLab রিপোজিটরিতে .gitlab-ci.yml ফাইলটি পুশ করার পর, GitLab CI স্বয়ংক্রিয়ভাবে CI প্রক্রিয়া শুরু করবে এবং আপনাকে প্রতিটি স্টেজের প্রগ্রেস ট্র্যাক করার সুযোগ দেবে।
৩. PHPUnit এবং টেস্টিং
Continuous Integration (CI) সিস্টেমের একটি গুরুত্বপূর্ণ অংশ হল Unit Testing, যা কোডের প্রতিটি অংশের কার্যকারিতা পরীক্ষা করে। Yii ফ্রেমওয়ার্কে, আপনি PHPUnit ব্যবহার করে ইউনিট টেস্ট লিখতে পারেন এবং CI সিস্টেমে সেগুলো অটোমেটিকভাবে চালাতে পারেন।
৩.১. PHPUnit সেটআপ
Composer দিয়ে PHPUnit ইনস্টল করা:
composer require --dev phpunit/phpunitটেস্ট ফাইল তৈরি করা: Yii প্রজেক্টের
testsডিরেক্টরিতে PHPUnit টেস্ট ফাইল তৈরি করুন।উদাহরণস্বরূপ:
<?php namespace tests; use Yii; use app\models\User; use PHPUnit\Framework\TestCase; class UserTest extends TestCase { public function testLogin() { $user = new User(); $this->assertTrue($user->login('admin', 'password')); } }- CI ফাইলে PHPUnit টেস্ট রান করা: CI কনফিগারেশনে PHPUnit টেস্টের জন্য একটি স্টেপ যোগ করুন, যাতে কোড পুশের পর টেস্টগুলো স্বয়ংক্রিয়ভাবে চালানো যায়।
৪. ডিপ্লয়মেন্ট
CI প্রক্রিয়ার মধ্যে শেষ স্টেপ হল ডিপ্লয়মেন্ট। আপনি CI কনফিগারেশনে ডিপ্লয়মেন্ট স্ক্রিপ্ট যুক্ত করে অ্যাপ্লিকেশনটি স্টেজিং বা প্রোডাকশন পরিবেশে ডিপ্লয় করতে পারেন।
৪.১. ডিপ্লয়মেন্ট স্ক্রিপ্ট
এখানে একটি সাধারণ ডিপ্লয়মেন্ট স্ক্রিপ্টের উদাহরণ:
#!/bin/bash
# ডিপ্লয়মেন্ট স্ক্রিপ্ট
# অ্যাপ্লিকেশন ফাইল আপডেট করা
git pull origin main
# কম্পোজার দিয়ে ডিপেনডেন্সি ইনস্টল করা
composer install --no-dev --optimize-autoloader
# ক্যাশ পরিষ্কার করা
php yii cache/flush-all
# অন্যান্য ডিপ্লয়মেন্ট টাস্ক
php yii migrate --interactive=0
এটি CI কনফিগারেশনে ড
িপ্লয়মেন্ট স্টেজে ব্যবহার করা যেতে পারে।
সারাংশ
Continuous Integration (CI) ব্যবহার করে Yii ফ্রেমওয়ার্কে কোড টেস্টিং, বিল্ডিং এবং ডিপ্লয়মেন্ট প্রক্রিয়া অটোমেট করা যায়, যা কোডের গুণমান এবং ডেলিভারি টাইম ইম্প্রুভ করতে সহায়তা করে। GitHub Actions বা GitLab CI-এর মাধ্যমে এই CI প্রক্রিয়া সহজেই সেটআপ করা সম্ভব, যেখানে PHPUnit টেস্টিং এবং ডিপ্লয়মেন্ট স্ক্রিপ্টগুলো অটোমেটিকভাবে রান হয়। CI ব্যবহারের মাধ্যমে কোডের ত্রুটি দ্রুত শনাক্ত করা সম্ভব, এবং ডিপ্লয়মেন্ট প্রক্রিয়া আরও নির্ভরযোগ্য হয়ে ওঠে।
Read more