Continuous Integration (CI) এবং Deployment Automation হল আধুনিক ওয়েব ডেভেলপমেন্টে গুরুত্বপূর্ণ কৌশল, যা কোডের গুণমান বজায় রাখতে এবং ডেপ্লয়মেন্ট প্রক্রিয়াকে অটোমেট করতে সহায়তা করে। Riot.js তে CI এবং Deployment Automations সেটআপ করার জন্য, আমরা সাধারণত জনপ্রিয় CI/CD টুলস যেমন GitHub Actions, GitLab CI, Jenkins, CircleCI, ইত্যাদি ব্যবহার করি।
এখানে Riot.js অ্যাপ্লিকেশনের জন্য CI (Continuous Integration) এবং Deployment Automation এর সাথে যুক্ত কিছু সাধারণ পদ্ধতি দেখানো হলো।
১. Continuous Integration (CI) Setup
Continuous Integration (CI) হচ্ছে একটি প্রক্রিয়া যেখানে প্রতিদিন বা প্রতি ঘণ্টায় কোড রিপোজিটরিতে নতুন কোড যুক্ত হলে তা স্বয়ংক্রিয়ভাবে টেস্ট করা এবং বিল্ড করা হয়। এতে কোডের গুণমান বজায় থাকে এবং সমস্যা দ্রুত শনাক্ত করা যায়।
Example: CI with GitHub Actions
GitHub Actions একটি শক্তিশালী CI/CD প্ল্যাটফর্ম যা সরাসরি GitHub রিপোজিটরির সাথে ইন্টিগ্রেট করা হয়। এটি আপনাকে কোড বিল্ড, টেস্ট, এবং ডিপ্লয়মেন্ট এর জন্য workflows তৈরি করতে সহায়তা করে।
Step 1: Create a Workflow File
GitHub Actions ব্যবহারের জন্য, আপনাকে .github/workflows ফোল্ডারে একটি workflow YAML ফাইল তৈরি করতে হবে। নিচে একটি সাধারণ GitHub Actions workflow ফাইলের উদাহরণ দেয়া হলো যা Riot.js অ্যাপ্লিকেশনকে বিল্ড এবং টেস্ট করবে।
name: Build and Test Riot.js App
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
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 run test
- name: Build the project
run: |
npm run build
- name: Upload build artifacts
uses: actions/upload-artifact@v2
with:
name: build-artifacts
path: ./dist
এখানে:
on.push.branchesএবংon.pull_request.branches: গিটহাব অ্যাকশনটি main ব্রাঞ্চে কোড পুশ অথবা পুল রিকোয়েস্ট হলেই ট্রিগার হবে।actions/checkout@v2: রিপোজিটরি চেকআউট করার জন্য।actions/setup-node@v2: Node.js ইন্সটল করার জন্য।npm run build: Riot.js অ্যাপ্লিকেশনের বিল্ড প্রক্রিয়া চালানো।
Step 2: Set up Build and Test Scripts
আপনার package.json ফাইলে বিল্ড এবং টেস্ট স্ক্রিপ্ট যুক্ত করুন:
{
"scripts": {
"test": "riot test", // Riot.js এর জন্য টেস্ট স্ক্রিপ্ট
"build": "webpack --mode production" // Webpack বিল্ড স্ক্রিপ্ট
}
}
২. Deployment Automation
Deployment Automation হল সেই প্রক্রিয়া যার মাধ্যমে অ্যাপ্লিকেশন স্বয়ংক্রিয়ভাবে নির্দিষ্ট পরিবেশে ডিপ্লয় করা হয়। সাধারণত, আপনি GitHub Actions বা অন্য CI/CD টুলের মাধ্যমে production বা staging পরিবেশে কোড ডিপ্লয় করতে পারেন।
Example: Deployment to Netlify with GitHub Actions
Netlify একটি জনপ্রিয় হোস্টিং প্ল্যাটফর্ম যা সিম্পল ডিপ্লয়মেন্ট প্রদান করে। এখানে একটি GitHub Actions workflow দেওয়া হল, যা Riot.js অ্যাপ্লিকেশনকে Netlify তে ডিপ্লয় করবে।
Step 1: Netlify Deployment Setup
প্রথমে, আপনার Netlify অ্যাকাউন্টে একটি সাইট তৈরি করুন এবং Deploy Settings থেকে Build Command এবং Publish Directory সেট করুন।
- Build Command:
npm run build - Publish Directory:
./dist
Step 2: Configure GitHub Actions to Deploy
name: Build and Deploy to Netlify
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
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 run test
- name: Build the project
run: |
npm run build
- name: Deploy to Netlify
uses: nwtgck/actions-netlify@v1
with:
publish-dir: './dist'
production-branch: 'main'
github-token: ${{ secrets.GITHUB_TOKEN }}
netlify-token: ${{ secrets.NETLIFY_AUTH_TOKEN }}
netlify-site-id: ${{ secrets.NETLIFY_SITE_ID }}
এখানে:
actions-netlify@v1: Netlify এ ডিপ্লয়মেন্টের জন্য একটি GitHub Actions একশন।netlify-tokenএবংnetlify-site-id: এই দুটি সিক্রেট আপনার GitHub রিপোজিটরিতে সেভ করতে হবে। আপনি Netlify এর ড্যাশবোর্ড থেকে Site ID এবং Authentication Token পেতে পারেন এবং তা GitHub Secrets এ যুক্ত করতে পারেন।
Step 3: Set up Netlify Secrets in GitHub
GitHub Repo এর Settings > Secrets এ গিয়ে আপনার Netlify Authentication Token এবং Site ID যুক্ত করুন:
NETLIFY_AUTH_TOKENNETLIFY_SITE_ID
৩. Using Other Deployment Platforms (Heroku, AWS, DigitalOcean)
Example: Deploying to Heroku with GitHub Actions
Heroku তে অ্যাপ ডিপ্লয় করার জন্য GitHub Actions ব্যবহারের জন্য নিম্নলিখিত স্টেপ অনুসরণ করা যেতে পারে:
name: Build and Deploy to Heroku
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
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 run test
- name: Build the project
run: |
npm run build
- name: Deploy to Heroku
uses: akshnz/heroku-deploy-action@v1.0.0
with:
heroku_email: ${{ secrets.HEROKU_EMAIL }}
heroku_api_key: ${{ secrets.HEROKU_API_KEY }}
heroku_app_name: ${{ secrets.HEROKU_APP_NAME }}
এখানে:
akshnz/heroku-deploy-action@v1.0.0: Heroku তে অ্যাপ ডিপ্লয় করার জন্য একশন ব্যবহার করা হয়েছে।HEROKU_EMAIL,HEROKU_API_KEY,HEROKU_APP_NAME: এই সিক্রেটগুলি GitHub এর Secrets এ সংরক্ষণ করতে হবে।
৪. Monitoring and Notifications
CI/CD pipeline এর জন্য আপনি Slack notifications, email alerts, বা GitHub notifications ব্যবহার করতে পারেন, যাতে বিল্ড এবং ডিপ্লয়মেন্টের সময় আপনাকে অবগত রাখা যায়। এর জন্য আপনি GitHub Actions অথবা অন্যান্য CI/CD টুলে notification integration করতে পারেন।
Example: Slack Notification in GitHub Actions
- name: Slack Notification
uses: 8398a7/action-slack@v3
if: failure()
with:
slack_webhook_url: ${{ secrets.SLACK_WEBHOOK_URL }}
status: ${{ job.status }}
এখানে:
slack_webhook_url: আপনার Slack Webhook URL গিটহাব সিক্রেট হিসেবে যুক্ত করতে হবে।
সারাংশ
- Continuous Integration (CI): GitHub Actions, GitLab CI বা Jenkins ব্যবহার করে স্বয়ংক্রিয়ভাবে কোড টেস্ট, বিল্ড, এবং লিন্টিং পরিচালনা করা যায়।
- Deployment Automation: GitHub Actions, Heroku, Netlify, AWS, DigitalOcean ইত্যাদি প্ল্যাটফর্মে স্বয়ংক্রিয় ডিপ্লয়মেন্ট করতে পারেন।
- Slack Notifications: বিল্ড এবং ডিপ্লয়মেন্ট স্ট্যাটাস Slack, ইমেল, বা GitHub নোটিফিকেশনের মাধ্যমে জানানো যায়।
Riot.js অ্যাপ্লিকেশনের জন্য CI/CD সিস্টেম সেটআপ করার মাধ্যমে আপনি কোডের গুণমান নিশ্চিত করতে এবং ডিপ্লয়মেন্ট প্রক্রিয়াকে সহজ এবং দ্রুত করতে পারেন।
Read more