پرش به محتویات

Deploy، Verification و Rollback

این Runbook نخستین Deploy، بررسی سلامت، Rollback دستی و حدود امنیت عملیات را پوشش می‌دهد.

مخاطب: DevOps/SRE و Maintainer دارای دسترسی Environment.

خارج از دامنه: Down Migration، حذف Volume و تغییر Stackهای دیگر VPS.

۹. نخستین Deploy و بررسی نتیجه

پس از Push کردن Branch، Pull Request بسازید و منتظر موفق شدن Checkهای اجباری بمانید. Merge به main Workflow با نام Build and deploy development را اجرا می‌کند.

Workflow:

  1. Verify، Format، Vet، Race Test و Build؛
  2. ساخت Image برای linux/amd64 و linux/arm64؛
  3. Push به ghcr.io/hoa-building-management/backend؛
  4. Deploy با Digest تغییرناپذیر؛
  5. انتظار برای Healthcheck و /readyz؛
  6. Smoke Test عمومی HTTPS؛
  7. Rollback خودکار در شکست Startup یا Smoke Test.

بررسی وضعیت روی VPS:

cd /opt/applications/tripylon-backend
docker compose -f compose.production.yml ps
docker compose -f compose.production.yml logs --tail=100 api
docker compose -f compose.production.yml logs --tail=100 postgres
  • ps وضعیت و Health Containerها را نشان می‌دهد.
  • logs --tail=100 فقط ۱۰۰ خط آخر سرویس انتخاب‌شده را چاپ می‌کند.

بررسی عمومی از سیستم محلی:

curl.exe --fail --show-error https://api.iranihosts.com/health
curl.exe --fail --show-error https://api.iranihosts.com/livez
curl.exe --fail --show-error https://api.iranihosts.com/readyz

Swagger UI و قرارداد خام:

https://api.iranihosts.com/docs/
https://api.iranihosts.com/openapi.yaml

۱۰. Rollback دستی

Digest قبلی را از GHCR یا یک Run موفق GitHub Actions بردارید:

cd /opt/applications/tripylon-backend
export IMAGE_REF='ghcr.io/hoa-building-management/backend@sha256:PREVIOUS_DIGEST'
docker compose -f compose.production.yml pull api
docker compose -f compose.production.yml up -d --remove-orphans --wait --wait-timeout 180
docker compose -f compose.production.yml exec -T api /app/api healthcheck http://127.0.0.1:8080/readyz
  • IMAGE_REF باید Digest کامل و تغییرناپذیر باشد.
  • pull api فقط Image سرویس API را دریافت می‌کند.
  • --remove-orphans فقط Containerهای خارج از Manifest همین Project را حذف می‌کند.
  • --wait --wait-timeout 180 حداکثر ۱۸۰ ثانیه منتظر سلامت می‌ماند.
  • exec -T api Healthcheck را بدون TTY داخل Container API اجرا می‌کند.

Rollback برنامه Schema را Rollback نمی‌کند. Migration باید Backward-compatible و با Expand/Contract باشد.

۱۱. حدود امنیت و عملیات

  • .env سرور، Secret PostgreSQL، Private SSH Key و GHCR Token Commit نمی‌شوند.
  • StrictHostKeyChecking غیرفعال نمی‌شود.
  • Deploy با Digest انجام می‌شود؛ Tag فقط برای پیدا کردن Image است.
  • Docker Credential فقط برای کاربر deploy ذخیره می‌شود.
  • دسترسی مستقیم اینترنت به PostgreSQL و API ممنوع است.
  • Rotation SSH/GHCR، Patch VPS، Backup خارج از سرور و Restore Drill پیش از Production الزامی‌اند.
  • Stackهای dong و documents نباید در Deploy یا Rollback Tripylon Restart یا Remove شوند.

بازگشت به فهرست عملیات Backend