প্রকল্প সম্পর্কে
এই রিপোজিটরি একটি ফ্রি Render ওয়েব সার্ভিসের জন্য একটি keep-alive (চলত রাখা) প্রক্রিয়া প্রদান করে। এটি একটি GitHub Actions ওয়ার্কফ্লোকে একটি ছোট Node.js স্ক্রিপ্টের সাথে একত্রিত করে যা একটি কনফিগার করা টার্গেট URL-এ পর্যায়ক্রমে HTTP GET অনুরোধ পাঠায়, যাতে সার্ভিস নিষ্ক্রিয়তা থেকে স্লিপ মোডে না যায়।
সমাধান করা সমস্যা: GitHub Actions-এর ফ্রি শিডিউলার তার সার্ভারগুলো ব্যস্ত থাকলে প্রতি ৫ মিনিটের মতো ছোট ক্রন ইন্টারভালে বিলম্ব করতে পারে, যা রানগুলোর মধ্যে গ্যাপ তৈরি করে। Render ফ্রি-টিয়ার সার্ভিসগুলো প্রায় ১৫ মিনিট ট্রাফিক না থাকলে স্লিপ মোডে চলে যায়, তাই মিসড পিং কোল্ড স্টার্টের কারণ হতে পারে।
README-এ বর্ণিত পদ্ধতি:
- সক্রিয় ১৪-মিনিট সেশন: প্রতিটি GitHub Actions জব প্রায় ১৪ মিনিট চলে এবং প্রতি ৪ মিনিট পরপর পিং পাঠায় (০, ৪, ৮, এবং ১২ মিনিটে)।
- একাধিক ক্রন ট্রিগার: */10 * * * * এবং 5,15,25,35,45,55 * * * * এর মতো শিডিউল ব্যবহার করা হয় যাতে নতুন রানার সেশনগুলো চালু থাকে।
- ঘোষিত লক্ষ্য হলো নিরবচ্ছিন্ন কভারেজ, কারণ সক্রিয় ১৪-মিনিটের উইন্ডোতে প্রতি ৪ মিনিটে পিং ১৫-মিনিটের নিষ্ক্রিয়তা থ্রেশহোল্ডের নিচে থাকে।
বৈশিষ্ট্যসমূহ:
- Node.js 22 নেটিভ API: বিল্ট-ইন fetch() এবং node:timers/promises ব্যবহার করে, কোনো বাহ্যিক npm নির্ভরশীলতা নেই।
- রিট্রাই লজিক: নেটওয়ার্ক ত্রুটি বা non-2xx রেসপন্স হলে ১০ সেকেন্ডের বিলম্বে সর্বোচ্চ ৩ বার রিট্রাই করে।
- কনসোল আউটপুট: ISO UTC টাইমস্ট্যাম্প, HTTP স্ট্যাটাস কোড, মিলিসেকেন্ডে রেসপন্স টাইম, পাস/ফেল ফলাফল, এবং সেশন সাইকেল কাউন্ট লগ করে।
- ম্যানুয়াল ট্রিগারিং: তাৎক্ষণিক রানের জন্য workflow_dispatch সমর্থন করে।
কনফিগারেশন: টার্গেট URL ping.js-এর শীর্ষে TARGET_URL হিসেবে সংজ্ঞায়িত, বর্তমানে একটি Render-হোস্টেড এন্ডপয়েন্টে নির্দেশ করছে। এন্ডপয়েন্ট পরিবর্তন করতে সেই কনস্ট্যান্টটি এডিট করে পুশ করতে হবে।
ডিপ্লয়মেন্ট: README ব্যবহারকারীদের আপডেট করা ফাইলগুলো main ব্রাঞ্চে কমিট এবং পুশ করার নির্দেশ দেয়, এরপর GitHub Actions সক্রিয় পিং সেশন শুরু করে।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.