fix: start isolated server for release acceptance gates
This commit is contained in:
parent
074f52fddc
commit
3899eac34f
|
|
@ -13,6 +13,8 @@ import subprocess
|
|||
import sys
|
||||
import tarfile
|
||||
import tempfile
|
||||
import time
|
||||
import urllib.request
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
OUT_ROOT = Path(os.environ.get("TIMMY_RELEASE_DIR", "/root/timmy-releases"))
|
||||
|
|
@ -89,8 +91,32 @@ def main() -> int:
|
|||
run(["git", "checkout", "--quiet", commit], tree)
|
||||
run(["npm", "ci", "--ignore-scripts"], tree)
|
||||
run(["npm", "test"], tree)
|
||||
run(["npm", "run", "test:ui"], tree)
|
||||
run(["npm", "run", "test:photo"], tree)
|
||||
server_env = dict(os.environ)
|
||||
server_env.update({"HOST": "127.0.0.1", "PORT": "4173", "TIMMY_VISION_ENABLED": "false"})
|
||||
server_log = (release_dir / "acceptance-server.log").open("w", encoding="utf-8")
|
||||
server = subprocess.Popen(["node", "server.mjs"], cwd=tree, env=server_env,
|
||||
stdout=server_log, stderr=subprocess.STDOUT, text=True)
|
||||
try:
|
||||
for _ in range(50):
|
||||
if server.poll() is not None:
|
||||
raise SystemExit("Acceptance server exited before readiness")
|
||||
try:
|
||||
urllib.request.urlopen("http://127.0.0.1:4173/", timeout=1).read(1)
|
||||
break
|
||||
except Exception:
|
||||
time.sleep(0.1)
|
||||
else:
|
||||
raise SystemExit("Acceptance server did not become ready")
|
||||
run(["npm", "run", "test:ui"], tree)
|
||||
run(["npm", "run", "test:photo"], tree)
|
||||
finally:
|
||||
server.terminate()
|
||||
try:
|
||||
server.wait(timeout=5)
|
||||
except subprocess.TimeoutExpired:
|
||||
server.kill()
|
||||
server.wait(timeout=5)
|
||||
server_log.close()
|
||||
run(["npm", "audit", "--audit-level=high"], tree)
|
||||
for file in ("app.js", "server.mjs", "service-worker.js", "src/analysis.js", "src/domain.js", "src/vision-config.js", "src/vision-service.js"):
|
||||
run(["node", "--check", file], tree)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user