Skill

প্রজেক্টের জন্য Build এবং Deploy Pipeline তৈরি করা

Mix এবং Package Management (Mix and Package Management) - এলিক্সির (Elixir) - Computer Programming

297

প্রজেক্টের জন্য Build এবং Deploy Pipeline তৈরি করা in Elixir

Elixir এর জন্য Build এবং Deploy Pipeline তৈরি করা অত্যন্ত গুরুত্বপূর্ণ, বিশেষত যখন আপনি একটি distributed অথবা scalable অ্যাপ্লিকেশন তৈরি করছেন। CI/CD (Continuous Integration / Continuous Deployment) পদ্ধতি ব্যবহার করে আপনি প্রজেক্টের কোড দ্রুত, কার্যকরী এবং নিরাপদভাবে বিল্ড, টেস্ট এবং ডিপ্লয় করতে পারেন।

এখানে আমরা Elixir প্রজেক্টের জন্য একটি সাধারণ Build এবং Deploy Pipeline কিভাবে তৈরি করা যায়, তা দেখব। সাধারণত, GitHub Actions, GitLab CI/CD, CircleCI, বা Jenkins এর মতো টুলস ব্যবহৃত হয়।

1. Build Pipeline (Continuous Integration)

Build Pipeline নিশ্চিত করে যে কোডের নতুন পরিবর্তন স্বয়ংক্রিয়ভাবে বিল্ড এবং টেস্ট করা হয়, যাতে কোনো ত্রুটি বা বাগ সনাক্ত করা যায়। এখানে GitHub Actions ব্যবহার করা হবে, তবে আপনি আপনার পছন্দের CI/CD টুলও ব্যবহার করতে পারেন।

GitHub Actions সেটআপ:

  1. প্রথমে, আপনার GitHub রিপোজিটরিতে .github/workflows/ ডিরেক্টরি তৈরি করুন।
  2. এরপর, একটি YAML ফাইল তৈরি করুন, যেমন ci.yml, যা আপনার বিল্ড এবং টেস্ট পিপলাইনের জন্য কনফিগারেশন রাখবে।
name: Elixir 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 Elixir
      uses: erlef/setup-elixir@v1
      with:
        elixir-version: '1.13.0'
        otp-version: '24.0'
        mix-archives: "hex"
      
    - name: Install dependencies
      run: |
        mix local.hex --force
        mix deps.get
        mix deps.compile

    - name: Run tests
      run: mix test

    - name: Dialyzer
      run: mix dialyzer

    - name: Format check
      run: mix format --check-formatted

YAML ব্যাখ্যা:

  • name: পিপলাইনের নাম।
  • on: পিপলাইনটি কখন চলবে। এখানে push এবং pull_request ইভেন্টগুলির জন্য সেট করা হয়েছে, যা মূলত main ব্রাঞ্চে পরিবর্তন হলে চলবে।
  • jobs: এখানে build নামক একটি জব রয়েছে যা Ubuntu তে রান হবে এবং সেখান থেকে কোড চেকআউট, Elixir সেটআপ, ডিপেনডেন্সি ইনস্টলেশন, টেস্ট রান, ডায়ালাইজার রান এবং কোড ফরম্যাট চেক করা হবে।

GitHub Actions এর মাধ্যমে বিল্ড টেস্ট:

  • কোড চেকআউট হওয়ার পর, mix deps.get দিয়ে Elixir এর ডিপেনডেন্সি গুলি ইনস্টল করা হবে।
  • এরপর mix test রান করা হবে যাতে সমস্ত টেস্টগুলো স্বয়ংক্রিয়ভাবে চালানো যায়।
  • DialyzerFormatter চালিয়ে কোডের স্ট্যাটিক বিশ্লেষণ করা হবে।

2. Deploy Pipeline (Continuous Deployment)

Deploy Pipeline এমন একটি সিস্টেম যা আপনাকে কোডের পরিবর্তন স্বয়ংক্রিয়ভাবে আপনার সার্ভারে ডিপ্লয় করতে সাহায্য করে। Elixir প্রজেক্ট ডিপ্লয়ের জন্য সাধারণত Distillery বা Mix releases ব্যবহৃত হয়। এখানে GitHub Actions দিয়ে Deploy Pipeline তৈরি করা হবে যা কোড স্বয়ংক্রিয়ভাবে সার্ভারে ডিপ্লয় করবে।

Elixir Release (Deploy Pipeline):

  1. আপনার প্রোজেক্টে Mix Release তৈরি করতে হবে। এজন্য mix release কমান্ডটি ব্যবহার করা হয়।

