{
  "$schema": "https://json-schema.org/schema",
  "version": 2,
  "title": "Build executor",
  "description": "Builds an image using instructions from the Dockerfile and a specified build context directory.",
  "type": "object",
  "properties": {
    "engine": {
      "type": "string",
      "default": "docker"
    },
    "quiet": {
      "type": "boolean",
      "default": false
    },
    "add-hosts": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "List of customs host-to-IP mapping (e.g., docker:10.180.0.1)"
    },
    "allow": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "List of extra privileged entitlement (eg. network.host,security.insecure)"
    },
    "build-args": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "List of build-time variables"
    },
    "build-contexts": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "List of additional build contexts (e.g., name=path)"
    },
    "builder": {
      "type": "string",
      "description": "Builder instance (see setup-buildx action)"
    },
    "cache-from": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      ],
      "description": "List of external cache sources for buildx (eg. user/app:cache, type=local,src=path/to/dir)"
    },
    "cache-to": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      ],
      "description": "List of cache export destinations for buildx (eg. user/app:cache, type=local,dest=path/to/dir)"
    },
    "cgroup-parent": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Optional parent cgroup for the container used in the build"
    },
    "context": {
      "type": "string",
      "description": "Build's context is the set of files located in the specified PATH or URL (default .)"
    },
    "file": {
      "type": "string",
      "description": "Path to the Dockerfile (default Dockerfile)"
    },
    "labels": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "List of metadata for an image"
    },
    "load": {
      "type": "boolean",
      "description": "Load is a shorthand for --output=type=docker (default false)",
      "default": false
    },
    "network": {
      "type": "string",
      "description": "Set the networking mode for the RUN instructions during build"
    },
    "no-cache": {
      "type": "boolean",
      "description": "Do not use cache when building the image (default false)",
      "default": false
    },
    "outputs": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "List of output destinations (format: type=local,dest=path)"
    },
    "platforms": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "List of target platforms for build"
    },
    "provenance": {
      "type": "string",
      "description": "Change or disable provenance attestations for the build result"
    },
    "pull": {
      "type": "boolean",
      "description": "Always attempt to pull a newer version of the image (default false)",
      "default": false
    },
    "push": {
      "type": "boolean",
      "description": "Push is a shorthand for --output=type=registry (default false)",
      "default": false
    },
    "sbom": {
      "type": "boolean",
      "description": "Generate SBOM attestation for the build (shorthand for --attest type=sbom)",
      "default": false
    },
    "secrets": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "List of secrets to expose to the build (eg. key=string, GIT_AUTH_TOKEN=mytoken, NPM_TOKEN=${NPM_TOKEN})"
    },
    "secret-files": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "List of secret files to expose to the build (eg. key=filename, MY_SECRET=./secret.txt)"
    },
    "shm-size": {
      "type": "string",
      "description": "Size of /dev/shm (e.g., 2g)"
    },
    "ssh": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "List of SSH agent socket or keys to expose to the build"
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "List of tags"
    },
    "target": {
      "type": "string",
      "description": "Sets the target stage to build"
    },
    "ulimit": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Ulimit options (e.g., nofile=1024:1024)"
    },
    "metadata": {
      "type": "object",
      "description": "Extract metadata from CI context",
      "properties": {
        "images": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of Docker images to use as base name for tags. Required."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of tags as key-value pair attributes"
        },
        "flavor": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Flavors to apply"
        },
        "labels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of custom labels"
        },
        "sep-tags": {
          "type": "string",
          "description": "Separator to use for tags output (default '\\n')",
          "default": "\n"
        },
        "sep-labels": {
          "type": "string",
          "description": "Separator to use for labels output (default '\\n')",
          "default": "\n"
        },
        "bake-target": {
          "type": "string",
          "description": "Bake target name (default container-metadata-action)",
          "default": "container-metadata-action"
        }
      }
    }
  },
  "required": []
}
