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 sys
|
||||||
import tarfile
|
import tarfile
|
||||||
import tempfile
|
import tempfile
|
||||||
|
import time
|
||||||
|
import urllib.request
|
||||||
|
|
||||||
ROOT = Path(__file__).resolve().parents[1]
|
ROOT = Path(__file__).resolve().parents[1]
|
||||||
OUT_ROOT = Path(os.environ.get("TIMMY_RELEASE_DIR", "/root/timmy-releases"))
|
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(["git", "checkout", "--quiet", commit], tree)
|
||||||
run(["npm", "ci", "--ignore-scripts"], tree)
|
run(["npm", "ci", "--ignore-scripts"], tree)
|
||||||
run(["npm", "test"], tree)
|
run(["npm", "test"], 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:ui"], tree)
|
||||||
run(["npm", "run", "test:photo"], 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)
|
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"):
|
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)
|
run(["node", "--check", file], tree)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user