paint-brush
GitHub এবং AWS EC2 ব্যবহার করে কিভাবে একটি CI/CD পাইপলাইন তৈরি করবেনদ্বারা@wesleybaxterhuber
1,357 পড়া
1,357 পড়া

GitHub এবং AWS EC2 ব্যবহার করে কিভাবে একটি CI/CD পাইপলাইন তৈরি করবেন

দ্বারা Wes Huber6m2024/04/30
Read on Terminal Reader

অতিদীর্ঘ; পড়তে

এই কৌশলটি মূলত আপনার EC2 সার্ভারকে আপনার Github সংগ্রহস্থলে পুশ করা পরিবর্তনগুলির প্রতিক্রিয়া জানাতে সক্ষম করে।
featured image - GitHub এবং AWS EC2 ব্যবহার করে কিভাবে একটি CI/CD পাইপলাইন তৈরি করবেন
Wes Huber HackerNoon profile picture

আরে সবাই, আজ আমি একটি Amazon EC2 সার্ভারে NodeJS/Express ব্যবহার করে একটি দ্রুত REST API স্থাপন করার জন্য আমার প্রিয় উপায়গুলির একটিতে একটি টিউটোরিয়াল করতে চাই৷ এই কৌশলটি মূলত আপনার EC2 সার্ভারকে আপনার GitHub সংগ্রহস্থলে পুশ করা পরিবর্তনগুলির প্রতিক্রিয়া জানাতে সক্ষম করে।

প্রথম জিনিস প্রথম, "হ্যালো ওয়ার্ল্ড"

একটি NodeJS/Express অ্যাপ লাইভ করার জন্য আপনার মেশিনে একটি নতুন ডিরেক্টরি তৈরি করুন। আমি আমার rekognition কল করছি


একটি টার্মিনাল খুলুন, এবং একটি package.json npm init -y শুরু করতে এই কমান্ডটি চালান


express.js npm i express ইনস্টল করুন


ডিফল্ট রুটে 'হ্যালো ওয়ার্ল্ড' সহ একটি মৌলিক এক্সপ্রেস সার্ভার তৈরি করুন

 const express = require('express'); const app = express(); const port = 3000; app.get('/', (req, res) => { res.send('Hello World!'); }); app.listen(port, () => { console.log(`Example app listening at http://localhost:${port}`); });

আপনি 'হ্যালো ওয়ার্ল্ড' দেখছেন তা নিশ্চিত করতে পরীক্ষা করুন! http://localhost:3000/


ভাল কাজ, এক ধাপ সম্পূর্ণ! 💪

এর পরে, আসুন আমাদের কোডকে GitHub-এ পুশ করি

আপনার ডিরেক্টরিতে একটি গিট রেপো শুরু করুন এবং আপনার প্রথম প্রতিশ্রুতি তৈরি করুন -

 git init git add . git commit -m "First commit"


আপনার GitHub অ্যাকাউন্টে একটি দূরবর্তী সংগ্রহস্থল তৈরি করুন

মূল হিসাবে নতুন রেপো যোগ করুন, এবং আপনার শাখা ধাক্কা.

 git remote add origin <REMOTE_REPOSITORY_URL> git push -u origin master


<REMOTE_REPOSITORY_URL> রিমোট রেপোর লিঙ্ক দিয়ে প্রতিস্থাপন করুন যা আপনি এইমাত্র তৈরি করেছেন।


'প্রধান' এর পরিবর্তে ডিফল্ট শাখা হিসাবে 'মাস্টার' ব্যবহার করতে আপনার সংগ্রহস্থলের সেটিংস পরিবর্তন করতে হতে পারে।

আপনি এটি করার পরে আপনি 'প্রধান' শাখা মুছে ফেলতে পারেন।


ধাপ 2: সম্পূর্ণ! আমরা গ্যাস দিয়ে রান্না করছি ⛽️

আসুন ক্লাউডে যাই — Ec2 সার্ভার সেটআপ করুন

