name: Deploy to VPS (Manual) # Деплой запускается ТОЛЬКО вручную из вкладки Actions ("Run workflow"). # Образ к этому моменту уже собран и лежит в GHCR (workflow "Build & Push Image"). on: workflow_dispatch: inputs: image_tag: description: "Тег образа в GHCR для выката" required: true default: "latest" jobs: deploy: name: Pull & restart on VPS runs-on: ubuntu-24.04 steps: - name: Remote deploy via SSH uses: appleboy/ssh-action@v1 with: host: ${{ secrets.VPS_IP }} username: root key: ${{ secrets.SSH_PRIVATE_KEY }} envs: GHCR_TOKEN,IMAGE script: | set -e cd /root/netrunner-core export IMAGE="ghcr.io/${{ github.repository_owner }}/netrunner-control-plane:${{ github.event.inputs.image_tag }}" echo "🚀 Deploying ${IMAGE}" echo "${GHCR_TOKEN}" | docker login ghcr.io -u ${{ github.repository_owner }} --password-stdin # Тянем свежий образ, прогоняем миграции (one-shot) и поднимаем сервисы. docker compose -f docker-compose.prod.yml pull docker compose -f docker-compose.prod.yml up -d --remove-orphans # Чистим старые слои. docker image prune -f echo "✅ Uplink synchronized." env: GHCR_TOKEN: ${{ secrets.GHCR_TOKEN }} IMAGE: ghcr.io/${{ github.repository_owner }}/netrunner-control-plane:${{ github.event.inputs.image_tag }}