Streamlining WordPress Development with GitHub CI/CD: A Beginner's Guide

কেন গিটহাব সিআই/সিডি গুরুত্বপূর্ণ?

যেকোনো কোডিং প্রোজেক্টের মতই ওয়ার্ডপ্রেস প্রোজেক্ট ডেভেলপমেন্ট এবং মেইন্টেনেন্সের ক্ষেত্রেও গিটহাবের সিআই (কন্টিনিউয়াস ইন্টিগ্রেশান)/ এবং সিডি (কন্টিনিউয়াস ডেভেলপমেন্ট) ব্যবহার করার নানাবিধ সুবিধা আছে।

গিটহাব বা অন্য যেকোনো ভার্শন কন্ট্রোল সিস্টেম ব্যবহার করার ফলে একদিকে যেমন একাধিক ডেভেলপার একসাথে কাজ করলে কাজগুলো একীভূত করার খুব সহজ পদ্ধতি তৈরী হয়, অন্যদিকে কোন সমস্যা হলে খুব সহজেই পূর্বের স্টেবল কোডে ব্যাক করা যায়। এছাড়া বড় প্রোজেক্টে এটা বাধ্যতামূলক।

ভার্শন কন্ট্রোল ব্যবহার করলেই যে সিআই/সিডি ব্যবহার করতে হবে, তা একদমই না। কিন্তু এটা ব্যবহার না করার খুব বেশি কারণ অন্তত আমি দেখি না। গিটের একটা ব্রাঞ্চে যদি সবসময় লেটেস্ট স্টেবল ভার্শন থাকে, তাহলে স্বয়ংক্রিয়ভাবে কোড সার্ভারে আপডেট করে ফেললে বারংবার কোড আপলোড করার ঝামেলা পোহাতে হয় না। তাছাড়া এ পদ্ধতিতে সব ডেভেলপারকে সার্ভারের সরাসরি এক্সেসও দিতে হবে না।

এছাড়া আর অন্যান্য সুবিধা আছে এই পদ্ধতি ব্যবহার করার।

অন্য কেও ব্যবহার করল কী করল না তাতে অবশ্য আমার কোন সমস্যা বা সুবিধা নেই। আমি নিজের সুবিধার্থেই ধাপগুলো লিখে রাখছি।

কীভাবে গিটহাব সিআই/সিডি ব্যবহার করব?
এটা সেটআপ করার একাধিকরকম পদ্ধতি আছে। আমি দুটো নিয়ে আলোচনা করব।

১। এসএসএইচ
২। এফটিপি/এসএফটিপি

তবে যেই পদ্ধতিই অনুসরণ করেন, হোস্টিংভেদে ধাপগুলো ভিন্ন হবে।

এখনকার বেশিরভাগ ম্যানেজড ওয়ার্ডপ্রেস হোস্টিং প্রথমেই একটা ইন্সটলেশন বানিয়ে দেয়। সেটার ওপর কাজ করতে হয়। অথবা ক্লায়েন্টের এক্সিস্টিং সাইট হলেও একি ধাপগুলো ফলো করতে হবে। তাই আমি এসএসএইচ পদ্ধতিতে এই ধাপগুলোই আলোচনা করব। আর যদি কেও লোকালে থাকা সাইট এসএসএইচ পদ্ধতিতে সার্ভারে নিতে চান গিটের মাধ্যমে, তাহলে ধাপগুলো একটু ভিন্ন হবে, তবে সম্পূর্ণ আলাদা না। সেটা কমেন্টে বলে দিব।

তবে এফটিপি পদ্ধতি ব্যবহার করলে তেমন কোন পার্থক্য নেই।

এই দুটির মধ্যে কোন পদ্ধতি ব্যবহার করবেন?

এটা নিয়ে অনেক আর্গুমেন্ট করা সম্ভব। তবে এসএসএইচ পদ্ধতি অবশ্যই দ্রুতগতির এবং বেশি নির্ভরযোগ্য। এবং সার্ভারের রিসোর্স কম ব্যবহার করে। তাই আমি সবসময় এসএসএইচ পদ্ধতিই ব্যবহার করার চেষ্টা করি এবং সবাইকে রেকমেন্ডও করি। (একি সাইট এফটিপি মেথডে পার পুশ ২ মিনিট থেকে এসএসএইচ পদ্ধতিতে পার পুশ ৮-৯ সেকেন্ডে নেমে এসেছে, যা আমার বাস্তব রিয়াল ক্লায়েন্ট প্রোজেক্ট অভিজ্ঞতা।)