আপনার EC2 ইন্সট্যান্স চালু করার ধাপগুলি এখানে রয়েছে:



  • EC2 ড্যাশবোর্ডে নেভিগেট করুন এবং একটি নতুন উদাহরণ চালু করুন।

  • একটি উপযুক্ত AMI (Amazon Machine Image) নির্বাচন করুন; আমি Amazon Linux 2 ব্যবহার করছি।


  • একটি উদাহরণের ধরন নির্বাচন করুন (যেমন, t2.micro যদি আপনি বিনামূল্যে স্তরের অধীনে থাকেন)।


  • দৃষ্টান্ত বিবরণ কনফিগার করুন, সঞ্চয়স্থান যোগ করুন, এবং প্রয়োজনীয় হিসাবে ট্যাগ যোগ করুন।


  • আপনার প্রয়োজনীয় পোর্টগুলিতে অন্তর্মুখী ট্র্যাফিকের অনুমতি দেওয়ার জন্য একটি নিরাপত্তা গোষ্ঠী কনফিগার করুন (অন্তত SSH এবং আপনার অ্যাপ্লিকেশনের পোর্টের জন্য TCP পোর্ট 22 এবং তারপরে ওয়েব ট্র্যাফিকের জন্য 3000)।


  • পর্যালোচনা করুন এবং উদাহরণ চালু করুন; নিশ্চিত করুন যে আপনি SSH অ্যাক্সেসের জন্য ব্যবহৃত কী জোড়া সংরক্ষণ করেছেন।


এখন, একটি টার্মিনালে SSH এর মাধ্যমে আপনার সার্ভারে লগ ইন করার পরীক্ষা করা যাক:

ssh ec2-user@<YOUR_SERVER_IP> -i <YOUR_PRIVATE_KEY>.pem


আপনি আপনার EC2 উদাহরণের জন্য সংজ্ঞায়িত মান দিয়ে সেখানে ভেরিয়েবলগুলি প্রতিস্থাপন করুন।

আপনি যদি এটি দেখতে পান যে আপনি আপনার সার্ভারের সাথে সংযুক্ত হয়েছেন, অভিনন্দন! 👏

আমরা এখনও শেষ করিনি যদিও — আমরা শুধু শুরু করছি 😏

আমাদের সার্ভারে NodeJS ইনস্টল করা যাক:
sudo yum install -y nodejs


npm এর মাধ্যমে আমাদের সার্ভারে বিশ্বব্যাপী pm2 ইনস্টল করুন

sudo npm i -g pm2


সার্ভারে গিট ইনস্টল করুন এবং আপনার শংসাপত্রগুলি কনফিগার করুন:

sudo yum install git -y

 git config --global user.name "Your Name" git config --global user.email "[email protected]"


ঠিক আছে, এখন আমরা একটি var/www/ ফোল্ডার তৈরি করতে যাচ্ছি যদি এটি ইতিমধ্যে বিদ্যমান না থাকে:

sudo mkdir -p /var/www


তারপর আমাদের ec2-ব্যবহারকারীর মালিকানা যোগ করুন:

sudo chown -R ec2-user:ec2-user /var/www


আপনার সার্ভারের রুট থেকে ডিরেক্টরিতে নেভিগেট করুন — /home ফোল্ডার লোকেদের নয় 👌 cd ~/var/www


এখন, এখান থেকে, আমরা আমাদের গিট রিপোজিটরি ক্লোন করব: git clone https://github.com/USERNAME/REPO_NAME.git YOUR_PROJECT_DIRECTORY

আপনার নিজস্ব মান দিয়ে [USERNAME] [REPO_NAME] এবং [YOUR_PROJECT_DIRECTORY] প্রতিস্থাপন করুন।


এরপরে, আমরা ডিরেক্টরিটিকে আমাদের সংগ্রহস্থলে পরিবর্তন করি, তাই cd YOUR_PROJECT_DIRECTORY আমাদের pm2 সেটআপের জন্য ecosystem.config.js ফাইল তৈরি করতে পারে:

nano ecosystem.config.js


