particle-os-cli/test-files/schema/recipe-v1.json
2025-01-31 22:29:31 -05:00

98 lines
No EOL
3.3 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "recipe-v1.json",
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The image name. Used when publishing to GHCR as `ghcr.io/user/name`."
},
"description": {
"type": "string",
"description": "The image description. Published to GHCR in the image metadata."
},
"alt-tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Allows setting custom tags on the recipes final image.\nAdding tags to this property will override the `latest` and timestamp tags."
},
"base-image": {
"type": "string",
"description": "The [OCI](https://opencontainers.org/) image to base your custom image on.\nOnly atomic Fedora images and those based on them are officially supported.\nUniversal Blue is recommended. [A list of Universal Blue's images](https://universal-blue.org/images/) can be found on their website\nBlueBuild-built images can be used as well."
},
"image-version": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "The tag of the base image to build on.\nUsed to select a version explicitly (`40`) or to always use the latest stable version (`latest`).\nA list of all available tags can be viewed by pasting your `base-image` url into your browser."
},
"blue-build-tag": {
"type": "string",
"description": "The tag to pull for the bluebuild cli. This is mostly used for\ntrying out specific versions of the cli without compiling it locally."
},
"stages": {
"type": "array",
"items": {
"$ref": "#/$defs/StageEntry"
},
"description": "A list of [stages](https://blue-build.org/reference/stages/) that are executed before the build of the final image.\nThis is useful for compiling programs from source without polluting the final bootable image."
},
"modules": {
"type": "array",
"items": {
"$ref": "#/$defs/ModuleEntry"
},
"description": "A list of [modules](https://blue-build.org/reference/module/) that is executed in order. Multiple of the same module can be included.\n\nEach item in this list should have at least a `type:` or be specified to be included from an external file in the `recipes/` directory with `from-file:`."
}
},
"required": [
"name",
"description",
"base-image",
"image-version",
"modules"
],
"additionalProperties": false,
"$defs": {
"StageEntry": {
"anyOf": [
{
"$ref": "stage-v1.json"
},
{
"$ref": "#/$defs/ImportedModule"
}
]
},
"ModuleEntry": {
"anyOf": [
{
"$ref": "module-v1.json"
},
{
"$ref": "#/$defs/ImportedModule"
}
]
},
"ImportedModule": {
"type": "object",
"properties": {
"from-file": {
"type": "string",
"description": "The path to another file containing module configuration to import here.\nhttps://blue-build.org/how-to/multiple-files/"
}
},
"required": [
"from-file"
],
"additionalProperties": false
}
}
}