60f96fc8da
Add githubRepos list field for cloning multiple repositories into a single dev container with multi-root workspace file generation. Remove the unused dynamic deployment mode (Knative, routing proxy, serverless scripts) to simplify the chart to persistent-only. Fix release workflow cache-to setting that violated the no-cache policy. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
263 lines
6.8 KiB
JSON
263 lines
6.8 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"$id": "https://github.com/cpfarhood/devcontainer/chart/values.schema.json",
|
|
"title": "Dev Container Helm Chart Values Schema",
|
|
"description": "Schema for validating values.yaml in the Dev Container Helm chart",
|
|
"type": "object",
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"description": "Instance name used to generate resource names",
|
|
"pattern": "^[a-z0-9][a-z0-9-]*[a-z0-9]$",
|
|
"minLength": 1,
|
|
"maxLength": 63
|
|
},
|
|
"image": {
|
|
"type": "object",
|
|
"properties": {
|
|
"repository": {
|
|
"type": "string",
|
|
"description": "Container image repository"
|
|
},
|
|
"tag": {
|
|
"type": "string",
|
|
"description": "Container image tag"
|
|
},
|
|
"pullPolicy": {
|
|
"type": "string",
|
|
"enum": ["Always", "IfNotPresent", "Never"],
|
|
"description": "Image pull policy"
|
|
}
|
|
},
|
|
"required": ["repository", "tag"]
|
|
},
|
|
"githubRepo": {
|
|
"type": "string",
|
|
"description": "GitHub repository URL to clone into /workspace"
|
|
},
|
|
"githubRepos": {
|
|
"type": "array",
|
|
"items": { "type": "string" },
|
|
"description": "Multiple GitHub repository URLs to clone (takes precedence over githubRepo)"
|
|
},
|
|
"fileManager": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean",
|
|
"description": "Enable the built-in web file manager"
|
|
},
|
|
"allowedPaths": {
|
|
"type": "string",
|
|
"description": "Paths accessible by the file manager (AUTO, ALL, or comma-separated list)"
|
|
},
|
|
"deniedPaths": {
|
|
"type": "string",
|
|
"description": "Paths to deny access to (takes precedence over allowedPaths)"
|
|
}
|
|
},
|
|
"required": ["enabled"]
|
|
},
|
|
"ide": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": ["vscode", "antigravity", "none"],
|
|
"description": "IDE to launch in the container"
|
|
}
|
|
},
|
|
"required": ["type"]
|
|
},
|
|
"ssh": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean",
|
|
"description": "Enable SSH server on port 22"
|
|
}
|
|
},
|
|
"required": ["enabled"]
|
|
},
|
|
"display": {
|
|
"type": "object",
|
|
"properties": {
|
|
"width": {
|
|
"type": "string",
|
|
"pattern": "^[0-9]+$",
|
|
"description": "VNC display width in pixels"
|
|
},
|
|
"height": {
|
|
"type": "string",
|
|
"pattern": "^[0-9]+$",
|
|
"description": "VNC display height in pixels"
|
|
},
|
|
"secureConnection": {
|
|
"type": "string",
|
|
"enum": ["0", "1"],
|
|
"description": "Enable secure VNC connection"
|
|
}
|
|
},
|
|
"required": ["width", "height", "secureConnection"]
|
|
},
|
|
"user": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"pattern": "^[0-9]+$",
|
|
"description": "User ID (UID)"
|
|
},
|
|
"groupId": {
|
|
"type": "string",
|
|
"pattern": "^[0-9]+$",
|
|
"description": "Group ID (GID)"
|
|
}
|
|
},
|
|
"required": ["id", "groupId"]
|
|
},
|
|
"storage": {
|
|
"type": "object",
|
|
"properties": {
|
|
"size": {
|
|
"type": "string",
|
|
"pattern": "^[0-9]+[KMGT]i$",
|
|
"description": "Storage size (e.g., 32Gi)"
|
|
},
|
|
"className": {
|
|
"type": "string",
|
|
"description": "Storage class name (must support ReadWriteMany)"
|
|
}
|
|
},
|
|
"required": ["size"]
|
|
},
|
|
"resources": {
|
|
"type": "object",
|
|
"properties": {
|
|
"requests": {
|
|
"$ref": "#/$defs/resourceSpec"
|
|
},
|
|
"limits": {
|
|
"$ref": "#/$defs/resourceSpec"
|
|
}
|
|
},
|
|
"required": ["requests", "limits"]
|
|
},
|
|
"shm": {
|
|
"type": "object",
|
|
"properties": {
|
|
"sizeLimit": {
|
|
"type": "string",
|
|
"pattern": "^[0-9]+[KMGT]i$",
|
|
"description": "Shared memory size limit"
|
|
}
|
|
},
|
|
"required": ["sizeLimit"]
|
|
},
|
|
"clusterAccess": {
|
|
"type": "string",
|
|
"enum": ["none", "readonlyns", "readwritens", "readonly", "readwrite"],
|
|
"description": "Kubernetes cluster access level"
|
|
},
|
|
"mcp": {
|
|
"type": "object",
|
|
"properties": {
|
|
"sidecars": {
|
|
"type": "object",
|
|
"properties": {
|
|
"kubernetes": {
|
|
"$ref": "#/$defs/mcpSidecar"
|
|
},
|
|
"flux": {
|
|
"$ref": "#/$defs/mcpSidecar"
|
|
},
|
|
"homeassistant": {
|
|
"$ref": "#/$defs/mcpSidecar"
|
|
},
|
|
"pgtuner": {
|
|
"$ref": "#/$defs/mcpSidecar"
|
|
},
|
|
"helm": {
|
|
"$ref": "#/$defs/mcpSidecar"
|
|
},
|
|
"playwright": {
|
|
"$ref": "#/$defs/mcpSidecar"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"required": ["sidecars"]
|
|
},
|
|
"envSecretName": {
|
|
"type": "string",
|
|
"description": "Custom environment secret name"
|
|
},
|
|
"resourceProfile": {
|
|
"type": "string",
|
|
"enum": ["auto", "small", "medium", "large", "xlarge"],
|
|
"description": "Resource profile preset"
|
|
}
|
|
},
|
|
"required": ["name"],
|
|
"$defs": {
|
|
"resourceSpec": {
|
|
"type": "object",
|
|
"properties": {
|
|
"memory": {
|
|
"type": "string",
|
|
"pattern": "^[0-9]+[KMGT]i$",
|
|
"description": "Memory resource specification"
|
|
},
|
|
"cpu": {
|
|
"type": "string",
|
|
"pattern": "^[0-9]+m?$",
|
|
"description": "CPU resource specification"
|
|
}
|
|
},
|
|
"required": ["memory", "cpu"]
|
|
},
|
|
"mcpSidecar": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean",
|
|
"description": "Enable this MCP sidecar"
|
|
},
|
|
"image": {
|
|
"type": "object",
|
|
"properties": {
|
|
"repository": {
|
|
"type": "string"
|
|
},
|
|
"tag": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["repository", "tag"]
|
|
},
|
|
"port": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 65535,
|
|
"description": "Port for the MCP sidecar"
|
|
},
|
|
"resources": {
|
|
"type": "object",
|
|
"properties": {
|
|
"requests": {
|
|
"$ref": "#/$defs/resourceSpec"
|
|
},
|
|
"limits": {
|
|
"$ref": "#/$defs/resourceSpec"
|
|
}
|
|
},
|
|
"required": ["requests", "limits"]
|
|
}
|
|
},
|
|
"required": ["enabled", "image", "port", "resources"]
|
|
}
|
|
}
|
|
}
|