consolidate runtime env into .env, drop ecosystem env blocks (#1229)
- Make .env the single source of truth for runtime config. Remove all
`env:` blocks from SREBOT/ecosystem.config.js and TSSBOT/ecosystem.config.js
so values can't silently shadow .env. Both ecosystem files load .env via
`require('dotenv').config()` and PM2 inherits the resolved environment.
- Rename SREBOT_STORAGE_VOL_PATH → STORAGE_VOL_PATH across all readers
(BOT/utils.py, BOT/receiver_bridge.py, BOT/render_recap.py, server.js,
web/server.js, dateindex.js, scripts/*, srebot.service, tests/, README,
and both .env files). STORAGE is shared between SREBOT and TSSBOT, so the
variable shouldn't carry one bot's prefix.
- Rename per-process PORT env vars to disambiguated names so .env can be
the source of truth without collisions:
PORT (api) → SREBOT_API_PORT (server.js)
PORT (web) → SREBOT_WEB_PORT (web/server.js)
WEBHOOK_PORT → SREBOT_WEBHOOK_PORT (github_webhook_updater.py)
SREBOT_EXTERNAL_HOST/PORT/UPSTREAM_URL were already uniquely named;
they just move from ecosystem env to .env.
- TSSBOT/.env: drop GITHUB_WEBHOOK_SECRET (only srebot-webhook consumes it)
and the stale SREBOT_DEPLOY_PATH. SREBOT/.env: also drop the obsolete
SREBOT_DEPLOY_PATH (ecosystem now hardcodes __dirname).
- ecosystem.config.js no longer references SREBOT_DEPLOY_PATH; deploy path
is always __dirname of the ecosystem file.
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -26,9 +26,9 @@ load_dotenv()
|
||||
APPLICATION_ID = "1254679514466877540"
|
||||
TARGET_GUILD = "1379510072815779961"
|
||||
TOKEN = os.environ.get("DISCORD_KEY", "")
|
||||
_storage_env = os.environ.get("SREBOT_STORAGE_VOL_PATH", "").strip()
|
||||
_storage_env = os.environ.get("STORAGE_VOL_PATH", "").strip()
|
||||
if not _storage_env:
|
||||
raise RuntimeError("SREBOT_STORAGE_VOL_PATH must be set")
|
||||
raise RuntimeError("STORAGE_VOL_PATH must be set")
|
||||
STORAGE = Path(_storage_env)
|
||||
DB_PATH = STORAGE / "entitlements.db"
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ def _infer_storage_root(auth_file: Path) -> Path:
|
||||
|
||||
|
||||
def _prepare_env(storage_root: Path) -> None:
|
||||
os.environ["SREBOT_STORAGE_VOL_PATH"] = str(storage_root)
|
||||
os.environ["STORAGE_VOL_PATH"] = str(storage_root)
|
||||
|
||||
|
||||
def _score_hit(clan: dict[str, Any], needle: str) -> bool:
|
||||
@@ -72,10 +72,10 @@ async def _main() -> int:
|
||||
auth_file = Path(args.auth_file).expanduser().resolve()
|
||||
storage_root = _infer_storage_root(auth_file)
|
||||
else:
|
||||
storage_root_env = os.environ.get("SREBOT_STORAGE_VOL_PATH", "").strip()
|
||||
storage_root_env = os.environ.get("STORAGE_VOL_PATH", "").strip()
|
||||
if not storage_root_env:
|
||||
print(
|
||||
"SREBOT_STORAGE_VOL_PATH is not set. Export it or pass --auth-file.",
|
||||
"STORAGE_VOL_PATH is not set. Export it or pass --auth-file.",
|
||||
file=sys.stderr,
|
||||
)
|
||||
return 2
|
||||
|
||||
@@ -46,7 +46,7 @@ logging.basicConfig(
|
||||
log = logging.getLogger("migrate_clan_id")
|
||||
|
||||
|
||||
# Auto-load the repo's .env so SREBOT_STORAGE_VOL_PATH and friends resolve when
|
||||
# Auto-load the repo's .env so STORAGE_VOL_PATH and friends resolve when
|
||||
# the script is run directly (PM2/services already get them from .env).
|
||||
try:
|
||||
from dotenv import load_dotenv
|
||||
@@ -59,9 +59,9 @@ try:
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
_storage_env = os.environ.get("SREBOT_STORAGE_VOL_PATH", "").strip()
|
||||
_storage_env = os.environ.get("STORAGE_VOL_PATH", "").strip()
|
||||
if not _storage_env:
|
||||
raise RuntimeError("SREBOT_STORAGE_VOL_PATH must be set")
|
||||
raise RuntimeError("STORAGE_VOL_PATH must be set")
|
||||
STORAGE_DIR = Path(_storage_env)
|
||||
|
||||
SQ_BATTLES_DB = STORAGE_DIR / "sq_battles.db"
|
||||
|
||||
@@ -17,9 +17,9 @@ from pathlib import Path
|
||||
|
||||
REPO_ROOT = Path(__file__).resolve().parents[1]
|
||||
DEFAULT_SOURCE = REPO_ROOT / "replays"
|
||||
_storage_env = os.environ.get("SREBOT_STORAGE_VOL_PATH", "").strip()
|
||||
_storage_env = os.environ.get("STORAGE_VOL_PATH", "").strip()
|
||||
if not _storage_env:
|
||||
raise RuntimeError("SREBOT_STORAGE_VOL_PATH must be set")
|
||||
raise RuntimeError("STORAGE_VOL_PATH must be set")
|
||||
DEFAULT_STORAGE = Path(_storage_env)
|
||||
|
||||
LEGACY_REPLAY_DIR = re.compile(r"^0([0-9a-fA-F]+)$")
|
||||
|
||||
Reference in New Issue
Block a user