Continuous Integration (CI) এবং Continuous Deployment (CD) একটি সফটওয়্যার ডেভেলপমেন্ট প্রক্রিয়া যেখানে কোড নিয়মিতভাবে ইন্টিগ্রেট এবং ডিপ্লয় করা হয়। এটি দলীয় কাজকে আরও দক্ষ করে এবং সিস্টেমের বাগ কমাতে সাহায্য করে। CakePHP প্রজেক্টে CI/CD এর ব্যবহার স্বয়ংক্রিয়ভাবে কোড টেস্টিং, বিল্ডিং, এবং ডিপ্লয়মেন্টের প্রক্রিয়া সহজ করে।
এই টিউটোরিয়ালে CakePHP প্রজেক্টে CI/CD সেটআপ করার পদ্ধতি আলোচনা করা হবে।
১. Continuous Integration (CI)
Continuous Integration (CI) এমন একটি প্র্যাকটিস যেখানে ডেভেলপাররা তাদের কোড প্রতিদিন কয়েকবার ইন্টিগ্রেট করেন একটি শেয়ারড রিপোজিটরিতে। এর মাধ্যমে কোডে কোনো ত্রুটি থাকলে তা খুব তাড়াতাড়ি চিহ্নিত করা যায়, এবং সিস্টেমের গুণগত মান বজায় রাখা যায়।
১.১. CI এর প্রয়োজনীয় উপাদান
CakePHP প্রজেক্টে CI এর জন্য কিছু প্রয়োজনীয় টুলস:
- Git: কোড ভার্সন কন্ট্রোল।
- Travis CI / CircleCI / GitHub Actions: স্বয়ংক্রিয় টেস্টিং এবং বিল্ডিং।
- PHPUnit: PHP কোডের জন্য টেস্টিং ফ্রেমওয়ার্ক।
- Composer: PHP ডিপেনডেন্সি ম্যানেজার।
১.২. CI সেটআপ
CakePHP তে CI সেটআপ করার জন্য আপনি GitHub Actions বা Travis CI ব্যবহার করতে পারেন। নিচে GitHub Actions দিয়ে CI সেটআপ করার উদাহরণ দেওয়া হলো।
প্রথমে, আপনার .github/workflows/ci.yml ফাইলটি তৈরি করুন:
name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
test:
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 dependencies
run: |
composer install
- name: Run tests
run: |
./vendor/bin/phpunit
এখানে:
push: কোডmainব্রাঞ্চে পুশ করলে CI প্রক্রিয়া শুরু হবে।checkout: GitHub রিপোজিটরি থেকে কোড ক্লোন করা হবে।setup-php: PHP পরিবেশ সেটআপ করা হচ্ছে।composer install: ডিপেনডেন্সি ইনস্টল করা হচ্ছে।phpunit: PHPUnit টেস্ট চালানো হচ্ছে।
১.৩. PHPUnit টেস্টিং
CakePHP প্রজেক্টে CI এর জন্য PHPUnit ব্যবহার করা হয়। আপনাকে tests/ ফোল্ডারে টেস্ট ফাইল তৈরি করতে হবে। উদাহরণস্বরূপ:
namespace App\Test\TestCase\Controller;
use Cake\TestSuite\IntegrationTestTrait;
use Cake\TestSuite\TestCase;
class ArticlesControllerTest extends TestCase
{
use IntegrationTestTrait;
public $fixtures = ['app.Articles'];
public function testIndex()
{
$this->get('/articles');
$this->assertResponseOk();
$this->assertResponseContains('Articles');
}
}
এই টেস্টে, আপনি /articles পৃষ্ঠাটি GET রিকুয়েস্ট করছেন এবং সঠিক রেসপন্সের জন্য চেক করছেন।
২. Continuous Deployment (CD)
Continuous Deployment (CD) প্রক্রিয়ায়, কোড ডেভেলপমেন্টের পরপরই তা প্রোডাকশন পরিবেশে ডিপ্লয় হয়ে যায়। এটি একেবারে শেষ সময় পর্যন্ত কোনো ম্যানুয়াল ইন্টারভেনশন ছাড়াই কোডের ডিপ্লয়মেন্ট নিশ্চিত করে। CakePHP প্রজেক্টে CD সেটআপের মাধ্যমে আপনি নিয়মিতভাবে আপডেট এবং ফিক্স ত্বরিতভাবে প্রোডাকশনে পাঠাতে পারবেন।
২.১. CD এর জন্য প্রাথমিক প্রস্তুতি
CD-এর জন্য নিচের টুলসগুলো প্রয়োজন:
- Heroku / AWS / DigitalOcean: প্রোডাকশন সার্ভার।
- Docker: কনটেইনারাইজেশন (যা অ্যাপ্লিকেশনকে প্রোডাকশন পরিবেশে চালানোর জন্য সহায়তা করে)।
- GitHub Actions / CircleCI / Jenkins: CI/CD প্রক্রিয়া অটোমেট করতে।
২.২. CD সেটআপ
এখানে আমরা Heroku ব্যবহার করে CakePHP অ্যাপ্লিকেশন ডিপ্লয় করার উদাহরণ দেখবো।
২.২.১. Heroku অ্যাপ তৈরি করা
প্রথমে, Heroku অ্যাকাউন্টে লগইন করে একটি নতুন অ্যাপ তৈরি করুন:
heroku create my-cakephp-app
২.২.২. GitHub Actions দিয়ে Heroku ডিপ্লয়মেন্ট
.github/workflows/deploy.yml ফাইলে আপনার ডিপ্লয়মেন্ট কনফিগারেশন সেট করুন:
name: Deploy to Heroku
on:
push:
branches:
- main
jobs:
deploy:
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 dependencies
run: |
composer install
- name: Deploy to Heroku
run: |
git remote add heroku https://git.heroku.com/my-cakephp-app.git
git push heroku main
এখানে:
git remote add heroku: Heroku অ্যাপের Git রিমোট সেটআপ করা হচ্ছে।git push heroku main: কোডmainব্রাঞ্চে পুশ হলে তা স্বয়ংক্রিয়ভাবে Heroku তে ডিপ্লয় হবে।
২.৩. Docker কনটেইনার ব্যবহার করে CD
CakePHP অ্যাপ্লিকেশন ডিপ্লয়মেন্টের জন্য Docker ব্যবহার করা একটি ভালো পদ্ধতি, যা আপনার অ্যাপ্লিকেশন কনটেইনারে চালাতে সহায়তা করে। Dockerfile এর মাধ্যমে CakePHP অ্যাপ্লিকেশন কনটেইনারাইজ করা যেতে পারে:
Dockerfile:
FROM php:7.4-apache
RUN apt-get update && apt-get install -y libpng-dev libjpeg-dev libfreetype6-dev && \
docker-php-ext-configure gd --with-freetype --with-jpeg && \
docker-php-ext-install gd
WORKDIR /var/www/html
COPY . .
RUN composer install
EXPOSE 80
CMD ["apache2-foreground"]
এখানে:
FROM php:7.4-apache: Apache এবং PHP 7.4 ইমেজ ব্যবহার করা হচ্ছে।COPY . .: CakePHP অ্যাপ্লিকেশন ফাইল কপি করা হচ্ছে।RUN composer install: ডিপেনডেন্সি ইনস্টল করা হচ্ছে।
এরপর, Docker কনটেইনার তৈরি করা এবং ডিপ্লয় করা হবে:
docker build -t cakephp-app .
docker run -p 8080:80 cakephp-app
এই কনফিগারেশনটি Docker কনটেইনারে আপনার অ্যাপ্লিকেশনটি চালাবে এবং প্রোডাকশনে ডিপ্লয় করতে সহায়তা করবে।
CakePHP তে Continuous Integration (CI) এবং Continuous Deployment (CD) একত্রে কাজ করলে সফটওয়্যার ডেভেলপমেন্ট প্রক্রিয়া আরও দ্রুত, নির্ভরযোগ্য এবং সাশ্রয়ী হয়ে ওঠে। CI এর মাধ্যমে কোডের ভুল ত্রুটি দ্রুত ধরা পড়ে, এবং CD এর মাধ্যমে কোড প্রোডাকশন পরিবেশে দ্রুত এবং নিরাপদে ডিপ্লয় করা যায়। GitHub Actions, Travis CI, Heroku, Docker এবং PHPUnit এর মাধ্যমে এই প্রক্রিয়া সহজভাবে বাস্তবায়ন করা সম্ভব। CI/CD সেটআপ করলে আপনার অ্যাপ্লিকেশন উন্নত মানে রক্ষণাবেক্ষণ এবং দ্রুত ডিপ্লয়মেন্টের সুবিধা পাবে।
Read more