Weblines Cloudمستندات

ساخت اپ از Git

دیپلوی از ریپوی گیت عمومی یا خصوصی — اتصال GitHub، Access Token یا Deploy Key، روش build و پورت.

آخرین به‌روزرسانی:

با این روش لازم نیست خودتان image بسازید: پلتفرم ریپو را clone می‌کند، build می‌گیرد و اجرا می‌کند. ریپوی عمومی و خصوصی هر دو پشتیبانی می‌شوند.

پیش‌نیاز#

  • اپ روی یک پورتِ مشخص و روی 0.0.0.0 گوش دهد.
  • secret در ریپو commit نشده باشد.
  • برای build با Dockerfile: Dockerfile در ریشه یا مسیرِ مشخص. بدونِ Dockerfile، build خودکار زبان را تشخیص می‌دهد (build خودکار برای Node.js).

کدام روشِ دسترسی؟#

Repo accessمناسب برایURL ریپو
Publicریپوی عمومیhttps://github.com/org/app
GitHub (connected)ساده‌ترین برای ریپوی خصوصیِ GitHub؛ باید GitHub را در SETTINGS → INTEGRATIONS وصل کرده باشیداز لیست انتخاب می‌شود
Access TokenGitLab، Gitea یا هر میزبانِ گیت با توکنhttps://…
Deploy Keyکمترین دسترسی: کلیدی فقط برای یک ریپو، فقط‌خواندنیSSH، مثلاً git@github.com:org/app.git

مراحل در ویزارد#

  1. SERVICES → + NEW SERVICE → Custom app.
  2. NAME & SIZE: نامِ اپ و پک.
  3. SOURCE: گزینه‌ی Git Repo، آدرسِ ریپو و branch. اگر GitHub وصل است، با «Use a connected GitHub repo» از لیست انتخاب کنید.
  4. OPTIONS:
    • Port — پیش‌فرض برای گیت 3000.
    • Repo access — یکی از چهار روشِ جدولِ بالا.
    • Build settings — Auto (پیشنهادی)، Dockerfile با مسیرِ فایل، یا Docker Compose با مسیرِ فایل و نامِ سرویسِ اصلی.
    • در صورت نیاز، دیتابیسی از همین سازمان را وصل کنید.
  5. REVIEW: CREATE & DEPLOY. لاگِ build زنده در ویزارد نمایش داده می‌شود.

ساختنِ Deploy Key#

روی سیستمِ خودتان:

bash
ssh-keygen -t ed25519 -C "weblines-deploy" -f ./weblines-deploy -N ""
  1. weblines-deploy.pub (عمومی) را در تنظیماتِ ریپو اضافه کنید — GitHub: Settings → Deploy keys → Add deploy key، فقط Read.
  2. در ویزارد، Deploy Key → NEW KEY: یک نام بدهید و محتوای weblines-deploy (خصوصی) را paste کنید. برای اپ‌های بعدی، SAVED KEY را انتخاب کنید.

کلیدِ خصوصی فقط به موتورِ دیپلوی فرستاده می‌شود و در مرورگر نمی‌ماند.

نکته‌هایی که ویزارد از کدِ شما پیدا می‌کند#

وقتی ریپو را از GitHubِ وصل‌شده انتخاب می‌کنید (یا ZIP آپلود می‌کنید)، ویزارد کد را می‌خواند و قبل از ساخت این‌ها را نشان می‌دهد:

  • متغیرهای لازم: اگر .env.example (یا فایلِ نمونه‌ی مشابه) دارید، نامِ متغیرهایش به کادرِ متغیرهای محیطی اضافه می‌شود. فقط نام می‌آید، نه مقدار. مقدار را بنویسید؛ خطی که خالی بماند تنظیم نمی‌شود. برای کلیدهای امنیتی (مثلِ SECRET_KEY) دکمه‌ای هست که مقدارِ تصادفی می‌سازد.
  • هشدارِ داده‌ی داخلِ کانتینر: اگر پروژه SQLite داخلِ پوشه‌ی پروژه دارد، در data/ یا uploads/ فایل می‌نویسد، DATA_DIR دارد یا فایلِ دیتابیس همراهِ کد است، ویزارد هشدار می‌دهد که این داده‌ها با هر دیپلو و ری‌استارت پاک می‌شوند. راه‌حل: یک دیتابیس وصل کنید یا پوشه را روی فضای دائمی بگذارید.

build خودکار برای Node.js#

با Build settings → Auto و بدونِ Dockerfile در ریپو، پلتفرم برای پروژه‌ی Node یک Dockerfile می‌سازد:

  • مدیرِ بسته از packageManager، preinstall، فایلِ lock و pnpm-workspace.yaml تشخیص داده می‌شود: npm، pnpm، Yarn یا bun.
  • monorepo و workspace: کلِ درخت کپی و نصب می‌شود. اگر ریشه اسکریپتِ start نداشته باشد، تنها پکیجی که start دارد اجرا می‌شود.
  • نسخه‌ی Node از engines.node یا .nvmrc خوانده می‌شود.
  • با هر دیپلوی از برنچ، طرحِ build از نو ساخته می‌شود؛ پس تغییرِ مدیرِ بسته یا نسخه‌ی Node در کد خودش اعمال می‌شود. اگر بعداً Dockerfileِ خودتان را به ریپو اضافه کنید، همان استفاده می‌شود.

Dockerfileِ نمونه (Node)#

dockerfile
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["node", "dist/server.js"]

انتشارِ تغییرات#

اینکه push خودش دیپلوی کند یا نه، به روشِ دسترسی بستگی دارد:

Repo accessبعد از push
GitHub (connected)به انتخابِ شما. در ویزارد، بخشِ On git push: خودکار (پیش‌فرض) یا دستی. بعداً در Settings → Build & run با گزینه‌ی «Deploy automatically on every push» عوض می‌شود.
Public، Access Token، Deploy Keyخودکار نیست. DEPLOY را بزنید، یا Deploy Hook یا دیپلوی از CI را وصل کنید.

برای دیپلوی با هر push روی یک ریپوی GitHub (عمومی یا خصوصی)، GitHub را در SETTINGS → INTEGRATIONS وصل کنید و ریپو را از لیست انتخاب کنید.

دیپلوی دستی: روی کارتِ اپ DEPLOY را بزنید — build با cache انجام می‌شود. FULL BUILD بدونِ cache است و بسیار کندتر؛ فقط وقتی وابستگی‌ها یا Dockerfile عوض شده‌اند.

خطاهای رایج#

خطاعلت
Permission denied (publickey)کلیدِ عمومی در ریپو اضافه نشده، یا URL به‌جای SSH با https:// است
authentication failedتوکن منقضی شده یا دسترسیِ خواندنِ ریپو را ندارد
build موفق، سایت باز نمی‌شودپورتِ ویزارد با پورتِ واقعیِ اپ یکی نیست

بیشتر: خطای دیپلوی

جوابت را پیدا نکردی؟

تیکت از پنل یا تماس در ساعاتِ کاری: ۰۲۱-۸۸۷۱۷۴۵۱

ثبتِ تیکت