এটি এই মত দেখায়:

 module.exports = { apps : [{ name: "my-app", // A name for your application script: "app.js", // The script file to launch the app instances: "max", // This can be set to the number of CPU cores to use, or "max" to use all available autorestart: true, // Automatically restart app if it crashes watch: false, // Enable/disable watching file changes for automatic restart max_memory_restart: '1G', // Optional: Restart app if it reaches a memory limit env: { NODE_ENV: "development", }, env_production: { NODE_ENV: "production", } }] };

শীতল মটরশুটি, ঠিক আছে — একবার এটি তৈরি এবং সংরক্ষিত হয়ে গেলে, আসুন pm2 দিয়ে অ্যাপটি শুরু করি:

pm2 start ecosystem.config.js


এখন, আমরা পরীক্ষা করতে পারি যে আমাদের একটি 'হ্যালো ওয়ার্ল্ড!' পোর্ট 3000 এ আমাদের সার্ভার থেকে:

সার্ভার রিস্টার্টে pm2 স্বয়ংক্রিয়ভাবে শুরু করতে, চলুন চালাই:

 pm2 save pm2 startup

আপনার সার্ভার চলছে কিনা তা পরীক্ষা করতে, আপনি pm2 status করতে পারেন; আপনি এখানে pm2 এ ডক্স পড়তে পারেন


আপনি যদি এটি এতদূর করে থাকেন তবে আপনি একজন সুপারস্টার ⭐️

GitHub অ্যাকশনের সাথে ইন্টিগ্রেশন

এটি আমাদের প্রক্রিয়ার শেষ ধাপ। যে কোনো সময় আমাদের মাস্টার ব্রাঞ্চে পরিবর্তন করা হলে আমাদের সার্ভার আপডেট করার জন্য আমরা Github অ্যাকশনের জন্য একটি .yml ফাইল তৈরি করতে যাচ্ছি

আপনার সংগ্রহস্থলে, 'ক্রিয়া' ট্যাবে যান এবং একটি নতুন কাস্টম ওয়ার্কফ্লো তৈরি করুন। আমি আমার nodejs.yml কল করছি


রেপো আপডেট এবং pm2 পুনরায় চালু করার জন্য এখানে .yml ফাইল রয়েছে:

 name: Node.js CI/CD on Amazon Linux on: push: branches: [ master ] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Install dependencies run: npm install - name: Deploy to AWS EC2 uses: appleboy/scp-action@master with: host: ${{ secrets.REMOTE_HOST }} username: ${{ secrets.REMOTE_USER }} key: ${{ secrets.SSH_PRIVATE_KEY }} source: "./" # This now correctly points to the current directory target: "/var/www/your_project_directory" - name: Restart PM2 application uses: appleboy/ssh-action@master with: host: ${{ secrets.REMOTE_HOST }} username: ${{ secrets.REMOTE_USER }} key: ${{ secrets.SSH_PRIVATE_KEY }} script: | cd /var/www/your_project_directory pm2 reload all # This command restarts your application

'your_project_directory' আপডেট করতে ভুলবেন না


অবশেষে, আপনাকে এই পরিবেশের গোপনীয়তাগুলি যোগ করতে হবে। REMOTE_HOST এটি আপনার সার্ভারের IP ঠিকানা; REMOTE_USER এটি Amazon Linux 2 AMI-এর জন্য ec2-user , এবং তারপর SSH_PRIVATE_KEY হিসাবে আপনার .pem ফাইলের বিষয়বস্তু পেস্ট করুন


আপনি সংগ্রহস্থল সেটিংসে এই সব করতে পারেন:

এটাই! আমাদের কাজ শেষ হয়ে গেছে 😁


আপনি 'হ্যালো ওয়ার্ল্ড' বার্তাটি পরিবর্তন করে এবং সেই পরিবর্তনটি আপনার মাস্টার শাখায় ঠেলে দিয়ে এই সমস্ত পরীক্ষা করতে পারেন; তারপরে আপনাকে http://your.ip.address:3000 এ আপডেটটি দেখতে হবে


এটি সেট আপ করা কিছুটা প্রক্রিয়া, কিন্তু আপনি যখন বিকাশ করছেন, তখন আপনার REST API সার্ভারে স্বয়ংক্রিয়ভাবে পরিবর্তনগুলি স্থাপন করার জন্য একটি সহজ CI/CD পাইপলাইন থাকা সত্যিই চমৎকার। এইভাবে, আপনি দ্রুত পরিবর্তনগুলি লাইভ স্থাপন করতে পারেন এবং আপনার ওয়েব/মোবাইল অ্যাপ্লিকেশনের সামনের প্রান্তে দেখতে পারেন৷


মন্তব্যে এটি দরকারী ছিল কিনা তা আমাকে জানান, এবং পড়ার জন্য ধন্যবাদ!!


শান্তি শেষ,

— ওয়েস