fix: 校验 Code Agent Codex home 挂载契约

This commit is contained in:
Code Queue Review
2026-05-24 07:29:51 +00:00
parent 7a3727be95
commit a47c38ef22
3 changed files with 60 additions and 5 deletions
+16 -2
View File
@@ -98,6 +98,12 @@ export function inspectCodeAgentProviderManifestRefs({ deployEnv = {}, workloadE
if (deployEnv?.CODEX_HOME !== contract.codexHome.path || workloadInspection.codexHome.present !== true) {
missingCodexHomeContract.push(`CODEX_HOME must be ${contract.codexHome.path}`);
}
if (workloadInspection.codexHome.writableHomeMountPresent !== true) {
missingCodexHomeContract.push(`${contract.codexHome.path} must be a writable volumeMount`);
}
if (workloadInspection.codexHome.emptyDirPresent !== true) {
missingCodexHomeContract.push(`${contract.codexHome.path} must be backed by emptyDir`);
}
if (workloadInspection.codexHome.configMapPresent !== true) {
missingCodexHomeContract.push(`${contract.codexHome.configMapName}/${contract.codexHome.configKey}`);
}
@@ -424,6 +430,13 @@ function inspectCodexHomeWorkloadMounts(workloadEnv = {}) {
const volumeMounts = Array.isArray(workloadEnv.__volumeMounts) ? workloadEnv.__volumeMounts : [];
const volumes = Array.isArray(workloadEnv.__volumes) ? workloadEnv.__volumes : [];
const homeMount = volumeMounts.find((entry) => entry?.name === "hwlab-code-agent-codex-home" && entry?.mountPath === contract.codexHome.path);
const writableHomeMount = homeMount && homeMount.readOnly !== true;
const homeVolume = volumes.find((entry) =>
entry?.name === "hwlab-code-agent-codex-home" &&
entry?.emptyDir &&
typeof entry.emptyDir === "object" &&
!Array.isArray(entry.emptyDir)
);
const configMount = volumeMounts.find((entry) =>
entry?.name === "hwlab-code-agent-codex-config" &&
entry?.mountPath === `${contract.codexHome.path}/${contract.codexHome.configKey}` &&
@@ -448,8 +461,9 @@ function inspectCodexHomeWorkloadMounts(workloadEnv = {}) {
);
return {
path: contract.codexHome.path,
present: Boolean(homeMount),
writableHomeMountPresent: Boolean(homeMount),
present: Boolean(writableHomeMount && homeVolume),
writableHomeMountPresent: Boolean(writableHomeMount),
emptyDirPresent: Boolean(homeVolume),
configMapPresent: Boolean(configMount && configVolume),
authSecretPresent: Boolean(authMount && authVolume),
configMapName: contract.codexHome.configMapName,