Continuous Integration (CI) একটি সফটওয়্যার ডেভেলপমেন্ট প্র্যাকটিস যা ডেভেলপারদের কোড পরিবর্তনগুলো নিয়মিতভাবে (প্রায় প্রতিদিন) একটি শেয়ারড রিপোজিটরিতে একত্রিত করতে উৎসাহিত করে। এটি সফটওয়্যার ডেভেলপমেন্ট প্রক্রিয়ায় কোড মান, পারফরম্যান্স এবং নিরাপত্তা বজায় রাখতে সাহায্য করে, এবং নিশ্চিত করে যে কোডের প্রতিটি অংশ সঠিকভাবে কাজ করছে। Zend Framework বা Laminas প্রজেক্টে CI প্রক্রিয়া সেটআপ করা পারফরমেন্স ও কোড মান নিশ্চিত করতে সহায়ক।
এখানে Zend Framework এ Continuous Integration (CI) সেটআপের প্রক্রিয়া এবং কিছু Best Practices আলোচনা করা হলো।
Continuous Integration (CI) এর সুবিধা
- কোয়ালিটি নিশ্চিতকরণ: কোডের নিয়মিত পরীক্ষা ও পরীক্ষণের মাধ্যমে বাগ ও ইস্যু দ্রুত খুঁজে পাওয়া যায়।
- ইনস্ট্যান্ট ফলাফল: কোড পরিবর্তন বা কমিট করার পর তা দ্রুত পরীক্ষা করা যায়, যা দ্রুত ফিডব্যাক দেয়।
- স্বয়ংক্রিয় বিল্ড এবং টেস্টিং: কোডে কোনো নতুন পরিবর্তন হলে স্বয়ংক্রিয়ভাবে বিল্ড ও টেস্ট রান করা হয়।
- দ্রুত ডেপ্লয়মেন্ট: কোডের প্রতিটি পরিবর্তন বা আপডেট সহজে ডেপ্লয়মেন্টের জন্য প্রস্তুত করা যায়।
CI সেটআপের জন্য প্রয়োজনীয় টুলস
CI প্রক্রিয়ায় কিছু প্রয়োজনীয় টুলস ও পরিষেবা ব্যবহার করা হয়, যেগুলো স্বয়ংক্রিয়ভাবে কোড বিল্ড, টেস্ট, এবং ডিপ্লয় করতে সহায়তা করে। Zend Framework প্রজেক্টে CI সেটআপ করার জন্য এই টুলসগুলোর মধ্যে উল্লেখযোগ্য কিছু হলো:
- GitHub Actions / GitLab CI / Jenkins / Travis CI: CI সার্ভিস/প্ল্যাটফর্ম।
- Composer: PHP ডিপেন্ডেন্সি ম্যানেজমেন্ট টুল।
- PHPUnit: PHP ইউনিট টেস্টিং ফ্রেমওয়ার্ক।
- PHP CodeSniffer: কোড স্টাইল চেক করার জন্য।
- PHPStan / Psalm: স্ট্যাটিক অ্যানালাইসিস টুল।
Zend Framework প্রজেক্টে CI সেটআপ
CI সেটআপের জন্য নিচে একটি সাধারণ উদাহরণ দেওয়া হয়েছে যেখানে GitHub Actions ব্যবহার করা হবে। GitHub Actions একটি জনপ্রিয় CI প্ল্যাটফর্ম যা সরাসরি GitHub রিপোজিটরির সাথে সংযুক্ত থাকে।
১. GitHub Actions ফাইল তৈরি করা
প্রথমে, আপনাকে আপনার প্রজেক্টের রুট ডিরেক্টরিতে একটি .github/workflows/ ফোল্ডার তৈরি করতে হবে এবং সেখানে একটি YAML ফাইল (যেমন ci.yml) সংরক্ষণ করতে হবে।
.github/workflows/ci.yml:
name: Zend Framework 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 dependencies
run: |
composer install --no-interaction --prefer-dist
- name: Run PHPUnit tests
run: |
./vendor/bin/phpunit --configuration phpunit.xml.dist
- name: Check code style
run: |
./vendor/bin/phpcs --standard=PSR12 src/
- name: Run static analysis
run: |
./vendor/bin/phpstan analyse src/
এখানে:
- Checkout code: GitHub রিপোজিটরি থেকে কোড চেকআউট করা হয়।
- Set up PHP: নির্দিষ্ট PHP ভার্সন সেট করা হয়।
- Install dependencies: Composer দিয়ে প্রজেক্টের সব ডিপেনডেন্সি ইন্সটল করা হয়।
- Run PHPUnit tests: PHPUnit দিয়ে সমস্ত ইউনিট টেস্ট রান করা হয়।
- Check code style: PHP CodeSniffer দিয়ে কোড স্টাইল চেক করা হয়।
- Run static analysis: PHPStan দিয়ে স্ট্যাটিক অ্যানালাইসিস চালানো হয়।
২. PHPUnit টেস্ট কনফিগারেশন
Zend Framework প্রজেক্টে ইউনিট টেস্টিং করতে PHPUnit ব্যবহার করা হয়। আপনার প্রজেক্টে phpunit.xml.dist কনফিগারেশন ফাইল থাকা উচিত, যাতে টেস্টিং কনফিগারেশন সেট করা থাকে। একটি সাধারণ phpunit.xml.dist কনফিগারেশন ফাইল এরকম হতে পারে:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="vendor/autoload.php">
<testsuites>
<testsuite name="Zend Framework Tests">
<directory>./test</directory>
</testsuite>
</testsuites>
<extensions>
<extension class="PHPUnit_Extensions_RepeatedTest" />
</extensions>
</phpunit>
এখানে tests ডিরেক্টরিতে সব ইউনিট টেস্ট থাকা উচিত, এবং autoload.php ফাইলের মাধ্যমে সমস্ত ডিপেনডেন্সি ইন্টিগ্রেট করা হয়।
৩. PHP CodeSniffer সেটআপ
Zend Framework বা Laminas কোড স্টাইলের জন্য PSR-12 স্ট্যান্ডার্ড অনুসরণ করা উচিত। PHP CodeSniffer এর মাধ্যমে কোড স্টাইল ভেরিফিকেশন করা হয়।
PHP CodeSniffer সেটআপ করতে Composer এর মাধ্যমে এটি ইনস্টল করুন:
composer require --dev squizlabs/php_codesniffer
এরপর, CI ফাইলে phpcs রান করার মাধ্যমে কোড স্টাইল চেক করা যাবে।
৪. PHPStan বা Psalm স্ট্যাটিক অ্যানালাইসিস
PHPStan বা Psalm দিয়ে কোডের স্ট্যাটিক অ্যানালাইসিস চালানো হয়, যা কোডের সমস্যা বা বাগ খুঁজে বের করতে সাহায্য করে।
PHPStan ইনস্টল করতে:
composer require --dev phpstan/phpstan
এরপর, CI ফাইলে phpstan analyse রান করার মাধ্যমে কোডে ভুল বা সতর্কতা চেক করা যাবে।
Best Practices for CI in Zend Framework
CI সেটআপের সময় কিছু Best Practices অনুসরণ করা উচিত:
১. টেস্টিং:
CI প্রক্রিয়াতে ইউনিট টেস্টিং সবচেয়ে গুরুত্বপূর্ণ অংশ। PHPUnit ব্যবহার করে সব ধরনের টেস্ট লেখা উচিত, যাতে কোনো কোড পরিবর্তনের পর ফিচার বা ফাংশনালিটি ভেঙে না যায়।
২. কোড স্টাইল:
PHP CodeSniffer বা PHP-CS-Fixer ব্যবহার করে কোড স্টাইল চেক করা গুরুত্বপূর্ণ, যাতে কোডে সামঞ্জস্য থাকে এবং প্রজেক্টটি সহজে রক্ষণাবেক্ষণযোগ্য হয়।
৩. স্ট্যাটিক অ্যানালাইসিস:
PHPStan বা Psalm এর মাধ্যমে স্ট্যাটিক অ্যানালাইসিস চালিয়ে কোডের ভুল ও সতর্কতাগুলি চিহ্নিত করতে হবে।
৪. ব্যাকওয়ার্ড কমপ্যাটিবিলিটি:
CI টেস্টের মাধ্যমে অ্যাপ্লিকেশনের পূর্ববর্তী ভার্সনের সাথে নতুন কোডের সামঞ্জস্য পরীক্ষা করা উচিত।
৫. নির্ভরশীলতা এবং ডিপেনডেন্সি:
Composer এর মাধ্যমে নির্ভরশীলতা সঠিকভাবে ম্যানেজ করতে হবে এবং নতুন প্যাকেজের ইনস্টলেশন ও আপডেট নিয়মিত করা উচিত।
৬. পারফরম্যান্স টেস্টিং:
পারফরম্যান্স টেস্টিং CI প্রক্রিয়াতে অন্তর্ভুক্ত করা যেতে পারে, যাতে আপনার অ্যাপ্লিকেশনটি স্কেলেবল ও দ্রুত থাকে।
সারাংশ
Zend Framework প্রজেক্টে Continuous Integration (CI) সেটআপ কোডের কোয়ালিটি, পারফরমেন্স এবং রক্ষণাবেক্ষণকে উন্নত করতে সহায়তা করে। GitHub Actions, Jenkins, Travis CI ইত্যাদি CI সার্ভিস ব্যবহার করে কোডের বিল্ড, টেস্টিং এবং ডিপ্লয়মেন্ট স্বয়ংক্রিয় করা যায়। Best Practices অনুসরণ করে কোড স্টাইল, ইউনিট টেস্টিং, স্ট্যাটিক অ্যানালাইসিস ইত্যাদি নিয়ন্ত্রণ করে প্রজেক্টের কোড মান উন্নত করা সম্ভব।
Read more