squadron/squadron.schema.json
2025-04-10 09:03:27 +02:00

283 lines
8.1 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://github.com/foomo/squadron/internal/config/config",
"$ref": "#/$defs/Config",
"$defs": {
"Build": {
"properties": {
"context": {
"type": "string",
"description": "Build context"
},
"add_host": {
"items": {
"type": "string"
},
"type": "array",
"description": "AddHost add a custom host-to-IP mapping (format: \"host:ip\")"
},
"allow": {
"items": {
"type": "string"
},
"type": "array",
"description": "Allow extra privileged entitlement (e.g., \"network.host\", \"security.insecure\")"
},
"attest": {
"items": {
"type": "string"
},
"type": "array",
"description": "Attest parameters (format: \"type=sbom,generator=image\")"
},
"build_arg": {
"items": {
"type": "string"
},
"type": "array",
"description": "BuildArg set build-time variables"
},
"build_context": {
"items": {
"type": "string"
},
"type": "array",
"description": "BuildContext additional build contexts (e.g., name=path)"
},
"builder": {
"type": "string",
"description": "Builder override the configured builder instance"
},
"cache_from": {
"type": "string",
"description": "CacheFrom external cache sources (e.g., \"user/app:cache\", \"type=local,src=path/to/dir\")"
},
"cache_to": {
"type": "string",
"description": "CacheTo cache export destinations (e.g., \"user/app:cache\", \"type=local,dest=path/to/dir\")"
},
"cgroup_parent": {
"type": "string",
"description": "CGroupParent optional parent cgroup for the container"
},
"file": {
"type": "string",
"description": "File name of the Dockerfile (default: \"PATH/Dockerfile\")"
},
"iidfile": {
"type": "string",
"description": "IIDFile write the image ID to the file"
},
"label": {
"items": {
"type": "string"
},
"type": "array",
"description": "Label wet metadata for an image"
},
"load": {
"type": "boolean",
"description": "Load shorthand for \"--output=type=docker\""
},
"metadata_file": {
"type": "string",
"description": "MetadataFile write build result metadata to the file"
},
"network": {
"type": "string",
"description": "Network set the networking mode for the \"RUN\" instructions during build (default \"default\")"
},
"no_cache": {
"type": "boolean",
"description": "NoCache do not use cache when building the image"
},
"no_cache_filter": {
"items": {
"type": "string"
},
"type": "array",
"description": "NoCacheFilter do not cache specified stages"
},
"output": {
"type": "string",
"description": "Output destination (format: \"type=local,dest=path\")"
},
"platform": {
"type": "string",
"description": "Platform set target platform for build"
},
"secret": {
"items": {
"type": "string"
},
"type": "array",
"description": "Secret to expose to the build (format: \"id=mysecret[,src=/local/secret]\")"
},
"shm_size": {
"type": "string",
"description": "ShmSize size of \"/dev/shm\""
},
"ssh": {
"type": "string",
"description": "SSH agent socket or keys to expose to the build (format: \"default|\u003cid\u003e[=\u003csocket\u003e|\u003ckey\u003e[,\u003ckey\u003e]]\")"
},
"tag": {
"type": "string",
"description": "Tag name and optionally a tag (format: \"name:tag\")"
},
"image": {
"type": "string",
"description": "Image name"
},
"target": {
"type": "string",
"description": "Target set the target build stage to build"
},
"ulimit": {
"type": "string",
"description": "ULimit ulimit options (default [])"
},
"dependencies": {
"items": {
"type": "string"
},
"type": "array",
"description": "Dependencies list of build names defined in the squadron configuration"
},
"quiet": {
"type": "boolean",
"description": "Suppress the build output and print image ID on succes"
},
"pull": {
"type": "boolean",
"description": "Always attempt to pull all referenced images"
},
"push": {
"type": "boolean",
"description": "Shorthand for \"--output=type=registry\""
}
},
"additionalProperties": false,
"type": "object"
},
"Chart": {
"properties": {
"name": {
"type": "string",
"description": "Chart name"
},
"repository": {
"type": "string",
"description": "Chart repository"
},
"schema": {
"type": "string",
"description": "Values schema json"
},
"version": {
"type": "string",
"description": "Chart version"
},
"alias": {
"type": "string",
"description": "Chart alias"
}
},
"additionalProperties": false,
"type": "object"
},
"Config": {
"properties": {
"version": {
"type": "string",
"pattern": "^[0-9]\\.[0-9]$",
"description": "Version of the schema"
},
"vars": {
"type": "object",
"description": "Global values to be injected into all squadron values"
},
"global": {
"type": "object",
"description": "Global values to be injected into all squadron values"
},
"builds": {
"additionalProperties": {
"$ref": "#/$defs/Build"
},
"type": "object",
"description": "Global builds that can be referenced as dependencies"
},
"squadron": {
"additionalProperties": {
"additionalProperties": {
"$ref": "#/$defs/Unit"
},
"type": "object"
},
"type": "object",
"description": "Squadron definitions"
}
},
"additionalProperties": false,
"type": "object",
"required": [
"version"
]
},
"Tags": {
"items": {
"type": "string"
},
"type": "array"
},
"Unit": {
"properties": {
"name": {
"type": "string",
"description": "Optional release name"
},
"chart": {
"anyOf": [
{
"type": "string"
},
{
"$ref": "#/$defs/Chart"
}
],
"description": "Chart settings"
},
"tags": {
"$ref": "#/$defs/Tags",
"description": "List of tags"
},
"priority": {
"type": "integer",
"description": "Installation priority, higher comes first"
},
"extends": {
"type": "string",
"description": "Extend chart values"
},
"kustomize": {
"type": "string",
"description": "Kustomize files path"
},
"builds": {
"additionalProperties": {
"$ref": "#/$defs/Build"
},
"type": "object",
"description": "Map of containers to build"
},
"values": {
"type": "object",
"description": "Chart values"
}
},
"additionalProperties": false,
"type": "object"
}
}
}