From 864d4bc85202a6694f331e5bde1a36d1c1439adc Mon Sep 17 00:00:00 2001 From: nineap Date: Fri, 10 Jul 2026 18:18:47 +0700 Subject: [PATCH] =?UTF-8?q?CI=20=D1=81=D0=B0=D0=BC=20=D1=81=D0=BE=D0=B1?= =?UTF-8?q?=D0=B8=D1=80=D0=B0=D0=B5=D1=82=20.env=20=D0=BD=D0=B0=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B4/dev=20VPS=20=D0=B8=D0=B7=20repo=20Variables/?= =?UTF-8?q?Secrets?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Раньше .env копировался на сервер руками по .env.example — теперь deploy-prod/deploy-dev в deploy.yml пишут его сами перед docker compose up, тем же принципом, что уже был у netrunner-data. .env.example остаётся только как справочник по составу переменных, не инструкция "скопируй на сервер". --- .env.dev-remote.example | 7 ++- .env.example | 10 ++++ .gitea/workflows/deploy.yml | 101 ++++++++++++++++++++++++++++++++++- .github/workflows/deploy.yml | 101 ++++++++++++++++++++++++++++++++++- 4 files changed, 213 insertions(+), 6 deletions(-) diff --git a/.env.dev-remote.example b/.env.dev-remote.example index d5b8e1f..6357da9 100644 --- a/.env.dev-remote.example +++ b/.env.dev-remote.example @@ -1,6 +1,9 @@ # ===================================================================== -# DEV VPS (docker-compose.dev-remote.yml). Скопируй в .env прямо на -# сервере (в DEPLOY_DIR) — файл гитигнорится, в репозиторий не попадает. +# УСТАРЕЛО КАК ИНСТРУКЦИЯ: .env на dev VPS теперь собирает сам deploy.yml +# (job deploy-dev) из repo Variables/Secrets — руками копировать больше не +# нужно. Файл остаётся только как справочник по составу переменных. +# +# DEV VPS (docker-compose.dev-remote.yml). # # ВАЖНО: Telegram Login Widget не работает на голом IP — /setdomain в # BotFather принимает только доменное имя. На этот dev VPS (45.76.161.137) diff --git a/.env.example b/.env.example index 904ca2c..7a1c078 100644 --- a/.env.example +++ b/.env.example @@ -1,3 +1,13 @@ +# ===================================================================== +# ЭТОТ ФАЙЛ БОЛЬШЕ НЕ КОПИРУЕТСЯ РУКАМИ НА СЕРВЕР. .env на проде (и на +# dev-стенде) теперь целиком собирается .gitea/workflows/deploy.yml (job +# deploy-prod/deploy-dev) из repo Variables/Secrets этого репозитория при +# каждом деплое — см. комментарии в самом deploy.yml, там точная карта +# "какая переменная .env ← какой vars.*/secrets.*". Файл ниже остаётся +# только как справочник по тому, какие ключи вообще существуют, и для +# локальной разработки (docker-compose.yml, см. .env.dev.example). +# ===================================================================== + # ===================================================================== # === DATABASE CONFIGURATION === # ===================================================================== diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index d3974cc..1e53702 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -9,6 +9,11 @@ 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"] @@ -45,16 +50,43 @@ jobs: target: "/root/netrunner-core" strip_components: 0 - - name: Remote deploy via SSH + - 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" script: | set -e cd /root/netrunner-core + # .env — статические значения (никогда не меняются между деплоями) + # зашиты здесь же литералом, секреты/domain-специфичное — из vars/secrets. + cat > .env < .env < .env < .env <