debian-forge/schemas/osbuild2.json
Christian Kellner 367a044453 osbuild: introduce mount host service
Allows stages to access file systems provided by devices.
This makes mount handling transparent to the stages, i.e.
the individual stages do not need any code for different
file system types and the underlying devices.
2021-06-09 18:37:47 +01:00

167 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", "options"],
"properties": {
"type": { "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",
"additionalProperties": {
"$ref": "#/definitions/mount"
}
},
"mount": {
"title": "Mount point for a stage",
"additionalProperties": false,
"required": ["type", "source", "target"],
"properties": {
"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" }
}
}
}