Continuous Integration (CI) হল একটি সফটওয়্যার ডেভেলপমেন্ট পদ্ধতি যেখানে ডেভেলপাররা কোড পরিবর্তন করে সেটি বার বার একটি শেয়ারড রেপোজিটরিতে যোগ করেন, এবং তারপর একটি স্বয়ংক্রিয় বিল্ড এবং টেস্টিং সিস্টেমের মাধ্যমে কোড যাচাই করা হয়। Web2Py তে CI সেটআপ করার মাধ্যমে আপনার অ্যাপ্লিকেশনের কোডের গুণমান নিশ্চিত করা যায় এবং বাগ ফিক্স করার প্রক্রিয়াটি দ্রুত হয়।
এখানে Web2Py তে CI সেটআপ করার প্রক্রিয়া বিস্তারিতভাবে আলোচনা করা হয়েছে।
Continuous Integration (CI) সেটআপের উপাদান
Web2Py তে CI সেটআপ করার জন্য নিম্নলিখিত উপাদানগুলো প্রয়োজন:
- Version Control System (VCS): Git ব্যবহার করা হয়।
- CI/CD টুল: Jenkins, GitHub Actions, GitLab CI, CircleCI, বা Travis CI।
- Automated Testing: Unit Test, Functional Test, Integration Test।
১. Version Control System (VCS) - Git সেটআপ
প্রথমে, আপনাকে আপনার Web2Py অ্যাপ্লিকেশন Git রিপোজিটরিতে রাখা প্রয়োজন। যদি আপনার অ্যাপ্লিকেশনটি Git রেপোজিটরিতে না থাকে, তাহলে প্রথমে সেটি Git রেপোজিটরিতে ইনিশিয়ালাইজ করুন।
Git রেপোজিটরি তৈরি করা
- আপনার Web2Py অ্যাপ্লিকেশনের ডিরেক্টরি তে যান।
Git ইনিশিয়ালাইজ করুন:
git initফাইলগুলো স্টেজ করুন:
git add .প্রথম কমিট করুন:
git commit -m "Initial commit"GitHub, GitLab, বা Bitbucket এ একটি নতুন রেপোজিটরি তৈরি করুন এবং এটি কনফিগার করুন:
git remote add origin https://github.com/username/repository.git git push -u origin master
২. CI/CD টুলস নির্বাচন
Web2Py তে CI সেটআপ করার জন্য বিভিন্ন CI/CD টুল ব্যবহার করা যায়। এখানে GitHub Actions ব্যবহার করার উদাহরণ দেওয়া হলো, তবে আপনি আপনার প্রয়োজন অনুযায়ী Travis CI, GitLab CI, বা CircleCI ব্যবহার করতে পারেন।
GitHub Actions এর মাধ্যমে CI সেটআপ
GitHub Actions Web2Py অ্যাপ্লিকেশনগুলির জন্য খুবই জনপ্রিয় CI/CD টুল, যা সরাসরি GitHub রিপোজিটরির মধ্যে অন্তর্ভুক্ত থাকে।
GitHub Actions Workflow তৈরি করা:
প্রথমে আপনার GitHub রিপোজিটরির মধ্যে
.github/workflowsফোল্ডার তৈরি করুন।তারপর সেখানে একটি YAML ফাইল তৈরি করুন, যেমন
ci.yml।ci.yml কনফিগারেশন ফাইল:
একটি সিম্পল CI কনফিগারেশন ফাইল হতে পারে এমন:
name: Web2Py 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 Python uses: actions/setup-python@v2 with: python-version: '3.x' - name: Install dependencies run: | python -m pip install --upgrade pip pip install -r requirements.txt pip install web2py - name: Run tests run: | python3 -m unittest discover testsএখানে:
python-version: আপনি যে Python ভার্সন ব্যবহার করছেন, তা নির্ধারণ করা হয়েছে।pip install -r requirements.txt: প্রয়োজনীয় প্যাকেজগুলি ইনস্টল করা হয়েছে।unittest discover tests:tests/ফোল্ডারে থাকা সকল ইউনিট টেস্ট চালানো হচ্ছে।
GitHub Actions চালানো:
GitHub Actions এ কাজটি স্বয়ংক্রিয়ভাবে হবে, এবং যখনই আপনি
mainব্রাঞ্চে নতুন কিছু পুশ করবেন, তখন এই CI পিপলাইনটি রান হবে।
৩. Automated Testing
Web2Py তে automated testing করার জন্য আপনাকে কিছু টেস্ট কেস তৈরি করতে হবে। এই টেস্ট কেসগুলি unittest বা nose এর মতো টেস্টিং ফ্রেমওয়ার্কের মাধ্যমে লেখা হতে পারে। Web2Py এর নিজের টেস্টিং সিস্টেমও রয়েছে।
Web2Py তে Unit Test ব্যবহার করা:
Test Directory তৈরি করুন:
আপনার অ্যাপ্লিকেশনে একটি
testsফোল্ডার তৈরি করুন যেখানে টেস্ট ফাইলগুলো থাকবে।Unit Test তৈরি করুন:
উদাহরণস্বরূপ:
# tests/test_default.py import unittest from gluon import current class TestDefaultController(unittest.TestCase): def test_books(self): response = current.request.get('/default/books') self.assertEqual(response.status_code, 200) def test_add_book(self): data = {'title': 'Test Book', 'author': 'Test Author'} response = current.request.post('/default/add_book', data=data) self.assertEqual(response.status_code, 200)এখানে,
test_booksএবংtest_add_bookফাংশন দুটি Web2Py এরbooksএবংadd_bookAPI এর কার্যকারিতা যাচাই করছে।
৪. CI/CD প্রক্রিয়া:
- Build এবং Test: যখনই কোডে কোনো পরিবর্তন হবে (যেমন নতুন কমিট বা পুল রিকোয়েস্ট), GitHub Actions আপনার টেস্টগুলিকে চালাবে এবং নিশ্চিত করবে যে সবকিছু সঠিকভাবে কাজ করছে।
Deploy: আপনি চাইলে CI পিপলাইনে auto deployment সেটআপ করতে পারেন। উদাহরণস্বরূপ, আপনি Heroku, AWS, DigitalOcean বা অন্য কোনো ক্লাউড সার্ভারে প্রোডাকশন ডেপ্লয়মেন্ট করতে পারেন। এক্ষেত্রে, ডেপ্লয়মেন্টের জন্য একটি নতুন স্টেপ যোগ করতে হবে।
উদাহরণস্বরূপ, Heroku তে ডেপ্লয়মেন্ট:
- name: Deploy to Heroku env: HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }} run: | git remote add heroku https://git.heroku.com/your-app-name.git git push heroku mainএই স্টেপে Heroku API Key ব্যবহার করে আপনার অ্যাপ্লিকেশন Heroku তে ডেপ্লয় হবে।
সারাংশ
Continuous Integration (CI) Web2Py অ্যাপ্লিকেশনে স্বয়ংক্রিয় বিল্ড, টেস্ট এবং ডেপ্লয়মেন্ট প্রক্রিয়া নিশ্চিত করতে ব্যবহৃত হয়। GitHub Actions, Travis CI বা GitLab CI ব্যবহার করে আপনি Web2Py অ্যাপ্লিকেশনের জন্য একটি CI পিপলাইন সেটআপ করতে পারেন, যেখানে কোডের প্রতিটি পরিবর্তনের জন্য টেস্টিং এবং ডেপ্লয়মেন্ট স্বয়ংক্রিয়ভাবে সম্পন্ন হবে।
Web2Py তে automated testing, CI/CD tools, এবং Git এর সাহায্যে আপনি কোডের গুণমান এবং নিরাপত্তা নিশ্চিত করতে পারবেন, এবং একাধিক পরিবেশে ডেপ্লয়মেন্ট প্রক্রিয়া আরও সহজ এবং দ্রুত করতে পারবেন।
Read more