171 lines
3.6 KiB
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
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|