ফ্রিল্যান্সিংয়ে সফল হতে গেলে শুধু ভালো কোড লিখলেই হয় না, ক্লায়েন্টের প্রজেক্ট সময়মতো ডেলিভারি দেওয়া এবং মান বজায় রাখা সবচেয়ে গুরুত্বপূর্ণ। বাংলাদেশের ফ্রিল্যান্সাররা সাধারণত আপওয়ার্ক, ফাইভার, লিংকডইন বা ফেসবুক গ্রুপের মাধ্যমে ক্লায়েন্ট পেয়ে থাকেন। কিন্তু ক্লায়েন্টের প্রজেক্ট হাতে নেওয়ার পর বারবার একই কাজ করতে হয়—কোড লিখে কমিট করা, টেস্ট চালানো, সার্ভারে ডেপ্লয় করা। এই পুনরাবৃত্তিমূলক কাজগুলোতে অনেক সময় নষ্ট হয়, যা আপনার আয়ের ওপর প্রভাব ফেলে।
এই সমস্যার সমাধান হলো GitHub Actions। এটি একটি সিআই/সিডি (Continuous Integration/Continuous Deployment) টুল, যা আপনার কোড রিপোজিটরিতে ঘটে যাওয়া ইভেন্টের (যেমন পুশ, পুল রিকোয়েস্ট) ভিত্তিতে স্বয়ংক্রিয়ভাবে কাজ সম্পাদন করতে পারে। অর্থাৎ, আপনি যখন GitHub-এ কোড পুশ করবেন, তখনই আপনার টেস্ট চালিয়ে, প্রোডাকশন সার্ভারে ডেপ্লয় করে দেবে—আপনার কোনো হস্তক্ষেপ ছাড়াই।
এই আর্টিকেলে আমি দেখাবো কীভাবে বাংলাদেশি ফ্রিল্যান্সাররা GitHub Actions for freelancers in Bangladesh ব্যবহার করে তাদের ওয়ার্কফ্লো অটোমেট করতে পারে। আমরা ধাপে ধাপে শিখবো—সহজ সেটআপ থেকে শুরু করে রিয়েল-ওয়ার্ল্ড উদাহরণ, যেমন নেটলিফাই বা ভিপিএস-এ ডেপ্লয়মেন্ট, অটোমেটিক টেস্টিং, এবং কোড কোয়ালিটি চেক। শেষে থাকছে কিছু FAQ যা আপনাকে সাধারণ সমস্যা এড়াতে সাহায্য করবে।
GitHub Actions কী এবং কেন ফ্রিল্যান্সারদের জন্য গুরুত্বপূর্ণ?
GitHub Actions হলো GitHub-এর বিল্ট-ইন ফিচার, যা আপনাকে আপনার রিপোজিটরির ভেতরেই ওয়ার্কফ্লো তৈরি করতে দেয়। একটি ওয়ার্কফ্লো হলো একটি অটোমেটেড প্রসেস, যা আপনি YAML ফাইলে সংজ্ঞায়িত করেন। এই ফাইলটি আপনার রিপোজিটরির .github/workflows ফোল্ডারে রাখতে হয়।
বাংলাদেশের ফ্রিল্যান্সারদের জন্য এর সুবিধা অনেক। ধরুন, আপনি একটি ই-কমার্স ওয়েবসাইট বানাচ্ছেন একজন ক্লায়েন্টের জন্য। ক্লায়েন্ট প্রতিদিনই নতুন ফিচার চান, আর আপনি প্রতিবার হাতে করে কোড ডেপ্লয় করেন। এতে সময় লাগে, আর ভুল হওয়ার সম্ভাবনাও থাকে। GitHub Actions ব্যবহার করলে আপনি যখনই কোড পুশ করবেন, তখনই স্বয়ংক্রিয়ভাবে টেস্ট চালিয়ে, প্রোডাকশনে ডেপ্লয় করে দেবে। এতে আপনার সময় বাঁচে, এবং ক্লায়েন্টের আস্থাও বাড়ে।
প্রথম ধাপ: GitHub Actions এর বেসিক ধারণা
GitHub Actions-এ তিনটি প্রধান উপাদান আছে:
- ওয়ার্কফ্লো (Workflow): একটি অটোমেটেড প্রসেস, যা এক বা একাধিক জব (job) নিয়ে গঠিত। ওয়ার্কফ্লো সাধারণত একটি ইভেন্ট (যেমন push, pull_request) দ্বারা ট্রিগার হয়।
- জব (Job): একটি ওয়ার্কফ্লোর ভেতরের একটি ধাপ, যা একটি নির্দিষ্ট রানার (runner)-এ চলে। একটি ওয়ার্কফ্লোতে একাধিক জব থাকতে পারে, এবং সেগুলো সমান্তরালে বা সিকোয়েন্সে চালানো যায়।
- স্টেপ (Step): একটি জবের ভেতরের একটি নির্দিষ্ট কাজ, যেমন কোড চেকআউট করা, ডিপেন্ডেন্সি ইনস্টল করা, টেস্ট চালানো ইত্যাদি।
এছাড়া, আপনাকে রানার সম্পর্কে জানতে হবে। রানার হলো সেই সার্ভার যেখানে আপনার ওয়ার্কফ্লো চলে। GitHub-এর হোস্টেড রানার আছে (উবুন্টু, উইন্ডোজ, ম্যাকওএস), অথবা আপনি নিজের সার্ভারকে রানার হিসেবে ব্যবহার করতে পারেন (সেলফ-হোস্টেড রানার)। বাংলাদেশে ইন্টারনেট স্পিড এবং লেটেন্সির কারণে অনেক সময় হোস্টেড রানার ধীর মনে হতে পারে, কিন্তু সাধারণ কাজের জন্য এটি যথেষ্ট।
প্রথম ওয়ার্কফ্লো তৈরি করা
আসুন একটি সাধারণ ওয়ার্কফ্লো তৈরি করি যা প্রতিটি পুশে একটি মেসেজ প্রিন্ট করবে। প্রথমে আপনার রিপোজিটরিতে .github/workflows ফোল্ডার তৈরি করুন। তারপর একটি ফাইল তৈরি করুন যার নাম learn.yml। ফাইলটিতে নিচের কোড লিখুন:
name: Learning GitHub Actions
on: [push]
jobs:
hello-world:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Print message
run: echo 'Hello from Bangladesh!'
এখানে, on: [push] মানে হলো যখনই কোড পুশ করা হবে, তখনই ওয়ার্কফ্লোটি চালু হবে। jobs এর ভেতরে আমরা একটি জব ডিফাইন করেছি যার নাম hello-world। এটি ubuntu-latest রানারে চলে। প্রথম স্টেপে আমরা কোড চেকআউট করছি (যদিও এখানে প্রয়োজন নেই, তবে অভ্যাসের জন্য ভালো), আর দ্বিতীয় স্টেপে একটি মেসেজ প্রিন্ট করছি।
এই ফাইলটি পুশ করার পর GitHub Actions ট্যাবে গিয়ে দেখবেন একটি ওয়ার্কফ্লো রান হচ্ছে। সবুজ টিক চিহ্ন দেখালেই বুঝবেন সফলভাবে কাজ করেছে।
দ্বিতীয় ধাপ: প্রজেক্টে GitHub Actions যোগ করা
এবার আমরা একটি বাস্তব প্রজেক্টে GitHub Actions ব্যবহার করবো। ধরুন, আপনার একটি Node.js প্রজেক্ট আছে যেখানে Express দিয়ে API বানানো হয়েছে। আপনি চান প্রতিটি পুশে টেস্ট চালু হোক এবং কোড কোয়ালিটি চেক হোক।
টেস্ট অটোমেশন
প্রথমে আপনার প্রজেক্টে একটি টেস্ট স্ক্রিপ্ট আছে কিনা নিশ্চিত করুন। package.json ফাইলে test স্ক্রিপ্ট থাকতে হবে। যেমন:
{
'name': 'my-api',
'scripts': {
'test': 'jest'
},
'devDependencies': {
'jest': '^29.0.0'
}
}
এবার .github/workflows/test.yml ফাইল তৈরি করুন:
name: Run Tests
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Install dependencies
run: npm install
- name: Run tests
run: npm test
এই ওয়ার্কফ্লোটি main ব্রাঞ্চে পুশ বা পুল রিকোয়েস্ট হলে ট্রিগার হবে। এটি Node.js 18 সেটআপ করবে, ডিপেন্ডেন্সি ইনস্টল করবে, তারপর টেস্ট চালাবে। আপনি যদি চান, npm run lint দিয়ে লিন্টিংও যোগ করতে পারেন।
বাংলাদেশের ফ্রিল্যান্সারদের জন্য এই অটোমেশন খুবই উপকারী, কারণ ক্লায়েন্টের কাছে ডেলিভারির আগে আপনি নিশ্চিন্ত থাকতে পারেন যে সব টেস্ট পাস করছে।
তৃতীয় ধাপ: অটোমেটিক ডেপ্লয়মেন্ট
টেস্টিংয়ের পরের ধাপ হলো ডেপ্লয়মেন্ট। GitHub Actions দিয়ে আপনি আপনার ওয়েবসাইট বা অ্যাপ স্বয়ংক্রিয়ভাবে ডেপ্লয় করতে পারেন। বাংলাদেশে ফ্রিল্যান্সাররা সাধারণত নেটলিফি, ভার্সেল, বা নিজের ভিপিএস-এ ডেপ্লয় করে থাকেন। এখানে দুটি জনপ্রিয় পদ্ধতি দেখাবো।
নেটলিফিতে ডেপ্লয়
নেটলিফি স্ট্যাটিক সাইটের জন্য খুবই জনপ্রিয়। ধরুন, আপনার একটি Gatsby বা Next.js সাইট আছে। আপনি চান প্রতিটি পুশে সাইটটি অটো-ডেপ্লয় হোক। নেটলিফিতে ডেপ্লয় করতে হলে প্রথমে নেটলিফি CLI ইনস্টল করুন এবং একটি অথ টোকেন নিন। তারপর .github/workflows/deploy.yml ফাইল তৈরি করুন:
name: Deploy to Netlify
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Install dependencies
run: npm install
- name: Build project
run: npm run build
- name: Deploy to Netlify
uses: nwtgck/actions-netlify@v2
with:
publish-dir: './public'
production-branch: 'main'
github-token: ${{ secrets.GITHUB_TOKEN }}
deploy-message: 'Deploy from GitHub Actions'
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
এখানে আমরা nwtgck/actions-netlify অ্যাকশন ব্যবহার করেছি। NETLIFY_AUTH_TOKEN এবং NETLIFY_SITE_ID সিক্রেট হিসেবে GitHub রিপোজিটরির Settings > Secrets and variables > Actions-এ যোগ করতে হবে।
ভিপিএস-এ ডেপ্লয় (SSH)
অনেক বাংলাদেশি ফ্রিল্যান্সার ক্লায়েন্টদের ভিপিএস (যেমন DigitalOcean, Linode) ব্যবহার করে থাকেন। সেক্ষেত্রে আপনি SSH দিয়ে ডেপ্লয় করতে পারেন। প্রথমে আপনার সার্ভারে SSH কী সেটআপ করুন এবং প্রাইভেট কী GitHub সিক্রেটে রাখুন। তারপর ওয়ার্কফ্লো:
name: Deploy to VPS
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Install dependencies
run: npm install
- name: Build project
run: npm run build
- name: Deploy via SSH
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.SERVER_IP }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd /var/www/myapp
git pull origin main
npm install --production
pm2 restart myapp
এখানে appleboy/ssh-action ব্যবহার করে আমরা সার্ভারে SSH দিয়ে কানেক্ট করছি এবং নির্দিষ্ট স্ক্রিপ্ট চালাচ্ছি। এটি খুবই শক্তিশালী, কারণ আপনি যেকোনো কমান্ড চালাতে পারেন।
চতুর্থ ধাপ: কোড কোয়ালিটি এবং সিকিউরিটি চেক
ফ্রিল্যান্সার হিসেবে আপনার কোডের মান এবং সিকিউরিটি নিয়ে সচেতন থাকা জরুরি। GitHub Actions দিয়ে আপনি অটোমেটিক কোড লিন্টিং, ফরম্যাটিং চেক, এবং সিকিউরিটি স্ক্যান করতে পারেন।
ESLint ও Prettier
JavaScript/TypeScript প্রজেক্টে সাধারণত ESLint এবং Prettier ব্যবহার করা হয়। আপনি চাইলে প্রতিটি পুল রিকোয়েস্টে এগুলো চালাতে পারেন। একটি ওয়ার্কফ্লো উদাহরণ:
name: Lint Check
on:
pull_request:
branches: [ main ]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Install dependencies
run: npm install
- name: Run ESLint
run: npx eslint . --ext .js,.jsx,.ts,.tsx
- name: Check formatting
run: npx prettier --check .
এতে করে ক্লায়েন্টের কাছে যাওয়ার আগেই কোডের মান নিশ্চিত হয়।
সিকিউরিটি স্ক্যান
আপনার ডিপেন্ডেন্সিতে কোনো পরিচিত দুর্বলতা আছে কিনা তা জানতে npm audit বা GitHub-এর বিল্ট-ইন Dependabot ব্যবহার করতে পারেন। GitHub Actions-এ একটি স্টেপ যোগ করা যায়:
- name: Run npm audit
run: npm audit --audit-level=high
এটি উচ্চ-ঝুঁকির দুর্বলতা থাকলে বিল্ড ব্যর্থ করবে, যা আপনাকে সময়মতো ঠিক করতে সাহায্য করবে।
পঞ্চম ধাপ: টাইম-সেভিং টিপস এবং বেস্ট প্র্যাকটিস
এখন পর্যন্ত আমরা মৌলিক ধারণা পেয়েছি। এবার কিছু টিপস যা বাংলাদেশি ফ্রিল্যান্সারদের জন্য বিশেষভাবে কার্যকর।
ক্যাশিং ব্যবহার করুন
প্রতিবার ওয়ার্কফ্লো চালানোর সময় ডিপেন্ডেন্সি ইনস্টল করতে সময় লাগে। আপনি ক্যাশ ব্যবহার করে এই সময় অনেকটা কমাতে পারেন। actions/cache অ্যাকশন ব্যবহার করুন:
- name: Cache node_modules
uses: actions/cache@v3
with:
path: node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
এটি ইন্টারনেট স্পিড কম থাকা সত্ত্বেও দ্রুত কাজ করতে সাহায্য করবে।
সিক্রেট ম্যানেজমেন্ট
কখনোই সিক্রেট (যেমন API কী, পাসওয়ার্ড) সরাসরি ওয়ার্কফ্লো ফাইলে লিখবেন না। GitHub-এর সিক্রেট ফিচার ব্যবহার করুন। Settings > Secrets and variables > Actions-এ গিয়ে সিক্রেট যোগ করুন। তারপর ${{ secrets.MY_SECRET }} দিয়ে ব্যবহার করুন।
ম্যাট্রিক্স বিল্ড
আপনি যদি একাধিক Node.js ভার্সনে টেস্ট করতে চান, তাহলে ম্যাট্রিক্স ব্যবহার করতে পারেন। উদাহরণ:
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [16, 18, 20]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- run: npm install
- run: npm test
এতে একাধিক ভার্সনে টেস্ট হয়ে যাবে, যা ক্লায়েন্টের বিভিন্ন এনভায়রনমেন্টে কাজ করবে নিশ্চিত করে।
বাস্তব জীবনের উদাহরণ: একটি ফ্রিল্যান্স প্রজেক্টে GitHub Actions
ধরুন, ঢাকার একটি ফ্রিল্যান্সার সুমন একটি রেস্টুরেন্টের ওয়েবসাইট বানাচ্ছেন। সাইটটিতে মেনু, বুকিং ফর্ম, এবং অ্যাডমিন প্যানেল আছে। সুমন GitHub-এ কোড রাখেন এবং Netlify-তে ডেপ্লয় করেন। আগে তাকে প্রতিবার ম্যানুয়ালি ডেপ্লয় করতে হতো, যা সময়সাপেক্ষ ছিল।
এখন সে একটি GitHub Actions ওয়ার্কফ্লো সেটআপ করেছে যা প্রতিটি পুশে:
- টেস্ট চালায় (Jest দিয়ে)।
- ESLint দিয়ে কোড কোয়ালিটি চেক করে।
- বিল্ড করে।
- Netlify-তে ডেপ্লয় করে।
ফলস্বরূপ, সুমন যখনই কোড পুশ করেন, ক্লায়েন্ট সাথে সাথে লাইভ সাইটে পরিবর্তন দেখতে পারেন। ক্লায়েন্ট খুবই খুশি, এবং সুমন আরও প্রজেক্ট নিতে পারেন কারণ তার সময় বাঁচে।
FAQ: সাধারণ প্রশ্নোত্তর
GitHub Actions কি ফ্রি?
হ্যাঁ, GitHub Actions-এর ফ্রি টিয়ার আছে। পাবলিক রিপোজিটরির জন্য এটি সম্পূর্ণ ফ্রি। প্রাইভেট রিপোজিটরির জন্য প্রতি মাসে নির্দিষ্ট পরিমাণ বিল্ড মিনিট ফ্রি থাকে (যেমন 2000 মিনিট)। বাংলাদেশি ফ্রিল্যান্সারদের জন্য সাধারণত এই ফ্রি কোটা যথেষ্ট।
আমার ক্লায়েন্টের কোড GitHub-এ না থাকলে কি GitHub Actions ব্যবহার করতে পারবো?
GitHub Actions ব্যবহার করতে হলে কোড অবশ্যই GitHub রিপোজিটরিতে থাকতে হবে। আপনি চাইলে ক্লায়েন্টকে বোঝাতে পারেন যে GitHub ব্যবহার করলে ডেপ্লয়মেন্ট অটোমেটিক হবে এবং ভুল কমবে। অনেক ক্লায়েন্ট এতে রাজি হন।
GitHub Actions শিখতে কত সময় লাগে?
বেসিক শিখতে ১-২ দিন লাগতে পারে, তবে আয়ত্ত করতে ১-২ সপ্তাহ লাগতে পারে। আমাদের কোর্সগুলো দেখতে পারেন, সেখানে DevOps-এর উপর কোর্স আছে।
সেলফ-হোস্টেড রানার ব্যবহার করা কি ভালো?
বাংলাদেশে ইন্টারনেট স্পিড এবং লেটেন্সির কারণে হোস্টেড রানার কখনো কখনো ধীর মনে হতে পারে, কিন্তু সাধারণ কাজের জন্য এটি ঠিক আছে। সেলফ-হোস্টেড রানার ব্যবহার করলে আপনি নিজের সার্ভারের রিসোর্স ব্যবহার করতে পারবেন, কিন্তু সেটআপ ও মেইনটেনেন্সের ঝামেলা আছে।
GitHub Actions কি শুধু ওয়েব ডেভেলপমেন্টের জন্য?
না, এটি যেকোনো সফটওয়্যার প্রজেক্টের জন্য ব্যবহার করা যায়। মোবাইল অ্যাপ, ডেস্কটপ অ্যাপ, ডেটা সায়েন্স—সব ক্ষেত্রেই ব্যবহার করা যায়। তবে ওয়েব ডেভেলপমেন্টে এর ব্যবহার সবচেয়ে বেশি।
উপসংহার
GitHub Actions আপনার ফ্রিল্যান্সিং ক্যারিয়ারে একটি গেম-চেঞ্জার হতে পারে। এটি শুধু সময় বাঁচায় না, আপনার প্রোফেশনাল ইমেজও উন্নত করে। ক্লায়েন্টদের কাছে আপনি আরও নির্ভরযোগ্য মনে হবেন, কারণ আপনার কোড সবসময় টেস্টেড এবং ডেপ্লয়েড।
আজই আপনার একটি প্রজেক্টে GitHub Actions যোগ করে দেখুন। প্রথমে ছোট করে শুরু করুন—শুধু টেস্ট চালান। তারপর ধীরে ধীরে ডেপ্লয়মেন্ট এবং কোড কোয়ালিটি চেক যোগ করুন। প্রয়োজনে আমাদের ব্লগ এর অন্যান্য আর্টিকেল পড়ুন, অথবা কমিউনিটি তে জিজ্ঞেস করুন। আর হ্যাঁ, আমাদের প্রাইসিং পেজে দেখতে পারেন সাশ্রয়ী মূল্যে কী কী সুবিধা পাবেন।
আজই শুরু করুন, এবং আপনার ফ্রিল্যান্সিং ওয়ার্কফ্লোকে আরও স্মার্ট করুন। শুভকামনা!


