fix(deploy): include edge channel contract in manager release

This commit is contained in:
Codex
2026-08-11 21:15:26 +03:00
parent 35c37de586
commit f53759cb15
4 changed files with 32 additions and 20 deletions
@@ -12,7 +12,7 @@ const devicePlaneRoot = resolve(platformRoot, "device-plane");
const designRoot = resolve(process.env.NODEDC_DEVICE_MANAGER_SOURCE_ROOT || resolve(platformRoot, "../NODEDC_DESIGN_GUIDELINE")); const designRoot = resolve(process.env.NODEDC_DEVICE_MANAGER_SOURCE_ROOT || resolve(platformRoot, "../NODEDC_DESIGN_GUIDELINE"));
const managerRoot = resolve(designRoot, "apps/device-manager"); const managerRoot = resolve(designRoot, "apps/device-manager");
const artifactDir = resolve(process.env.NODEDC_DEPLOY_ARTIFACT_DIR || resolve(scriptDir, "../deploy-artifacts")); const artifactDir = resolve(process.env.NODEDC_DEPLOY_ARTIFACT_DIR || resolve(scriptDir, "../deploy-artifacts"));
const [patchId = "device-manager-release-20260811-013", ...extra] = process.argv.slice(2); const [patchId = "device-manager-release-20260811-014", ...extra] = process.argv.slice(2);
if (extra.length || !/^[A-Za-z0-9._-]{1,96}$/.test(patchId)) throw new Error("usage: build-device-manager-control-plane-artifact.mjs [patch-id]"); if (extra.length || !/^[A-Za-z0-9._-]{1,96}$/.test(patchId)) throw new Error("usage: build-device-manager-control-plane-artifact.mjs [patch-id]");
const entries = [ const entries = [
@@ -21,6 +21,7 @@ const entries = [
"package-lock.json", "package-lock.json",
"docker-compose.device-manager.yml", "docker-compose.device-manager.yml",
"packages/device-protocol-contract", "packages/device-protocol-contract",
"packages/device-edge-channel-contract",
"packages/arusnavi-b2-adapter", "packages/arusnavi-b2-adapter",
"services/device-control-core", "services/device-control-core",
"services/device-gateway/package.json", "services/device-gateway/package.json",
@@ -61,26 +62,28 @@ try {
} }
await copySafe(resolve(devicePlaneRoot, entry), join(payload, entry), devicePlaneRoot); await copySafe(resolve(devicePlaneRoot, entry), join(payload, entry), devicePlaneRoot);
} }
const coreImport = spawnSync( for (const modulePath of [
process.execPath, "services/device-control-core/src/sensitive-reference-management.mjs",
[ "packages/device-edge-channel-contract/src/index.mjs",
"--input-type=module", ]) {
"--eval", const coreImport = spawnSync(
`import(${JSON.stringify(pathToFileURL(join( process.execPath,
payload, [
"services/device-control-core/src/sensitive-reference-management.mjs", "--input-type=module",
)).href)})`, "--eval",
], `import(${JSON.stringify(pathToFileURL(join(payload, modulePath)).href)})`,
{ ],
cwd: payload, {
encoding: "utf8", cwd: payload,
maxBuffer: 16 * 1024 * 1024, encoding: "utf8",
}, maxBuffer: 16 * 1024 * 1024,
); },
if (coreImport.status !== 0) {
throw new Error(
`device_control_core_staged_module_import_failed:${coreImport.stderr || coreImport.stdout}`,
); );
if (coreImport.status !== 0) {
throw new Error(
`device_control_core_staged_module_import_failed:${modulePath}:${coreImport.stderr || coreImport.stdout}`,
);
}
} }
const compose = await readFile(join(payload, "docker-compose.device-manager.yml"), "utf8"); const compose = await readFile(join(payload, "docker-compose.device-manager.yml"), "utf8");
for (const required of [ for (const required of [
+3
View File
@@ -298,6 +298,7 @@ DEVICE_PLANE_MANAGER_RELEASE_V2_ENTRIES = (
"package-lock.json", "package-lock.json",
DEVICE_PLANE_MANAGER_COMPOSE_REL, DEVICE_PLANE_MANAGER_COMPOSE_REL,
"packages/device-protocol-contract", "packages/device-protocol-contract",
"packages/device-edge-channel-contract",
"packages/arusnavi-b2-adapter", "packages/arusnavi-b2-adapter",
"services/device-control-core", "services/device-control-core",
"services/device-gateway/package.json", "services/device-gateway/package.json",
@@ -3531,6 +3532,7 @@ def allowed_payload_path(component, rel):
DEVICE_PLANE_MANAGER_RECONCILIATION_REL, DEVICE_PLANE_MANAGER_RECONCILIATION_REL,
DEVICE_PLANE_MANAGER_V2_RECONCILIATION_REL, DEVICE_PLANE_MANAGER_V2_RECONCILIATION_REL,
"packages/device-protocol-contract", "packages/device-protocol-contract",
"packages/device-edge-channel-contract",
"packages/arusnavi-b2-adapter", "packages/arusnavi-b2-adapter",
"services/device-control-core", "services/device-control-core",
"services/device-gateway", "services/device-gateway",
@@ -3541,6 +3543,7 @@ def allowed_payload_path(component, rel):
return True return True
if rel.startswith(( if rel.startswith((
"packages/device-protocol-contract/", "packages/device-protocol-contract/",
"packages/device-edge-channel-contract/",
"packages/arusnavi-b2-adapter/", "packages/arusnavi-b2-adapter/",
"services/device-control-core/", "services/device-control-core/",
"services/device-gateway/", "services/device-gateway/",
@@ -205,6 +205,11 @@ class DeviceManagerControlPlaneArtifactsTest(unittest.TestCase):
"payload/services/device-control-core/src/credential-reference.mjs", "payload/services/device-control-core/src/credential-reference.mjs",
names, names,
) )
self.assertIn(
"payload/packages/device-edge-channel-contract/src/index.mjs",
names,
)
self.assertIn("packages/device-edge-channel-contract", entries)
self.assertFalse(any(name.endswith(".test.mjs") for name in names)) self.assertFalse(any(name.endswith(".test.mjs") for name in names))
self.assertEqual(result["services"], ["device-control-core", "device-manager"]) self.assertEqual(result["services"], ["device-control-core", "device-manager"])
self.assertNotIn("device-postgres", result["services"]) self.assertNotIn("device-postgres", result["services"])
@@ -107,6 +107,7 @@ class DevicePlaneRegistryTest(unittest.TestCase):
".dockerignore", ".dockerignore",
"docker-compose.device-plane.yml", "docker-compose.device-plane.yml",
"packages/device-protocol-contract/src/index.mjs", "packages/device-protocol-contract/src/index.mjs",
"packages/device-edge-channel-contract/src/index.mjs",
"services/device-control-core/Dockerfile", "services/device-control-core/Dockerfile",
"services/device-gateway/src/runtime.mjs", "services/device-gateway/src/runtime.mjs",
): ):