98 lines
No EOL
3.3 KiB
JSON
98 lines
No EOL
3.3 KiB
JSON
{
|
||
"$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 recipe’s 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
|
||
}
|
||
}
|
||
} |