# Копия .github/workflows/deploy.yml для Gitea Actions. Образы тянутся из # встроенного Container Registry самой Gitea (gitea.netrunner-vpn.com), не # ghcr.io — secrets.GITEA_REGISTRY_TOKEN, не GHCR_TOKEN/GITHUB_TOKEN. # Триггер workflow_run (авто-деплой после успешной сборки) поддерживается не # во всех версиях Gitea Actions — если deploy-dev не срабатывает автоматически # после build, проверить версию Gitea или временно дергать деплой вручную # через workflow_dispatch. name: Deploy # Один пайплайн, две джобы: # - deploy-dev: авто, срабатывает после успешного "Build & Push Image" на main. # - deploy-prod: вручную из вкладки Actions ("Run workflow"), как и раньше. # # .env на обоих VPS теперь полностью собирается этим workflow из repo # Variables/Secrets (тот же принцип, что и в netrunner-data) — руками на # сервере ничего не создаётся и не редактируется, весь конфиг живёт в # Settings → Actions этого репозитория. on: workflow_run: workflows: ["Build & Push Image"] types: [completed] branches: [main] workflow_dispatch: inputs: image_tag: description: "Тег образа в Gitea Registry для прод-деплоя" required: true default: "latest" jobs: deploy-dev: name: Auto-deploy to Dev VPS if: github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'success' runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 with: ref: ${{ github.event.workflow_run.head_sha }} # Копируем compose-файл + Caddyfile (примонтированный конфиг, не образ — # сам Caddy-образ, как и образ бэкенда, дев-сервер тянет из Gitea Registry, # собран в build.yml::build-caddy. Собирать xcaddy прямо на VPS один раз уже не # уложилось в таймаут SSH-деплоя и уронило весь прогон). - name: Sync compose file to Dev VPS uses: appleboy/scp-action@v0.1.7 with: host: ${{ vars.DEV_VPS_IP }} username: root key: ${{ secrets.DEV_SSH_PRIVATE_KEY }} source: "docker-compose.dev-remote.yml,Caddyfile.dev" target: "/root/netrunner-core" strip_components: 0 - name: Write .env and deploy via SSH uses: appleboy/ssh-action@v1 with: host: ${{ vars.DEV_VPS_IP }} username: root key: ${{ secrets.DEV_SSH_PRIVATE_KEY }} envs: "DB_PASSWORD,CF_API_TOKEN,JWT_SECRET,ARGON_SALT,TON_MASTER_WALLET,PROXY_INTERNAL_SECRET,CRYPTOBOT_API_TOKEN,TELOXIDE_TOKEN,BOT_USERNAME,GITEA_REGISTRY_TOKEN" script: | set -e cd /root/netrunner-core # .env — статические значения (никогда не меняются между деплоями) # зашиты здесь же литералом, секреты/domain-специфичное — из vars/secrets. cat > .env < .env <