چگونه می توان با استفاده از اقدامات GitHub از پایگاه داده پروژه Supabase جلوگیری کرد

اگر از Supabase برای پروژه خود استفاده می کنید ، ممکن است متوجه شده باشید که Supabase پس از یک دوره عدم فعالیت ، پایگاه داده شما را متوقف می کند. این یک ویژگی متداول در برنامه های سطح آزاد برای صرفه جویی در منابع است ، اما اگر می خواهید پایگاه داده شما در همه زمان ها فعال باشد ، می تواند ناامید کننده باشد. خوشبختانه ، می توانید با تنظیم یک “پینگ” خودکار ساده در پایگاه داده Supabase خود با استفاده از اقدامات GitHub ، از این امر جلوگیری کنید.
در این پست وبلاگ ، شما را از طریق نحوه استفاده از گردش کار GitHub Actions برای فعال نگه داشتن پایگاه داده Supabase خود و جلوگیری از مکث آن ، پیاده می کنم. من همچنین کد و نحوه عملکرد آن را توضیح خواهم داد.
چرا Supabase پایگاه داده شما را مکث می کند؟
Supabase ، مانند بسیاری از ارائه دهندگان دیگر بانک اطلاعاتی ، پس از یک دوره عدم فعالیت برای حفظ منابع ، پایگاه داده خود را مکث می کند. این امر به ویژه در مورد پروژه های سطح آزاد صادق است. اگرچه این برای صرفه جویی در هزینه ها بسیار عالی است ، اگر می خواهید پایگاه داده شما برای آزمایش ، توسعه یا اهداف دیگر فعال باشد ، می تواند ناخوشایند باشد.
برای جلوگیری از این امر ، می توانید با اجرای یک پرس و جو ساده ، به طور دوره ای پایگاه داده خود را “پینگ” کنید. این امر پایگاه داده را فعال می کند و از مکث آن جلوگیری می کند.
خودکار کردن پینگ های پایگاه داده با اقدامات GitHub
اقدامات GitHub ابزاری قدرتمند برای خودکارسازی گردش کار است. شما می توانید از آن برای برنامه ریزی وظایف ، مانند پینگ پایگاه داده Supabase خود در فواصل منظم استفاده کنید. در زیر ، من توضیح می دهم که چگونه می توان یک گردش کار Actions GitHub را تنظیم کرد تا هر دوشنبه و پنجشنبه ساعت 9 صبح UTC پایگاه داده Supabase خود را پینگ کند.
گردش کار اقدامات GitHub
در اینجا کد گردش کار Actions GitHub است که می توانید برای پینگ پایگاه داده Supabase خود استفاده کنید:
name: Ping Supabase to Prevent Pausing
on:
schedule:
- cron: '0 9 * * 1,4' # Runs at 9:00 AM UTC every Monday and Thursday
workflow_dispatch: # Allows manual triggering from the GitHub UI
jobs:
ping:
runs-on: ubuntu-latest
steps:
# Step 1: Checkout the repository
- name: Checkout repository
uses: actions/checkout@v3
# Step 2: Set up Node.js
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '18' # Use Node.js 18
# Step 3: Install Supabase Client
- name: Install Supabase Client
run: npm install @supabase/supabase-js --force
# Step 4: Ping Supabase
- name: Ping Supabase
env:
SUPABASE_URL: ${{ secrets.NEXT_PUBLIC_SUPABASE_URL }} # Supabase project URL
SUPABASE_KEY: ${{ secrets.NEXT_SERVICE_ROLE_KEY }} # Supabase service role key
run: |
node -e "
(async () => {
try {
// Debugging: Log environment variables (optional)
console.log('Supabase URL:', process.env.SUPABASE_URL);
console.log('Supabase Key:', process.env.SUPABASE_KEY);
// Import Supabase client
const { createClient } = require('@supabase/supabase-js');
const supabase = createClient(process.env.SUPABASE_URL, process.env.SUPABASE_KEY);
// Ping Supabase by querying a table (e.g., 'songs')
const { data, error } = await supabase.from('your_table').select('*').limit(10);
// Handle errors
if (error) throw error;
// Log success
console.log('Ping successful:', data);
} catch (err) {
// Log and exit with error
console.error('Error pinging Supabase:', err.message);
process.exit(1);
}
})();
"
چگونه کار می کند
-
ایجاد گردش کار:
- گردش کار با استفاده از برنامه شروع می شود
cron
نحو (0 9 * * 1,4
). این بدان معنی است که هر دوشنبه و پنجشنبه ساعت 9 صبح UTC اجرا می شود. - همچنین می توانید با استفاده از جریان کار به صورت دستی شروع کنید
workflow_dispatch
رویداد
- گردش کار با استفاده از برنامه شروع می شود
-
تنظیم محیط:
- گردش کار مخزن شما را بررسی می کند و Node.js را تنظیم می کند (نسخه 18 در این مورد).
- سپس مشتری supabase را نصب می کند (
@supabase/supabase-js
) با استفاده از NPM.
-
سوپراسن پینگ:
- گردش کار از مشتری Supabase برای اتصال به پایگاه داده خود با استفاده از
SUPABASE_URL
وتSUPABASE_KEY
متغیرهای محیط. - این یک پرس و جو ساده (به عنوان مثال ، انتخاب 10 ردیف از یک جدول) برای فعال نگه داشتن پایگاه داده است.
- اگر پینگ موفقیت آمیز باشد ، داده ها را ثبت می کند. اگر خطایی وجود داشته باشد ، خطا را وارد می کند و با کد وضعیت غیر صفر خارج می شود.
- گردش کار از مشتری Supabase برای اتصال به پایگاه داده خود با استفاده از
تنظیم متغیرهای محیط
برای کار کردن این گردش کار ، باید متغیرهای محیط زیر را در مخزن GitHub خود تنظیم کنید:
-
NEXT_PUBLIC_SUPABASE_URL
: URL پروژه supabase شما. -
NEXT_SERVICE_ROLE_KEY
: کلید نقش سرویس Supabase شما.
می توانید این اسرار را در مخزن GitHub خود اضافه کنید تنظیمات> اسرار و متغیرها> اقداماتبشر
سفارشی کردن گردش کار
-
برنامه را تغییر دهید: اگر می خواهید پایگاه داده خود را کم یا بیش پینگ کنید ، می توانید اصلاح کنید
cron
برنامه. به عنوان مثال ،0 9 * * *
گردش کار را هر روز ساعت 9 صبح UTC اجرا می کند. -
جدول را تغییر دهید: جایگزین کنید
'your_table'
با نام یک جدول در پایگاه داده Supabase خود. -
اشکال زدایی بیشتر اضافه کنید: اگر می خواهید گردش کار را بیشتر اشکال زدایی کنید ، می توانید تعداد بیشتری اضافه کنید
console.log
بیانیه ها
مزایای این رویکرد
- پایگاه داده خود را فعال نگه می دارد: با پینگ کردن پایگاه داده خود به طور مرتب ، اطمینان حاصل می کنید که فعال است و مکث نمی شود.
- خودکار و دستگیر: پس از تنظیم ، گردش کار به طور خودکار اجرا می شود ، بنابراین لازم نیست نگران پینگ دستی پایگاه داده خود باشید.
- مقرون به صرفه: اگر از اقدامات GitHub در محدوده سطح آزاد استفاده می کنید ، این راه حل رایگان است.
پایان
جلوگیری از مکث پایگاه داده Supabase شما با اقدامات GitHub آسان است. با تنظیم یک گردش کار ساده برای پینگ پایگاه داده در فواصل منظم ، می توانید اطمینان حاصل کنید که پایگاه داده شما فعال و آماده استفاده است. این رویکرد به ویژه برای پروژه های سطح آزاد یا محیط های توسعه که در دسترس شما در دسترس بودن پایگاه داده است ، مفید است.
آن را امتحان کنید ، و به من اطلاع دهید که آیا سوالی دارید یا به کمک بیشتری نیاز دارید!
من را دنبال کنید: کانال YouTube Github LinkedIn Threads