The previous commit gave the individual mounts more control over the source and target properties. Do not require them at the global schema but hand the control if they are optional over to the modules.
168 lines
4.3 KiB
JSON
168 lines
4.3 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"$id": "https://osbuild.org/schemas/osbuild2.json",
|
|
|
|
"title": "OSBuild Manifest",
|
|
"description": "OSBuild manifest describing a pipeline and all parameters",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"pipelines": { "$ref": "#/definitions/pipelines" },
|
|
"sources": { "$ref": "#/definitions/sources" },
|
|
"version": {
|
|
"enum": ["2"]
|
|
}
|
|
},
|
|
|
|
"definitions": {
|
|
|
|
"devices": {
|
|
"title": "Collection of devices for a stage",
|
|
"additionalProperties": {
|
|
"$ref": "#/definitions/device"
|
|
}
|
|
},
|
|
|
|
"device": {
|
|
"title": "Device for a stage",
|
|
"additionalProperties": false,
|
|
"required": ["type"],
|
|
"properties": {
|
|
"type": { "type": "string" },
|
|
"parent": { "type": "string" },
|
|
"options": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
}
|
|
}
|
|
},
|
|
|
|
"inputs": {
|
|
"title": "Collection of inputs for a stage",
|
|
"additionalProperties": false,
|
|
"patternProperties": {
|
|
"^[a-zA-Z][a-zA-Z0-9_\\-\\.]{0,254}": {
|
|
"$ref": "#/definitions/input"
|
|
}
|
|
}
|
|
},
|
|
|
|
"input": {
|
|
"title": "Single input for a stage",
|
|
"additionalProperties": false,
|
|
"required": ["type", "origin", "references"],
|
|
"properties": {
|
|
"type": { "type": "string" },
|
|
"origin": { "enum": ["org.osbuild.source", "org.osbuild.pipeline"] },
|
|
"references": { "$ref": "#/definitions/reference" },
|
|
"options": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
}
|
|
}
|
|
},
|
|
|
|
"mounts": {
|
|
"title": "Collection of mount points for a stage",
|
|
"type": "array",
|
|
"items": { "$ref": "#/definitions/mount"}
|
|
},
|
|
|
|
"mount": {
|
|
"title": "Mount point for a stage",
|
|
"additionalProperties": false,
|
|
"required": ["name", "type"],
|
|
"properties": {
|
|
"name": { "type": "string" },
|
|
"type": { "type": "string" },
|
|
"source": {
|
|
"type": "string"
|
|
},
|
|
"target": {
|
|
"type": "string"
|
|
},
|
|
"options": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
}
|
|
}
|
|
},
|
|
|
|
"pipelines": {
|
|
"title": "Collection of pipelines to execute",
|
|
"description": "Array of pipelines to execute one after another",
|
|
"type": "array",
|
|
"items": { "$ref": "#/definitions/pipeline" }
|
|
},
|
|
|
|
"pipeline": {
|
|
"title": "Pipeline Description",
|
|
"description": "Full description of a pipeline to execute",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"name": { "type:": "string" },
|
|
"build": { "type": "string" },
|
|
"runner": { "type": "string" },
|
|
"stages": { "$ref": "#/definitions/stages" }
|
|
}
|
|
},
|
|
|
|
"reference": {
|
|
"oneOf":[
|
|
{
|
|
"type": "array",
|
|
"items": { "type": "string" }
|
|
},{
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
}
|
|
]
|
|
},
|
|
|
|
"source": {
|
|
"title": "External Source",
|
|
"description": "External source to be passed to the pipeline",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"items": { "$ref": "#/definitions/reference" },
|
|
"options": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
}
|
|
},
|
|
"required": ["items"]
|
|
},
|
|
|
|
"sources": {
|
|
"title": "Collection of External Sources",
|
|
"description": "Collection of external sources to be passed to the pipeline",
|
|
"type": "object",
|
|
"additionalProperties": { "$ref": "#/definitions/source" }
|
|
},
|
|
|
|
"stage": {
|
|
"title": "Pipeline Stage",
|
|
"description": "Single stage of a pipeline executing one step",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"type": { "type": "string" },
|
|
"devices": { "$ref": "#/definitions/devices" },
|
|
"inputs": {"$ref": "#/definitions/inputs" },
|
|
"mounts": {"$ref": "#/definitions/mounts" },
|
|
"options": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
}
|
|
},
|
|
"required": [ "type" ]
|
|
},
|
|
|
|
"stages": {
|
|
"type": "array",
|
|
"items": { "$ref": "#/definitions/stage" }
|
|
}
|
|
}
|
|
}
|