新增演示:构建隔离演示环境全套SQL种子资产与系统元数据基线
This commit is contained in:
1 parent
e9f468cefd
commit
7c0d86078b
11 files changed
+1631
-33
No files matched your search
@@ -0,0 +1,116 @@
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
import time
|
||||
import socket
|
||||
from pathlib import Path
|
||||
|
||||
def is_port_listening(port, timeout=1.0):
|
||||
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
|
||||
s.settimeout(timeout)
|
||||
return s.connect_ex(('127.0.0.1', port)) == 0
|
||||
|
||||
def kill_port(port):
|
||||
try:
|
||||
out = subprocess.check_output(["lsof", "-ti", f":{port}"], text=True).strip()
|
||||
if out:
|
||||
for pid_str in out.split():
|
||||
print(f"Killing process {pid_str} on port {port}...")
|
||||
subprocess.run(["kill", "-9", pid_str], check=False)
|
||||
time.sleep(1)
|
||||
except subprocess.CalledProcessError:
|
||||
pass
|
||||
|
||||
def main():
|
||||
repo_root = Path(__file__).resolve().parent.parent.parent
|
||||
os.chdir(repo_root)
|
||||
|
||||
# 1. Kill any existing 8096 process
|
||||
kill_port(8096)
|
||||
|
||||
# 2. Parse ~/.railwaysystem-qa.env safely
|
||||
env = os.environ.copy()
|
||||
env_file = Path.home() / ".railwaysystem-qa.env"
|
||||
if env_file.exists():
|
||||
with open(env_file, 'r', encoding='utf-8') as f:
|
||||
for line in f:
|
||||
line = line.strip()
|
||||
if not line or line.startswith('#') or '=' not in line:
|
||||
continue
|
||||
k, v = line.split('=', 1)
|
||||
k = k.strip()
|
||||
v = v.strip().strip("'\"")
|
||||
env[k] = v
|
||||
print(f"Loaded credentials from {env_file.name}")
|
||||
else:
|
||||
print("Warning: ~/.railwaysystem-qa.env not found!")
|
||||
|
||||
# Explicit Demo Clean database configuration
|
||||
db_url = "jdbc:kingbase8://127.0.0.1:14321/training_demo_clean?currentSchema=public,sys_catalog&useUnicode=true&characterEncoding=utf8"
|
||||
db_user = "kingbase"
|
||||
db_pass = "sict123456"
|
||||
|
||||
env["SPRING_DATASOURCE_DRUID_MASTER_URL"] = db_url
|
||||
env["SPRING_DATASOURCE_DRUID_MASTER_USERNAME"] = db_user
|
||||
env["SPRING_DATASOURCE_DRUID_MASTER_PASSWORD"] = db_pass
|
||||
env["SERVER_PORT"] = "8096"
|
||||
env["DMS_ENABLED"] = "false"
|
||||
env["SPRING_REDIS_HOST"] = "127.0.0.1"
|
||||
env["SPRING_REDIS_PORT"] = "6379"
|
||||
|
||||
log_path = repo_root / "backend-demo.log"
|
||||
log_file = open(log_path, "w", encoding="utf-8")
|
||||
|
||||
cmd = [
|
||||
"java",
|
||||
"--add-opens=java.base/java.lang=ALL-UNNAMED",
|
||||
"--add-opens=java.base/java.lang.reflect=ALL-UNNAMED",
|
||||
"--add-opens=java.base/java.util=ALL-UNNAMED",
|
||||
"-jar",
|
||||
str(repo_root / "RuoYi-Vue/ruoyi-admin/target/ruoyi-admin.jar"),
|
||||
"--server.port=8096",
|
||||
f"--spring.datasource.druid.master.url={db_url}",
|
||||
f"--spring.datasource.druid.master.username={db_user}",
|
||||
f"--spring.datasource.druid.master.password={db_pass}",
|
||||
"--spring.redis.host=127.0.0.1",
|
||||
"--spring.redis.port=6379",
|
||||
"--dms.enabled=false",
|
||||
]
|
||||
|
||||
print("Starting RuoYi backend against training_demo_clean...")
|
||||
proc = subprocess.Popen(
|
||||
cmd,
|
||||
cwd=repo_root,
|
||||
env=env,
|
||||
stdout=log_file,
|
||||
stderr=subprocess.STDOUT,
|
||||
start_new_session=True
|
||||
)
|
||||
print(f"Backend started with PID: {proc.pid}")
|
||||
|
||||
# Wait for port 8096 to become active
|
||||
max_wait = 40
|
||||
start_time = time.time()
|
||||
listening = False
|
||||
while time.time() - start_time < max_wait:
|
||||
if proc.poll() is not None:
|
||||
print(f"Backend process exited prematurely with code {proc.returncode}!")
|
||||
with open(log_path, 'r', encoding='utf-8') as f:
|
||||
lines = f.readlines()
|
||||
print("Last 30 lines of log:")
|
||||
for l in lines[-30:]:
|
||||
print(l, end='')
|
||||
sys.exit(1)
|
||||
if is_port_listening(8096):
|
||||
listening = True
|
||||
break
|
||||
time.sleep(1)
|
||||
|
||||
if listening:
|
||||
print(f"Backend successfully listening on port 8096! (PID {proc.pid})")
|
||||
else:
|
||||
print("Timed out waiting for port 8096.")
|
||||
sys.exit(1)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in new issue
Block a user