fix: harden cloud api port env handling
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
import { createCloudApiServer } from "../../internal/cloud/server.mjs";
|
import { createCloudApiServer } from "../../internal/cloud/server.mjs";
|
||||||
|
|
||||||
const host = process.env.HWLAB_CLOUD_API_HOST || "0.0.0.0";
|
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 commitId = process.env.HWLAB_COMMIT_ID || process.env.HWLAB_GIT_SHA;
|
||||||
const codeAgentTimeoutMs = parseTimeout(process.env.HWLAB_CODE_AGENT_TIMEOUT_MS, 600000, {
|
const codeAgentTimeoutMs = parseTimeout(process.env.HWLAB_CODE_AGENT_TIMEOUT_MS, 600000, {
|
||||||
min: 1000,
|
min: 1000,
|
||||||
@@ -32,6 +32,12 @@ function parseTimeout(value, fallback, { min, max }) {
|
|||||||
return Math.min(Math.max(parsed, 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, () => {
|
server.listen(port, host, () => {
|
||||||
const address = server.address();
|
const address = server.address();
|
||||||
const resolvedPort = typeof address === "object" && address ? address.port : port;
|
const resolvedPort = typeof address === "object" && address ? address.port : port;
|
||||||
|
|||||||
@@ -189,6 +189,7 @@
|
|||||||
"env": {
|
"env": {
|
||||||
"HWLAB_ENVIRONMENT": "dev",
|
"HWLAB_ENVIRONMENT": "dev",
|
||||||
"HWLAB_PUBLIC_ENDPOINT": "http://74.48.78.17:16667",
|
"HWLAB_PUBLIC_ENDPOINT": "http://74.48.78.17:16667",
|
||||||
|
"HWLAB_CLOUD_API_PORT": "6667",
|
||||||
"HWLAB_COMMIT_ID": "3ebbbbf",
|
"HWLAB_COMMIT_ID": "3ebbbbf",
|
||||||
"HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-api:3ebbbbf",
|
"HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-api:3ebbbbf",
|
||||||
"HWLAB_IMAGE_TAG": "3ebbbbf",
|
"HWLAB_IMAGE_TAG": "3ebbbbf",
|
||||||
|
|||||||
@@ -47,6 +47,10 @@
|
|||||||
"name": "HWLAB_PUBLIC_ENDPOINT",
|
"name": "HWLAB_PUBLIC_ENDPOINT",
|
||||||
"value": "http://74.48.78.17:16667"
|
"value": "http://74.48.78.17:16667"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "HWLAB_CLOUD_API_PORT",
|
||||||
|
"value": "6667"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "HWLAB_COMMIT_ID",
|
"name": "HWLAB_COMMIT_ID",
|
||||||
"value": "3ebbbbf"
|
"value": "3ebbbbf"
|
||||||
|
|||||||
@@ -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
|
Deployment,再由同一次 `kubectl apply -k deploy/k8s/dev` 从源码 desired-state
|
||||||
重新创建;报告中记录 cleanup 计划和实际动作。不要把这种 cleanup 做成某个服务
|
重新创建;报告中记录 cleanup 计划和实际动作。不要把这种 cleanup 做成某个服务
|
||||||
或某个 skill 的特例。
|
或某个 skill 的特例。
|
||||||
|
- Kubernetes service links 会为同 namespace Service 自动注入形如
|
||||||
|
`HWLAB_CLOUD_API_PORT=tcp://...` 的环境变量。应用入口不得直接把这类 env 当作
|
||||||
|
数字端口解析;desired-state 应显式声明服务自身监听端口
|
||||||
|
`HWLAB_CLOUD_API_PORT=6667`,入口代码也必须只接受合法数值端口,否则回落到
|
||||||
|
内置默认值。
|
||||||
|
|
||||||
## DEV CD Transaction
|
## DEV CD Transaction
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user