১ম পদ্ধতিঃ এসএসএইচ

সর্বপ্রথমেই লাগবে সার্ভারে ssh এক্সেস নেওয়া। এই অংশের ধাপগুলো হোস্টিং এর ওপর নির্ভর করবে। তাই এখানে বিস্তারিত লিখলাম না। গুগলে “How to connect to HOSTINGNAME via ssh” লিখে সার্চ দিলে সেই হোস্টিং এর আর্টিকেল চলে আসার কথা, যেখানে ধাপে ধাপে নির্দেশনা দেওয়া থাকবে। যদি সেটা না পান, তাহলে হোস্টিং এর সাপোর্টে যোগাযোগ করে জেনে নিন এসএসএইচ ফিচার আছে কিনা। যদি না থাকে, তাহলে আপনি এফটিপি পদ্ধতিতে চলে যান, এই পদ্ধতিতে হবে না।

এসএসএইচে কানেক্ট করার জন্য আপনাকে এসএসেইচ কি পেয়ার বানাতে হবে।

এসএসএইচ কি পেয়ার কীভাবে কাজ করে?
“এসএসএইচ কি পেয়ার” নাম থেকেই বোঝা যাচ্ছে যে এটার দুটো অংশ আছে। একটা হল পাবলিক (সাধারণত .pub এক্সটেনশনের ফাইলে থাকে) আরেকটা প্রাইভেট (সাধারণত কোন এক্সটেনশন থাকে না) কি। একটি নির্দিষ্ট পাবলিক কি শুধুমাত্র নির্দিষ্ট প্রাইভেট কি কেই চিনতে পারে। অনেকটা তালা আর চাবির মত। পাবলিক কি হল তালা, আর প্রাইভেট কি হল চাবি।
সার্ভারে সাধারণত পাবলিক কি দিয়ে লক করা থাকে, আর আপনার এসএসএইচ ক্লায়েন্টের কাছে থাকবে প্রাইভেট কি। আপনি যখন প্রাইভেট কি দিয়ে সার্ভারে এক্সেস চাইবেন, পাবলিক কি সেটাকে কম্পেয়ার করে অথেন্টিকেট করলেই কেবলমাত্র আপনি সার্ভারে এক্সেস পাবেন।

এসএসএইচ কি পেয়ার বানানোর জন্য আপনার কম্পিউটারের টার্মিনাল দিয়ে সার্ভারে এসএসএইচ এক্সেস করে (ইউজারনেম আর পাসওয়ার্ড দিয়ে অনেক হোস্টিং এসএসএইচ এক্সেস করতে দেয়) প্রথমে ইউজারের রুট ফোল্ডারে চলে যানঃ

যেসব হোস্টিং ইউজারনেম-পাসওয়ার্ড দিয়ে এসএসএইচ এক্সেস করতে দেয় সেসব হোস্টিং এ এক্সেস করার জন্য টার্মিনালে গিয়ে ssh USERNAME@HOST এই ফরম্যাটে রিকুয়েস্ট করলে পাসওয়ার্ড চাইবে, পাসওয়ার্ড দিলেই এক্সেস পেয়ে যাবেন। আর যেসব হোস্টিং ইউজারনেম আর পাসওয়ার্ড দিয়ে এক্সেস দেয় না, তাদের গাইডলাইন ফলো করে এসএসএইচ এক্সেস নিয়ে নিন।

রুট ফোল্ডারে যাওয়ার জন্য নিচের কোডটি ব্যবহার করুনঃ (যেকোনো কমান্ড দেয়ার পর অবশ্যই এন্টার বা রিটার্ন কি প্রেস করতে হবে, এটা বার বার উল্লেখ করব না, ধরেই নিবেন প্রতি কমান্ডের পর এন্টার/রিটার্ন কি প্রেস করতে হবে।)

cd ~

