fix: harden cloud api port env handling

This commit is contained in:
Codex
2026-05-24 18:03:09 +00:00
parent 89b5773349
commit fa216f1cd8
4 changed files with 17 additions and 1 deletions
+7 -1
View File
@@ -2,7 +2,7 @@
import { createCloudApiServer } from "../../internal/cloud/server.mjs";
const host = process.env.HWLAB_CLOUD_API_HOST || "0.0.0.0";
const port = Number.parseInt(process.env.HWLAB_CLOUD_API_PORT || process.env.PORT || "6667", 10);
const port = parsePort(process.env.HWLAB_CLOUD_API_PORT, parsePort(process.env.PORT, 6667));
const commitId = process.env.HWLAB_COMMIT_ID || process.env.HWLAB_GIT_SHA;
const codeAgentTimeoutMs = parseTimeout(process.env.HWLAB_CODE_AGENT_TIMEOUT_MS, 600000, {
min: 1000,
@@ -32,6 +32,12 @@ function parseTimeout(value, fallback, { min, max }) {
return Math.min(Math.max(parsed, min), max);
}
function parsePort(value, fallback) {
const parsed = Number.parseInt(value || "", 10);
if (!Number.isInteger(parsed) || parsed < 0 || parsed >= 65536) return fallback;
return parsed;
}
server.listen(port, host, () => {
const address = server.address();
const resolvedPort = typeof address === "object" && address ? address.port : port;
+1
View File
@@ -189,6 +189,7 @@
"env": {
"HWLAB_ENVIRONMENT": "dev",
"HWLAB_PUBLIC_ENDPOINT": "http://74.48.78.17:16667",
"HWLAB_CLOUD_API_PORT": "6667",
"HWLAB_COMMIT_ID": "3ebbbbf",
"HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-api:3ebbbbf",
"HWLAB_IMAGE_TAG": "3ebbbbf",
+4
View File
@@ -47,6 +47,10 @@
"name": "HWLAB_PUBLIC_ENDPOINT",
"value": "http://74.48.78.17:16667"
},
{
"name": "HWLAB_CLOUD_API_PORT",
"value": "6667"
},
{
"name": "HWLAB_COMMIT_ID",
"value": "3ebbbbf"
+5
View File
@@ -183,6 +183,11 @@ node tools/hwlab-cli/bin/hwlab-cli.mjs cicd report <cd-job-id>
Deployment,再由同一次 `kubectl apply -k deploy/k8s/dev` 从源码 desired-state
重新创建;报告中记录 cleanup 计划和实际动作。不要把这种 cleanup 做成某个服务
或某个 skill 的特例。
- Kubernetes service links 会为同 namespace Service 自动注入形如
`HWLAB_CLOUD_API_PORT=tcp://...` 的环境变量。应用入口不得直接把这类 env 当作
数字端口解析;desired-state 应显式声明服务自身监听端口
`HWLAB_CLOUD_API_PORT=6667`,入口代码也必须只接受合法数值端口,否则回落到
内置默认值。
## DEV CD Transaction