Skip to Content
استقراراز GitHub و GitLab

استقرار از GitHub و GitLab

اگر کد در گیت است، بهترین راه همین است: سرویس را یک بار از مخزن می‌سازید و بعد هر بار که روی شاخه push کنید، نسخهٔ تازه خودکار ساخته و منتشر می‌شود.

GitHub

حساب GitHub را وصل کنید

از منوی کنار پنل، اتصال گیت (یا همان‌جا در پنجرهٔ سرویس جدید) «اتصال گیت‌هاب» را بزنید. به GitHub می‌روید تا اپلیکیشن گردو را نصب کنید. همان‌جا انتخاب می‌کنید گردو به همهٔ مخزن‌ها دسترسی داشته باشد یا فقط به مخزن‌هایی که می‌گویید. می‌توانید آن را روی حساب شخصی یا روی یک سازمان (Organization) نصب کنید.

مخزن و شاخه را انتخاب کنید

در «سرویس جدید ← از گیت‌هاب»، زبانهٔ «گیت‌هاب» را انتخاب کنید، مخزن را جستجو کنید و شاخه (مثلاً main) را بگذارید.

منتشر کنید

بقیهٔ مراحل مثل اولین استقرار است.

استقرار خودکار با هر push

سرویسی که از GitHub ساخته شده، با هر push روی همان شاخه دوباره ساخته و منتشر می‌شود. push روی شاخه‌های دیگر کاری نمی‌کند (به جز پیش‌نمایش Pull Request). روشن و خاموش کردن این رفتار در تنظیمات سرویس است.

گردو وضعیت هر ساخت را با نام gerdoo/deploy کنار همان کامیت در GitHub ثبت می‌کند، پس در صفحهٔ کامیت یا Pull Request می‌بینید ساخت موفق بوده یا نه.

monorepo

اگر چند برنامه در یک مخزن دارید، برای هر کدام یک سرویس جدا بسازید و «پوشهٔ ریشه» را روی پوشهٔ همان برنامه بگذارید (مثلاً apps/web و apps/api). در «مسیرهای تحت نظر» هم مسیر همان برنامه را بنویسید (مثلاً apps/web/**)، تا push روی برنامهٔ دیگر این سرویس را بی‌دلیل دوباره نسازد. اگر برنامه‌ها به یک پوشهٔ مشترک وابسته‌اند (مثلاً packages/ui)، آن را هم به مسیرها اضافه کنید.

GitLab (GitLab.com یا خودمیزبان)

یک توکن دسترسی بسازید

در GitLab از User settings ← Access tokens یک Personal Access Token با اسکوپ api، یا read_api و read_repository بسازید.

GitLab را وصل کنید

در صفحهٔ اتصال گیت بخش GitLab را باز کنید. برای GitLab.com فقط توکن کافی است. برای GitLab خودمیزبان، آدرس کامل آن را هم بنویسید (مثلاً https://gitlab.company.com).

مخزن را انتخاب کنید

در پنجرهٔ سرویس جدید زبانهٔ «گیت‌لب» را بزنید و مخزن و شاخه را انتخاب کنید.

GitLab push را خودکار به گردو خبر نمی‌دهد. برای استقرار خودکار، آدرس Deploy Hook سرویس را بردارید و در GitLab در Settings ← Webhooks پروژه با گزینهٔ «Push events» و شاخهٔ مورد نظر ثبتش کنید. یا در انتهای pipeline، با curl -X POST صدایش بزنید تا فقط بعد از موفق شدن تست‌ها منتشر شود.

آدرس دستی

زبانهٔ «آدرس دستی» برای مخزنی است که نمی‌خواهید حسابش را وصل کنید، یا روی سرویس گیت دیگری است (Gitea، Bitbucket، …). آدرس clone را با https:// بنویسید. اگر مخزن خصوصی است، یک توکن دسترسی (PAT) با اجازهٔ خواندن هم بدهید. این روش هم push را خودکار نمی‌فهمد؛ از Deploy Hook استفاده کنید.

اگر به خطا خوردید

مخزنم در فهرست نیست

اپلیکیشن گردو روی GitHub به آن مخزن دسترسی ندارد. در GitHub به Settings ← Applications ← Installed GitHub Apps ← گردو ← Configure بروید و مخزن را اضافه کنید. اگر مخزن مال یک سازمان است، اپ باید روی همان سازمان نصب شده باشد و ممکن است مدیر سازمان باید تأییدش کند.

«اتصال گیت‌هاب باید تأیید دوباره شود»

گردو دیگر نمی‌تواند با اجازهٔ شما فهرست نصب‌ها را بخواند، مثلاً چون دسترسی را از GitHub پس گرفته‌اید. «اتصال گیت‌هاب» را دوباره بزنید. تا وقتی این کار را نکنید، ساخت سرویس‌های GitHub شکست می‌خورد.

در گزارش ساخت: could not read Username

گردو نتوانست برای clone مخزن خصوصی توکن بگیرد. اگر این یک بار اتفاق افتاده، ساخت را دوباره اجرا کنید؛ اغلب مشکل موقت شبکه است. اگر تکرار شد، اتصال GitHub را بررسی کنید: شاید دسترسی اپ به این مخزن برداشته شده.

«اتصال گیت‌لب ناموفق بود»

توکن اشتباه است، منقضی شده یا اسکوپ کافی ندارد. برای GitLab خودمیزبان، آدرس را کامل و با https:// بنویسید. سرور GitLab باید از اینترنت در دسترس باشد؛ GitLabی که فقط در شبکهٔ داخلی شرکت است به گردو وصل نمی‌شود.

push کردم ولی چیزی ساخته نشد

  • مطمئن شوید روی همان شاخه‌ای push کرده‌اید که سرویس به آن وصل است.
  • استقرار خودکار در تنظیمات سرویس روشن باشد.
  • اگر «مسیرهای تحت نظر» تنظیم شده، تغییر شما باید داخل یکی از آن مسیرها باشد.

قطع اتصال

با «قطع اتصال» در صفحهٔ اتصال گیت فقط اتصال در گردو پاک می‌شود. اپلیکیشن گردو روی GitHub نصب می‌ماند؛ برای حذف کامل، از تنظیمات GitHub هم حذفش کنید.

در سایت گردوسکوی ابری گردو