GitHub Actions Deployment Example:

name: Elixir CI/CD Pipeline

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Set up Elixir
      uses: erlef/setup-elixir@v1
      with:
        elixir-version: '1.13.0'
        otp-version: '24.0'

    - name: Install dependencies
      run: |
        mix local.hex --force
        mix deps.get
        mix deps.compile

    - name: Run tests
      run: mix test

    - name: Build release
      run: mix release

  deploy:
    runs-on: ubuntu-latest
    needs: build

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Deploy to Server
      run: |
        scp _build/prod/rel/my_app/releases/0.1.0/my_app.tar.gz user@your_server:/path/to/deployment
        ssh user@your_server 'tar -xvzf /path/to/deployment/my_app.tar.gz -C /path/to/deployment'
        ssh user@your_server 'cd /path/to/deployment && ./bin/my_app start'

YAML ব্যাখ্যা:

  • প্রথম build জব টেস্ট, ডিপেনডেন্সি ইনস্টল, এবং Mix Release তৈরি করবে।
  • deploy জবটি scp এবং ssh ব্যবহার করে ডিপ্লয়মেন্টের জন্য কোড সার্ভারে পাঠাবে। এতে একটি .tar.gz আর্কাইভ তৈরি হয়ে সার্ভারে আপলোড হবে এবং তারপর এটি আনজিপ এবং রান করবে।

Deploy Pipeline Configuration:

  • Deploy to Server: কোড সিস্টেমে আপলোড করা হয়, এবং পরে Elixir release শুরু করার জন্য কমান্ড দেওয়া হয়।
  • Distillery বা Mix release ব্যবহার করে Elixir অ্যাপ্লিকেশন সার্ভারে রান করানো হয়। আপনার সার্ভারে Elixir এবং Erlang ইনস্টল থাকতে হবে।

3. Environment Variables for Deployment

এমনকি আপনি environment variables ব্যবহার করে API কীগুলি, ডাটাবেস ইউজারনেম বা পাসওয়ার্ড মত সিক্রেট ডেটা GitHub Secrets বা অন্যান্য CI/CD tools এর মাধ্যমে পাঠাতে পারেন। GitHub Actions এ সিক্রেট ভ্যালু ব্যবহারের জন্য:

  1. GitHub Secrets সেটআপ:
    • আপনার GitHub রিপোজিটরি > Settings > Secrets > New repository secret এ গিয়ে সিক্রেট তৈরি করুন।
  2. Environment Variables:

    - name: Deploy to Server
      run: |
        scp _build/prod/rel/my_app/releases/0.1.0/my_app.tar.gz ${{ secrets.SSH_USER }}@${{ secrets.SERVER_IP }}:/path/to/deployment

এখানে, SSH_USER এবং SERVER_IP এর মত সিক্রেট ভ্যালু GitHub Secrets থেকে নেওয়া হচ্ছে।

4. Monitoring and Rollback

CI/CD পিপলাইন সেটআপ করার পর, সিস্টেম মনিটরিং এবং rollback পদ্ধতির ব্যবস্থাও নিশ্চিত করতে হবে:

  • Monitoring: সিস্টেমের পারফরম্যান্স এবং ত্রুটির জন্য সিস্টেম মনিটরিং টুল (যেমন: Prometheus, Grafana) ব্যবহার করা যেতে পারে।
  • Rollback: যদি কোনো নতুন ডিপ্লয়মেন্টে সমস্যা হয়, তবে পূর্ববর্তী সংস্করণে ফিরে যাওয়ার ব্যবস্থা থাকতে হবে। এর জন্য versioned releases এবং rollback স্ক্রিপ্ট তৈরি করা যায়।

সারসংক্ষেপ

  • Build Pipeline: Elixir প্রজেক্টের জন্য GitHub Actions বা অন্য CI টুল ব্যবহার করে কোড বিল্ড, টেস্ট এবং release তৈরি করা যায়।
  • Deploy Pipeline: Elixir অ্যাপ্লিকেশন সার্ভারে ডিপ্লয় করতে Distillery বা Mix release ব্যবহার করে SSH এবং SCP এর মাধ্যমে কোড ডিপ্লয় করা যায়।
  • CI/CD Tools: GitHub Actions, GitLab CI/CD, CircleCI, এবং Jenkins ব্যবহার করে সহজে Build এবং Deploy Pipeline তৈরি করা সম্ভব।
Content added By
Promotion

Are you sure to start over?

Loading...