এখানে cd (Change Directory) কমান্ডটি দিয়ে টার্মিনালের বিভিন্ন ফোল্ডারে প্রবেশ করা যায়। আর ~ কিওয়ার্ডটি সাধারণত ইউজারের রুট ফোল্ডারকে নির্দেশ করে।

সেখানে দেখে নিন .ssh নামে কোন ফোল্ডার আছে কিনা।

সাধারণত ls কমান্ড দিয়ে যেকোনো ফোল্ডারের ভিতরে থাকা সব ফাইল ও ফোল্ডারের লিস্ট দেখা যায়। তবে কোন ফোল্ডারের নামের শুরুতে ডট (.) থাকলে সেটা একটা হিডেন ফোল্ডার হিসাবে গণ্য হয়, এবং তাই শুধুমাত্র ls কমান্ড দিয়ে দেখা যায় না। এক্ষেত্রে নিম্নোক্ত কমান্ডটি ব্যবহার করুণঃ

ls -all

তাহলে হিডেন ফাইল ও ফোল্ডারসহ সকল ফাইল ও ফোল্ডারের লিস্ট দেখতে পাবেন। উল্লেখ্য যে ls -a দিয়ে একি কাজ করতে পারবেন, তবে আমি পুরো ওয়ার্ড লিখতে পছন্দ করি, পুরনো অভ্যাসবশত।

এই পর্যায়ে যদি ফোল্ডার লিস্টে .ssh থাকে তাহলে স্টেপ ২ এ চলে যান। আরঃ

১। যদি .ssh ফোল্ডার না থাকে তাহলে কমান্ড দিনঃ

mkdir .ssh

এর মাধ্যমে ফোল্ডারটি তৈরি হল।

২। এবার এই ফোল্ডারে প্রবেশ করুনঃ

cd .ssh

৩। এবার এখানে এসএসএইচ কি পেয়ার তৈরি করুনঃ

ssh-keygen -t ed25519 -C "[email protected]"

অবশ্যই আপনার প্রফেশনাল ইমেইলটি ব্যবহার করুন। আর সার্ভারের ক্ষেত্রে হলে আমি সাধারণত [email protected] ইমেইলটি ব্যবহার করি (এটা হুবহু না, কাছাকাছি কিছু একটা, নিরাপত্তার জন্য ভিন্ন কিওয়ার্ড শেয়ার করলাম)।

এই কমান্ড দেওয়ার পর প্রথমেই ফাইলের নাম চাইবে। সহজেই চেনা যাবে এমন ফাইলের নাম দিবেন। কোন এক্সটেনশন দিতে হবে না। আমি এই আর্টিকেলের খাতিরে ধরে নিলাম আপনি নামটি bditwp দিয়েছেন। আমি এখন থেকে সব কমান্ডে এই নামটিই ব্যবহার করব। আপনি আপনার দেওয়া নামটি দিয়ে এটি পরিবর্তন করে নিবেন।

এরপর পাসওয়ার্ড চাইবে। এই কি পেয়ারে পাসওয়ার্ড না দেওয়া (বা খালি রাখা) ভাল। তবে আপনার হোস্টিং প্রোভাইডার যদি সাপোর্ট করে, তাহলে অতিরিক্ত নিরাপত্তা হিসেবে এটা দিতে পারেন। WP Engine এর নিজস্ব একশন ব্যবহারের সময় পাসওয়ার্ড দেওয়া যায় না, আর কিছু পপুলার হোস্টিং পাসওয়ার্ড সাপোর্ট করে না, তাই এটা না দিতে পারেন। এসএসএইচ কি পেয়ার বাই ডিফল্ট এমনিতেই সিকিউরড, বিশেষ করে যদি সেগুলো শুধুমাত্র সার্ভারেই থাকে। তাই এটা নিয়ে দুশ্চিন্তার কোন কারণ নেই।

৪। এ পর্যায়ে পাবলিক ফাইলটির কন্টেন্ট কপি করুন, তার জন্য এই কমান্ড দিনঃ

cat bdit.pub

cat একটি ইউটিলিটি টুল, যা দিয়ে সাধারণত কোন ফাইলের কন্টেন্ট দেখা যায়। এক্ষেত্রে cat কমান্ডের পর কোন ফাইলের কন্টেন্ট পড়তে চান সেই ফাইলের নাম দিতে হবে। একি ডিরেক্টরিতে থাকলে শুধু ফাইলের নাম দিলেই হবে, নাহলে পূর্ণাঙ্গ ঠিকানা দিতে হবে।

