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:
- Verify، Format، Vet، Race Test و Build؛
- ساخت Image برای
linux/amd64وlinux/arm64؛ - Push به
ghcr.io/hoa-building-management/backend؛ - Deploy با Digest تغییرناپذیر؛
- انتظار برای Healthcheck و
/readyz؛ - Smoke Test عمومی HTTPS؛
- 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 apiHealthcheck را بدون 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 شوند.