Continuous Integration (CI) এবং Continuous Deployment (CD) কি?
Continuous Integration (CI) এবং Continuous Deployment (CD) দুটি গুরুত্বপূর্ণ DevOps প্রক্রিয়া যা সফটওয়্যার ডেভেলপমেন্টে স্বয়ংক্রিয়তা এবং উন্নয়ন কার্যক্রমকে দ্রুত এবং নির্ভরযোগ্য করে তোলে।
- Continuous Integration (CI): এটি এমন একটি পদ্ধতি যেখানে কোডের পরিবর্তনগুলো স্বয়ংক্রিয়ভাবে একটি শেয়ারড রিপোজিটরিতে মর্জ করা হয়। প্রতিটি কমিট বা পুশের পর, একটি স্বয়ংক্রিয় বিল্ড এবং টেস্ট রান করা হয়, যার মাধ্যমে নতুন পরিবর্তনটি সিস্টেমের অন্য অংশের সাথে একত্রে কাজ করছে কি না তা যাচাই করা হয়।
- Continuous Deployment (CD): এটি এমন একটি পদ্ধতি যেখানে কোডের পরিবর্তনগুলি স্বয়ংক্রিয়ভাবে প্রোডাকশনে ডিপ্লয় করা হয়। এটি CI-এর পরের ধাপ, যেখানে টেস্টিং এবং বিল্ডিং প্রক্রিয়া সম্পন্ন হওয়ার পরে কোড সরাসরি প্রোডাকশনে চলে যায়।
TypeORM-এ CI এবং CD সেটআপ করার জন্য, আপনাকে GitHub Actions, Travis CI, CircleCI, Jenkins বা অন্য কোনো CI/CD টুল ব্যবহার করতে হবে।
এই গাইডে আমরা GitHub Actions ব্যবহার করে TypeORM প্রোজেক্টের জন্য CI এবং CD সেটআপ কিভাবে করা যায় তা দেখব।
CI এবং CD Setup এর জন্য GitHub Actions ব্যবহার করা
GitHub Actions একটি শক্তিশালী এবং সহজে কনফিগারযোগ্য CI/CD টুল, যা GitHub রিপোজিটরি থেকে সরাসরি কাজ করতে পারে। এটি আপনাকে স্বয়ংক্রিয় বিল্ড, টেস্টিং এবং ডিপ্লয়মেন্ট প্রক্রিয়া তৈরি করতে সহায়তা করে।
১. GitHub Actions সেটআপ
প্রথমে, আপনার প্রোজেক্টের রিপোজিটরিতে .github/workflows ফোল্ডারটি তৈরি করতে হবে। এই ফোল্ডারের মধ্যে YAML ফাইল থাকবে, যা CI/CD প্রক্রিয়াটি কনফিগার করবে।
২. GitHub Actions Workflow তৈরি করা
CI Workflow: কোড কমিট করার পর এটি টেস্ট এবং বিল্ড প্রক্রিয়া চালাবে।
name: CI Workflow
on:
push:
branches:
- main # যে শাখায় পুশ হবে, সেই শাখায় CI প্রক্রিয়া চলবে
jobs:
build:
runs-on: ubuntu-latest # Ubuntu এর উপর রান হবে
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '14' # Node.js ভার্সন সেট করা
- name: Install dependencies
run: |
npm install # অথবা yarn install
- name: Run tests
run: |
npm test # অথবা yarn test
- name: Run migrations
run: |
npm run typeorm migration:run # TypeORM মাইগ্রেশন রান করা
- name: Build project
run: |
npm run build # প্রোজেক্ট বিল্ড করা
এই CI Workflow ফাইলটি প্রতিটি push কমান্ডে কোড চেকআউট করে, ডিপেনডেন্সি ইনস্টল করে, টেস্ট রান করে, মাইগ্রেশন চালায় এবং প্রোজেক্ট বিল্ড করে।
৩. CD Workflow: Production Deployment
CD Workflow: এটি কোড টেস্টিং ও বিল্ডিং পর সফলভাবে প্রোডাকশনে ডিপ্লয় করবে।
name: CD Workflow
on:
push:
branches:
- main # প্রোডাকশনে পুশ হলে ডিপ্লয় হবে
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- name: Install dependencies
run: |
npm install
- name: Run migrations
run: |
npm run typeorm migration:run # মাইগ্রেশন রান করা
- name: Deploy to production
run: |
# আপনার প্রোডাকশন সার্ভারে ডিপ্লয় করার কমান্ড এখানে লিখুন
npm run deploy # প্রোডাকশন ডিপ্লয়মেন্ট স্ক্রিপ্ট
এটি নিশ্চিত করবে যে main শাখায় পুশ হলে কোড সফলভাবে প্রোডাকশনে ডিপ্লয় হয়।
৪. Deployment Script
আপনার package.json-এ deploy স্ক্রিপ্টটি যুক্ত করতে হবে, যা আপনার প্রোডাকশন সার্ভারে কোড ডিপ্লয় করবে। উদাহরণস্বরূপ, আপনি Heroku, AWS, বা DigitalOcean ব্যবহার করতে পারেন।
{
"scripts": {
"deploy": "heroku push" // উদাহরণ, আপনি আপনার প্রোডাকশন সার্ভারে ডিপ্লয়মেন্ট স্ক্রিপ্ট এখানে রাখবেন
}
}
৫. Secret Management
GitHub Actions এ প্রোডাকশনে ডিপ্লয় করার জন্য আপনাকে প্রোডাকশন কনফিগারেশন এবং সিক্রেট (যেমন API কীগুলি) সংরক্ষণ করতে হবে। আপনি GitHub এ Secrets ব্যবহার করতে পারেন।
- GitHub রিপোজিটরি তে যান।
- Settings -> Secrets এ যান।
- এখানে আপনি প্রোডাকশন API কীগুলি বা অন্যান্য সিক্রেট কনফিগারেশন যোগ করতে পারবেন, যেমন:
HEROKU_API_KEY=your-heroku-api-key
DATABASE_URL=your-database-url
এটি GitHub Actions এর মাধ্যমে CI/CD প্রক্রিয়ায় স্বয়ংক্রিয়ভাবে অ্যাক্সেস করা হবে।
৬. Continuous Integration and Continuous Deployment এর উন্নত কনফিগারেশন
CI/CD পদ্ধতি আরো জটিল হতে পারে যেমন:
- Multiple Environments: Staging এবং Production এর জন্য আলাদা workflow তৈরি করা।
- Branch Based Deployment: ডেভেলপ শাখায় পুশ হলে শুধুমাত্র staging এ ডিপ্লয়মেন্ট করা।
- Notification and Reporting: Slack বা ইমেইল নোটিফিকেশন সেটআপ করা।
Branch Based Deployment উদাহরণ:
name: CI Workflow
on:
push:
branches:
- develop # staging এর জন্য ডেভেলপ শাখায় CI প্রক্রিয়া চলবে
- main # main শাখায় CI এবং CD হবে
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- name: Install dependencies
run: |
npm install
- name: Run tests
run: |
npm test
সারাংশ
Continuous Integration (CI) এবং Continuous Deployment (CD) TypeORM প্রোজেক্টে অত্যন্ত গুরুত্বপূর্ণ। GitHub Actions ব্যবহার করে আপনি সহজেই CI/CD প্রক্রিয়া সেটআপ করতে পারেন। GitHub Actions আপনার প্রোজেক্টের কোড চেকআউট, ডিপেনডেন্সি ইনস্টলেশন, টেস্টিং, মাইগ্রেশন, এবং ডিপ্লয়মেন্ট প্রক্রিয়াগুলো স্বয়ংক্রিয়ভাবে পরিচালনা করবে। এতে আপনার কোড একত্রে এবং নির্ভরযোগ্যভাবে বিভিন্ন এনভায়রনমেন্টে ডিপ্লয় করা সহজ হয়ে যাবে।
Read more