fester/project.schema.json

171 lines
3.6 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Fester Project Definition",
"type": "object",
"required": ["name", "source", "targets"],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"description": "Human-readable project name"
},
"version": {
"type": "string",
"description": "Optional project version tag (release tracking)",
"default": "0.0.0"
},
"source": {
"type": "object",
"required": ["type", "url"],
"additionalProperties": false,
"properties": {
"type": {
"type": "string",
"enum": ["git", "hg", "svn", "cvs"],
"description": "Source control system type (normalized into snapshot)"
},
"url": {
"type": "string",
"description": "Repository URL or path for checkout/export"
},
"ref": {
"type": "string",
"description": "Optional branch/tag/revision reference (git branch, svn rev, hg changeset)",
"default": "HEAD"
}
}
},
"targets": {
"type": "object",
"description": "Build targets mapped to shell commands",
"additionalProperties": {
"type": "string"
}
},
"resources": {
"type": "object",
"description": "Optional resource hints for scheduler optimization",
"properties": {
"max_parallel_builds": {
"type": "integer",
"minimum": 1,
"maximum": 256,
"default": 64
},
"thermal_priority": {
"type": "string",
"enum": ["low", "balanced", "high_safety"],
"default": "high_safety"
},
"preferred_nodes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional node names preferred for this project"
},
"avoid_nodes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Nodes to exclude from scheduling"
}
}
},
"build_env": {
"type": "object",
"description": "Environment variables injected into build runtime",
"additionalProperties": {
"type": "string"
}
},
"artifacts": {
"type": "object",
"description": "Output packaging configuration",
"properties": {
"enabled": {
"type": "boolean",
"default": true
},
"format": {
"type": "string",
"enum": ["tar", "tar.gz", "tar.zst", "deb", "rpm"],
"default": "tar.zst"
},
"output_dir": {
"type": "string",
"default": "./dist"
},
"naming": {
"type": "string",
"description": "Artifact naming template",
"default": "{name}-{version}-{target}-{hash}"
}
}
},
"cache": {
"type": "object",
"description": "Build cache behavior control",
"properties": {
"enabled": {
"type": "boolean",
"default": true
},
"reuse_snapshots": {
"type": "boolean",
"default": true
},
"skip_if_unchanged": {
"type": "boolean",
"default": true
}
}
},
"logging": {
"type": "object",
"properties": {
"verbose": {
"type": "boolean",
"default": true
},
"stream_to_ui": {
"type": "boolean",
"default": true
}
}
}
}
}