DevOps সফ্টওয়্যার বিকাশের জগতে একটি অবিচ্ছেদ্য উপাদান হয়ে উঠেছে যে সংস্থাগুলি তাদের বিকাশ এবং স্থাপনার প্রক্রিয়াগুলিকে সহজ করার চেষ্টা করছে। উপলব্ধ বেশ কয়েকটি DevOps প্রযুক্তির মধ্যে, এমন একটি রয়েছে যা কখনও কখনও অবহেলিত হয় তবুও সত্যিই কার্যকর।
সেই অত্যাবশ্যক প্রযুক্তিটি " গিট হুকস" ছাড়া আর কেউ নয়। "
গিট হুকগুলি কাজগুলি স্বয়ংক্রিয় করতে, কোডিং মান প্রয়োগ করতে, ক্রমাগত স্থাপনা সম্পাদন করতে এবং পরীক্ষা চালানোর জন্য দুর্দান্ত সরঞ্জাম।
আসুন দেখি কিভাবে আমরা আমাদের DevOps অনুশীলনে বিপ্লব আনতে গিট হুক ব্যবহার করতে পারি!
আসুন প্রথমে অফিসিয়াল সংজ্ঞা দেখি-
হুক হল এমন প্রোগ্রাম যা আপনি একটি হুক ডিরেক্টরিতে রাখতে পারেন গিট-এর এক্সিকিউশনের নির্দিষ্ট পয়েন্টে অ্যাকশন ট্রিগার করতে।
ভাগ্যক্রমে, এটি একটি সত্যিই সহজ সংজ্ঞা!
আসুন সংজ্ঞা সম্পর্কে পাঠকদের কিছু প্রশ্নের উত্তর দেওয়ার চেষ্টা করা যাক।
প্রশ্ন) হুক্স ডিরেক্টরি কি? এটা কোথায় অবস্থিত?
একটি হুক ডিরেক্টরি হল গিট রিপোজিটরির একটি ডিরেক্টরি যাতে এক্সিকিউটেবল প্রোগ্রাম বা হুক থাকে যা গিট এক্সিকিউট করবে। ডিফল্টরূপে, হুক ডিরেক্টরি হল $GIT_DIR/hooks
। ব্যবহারকারীরা core.hooksPath
কনফিগারেশন ভেরিয়েবল ব্যবহার করে এটি কনফিগার করতে পারেন।
প্রশ্ন) গিট এর মৃত্যুদন্ডের পয়েন্ট কি?
গিট এক্সিকিউশন পয়েন্ট হল গিট ওয়ার্কফ্লো এর ধাপ যেখানে হুক চালানো যায়। প্রি-কমিট, পোস্ট-কমিট, প্রি-পুশ, পোস্ট-রিসিভ, প্রি-রিবেস এবং পোস্ট-মার্জ হল গিট এক্সিকিউশন পয়েন্টের কিছু উদাহরণ।
এই বিভাগের সংক্ষিপ্তসার জন্য, আমরা গিট হুকগুলির জন্য নিম্নলিখিত সংজ্ঞা রাখতে পারি -
গিট নির্দিষ্ট ক্রিয়াকলাপ যেমন কমিটিং, পুশিং বা মার্জিং কোডের আগে বা পরে "হুক" নামে পরিচিত স্ক্রিপ্টগুলি সম্পাদন করে। তারা আপনাকে কাজগুলি স্বয়ংক্রিয় করতে, নীতিগুলি প্রয়োগ করতে এবং বিকাশ প্রক্রিয়া চলাকালীন কোডবেসের সাথে ইন্টারঅ্যাক্ট করার অনুমতি দেয়। গিট হুকগুলি আপনার গিট সংগ্রহস্থলের
.git/hooks
ডিরেক্টরিতে সংরক্ষণ করা হয়
আসুন একটি সহজবোধ্য গিট হুক তৈরি করার চেষ্টা করি যা যেকোনো কমিট মেসেজে "TASK*" রেগুলার এক্সপ্রেশন চাপিয়ে দেবে।
একটি নতুন ডিরেক্টরি তৈরি করুন git_hooks_tut
, এবং এর ভিতরে একটি নতুন গিট সংগ্রহস্থল শুরু করুন।
~/projects$ mkdir git_hooks_tut ~/projects$ cd git_hooks_tut ~/projects/git_hooks_tut$ git init Initialized empty Git repository
আসুন আমরা হুক ডিরেক্টরিতে যাই এবং এর বিষয়বস্তু তদন্ত করি।
~/projects/git_hooks_tut$ cd .git/hooks ~/projects/git_hooks_tut/.git/hooks$ ls applypatch-msg.sample pre-applypatch.sample pre-push.sample commit-msg.sample pre-commit.sample pre-rebase.sample fsmonitor-watchman.sample pre-merge-commit.sample pre-receive.sample post-update.sample prepare-commit-msg.sample update.sample
হুক ডিরেক্টরি কিছু নমুনা স্ক্রিপ্ট সঙ্গে আসে. .sample
এক্সটেনশন ডিফল্টরূপে চালানো থেকে তাদের বন্ধ করে. একটি হুক "ইনস্টল" করার জন্য আপনাকে যা করতে হবে তা হল .sample
এক্সটেনশন থেকে পরিত্রাণ পেতে৷
অথবা, আপনি যদি স্ক্র্যাচ থেকে একটি নতুন স্ক্রিপ্ট দিয়ে শুরু করেন, আপনি শুধুমাত্র একটি নামের সাথে একটি নতুন ফাইল যোগ করতে পারেন যা উপরে তালিকাভুক্ত ফাইলের নামের সাথে মিলে যায়, কিন্তু .sample
এক্সটেনশন ছাড়াই৷
আমাদের ব্যবহারের ক্ষেত্রে, আমাদের একটি কমিট-মেসেজ হুক থাকতে হবে। এগিয়ে যান এবং commit-msg
নামে একটি নতুন স্ক্রিপ্ট তৈরি করুন।
~/projects/git_hooks_tut/.git/hooks$ touch commit-msg
commit-msg
স্ক্রিপ্টে আমাদের কমিট মেসেজ প্যাটার্ন নিশ্চিত করতে লজিক যোগ করি।
#!/bin/sh commit_msg_file=$1 commit_msg=$(cat "$commit_msg_file") # Check if the commit message starts with "TASK" if ! echo "$commit_msg" | grep -q "^TASK"; then echo "Commit message must start with 'TASK'" exit 1 fi
অবশেষে, commit-msg
স্ক্রিপ্ট এক্সিকিউটেবল করুন। নন-এক্সিকিউটেবল স্ক্রিপ্টগুলি হুক ডিরেক্টরিতে উপস্থিত থাকলেও গিট দ্বারা এড়িয়ে যায়।
~/projects/git_hooks_tut/.git/hooks$ chmod +x commit-msg
এবং সেই সেটআপের সাথে, আমাদের হুকগুলি সম্পূর্ণ! আসুন এখন এটি পরীক্ষা করা যাক।
আমরা এখন একটি নতুন ফাইল তৈরি করব এবং এটি কমিট করার চেষ্টা করব; প্রথমে, একটি অবৈধ বার্তা বিন্যাস সহ, এবং তারপর একটি বৈধ বার্তা বিন্যাস সহ।
~/projects/git_hooks_tut/.git/hooks$ cd ../.. ~/projects/git_hooks_tut$ touch README ~/projects/git_hooks_tut$ ls README ~/projects/git_hooks_tut$ git add README ~/projects/git_hooks_tut$ git commit -m "Added Readme File" Commit message must start with 'TASK' ~/projects/git_hooks_tut$ git commit -m "TASK-0000: Added Readme File" [master (root-commit) 7f3648a] TASK-000: Added Readme File
জিনিসগুলি আদর্শভাবে কাজ করছে!
গিট আমাদের বেশ কয়েকটি এক্সিকিউশন পয়েন্টের জন্য হুক তৈরি করতে দেয়। এর মধ্যে কয়েকটি নিম্নরূপ-
প্রি-কমিট হুক: একটি কমিট তৈরি হওয়ার আগে এই হুকটি কার্যকর করা হয়। এটি আমাদের প্রতিশ্রুতিবদ্ধ পরিবর্তনগুলিকে যাচাই করতে দেয়৷
প্রি-রিসিভ হুক: প্রি-রিসিভ হুক রিমোট রিপোজিটরিতে চালানো হয় কোনো রেফারেন্স পরিবর্তন করার আগে, যা আপনাকে কাস্টম নিয়ম বা নীতি প্রয়োগ করতে দেয়।
পোস্ট-রিসিভ হুক: রেফারেন্স আপডেট করার পরে এই হুকটি রিমোট রিপোজিটরিতেও কার্যকর করা হয়। এটি বিজ্ঞপ্তি পাঠাতে এবং/অথবা অতিরিক্ত কাজ সম্পাদন করতে ব্যবহার করা যেতে পারে।
প্রি-পুশ হুক: পুশ করার আগে এই হুকটি কার্যকর করা হয়। এটি নির্দিষ্ট নীতিগুলি প্রয়োগ করতে ব্যবহার করা যেতে পারে যা নির্দিষ্ট ধরণের প্রতিশ্রুতিগুলিকে নিরুৎসাহিত করে৷
Prepare-Commit-Msg হুক: একটি কমিট বার্তা তৈরি হওয়ার পরে প্রস্তুতি-কমিট-বার্তা হুকটি কার্যকর করা হয়, যা আপনাকে প্রতিশ্রুতি বার্তা পরিবর্তন বা উন্নত করতে দেয়।
গিটকে আরও ভালভাবে কাস্টমাইজ করার জন্য অন্যান্য বিভিন্ন হুক রয়েছে, সেগুলি গিট ডক্সে পাওয়া যাবে।
গিট হুকস, যদি সঠিকভাবে ব্যবহার করা হয়, তা হল একটি বড় সম্ভাবনার হাতিয়ার! আমরা, বিকাশকারীরা, প্রায়শই এই জাতীয় সরঞ্জামগুলির শক্তিকে হ্রাস করি যা অনেক জটিল কাজ সমাধান করতে পারে।
Git Hooks নিয়োগ করা যে কোনো স্তরে DevOps উন্নত করে তাদের উন্নয়ন চক্রে DevOps সংহত করতে চাওয়া সংস্থাগুলির জন্য একটি দুর্দান্ত উপায় হতে পারে।
এই পর্যন্ত পৌঁছানোর জন্য অভিনন্দন! আমি আশা করি আপনি আজ নতুন কিছু শিখেছেন।