পাবলিক ফাইলের কন্টেন্ট কপি করে নিন।

৫। আপনার গিটহাব একাউন্টে যান। সেখানে একাউন্ট সেটিংস এ যান। সেটিংস পেজের লেফট সাইডবার থেকে SSH and GPG Keys অপশনে যান। সেখানে নতুন কি হিসেবে কপি করে রাখা পাবলিক কি এড করুন।

৬। এরপর একটা ব্ল্যাংক রিপোজিটরি তৈরি করুন। কোন রিডমি ফাইল বা কোন ব্রাঞ্চ তৈরি করবেন না। তারপর Code এ ক্লিক করে Local এর আন্ডারে SSH সিলেক্ট করলে একটা লিঙ্ক দেখতে পাবেন, যা দেখতে অনেকটা এমনঃ [email protected]:USERNAME/REPONAME.git এটা কপি করুন।

৭। এবার টার্মিনালে (যেখানে আপনি এসএসএইচ কানেক্ট করেছেন) চলে যান। সেখান থেকে ওয়ার্ডপ্রেসের ইন্সটলেশন ডিরেক্টরিতে চলে যানঃ

cd ~/public_html

অনেক হোস্টিং এর ইন্সটলেশন ডাইরেক্টরি public_html হয় তাই সেটা উদাহরণ হিসাবে দেখালাম। আপনি আপনার হোস্টিং এর যেখানে ইন্সটলেশন আছে সেখানে যাবেন। প্রয়োজনে হোস্টিং এর সাপোর্টের সহায়তা নিন।

৮। এখানে গিট ইনিশিয়ালাইজ করুনঃ

git init

৯। উপরে (৬ নম্বর ধাপে) কপি করা রিমোট লিংকটি এড করুনঃ

git remote add origin [email protected]:USERNAME/REPONAME.git

এক্ষেত্রে git remote add পর্যন্ত বাধ্যতামূলক হুবহু ব্যবহার করতেই হবে। এর পরের অংশটা এই রিমোট রিপোজিটরিকে চেনার জন্য ব্যবহার করা হয়। সাধারণত origin ব্যবহার করা কমন প্র্যাকটিস। আপনি চাইলে ভিন্ন কিছুও এড করতে পারেন। এরপরের অংশটা আপনার ৬ নম্বর ধাপে কপি করা লিংক।

১০। এখন এই ইন্সটলেশন ফোল্ডারে একটা ,gitignore ফাইল তৈরি করে ফাইলে প্রবেশ করুনঃ

nano .gitignore

nano একটি ইউটিলিটি টুল যা দিয়ে ফাইল এডিট করা যায়। এই কমান্ড দেওয়ার পর যদি ফাইলটি না থাকে তাহলে ফাইলটি তৈরি করে এটাকে এডিট করার অপশন দেয়। আপনি চাইলে আলাদাভাবে ফাইলটি touch কমান্ডের মাধ্যমে তৈরি করে তারপর nano কমান্ড দিয়ে এডিট করতে পারেন।

১১। নিচের কোডটুকু কপি করে পেস্ট করে দিন এবং ফাইলটি সেভ করে নিনঃ

*~
.DS_Store
.svn
.cvs
*.bak
*.swp
Thumbs.db

# extra folders
.git
.idea
*/.idea
*/.git
*/.github

# server related
.htaccess

