admin/scripts/notify-deploy.sh
alisaza f9a9afc697 feat: add layout components for various admin dashboard pages
- Introduced layout components for multiple admin dashboard sections including events, audit logs, bank accounts, blog articles, bookings, chat oversight, cities, contact messages, dashboard, discount codes, event categories, guest lists, identity verifications, manage events, manual notifications, notification rules, payments, provinces, push deliveries, reviews, settlements, sms messages, support tickets, user reports, and users.
- Updated metadata for the auth layout to include the admin page title.
- Modified branch protection documentation to clarify deployment notifications.
2026-09-05 14:29:43 +03:30

89 lines
2.5 KiB
Bash
Executable File

#!/usr/bin/env bash
# Notify the ops Telegram group after an admin (backoffice) production deploy.
#
# Usage:
# ./scripts/notify-deploy.sh
# DEPLOY_STATUS=failed ./scripts/notify-deploy.sh
#
# Optional env:
# DEPLOY_SHA git sha (default: GITHUB_SHA or HEAD)
# DEPLOY_STATUS success | failed
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
NOTIFY="$SCRIPT_DIR/notify-ops-telegram.sh"
if [[ ! -x "$NOTIFY" ]]; then
echo "[ghabilee-admin-deploy-notify] skipped: missing $NOTIFY" >&2
exit 0
fi
STATUS="${DEPLOY_STATUS:-success}"
RAW_SHA="${DEPLOY_SHA:-${GITHUB_SHA:-}}"
if [[ -z "$RAW_SHA" ]] && command -v git >/dev/null 2>&1; then
RAW_SHA="$(git rev-parse HEAD 2>/dev/null || true)"
fi
SHORT_SHA="${RAW_SHA:0:7}"
if [[ -z "$SHORT_SHA" ]]; then
SHORT_SHA="unknown"
fi
VERSION="${DEPLOY_VERSION:-}"
if [[ -z "$VERSION" || "$VERSION" == "?" ]]; then
if [[ -f package.json ]]; then
VERSION="$(
python3 -c 'import json,sys; print(json.load(open("package.json")).get("version") or "?")' \
2>/dev/null || echo "?"
)"
else
VERSION="?"
fi
fi
SUBJECT="${DEPLOY_COMMIT_SUBJECT:-}"
if [[ -z "$SUBJECT" ]] && command -v git >/dev/null 2>&1; then
SUBJECT="$(git log -1 --format=%s 2>/dev/null || true)"
fi
# فقط عنوان commit — body چندخطی نباید در پیام بیاید
if [[ -n "$SUBJECT" ]]; then
SUBJECT="${SUBJECT%%$'\n'*}"
SUBJECT="${SUBJECT%%$'\r'*}"
fi
if [[ ${#SUBJECT} -gt 100 ]]; then
SUBJECT="${SUBJECT:0:97}..."
fi
MESSAGE="$(
STATUS="$STATUS" VERSION="$VERSION" SHORT_SHA="$SHORT_SHA" SUBJECT="$SUBJECT" python3 - <<'PY'
import os
from datetime import datetime
from zoneinfo import ZoneInfo
def fa(s: str) -> str:
return s.translate(str.maketrans("0123456789", "۰۱۲۳۴۵۶۷۸۹"))
status = os.environ.get("STATUS", "success")
version = os.environ.get("VERSION", "?")
sha = os.environ.get("SHORT_SHA", "?")
subject = os.environ.get("SUBJECT", "").strip()
now = datetime.now(ZoneInfo("Asia/Tehran"))
time_line = fa(now.strftime("%H:%M"))
lines: list[str] = []
if status == "failed":
lines.append("🛠 پنل ادمین قبیله گیر کرد — CI یه بار دیگه؟")
else:
lines.append("🛡 پنل ادمین قبیله به‌روز شد")
lines.append("")
lines.append(f"🕐 {time_line} · نسخه {fa(version)} · {sha}")
if subject:
lines.append(f"📝 {subject}")
if status != "failed":
lines.append("🏠 https://backoffice.ghabilee.ir")
print("\n".join(lines))
PY
)"
printf '%s' "$MESSAGE" | "$NOTIFY"