پرش به مطلب اصلی

استقرار خودکار از Git

🖼
تصویر: راه‌اندازی auto-deploy با Gitplaceholder — تصویر را اینجا جایگزین کنید

استقرار خودکار به شما امکان می‌دهد با هر بار push به شاخه‌ی مشخص در GitHub، اپلیکیشن‌تان روی ابرکلیک به‌صورت خودکار بیلد و دیپلوی شود. بدون نیاز به دستور دستی.

پیش‌نیاز: اتصال حساب GitHub به پروفایل

پیش از اتصال ریپازیتوری به اپ، باید حساب GitHub خود را به ابرکلیک متصل کنید.

روش اول — داشبورد:

  1. وارد داشبورد شوید
  2. از منوی کاربری، Profile را باز کنید
  3. روی اتصال گیت‌هاب کلیک کنید
  4. در صفحه‌ی GitHub، دسترسی را تأیید کنید

روش دوم — CLI:

abrclick login --provider github

پس از اتصال موفق، نام کاربری GitHub شما در بخش پروفایل نمایش داده می‌شود.

هشدار

برای فعال‌سازی استقرار خودکار، حساب GitHub متصل‌شده باید دسترسی read به ریپازیتوری موردنظر را داشته باشد. در غیر این صورت وب‌هوک قادر به دریافت رویدادهای push نخواهد بود.


اتصال ریپازیتوری GitHub به اپلیکیشن

  1. در داشبورد، اپلیکیشن موردنظر را باز کنید
  2. به تب Settings بروید
  3. بخش GitHub Integration را پیدا کنید
  4. روی اتصال ریپازیتوری کلیک کنید
  5. ریپازیتوری و شاخه (branch) موردنظر را انتخاب کنید
  6. تنظیمات را ذخیره کنید

پس از ذخیره، ابرکلیک به‌صورت خودکار یک وب‌هوک روی ریپازیتوری GitHub شما ثبت می‌کند.

اطلاع

اتصال ریپازیتوری از طریق CLI نیز ممکن است:

abrclick app update <app-slug> --repo <github-owner>/<repo-name> --branch main

نحوه‌ی کار استقرار خودکار

پس از اتصال موفق:

  1. هر بار که به شاخه‌ی تنظیم‌شده push می‌کنید، GitHub یک رویداد به وب‌هوک ابرکلیک ارسال می‌کند
  2. ابرکلیک کد را دریافت، بیلد و دیپلوی می‌کند
  3. لاگ‌های بیلد در تب Deployments قابل مشاهده هستند
  4. پس از موفقیت، اپ شما روی آدرس https://<slug>.apps.abrclick.ir به‌روز می‌شود
push to main


GitHub webhook → api.abrclick.ir/v1/webhooks/github


Build queue (BuildKit)


Deploy → <slug>.apps.abrclick.ir

فیلتر شاخه

فقط push به شاخه‌ی تنظیم‌شده باعث اجرای بیلد می‌شود. push به سایر شاخه‌ها نادیده گرفته خواهد شد.

نکته

اگر می‌خواهید از چند محیط (مثلاً staging و production) استفاده کنید، برای هر محیط یک اپ جداگانه با شاخه‌های متفاوت بسازید.


دیپلوی پیش‌نمایش (Preview Deploys)

ابرکلیک از دیپلوی پیش‌نمایش (preview/branch deploys) پشتیبانی می‌کند — محیط‌های موقت برای هر branch.

برای فعال‌سازی:

  1. در تنظیمات GitHub Integration اپ، گزینه فعال‌سازی دیپلوی پیش‌نمایش را انتخاب کنید
  2. push به هر branch غیر از شاخه اصلی، یک محیط جدید با آدرس <branch>-<app-slug>.apps.abrclick.cloud می‌سازد
  3. این محیط‌ها موقت هستند و پس از merge یا حذف branch به صورت خودکار پاک می‌شوند

امنیت وب‌هوک

ابرکلیک تمام رویدادهای دریافتی از GitHub را با استفاده از HMAC-SHA256 اعتبارسنجی می‌کند.

  • یک کلید مخفی (webhook secret) هنگام ثبت وب‌هوک تولید و در GitHub ذخیره می‌شود
  • GitHub امضای هر درخواست را در هدر X-Hub-Signature-256 ارسال می‌کند
  • ابرکلیک امضا را با مقایسه امن (constant-time) تأیید می‌کند
  • درخواست‌های بدون امضای معتبر رد می‌شوند

این فرآیند کاملاً خودکار است و نیازی به پیکربندی دستی ندارد.


مشاهده‌ی لاگ‌های بیلد

پس از هر push، می‌توانید وضعیت و لاگ‌های بیلد را دنبال کنید:

داشبورد:

  1. اپلیکیشن را باز کنید
  2. به تب Deployments بروید
  3. آخرین دیپلوی را انتخاب کنید تا لاگ‌های کامل را ببینید

CLI:

abrclick deployments list <app-slug>
abrclick deployments logs <app-slug> --deployment <deployment-id>

غیرفعال‌کردن استقرار خودکار

برای توقف موقت استقرار خودکار بدون حذف اتصال GitHub:

  1. به Settings → GitHub Integration بروید
  2. کلید استقرار خودکار را خاموش کنید

در این حالت وب‌هوک ثبت‌شده در GitHub باقی می‌ماند، اما push‌های جدید بیلد جدیدی اجرا نمی‌کنند. برای راه‌اندازی مجدد، کافی است کلید را دوباره فعال کنید.

برای حذف کامل اتصال GitHub از اپ:

abrclick app update <app-slug> --repo "" --branch ""

عیب‌یابی

مشکلراه‌حل
پس از push، بیلد اجرا نشدبررسی کنید push به شاخه‌ی تنظیم‌شده بوده باشد
خطای دسترسی در وب‌هوکمطمئن شوید حساب GitHub متصل‌شده read access به ریپازیتوری دارد
وب‌هوک در GitHub ثبت نشدهاتصال GitHub Integration را حذف و دوباره انجام دهید
بیلد با خطا متوقف شدلاگ‌های کامل را در تب Deployments بررسی کنید
اطلاع

در صورت بروز مشکل در ثبت وب‌هوک، می‌توانید از طریق Settings → GitHub Integration → بازنشانی وب‌هوک اقدام کنید تا وب‌هوک مجدداً روی ریپازیتوری ثبت شود.