name: Deploy admin to VPS # Finland (git / act_runner): build image + Telegram notify # Iran: runtime only (compose up pre-built image) on: push: branches: [main] workflow_dispatch: concurrency: group: deploy-admin-production cancel-in-progress: true jobs: deploy: name: Build on Finland, run on Iran runs-on: ubuntu-latest timeout-minutes: 90 steps: - uses: actions/checkout@v4 - name: Deploy (Finland build → Iran runtime) env: FINLAND_SSH_KEY: ${{ secrets.FINLAND_SSH_KEY }} FINLAND_HOST: ${{ secrets.FINLAND_HOST }} FINLAND_USER: ${{ secrets.FINLAND_USER }} IRAN_SSH_KEY: ${{ secrets.VPS_SSH_KEY }} IRAN_HOST: ${{ secrets.VPS_HOST }} IRAN_USER: ${{ secrets.VPS_USER }} run: | set -euo pipefail test -n "${FINLAND_SSH_KEY:-}" test -n "${FINLAND_HOST:-}" test -n "${FINLAND_USER:-}" test -n "${IRAN_SSH_KEY:-}" test -n "${IRAN_HOST:-}" test -n "${IRAN_USER:-}" if ! command -v rsync >/dev/null 2>&1 || ! command -v ssh >/dev/null 2>&1; then apt-get update -qq apt-get install -y -qq rsync openssh-client fi chmod +x scripts/deploy-finland-to-iran.sh IMAGE_TAG="ghabilee-admin:${GITHUB_SHA}" ./scripts/deploy-finland-to-iran.sh - name: Notify Telegram if: always() continue-on-error: true env: DEPLOY_SHA: ${{ github.sha }} DEPLOY_STATUS: ${{ job.status }} DEPLOY_COMMIT_SUBJECT: ${{ github.event.head_commit.message }} TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }} TELEGRAM_GROUP_CHAT_ID: ${{ secrets.TELEGRAM_GROUP_CHAT_ID }} TELEGRAM_GROUP_THREAD_ID: ${{ secrets.TELEGRAM_GROUP_THREAD_ID }} TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }} run: | export DEPLOY_VERSION="$(node -p "require('./package.json').version" 2>/dev/null || echo '?')" case "${DEPLOY_STATUS}" in success) export DEPLOY_STATUS=success ;; *) export DEPLOY_STATUS=failed ;; esac chmod +x scripts/notify-from-finland.sh scripts/notify-ops-telegram.sh scripts/notify-deploy.sh ./scripts/notify-from-finland.sh