Continuous Integration (CI) হল একটি সফটওয়্যার ডেভেলপমেন্ট প্র্যাকটিস যেখানে কোডের নতুন পরিবর্তনগুলি নিয়মিতভাবে একত্রিত (integrate) করা হয় এবং প্রতিটি ইন্টিগ্রেশন স্বয়ংক্রিয়ভাবে টেস্ট করা হয়। CI-এর মূল উদ্দেশ্য হল উন্নত কোড গুণমান এবং দ্রুত সঠিক সিস্টেম রিলিজ।
এখানে আমরা একটি বাস্তব দৃষ্টান্তে CI ইন্টিগ্রেশন উদাহরণ দেখব যেখানে একটি সাধারণ GitHub রিপোজিটরি এবং GitHub Actions ব্যবহৃত হবে। এটি একটি খুব সাধারণ Ruby on Rails অ্যাপ্লিকেশন, তবে অন্যান্য প্রযুক্তিতে (যেমন Node.js, Python, Java, ইত্যাদি) CI ইন্টিগ্রেশন প্রক্রিয়া খুব মিল।
ব্যবহার করা টুলস
- GitHub Actions: একটি CI/CD প্ল্যাটফর্ম যা GitHub রিপোজিটরির সাথে একীভূত হয়।
- RSpec: Ruby অ্যাপ্লিকেশনের জন্য টেস্টিং ফ্রেমওয়ার্ক।
- Heroku: অ্যাপ্লিকেশন ডেপ্লয়মেন্টের জন্য।
ধাপ ১: GitHub রিপোজিটরি তৈরি করা
প্রথমে, একটি নতুন GitHub রিপোজিটরি তৈরি করুন অথবা আপনার Ruby on Rails প্রজেক্টটি একটি GitHub রিপোজিটরিতে আপলোড করুন।
ধাপ ২: GitHub Actions এর জন্য Workflow তৈরি করা
GitHub Actions ব্যবহার করে CI প্রক্রিয়া পরিচালনা করার জন্য আপনাকে একটি workflow ফাইল তৈরি করতে হবে। এই ফাইলটি .github/workflows ডিরেক্টরির মধ্যে রাখা হয়। নিচে একটি উদাহরণ workflow দেওয়া হল।
rails.yml - GitHub Actions Workflow Example:
name: Ruby on Rails 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 Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 3.0 # Ruby version
- name: Install dependencies
run: |
gem install bundler
bundle install
- name: Set up Database
run: |
cp config/database.yml.github config/database.yml
bundle exec rake db:create
bundle exec rake db:schema:load
- name: Run tests
run: |
bundle exec rspecWorkflow এর ব্যাখ্যা:
- on: এই অংশে আপনি নির্দিষ্ট করেছেন কখন workflow রান হবে। এখানে
pushএবংpull_requestএর জন্যmainব্রাঞ্চে যে কোনো পরিবর্তন হলে এটি চলবে। - jobs: এখানে একটি job (
test) তৈরি করা হয়েছে, যা CI টেস্ট পরিচালনা করবে। - steps: এখানে টেস্ট প্রক্রিয়া শুরু করার জন্য বিভিন্ন ধাপের বিবরণ রয়েছে:
Checkout code: রিপোজিটরির কোড ক্লোন করে আনা।Set up Ruby: সঠিক Ruby ভার্সন সেটআপ করা।Install dependencies: প্রয়োজনীয় Ruby গেমস ইনস্টল করা।Set up Database: ডাটাবেস কনফিগারেশন এবং প্রয়োজনীয় স্কিমা লোড করা।Run tests: RSpec টেস্ট চালানো।
ধাপ ৩: Heroku Deployment (অপশনাল)
CI টেস্ট পাস হলে, আপনি চাইলে Heroku বা অন্য কোনো ক্লাউড প্ল্যাটফর্মে স্বয়ংক্রিয়ভাবে ডেপ্লয় করতে পারেন।
Heroku Deployment Example:
আপনি যদি Heroku এ ডেপ্লয় করতে চান, তাহলে আপনাকে workflow ফাইলে একটি নতুন স্টেপ যোগ করতে হবে যেখানে Heroku অ্যাপ্লিকেশনে কোড ডেপ্লয় করা হবে।
- name: Deploy to Heroku
run: |
git remote add heroku https://git.heroku.com/${{ secrets.HEROKU_APP_NAME }}.git
git push heroku main
env:
HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}এখানে:
git remote add herokuকমান্ডটি Heroku অ্যাপ্লিকেশনকে রিপোজিটরির রিমোট হিসাবে যুক্ত করে।git push heroku mainকমান্ডটিmainব্রাঞ্চের কোড Heroku অ্যাপ্লিকেশনে পুশ করে।
এছাড়াও, আপনি HEROKU_API_KEY এবং HEROKU_APP_NAME এর জন্য GitHub Secrets ব্যবহার করবেন যাতে নিরাপত্তা বজায় থাকে।
ধাপ ৪: GitHub Secrets ব্যবহার করা
GitHub Secrets ব্যবহার করার মাধ্যমে আপনার অ্যাপ্লিকেশন ডেপ্লয়মেন্ট বা অন্যান্য সংবেদনশীল ডেটা যেমন API কী সুরক্ষিতভাবে সংরক্ষণ করা হয়।
- GitHub রিপোজিটরিতে যান।
Settings>Secrets>New repository secretনির্বাচন করুন।HEROKU_API_KEYএবংHEROKU_APP_NAMEমতো সিক্রেট তৈরি করুন এবং তাদের মান দিন।
ধাপ ৫: টেস্ট এবং ডেপ্লয়মেন্ট পর্যবেক্ষণ
একবার GitHub Actions workflow ফাইল তৈরি হয়ে গেলে, আপনি main ব্রাঞ্চে কোড push করার পরে GitHub Actions স্বয়ংক্রিয়ভাবে রান হবে এবং আপনি টেস্টগুলির ফলাফল দেখতে পাবেন। যদি টেস্টগুলি সফল হয়, তাহলে আপনি Heroku অথবা আপনার পছন্দের ডেপ্লয়মেন্ট সার্ভারে কোড ডেপ্লয় করতে পারবেন।
GitHub Actions প্যানেলে আপনি ফলাফল দেখতে পারবেন এবং যদি কোনো টেস্ট ফেইল হয়, তবে আপনি সেখানে লগ দেখতে পারবেন যা সমস্যা চিহ্নিত করতে সহায়ক।
সারাংশ
এটি ছিল একটি বাস্তব উদাহরণ যেখানে একটি Ruby on Rails অ্যাপ্লিকেশন GitHub Actions ব্যবহার করে CI প্রক্রিয়ায় অন্তর্ভুক্ত করা হয়েছে। এই প্রক্রিয়াটি স্বয়ংক্রিয়ভাবে কোডের পরিবর্তনগুলো টেস্ট করে এবং সফল হলে কোড ডেপ্লয় করে, যা সফটওয়্যার ডেভেলপমেন্টের দ্রুততা এবং গুণমান উন্নত করে।
Read more