# wordpress specific
wp-admin
wp-admin/*
wp-includes
wp-includes/*
wp-config.php
wp-content/uploads/
wp-content/uploads/*
wp-content/blogs.dir/
wp-content/upgrade/*
wp-content/backup-db/*
wp-content/languages/*
wp-content/advanced-cache.php
wp-content/wp-cache-config.php
wp-content/cache/*
wp-content/cache/supercache/*
wp-content/themes/twentytwentyone/*
wp-content/themes/twentytwentytwo/*

# large/disallowed file types
# a CDN should be used for these
*.hqx
*.bin
*.exe
*.dll
*.deb
*.dmg
*.iso
*.img
*.msi
*.msp
*.msm
*.mid
*.midi
*.kar
*.mp3
*.ogg
*.m4a
*.ra
*.3gpp
*.3gp
*.mp4
*.mpeg
*.mpg
*.mov
*.webm
*.flv
*.m4v
*.mng
*.asx
*.asf
*.wmv
*.avi

এই ফাইলটা এডিট করে নিতে পারেন। এখানে যেসব ফাইল বা ডিরেক্টরি দিবেন গিট সেগুলোকে ট্র্যাক করবে না। সাধারণত একটা ওয়ার্ডপ্রেস সাইটে ডিফল্ট হিসাবে এই টেম্পলেটটা ব্যবহার করতে পারেন। চাইলে আর কিছু এডিট করে যোগ/বিয়োগ করে নিতে পারেন। গিটইগনোর নিয়ে বিস্তারিত আলাপ চাইলে জানাবেন, এমনিতে গুগলে ভালই রিসোর্স পাওয়া যায়।

ফাইল এডিট নিয়ে খুশি থাকলে এরপর CTRL+O চাপ দিন (ম্যাকেও সেম কি, কমান্ড কি ব্যবহার হবে না)। এখন ফাইল নেইম এডিট করার অপশন দিলে স্রেফ এন্টার প্রেস করে দিন। এরপর CTRL+X (ম্যাকেও কন্ট্রোল কিই চাপ দিতে হবে, কমান্ড কি না) চাপ দিয়ে ফাইল থেকে বের হয়ে আসুন।

১২। গিটের ব্রাঞ্চ চেক করে নিন git branch কমান্ড দিয়ে। যদি master ব্রাঞ্চে থাকেন বা কোন ব্রাঞ্চে না থাকেন, তাহলেঃ

git checkout -b main

[শ্রেণীবৈষম্য বিরোধী আন্দোলনের অংশ হিসেবে এখন আর কেও master কিওয়ার্ডটি প্রধান ব্রাঞ্চ হিসেবে ব্যবহার করে না। এখন main কিওয়ার্ড ব্যবহার করা হয়। তবে অনেক পুরাতন সিস্টেম এখনো master ব্রাঞ্চই ডিফল্ট হিসাবে সেট করে রাখে।]

১৩। এবার গিটে সবকিছু এড করুনঃ

git add --all

আপনি চাইলে git add . কমান্ডও ব্যবহার করতে পারেন।

১৪। কমিট করুনঃ

git commit -m 'initial commit'

এখানে -m এর পর কোটেশনের ভিতর ইচ্ছামত মেসেজ দিন। আমি স্যাম্পল হিসাবে initial commit লিখে দিলাম।

১৫। এবার রিপোজিটরিতে কোড পুশ করে দিনঃ

git push origin main

১৬। এবারে আবার .ssh ফোল্ডারে চলে যান cd ~/.ssh কমান্ড দিয়ে। সেখানে গিয়ে প্রাইভেট কি ফাইলটি রিড করে এর কন্টেন্ট কপি করে নিন। তার জন্য এই কমান্ড ব্যবহার করতে পারেনঃ

cat bdit

আপনি যদি আপনার কি পেয়ারের নাম ভিন্ন দিয়ে থাকেন তাহলে সেই নাম দিবেন। কন্টেন্ট কপি করে নিন।

১৭। এই পর্যায়ে গিটহাবে আপনার সাইটের লেটেস্ট কোডবেজ আছে। এখন সিআই/সিডি পাইপলাইন বানাতে হবে। এখন চলে যান গিটহাবে। সেখানে রিপোজিটরিতে গিয়ে Settings ট্যাবে চাপ দিন। লেফট সাইডবার থেকে Secrets and Variables এর ভিতর Actions এ ক্লিক করুন। ডানদিকে New repository secret বাটনে প্রেস করুন।

এভাবে ৩টি সিক্রেট তৈরি করুনঃ

KEY নামের সিক্রেটের ভ্যালু হিসেবে ১৬ নম্বর ধাপে কপি করা কন্টেন্ট পেস্ট করে দিন।

HOST নামের সিক্রেটের ভ্যালু হিসেবে সার্ভারে এসএসএইচ এক্সেস নেয়ার সময় ssh USERNAME@HOST ফরম্যাটে যে HOST ব্যবহার করেছেন সেটা।

USERNAME নামক সিক্রেটের ভ্যালু হিসেবে সার্ভারে এসএসএইচ এক্সেস নেয়ার সময় ssh USERNAME@HOST ফরম্যাটে যে USERNAME ব্যবহার করেছেন সেটা।

১৮। এবার Code ট্যাবে প্রেস করে লেটেস্ট কোডে চলে আসুন। তারপর সেখানে Add file বাটনে ক্লিক করে Create new file অপশনে ক্লিক করুন। নতুন উইন্ডোতে Name your file… ইনপুট ফিল্ডে লিখুন .github/ (/ লেখার সাথে সাথে সেটা একটা ফোল্ডার হয়ে যাবে), তারপর ‘workflows/’, তারপর main.yml

১৯। এই ফাইলে নিচের কোডটুকু বসিয়ে দিনঃ

name: 🚀 Deploy Changes to HOSTINGNAME
on:
  push:
    branches:
      - main

jobs:

  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
      - name: executing remote ssh commands using password
        uses: appleboy/[email protected]
        with:
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USERNAME }}
          key: ${{ secrets.KEY }}
          script: |
                  cd ~/public_html
                  eval $(ssh-agent -s)
                  ssh-add ~/.ssh/bdit
                  git reset --hard
                  git pull origin main

এই ফাইলে প্রথমে name অংশের নাম ইচ্ছামত দিয়ে নিন, যার মাধ্যমে সহজেই বুঝতে পারবেন এটা কিসের একশন। আমি সাধারণত যেই ফরম্যাটে নাম দেই সেটা দিয়ে দিলাম।

এরপর নিচের দিকে দেখুন script এর ভিতর ৫ লাইন কোড আছে।

প্রথম লাইনে cd কমান্ড দিয়ে একটা ডাইরেক্টরি দেওয়া আছে। সেটা সম্পূর্ণ আপনার হোস্টিং এর এসএসএইচে লগইন করার পর সেখান থেকে সম্পূর্ণ ওয়ার্ডপ্রেসের ইন্সটলেশন ডিরেক্টরিতে যাওয়ার পথ বাতলে দিতে হবে। সাধারণত ৭ম ধাপে যে কমান্ড দিয়েছেন সেটা এখানে প্রথম লাইন হিসাবে দিতে হবে।

দ্বিতীয় লাইন হুবহু রাখুন।

তৃতীয় লাইনের শেষ অংশে ৩য় ধাপে দেওয়া নামটি বসিয়ে দিন। আমি উদাহরণ মোতাবেক bdit দিয়েছি।

চতুর্থ লাইন হুবহু রাখুন।

শেষ লাইন হুবহু রাখুন, যদি আপনি ব্রাঞ্চ হিসেবে main ব্যবহার করে থাকেন। নাহলে ব্রাঞ্চের নাম পরিবর্তন করে নিন।

এবার ফাইলটি সেভ করার জন্য Commit changes বাটনে প্রেস করে পপআপ বক্সের Commit changes বাটনে প্রেস করুন।

ব্যাস, হয়ে গেল আপনার সিআই সিডি পাইপলাইন রেডি। এবার এই রিপজিটরির main ব্রাঞ্চে কোন কোড পুশ হলে সেটা সরাসরি আপনার সার্ভারে ডিপ্লয় হয়ে যাবে। তবে মাথায় রাখতে হবে যে আপনার সার্ভারের কোন ফাইল সরাসরি এডমিন ড্যাশবোর্ড দিয়ে বা এফটিপি দিয়ে এডিট করা যাবে না। করলেও সেটা থাকবে না।

২য় পদ্ধতিঃ এফটিপি/এসএফটিপি

১। আপনার সার্ভারে একটি এফটিপি/এসএফটিপি ইউজার বানিয়ে করে নিন, যদি অলরেডি না থাকে। থাকলেও একটা আলাদা বানিয়ে নিতেই পারেন।

২। গিটহাবে রিপোজিটরি বানিয়ে নিন।

৩। সাইটের লেটেস্ট কোড নামিয়ে আপনার কম্পিউটারে আনজিপ করে নিন, বা যদি লোকালের সাইট সার্ভারে নিতে চান তাহলে সেই ফোল্ডারে চলে যান।

৪। এখানে .gitignore নামে ফাইল তৈরি করুন। এসএসএইচ এর ১১ নম্বর ধাপের মত ফাইলের কন্টেন্ট বসিয়ে ফাইলটি সেভ করে নিন।

৫। এখন লোকালের এই ফোল্ডারে টার্মিনাল অন করুন।

যদি আপনার গিটহাব একাউন্টের সাথে এসএসএইচ কি দিয়ে কানেকশন করা থাকে, তাহলে সামনে আগান। আর যদি না থাকে তাহলে এসএসএইচ এর ১ থেকে ৫ নম্বর ধাপ আপনার কম্পিউটারে এক্সিকিউট করুন।

৬। এসএসএইচ পদ্ধতির ৬ নম্বর ধাপ ফলো করুন।

৭। এসএসএইচ পদ্ধতির ৮ ও ৯ নম্বর ধাপ ফলো করুন।

৮। এসএসএইচ পদ্ধতির ১২ থেকে ১৬ নম্বর ধাপ ফলো করুন।

৯। এই পর্যায়ে গিটহাবে আপনার সাইটের লেটেস্ট কোডবেজ আছে। এখন সিআই/সিডি পাইপলাইন বানাতে হবে। এখন চলে যান গিটহাবে। সেখানে রিপোজিটরিতে গিয়ে Settings ট্যাবে চাপ দিন। লেফট সাইডবার থেকে Secrets and Variables এর ভিতর Actions এ ক্লিক করুন। ডানদিকে New repository secret বাটনে প্রেস করুন।

এভাবে ৩/৪টি সিক্রেট তৈরি করুনঃ

HOST নামক সিক্রেটের ভ্যালু হিসেবে আপনার সার্ভারের এফটিপি/এসএফটিপি হোস্ট এড করুন।
USERNAME নামক সিক্রেটের ভ্যালু হিসেবে আপনার সার্ভারের এফটিপি/এসএফটিপি ইউজারনেম এড করুন।
PASSWORD নামক সিক্রেটের ভ্যালু হিসেবে আপনার সার্ভারের এফটিপি/এসএফটিপি পাসওয়ার্ড এড করুন।
PORT নামক সিক্রেটের ভ্যালু হিসেবে আপনার সার্ভারের এফটিপি/এসএফটিপি পোর্ট এড করুন। পোর্ট প্রয়োজন না হলে এটা এড করার দরকার নেই।

১০। এসএসএইচ এর ১৮ নম্বর ধাপ ফলো করুন।

১১। এবার ফাইলের কন্টেন্ট হিসেবে নিচের কোডটুকু পেস্ট করুনঃ

on: push
name: 🚀 Deploy Changes to HOSTINGNAME
jobs:
  web-deploy:
    name: 🎉 Deploy
    runs-on: ubuntu-latest
    steps:
    - name: 🚚 Get latest code
      uses: actions/checkout@v4
    
    - name: 📂 Sync files
      uses: SamKirkland/[email protected]
      with:
        server: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        password: ${{ secrets.PASSWORD }}
        port: ${{ secrets.PORT }}

এই ফাইলে প্রথমে name অংশের নাম ইচ্ছামত দিয়ে নিন, যার মাধ্যমে সহজেই বুঝতে পারবেন এটা কিসের একশন। আমি সাধারণত যেই ফরম্যাটে নাম দেই সেটা দিয়ে দিলাম।

আর তেমন কিছুই পরিবর্তন করতে হবে না। যদি আপনি এফটিপি/এসএফটিপি পদ্ধতির ৯ নম্বর ধাপে PORT সিক্রেট এড না করে থাকেন, তাহলে শেষ লাইনটুকু মুছে দিন।

ব্যাস, হয়ে গেল সিআই/সিডি পাইপলাইন রেডি। এবার এই রিপজিটরির main ব্রাঞ্চে কোন কোড পুশ হলে সেটা সরাসরি আপনার সার্ভারে ডিপ্লয় হয়ে যাবে।

আমি কোন ভুল করে থাকলে জানাবেন প্লিজ, শুধরে নিব, ইনশাআল্লাহ। এছাড়া সকল প্রকার প্রোডাক্টিভ আলোচনা-সমালোচনা শুনতে আগ্রহী।

9 Likes

Very informative post. Love it. :heart: