{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/skaffold-yaml/versions/v1beta10.json",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/GoogleContainerTools/skaffold/main/docs-v1/content/en/schemas/v1beta10.json",
    "sourceSha256": "9a65c6130a95c5d0e2bef26e4947155af65026aad0451ced9fec8bf3a939a0bf",
    "fileMatch": [
      "skaffold.yaml",
      "skaffold.yml"
    ],
    "parsers": [
      "yaml"
    ]
  },
  "type": "object",
  "$defs": {
    "Activation": {
      "properties": {
        "command": {
          "type": "string",
          "description": "a Skaffold command for which the profile is auto-activated.",
          "x-intellij-html-description": "a Skaffold command for which the profile is auto-activated.",
          "examples": [
            "dev"
          ]
        },
        "env": {
          "type": "string",
          "description": "a `key=value` pair. The profile is auto-activated if an Environment Variable `key` has value `value`.",
          "x-intellij-html-description": "a <code>key=value</code> pair. The profile is auto-activated if an Environment Variable <code>key</code> has value <code>value</code>.",
          "examples": [
            "ENV=production"
          ]
        },
        "kubeContext": {
          "type": "string",
          "description": "a Kubernetes context for which the profile is auto-activated.",
          "x-intellij-html-description": "a Kubernetes context for which the profile is auto-activated.",
          "examples": [
            "minikube"
          ]
        }
      },
      "preferredOrder": [
        "env",
        "kubeContext",
        "command"
      ],
      "x-intellij-html-description": "criteria by which a profile is auto-activated.",
      "type": "object",
      "description": "criteria by which a profile is auto-activated.",
      "additionalProperties": false
    },
    "Artifact": {
      "required": [
        "image"
      ],
      "type": "object",
      "anyOf": [
        {
          "properties": {
            "context": {
              "type": "string",
              "description": "directory containing the artifact's sources.",
              "x-intellij-html-description": "directory containing the artifact's sources.",
              "default": "."
            },
            "image": {
              "type": "string",
              "description": "name of the image to be built.",
              "x-intellij-html-description": "name of the image to be built.",
              "examples": [
                "gcr.io/k8s-skaffold/example"
              ]
            },
            "sync": {
              "$ref": "#/$defs/Sync",
              "description": "*alpha* local files synced to pods instead of triggering an image build when modified.",
              "x-intellij-html-description": "<em>alpha</em> local files synced to pods instead of triggering an image build when modified."
            }
          },
          "preferredOrder": [
            "image",
            "context",
            "sync"
          ],
          "additionalProperties": false,
          "type": "object"
        },
        {
          "properties": {
            "context": {
              "type": "string",
              "description": "directory containing the artifact's sources.",
              "x-intellij-html-description": "directory containing the artifact's sources.",
              "default": "."
            },
            "docker": {
              "$ref": "#/$defs/DockerArtifact",
              "description": "*beta* describes an artifact built from a Dockerfile.",
              "x-intellij-html-description": "<em>beta</em> describes an artifact built from a Dockerfile."
            },
            "image": {
              "type": "string",
              "description": "name of the image to be built.",
              "x-intellij-html-description": "name of the image to be built.",
              "examples": [
                "gcr.io/k8s-skaffold/example"
              ]
            },
            "sync": {
              "$ref": "#/$defs/Sync",
              "description": "*alpha* local files synced to pods instead of triggering an image build when modified.",
              "x-intellij-html-description": "<em>alpha</em> local files synced to pods instead of triggering an image build when modified."
            }
          },
          "preferredOrder": [
            "image",
            "context",
            "sync",
            "docker"
          ],
          "additionalProperties": false,
          "type": "object"
        },
        {
          "properties": {
            "bazel": {
              "$ref": "#/$defs/BazelArtifact",
              "description": "*beta* requires bazel CLI to be installed and the sources to contain [Bazel](https://bazel.build/) configuration files.",
              "x-intellij-html-description": "<em>beta</em> requires bazel CLI to be installed and the sources to contain <a href=\"https://bazel.build/\">Bazel</a> configuration files."
            },
            "context": {
              "type": "string",
              "description": "directory containing the artifact's sources.",
              "x-intellij-html-description": "directory containing the artifact's sources.",
              "default": "."
            },
            "image": {
              "type": "string",
              "description": "name of the image to be built.",
              "x-intellij-html-description": "name of the image to be built.",
              "examples": [
                "gcr.io/k8s-skaffold/example"
              ]
            },
            "sync": {
              "$ref": "#/$defs/Sync",
              "description": "*alpha* local files synced to pods instead of triggering an image build when modified.",
              "x-intellij-html-description": "<em>alpha</em> local files synced to pods instead of triggering an image build when modified."
            }
          },
          "preferredOrder": [
            "image",
            "context",
            "sync",
            "bazel"
          ],
          "additionalProperties": false,
          "type": "object"
        },
        {
          "properties": {
            "context": {
              "type": "string",
              "description": "directory containing the artifact's sources.",
              "x-intellij-html-description": "directory containing the artifact's sources.",
              "default": "."
            },
            "image": {
              "type": "string",
              "description": "name of the image to be built.",
              "x-intellij-html-description": "name of the image to be built.",
              "examples": [
                "gcr.io/k8s-skaffold/example"
              ]
            },
            "jibMaven": {
              "$ref": "#/$defs/JibMavenArtifact",
              "description": "*alpha* builds images using the [Jib plugin for Maven](https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin).",
              "x-intellij-html-description": "<em>alpha</em> builds images using the <a href=\"https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin\">Jib plugin for Maven</a>."
            },
            "sync": {
              "$ref": "#/$defs/Sync",
              "description": "*alpha* local files synced to pods instead of triggering an image build when modified.",
              "x-intellij-html-description": "<em>alpha</em> local files synced to pods instead of triggering an image build when modified."
            }
          },
          "preferredOrder": [
            "image",
            "context",
            "sync",
            "jibMaven"
          ],
          "additionalProperties": false,
          "type": "object"
        },
        {
          "properties": {
            "context": {
              "type": "string",
              "description": "directory containing the artifact's sources.",
              "x-intellij-html-description": "directory containing the artifact's sources.",
              "default": "."
            },
            "image": {
              "type": "string",
              "description": "name of the image to be built.",
              "x-intellij-html-description": "name of the image to be built.",
              "examples": [
                "gcr.io/k8s-skaffold/example"
              ]
            },
            "jibGradle": {
              "$ref": "#/$defs/JibGradleArtifact",
              "description": "*alpha* builds images using the [Jib plugin for Gradle](https://github.com/GoogleContainerTools/jib/tree/master/jib-gradle-plugin).",
              "x-intellij-html-description": "<em>alpha</em> builds images using the <a href=\"https://github.com/GoogleContainerTools/jib/tree/master/jib-gradle-plugin\">Jib plugin for Gradle</a>."
            },
            "sync": {
              "$ref": "#/$defs/Sync",
              "description": "*alpha* local files synced to pods instead of triggering an image build when modified.",
              "x-intellij-html-description": "<em>alpha</em> local files synced to pods instead of triggering an image build when modified."
            }
          },
          "preferredOrder": [
            "image",
            "context",
            "sync",
            "jibGradle"
          ],
          "additionalProperties": false,
          "type": "object"
        },
        {
          "properties": {
            "context": {
              "type": "string",
              "description": "directory containing the artifact's sources.",
              "x-intellij-html-description": "directory containing the artifact's sources.",
              "default": "."
            },
            "image": {
              "type": "string",
              "description": "name of the image to be built.",
              "x-intellij-html-description": "name of the image to be built.",
              "examples": [
                "gcr.io/k8s-skaffold/example"
              ]
            },
            "kaniko": {
              "$ref": "#/$defs/KanikoArtifact",
              "description": "*alpha* builds images using [kaniko](https://github.com/GoogleContainerTools/kaniko).",
              "x-intellij-html-description": "<em>alpha</em> builds images using <a href=\"https://github.com/GoogleContainerTools/kaniko\">kaniko</a>."
            },
            "sync": {
              "$ref": "#/$defs/Sync",
              "description": "*alpha* local files synced to pods instead of triggering an image build when modified.",
              "x-intellij-html-description": "<em>alpha</em> local files synced to pods instead of triggering an image build when modified."
            }
          },
          "preferredOrder": [
            "image",
            "context",
            "sync",
            "kaniko"
          ],
          "additionalProperties": false,
          "type": "object"
        },
        {
          "properties": {
            "context": {
              "type": "string",
              "description": "directory containing the artifact's sources.",
              "x-intellij-html-description": "directory containing the artifact's sources.",
              "default": "."
            },
            "custom": {
              "$ref": "#/$defs/CustomArtifact",
              "description": "*alpha* builds images using a custom build script written by the user.",
              "x-intellij-html-description": "<em>alpha</em> builds images using a custom build script written by the user."
            },
            "image": {
              "type": "string",
              "description": "name of the image to be built.",
              "x-intellij-html-description": "name of the image to be built.",
              "examples": [
                "gcr.io/k8s-skaffold/example"
              ]
            },
            "sync": {
              "$ref": "#/$defs/Sync",
              "description": "*alpha* local files synced to pods instead of triggering an image build when modified.",
              "x-intellij-html-description": "<em>alpha</em> local files synced to pods instead of triggering an image build when modified."
            }
          },
          "preferredOrder": [
            "image",
            "context",
            "sync",
            "custom"
          ],
          "additionalProperties": false,
          "type": "object"
        }
      ],
      "description": "items that need to be built, along with the context in which they should be built.",
      "x-intellij-html-description": "items that need to be built, along with the context in which they should be built."
    },
    "BazelArtifact": {
      "required": [
        "target"
      ],
      "properties": {
        "args": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "additional args to pass to `bazel build`.",
          "x-intellij-html-description": "additional args to pass to <code>bazel build</code>.",
          "default": "[]",
          "examples": [
            "[\"-flag\", \"--otherflag\"]"
          ]
        },
        "target": {
          "type": "string",
          "description": "`bazel build` target to run.",
          "x-intellij-html-description": "<code>bazel build</code> target to run.",
          "examples": [
            "//:skaffold_example.tar"
          ]
        }
      },
      "preferredOrder": [
        "target",
        "args"
      ],
      "x-intellij-html-description": "<em>beta</em> describes an artifact built with <a href=\"https://bazel.build/\">Bazel</a>.",
      "type": "object",
      "description": "*beta* describes an artifact built with [Bazel](https://bazel.build/).",
      "additionalProperties": false
    },
    "BuildConfig": {
      "type": "object",
      "anyOf": [
        {
          "properties": {
            "artifacts": {
              "items": {
                "$ref": "#/$defs/Artifact"
              },
              "type": "array",
              "description": "the images you're going to be building.",
              "x-intellij-html-description": "the images you're going to be building."
            },
            "insecureRegistries": {
              "items": {
                "type": "string"
              },
              "type": "array",
              "description": "a list of registries declared by the user to be insecure. These registries will be connected to via HTTP instead of HTTPS.",
              "x-intellij-html-description": "a list of registries declared by the user to be insecure. These registries will be connected to via HTTP instead of HTTPS.",
              "default": "[]"
            },
            "tagPolicy": {
              "$ref": "#/$defs/TagPolicy",
              "description": "*beta* determines how images are tagged. A few strategies are provided here, although you most likely won't need to care! If not specified, it defaults to `gitCommit: {variant: Tags}`.",
              "x-intellij-html-description": "<em>beta</em> determines how images are tagged. A few strategies are provided here, although you most likely won't need to care! If not specified, it defaults to <code>gitCommit: {variant: Tags}</code>."
            }
          },
          "preferredOrder": [
            "artifacts",
            "insecureRegistries",
            "tagPolicy"
          ],
          "additionalProperties": false,
          "type": "object"
        },
        {
          "properties": {
            "artifacts": {
              "items": {
                "$ref": "#/$defs/Artifact"
              },
              "type": "array",
              "description": "the images you're going to be building.",
              "x-intellij-html-description": "the images you're going to be building."
            },
            "insecureRegistries": {
              "items": {
                "type": "string"
              },
              "type": "array",
              "description": "a list of registries declared by the user to be insecure. These registries will be connected to via HTTP instead of HTTPS.",
              "x-intellij-html-description": "a list of registries declared by the user to be insecure. These registries will be connected to via HTTP instead of HTTPS.",
              "default": "[]"
            },
            "local": {
              "$ref": "#/$defs/LocalBuild",
              "description": "*beta* describes how to do a build on the local docker daemon and optionally push to a repository.",
              "x-intellij-html-description": "<em>beta</em> describes how to do a build on the local docker daemon and optionally push to a repository."
            },
            "tagPolicy": {
              "$ref": "#/$defs/TagPolicy",
              "description": "*beta* determines how images are tagged. A few strategies are provided here, although you most likely won't need to care! If not specified, it defaults to `gitCommit: {variant: Tags}`.",
              "x-intellij-html-description": "<em>beta</em> determines how images are tagged. A few strategies are provided here, although you most likely won't need to care! If not specified, it defaults to <code>gitCommit: {variant: Tags}</code>."
            }
          },
          "preferredOrder": [
            "artifacts",
            "insecureRegistries",
            "tagPolicy",
            "local"
          ],
          "additionalProperties": false,
          "type": "object"
        },
        {
          "properties": {
            "artifacts": {
              "items": {
                "$ref": "#/$defs/Artifact"
              },
              "type": "array",
              "description": "the images you're going to be building.",
              "x-intellij-html-description": "the images you're going to be building."
            },
            "googleCloudBuild": {
              "$ref": "#/$defs/GoogleCloudBuild",
              "description": "*beta* describes how to do a remote build on [Google Cloud Build](https://cloud.google.com/cloud-build/).",
              "x-intellij-html-description": "<em>beta</em> describes how to do a remote build on <a href=\"https://cloud.google.com/cloud-build/\">Google Cloud Build</a>."
            },
            "insecureRegistries": {
              "items": {
                "type": "string"
              },
              "type": "array",
              "description": "a list of registries declared by the user to be insecure. These registries will be connected to via HTTP instead of HTTPS.",
              "x-intellij-html-description": "a list of registries declared by the user to be insecure. These registries will be connected to via HTTP instead of HTTPS.",
              "default": "[]"
            },
            "tagPolicy": {
              "$ref": "#/$defs/TagPolicy",
              "description": "*beta* determines how images are tagged. A few strategies are provided here, although you most likely won't need to care! If not specified, it defaults to `gitCommit: {variant: Tags}`.",
              "x-intellij-html-description": "<em>beta</em> determines how images are tagged. A few strategies are provided here, although you most likely won't need to care! If not specified, it defaults to <code>gitCommit: {variant: Tags}</code>."
            }
          },
          "preferredOrder": [
            "artifacts",
            "insecureRegistries",
            "tagPolicy",
            "googleCloudBuild"
          ],
          "additionalProperties": false,
          "type": "object"
        },
        {
          "properties": {
            "artifacts": {
              "items": {
                "$ref": "#/$defs/Artifact"
              },
              "type": "array",
              "description": "the images you're going to be building.",
              "x-intellij-html-description": "the images you're going to be building."
            },
            "cluster": {
              "$ref": "#/$defs/ClusterDetails",
              "description": "*beta* describes how to do an on-cluster build.",
              "x-intellij-html-description": "<em>beta</em> describes how to do an on-cluster build."
            },
            "insecureRegistries": {
              "items": {
                "type": "string"
              },
              "type": "array",
              "description": "a list of registries declared by the user to be insecure. These registries will be connected to via HTTP instead of HTTPS.",
              "x-intellij-html-description": "a list of registries declared by the user to be insecure. These registries will be connected to via HTTP instead of HTTPS.",
              "default": "[]"
            },
            "tagPolicy": {
              "$ref": "#/$defs/TagPolicy",
              "description": "*beta* determines how images are tagged. A few strategies are provided here, although you most likely won't need to care! If not specified, it defaults to `gitCommit: {variant: Tags}`.",
              "x-intellij-html-description": "<em>beta</em> determines how images are tagged. A few strategies are provided here, although you most likely won't need to care! If not specified, it defaults to <code>gitCommit: {variant: Tags}</code>."
            }
          },
          "preferredOrder": [
            "artifacts",
            "insecureRegistries",
            "tagPolicy",
            "cluster"
          ],
          "additionalProperties": false,
          "type": "object"
        }
      ],
      "description": "contains all the configuration for the build steps.",
      "x-intellij-html-description": "contains all the configuration for the build steps."
    },
    "ClusterDetails": {
      "properties": {
        "dockerConfig": {
          "$ref": "#/$defs/DockerConfig",
          "description": "describes how to mount the local Docker configuration into a pod.",
          "x-intellij-html-description": "describes how to mount the local Docker configuration into a pod."
        },
        "namespace": {
          "type": "string",
          "description": "Kubernetes namespace. Defaults to current namespace in Kubernetes configuration.",
          "x-intellij-html-description": "Kubernetes namespace. Defaults to current namespace in Kubernetes configuration."
        },
        "pullSecret": {
          "type": "string",
          "description": "path to the secret key file.",
          "x-intellij-html-description": "path to the secret key file."
        },
        "pullSecretName": {
          "type": "string",
          "description": "name of the Kubernetes secret for pulling the files from the build context and pushing the final image.",
          "x-intellij-html-description": "name of the Kubernetes secret for pulling the files from the build context and pushing the final image.",
          "default": "kaniko-secret"
        },
        "resources": {
          "$ref": "#/$defs/ResourceRequirements",
          "description": "define the resource requirements for the kaniko pod.",
          "x-intellij-html-description": "define the resource requirements for the kaniko pod."
        },
        "timeout": {
          "type": "string",
          "description": "amount of time (in seconds) that this build is allowed to run. Defaults to 20 minutes (`20m`).",
          "x-intellij-html-description": "amount of time (in seconds) that this build is allowed to run. Defaults to 20 minutes (<code>20m</code>)."
        }
      },
      "preferredOrder": [
        "pullSecret",
        "pullSecretName",
        "namespace",
        "timeout",
        "dockerConfig",
        "resources"
      ],
      "x-intellij-html-description": "<em>beta</em> describes how to do an on-cluster build.",
      "type": "object",
      "description": "*beta* describes how to do an on-cluster build.",
      "additionalProperties": false
    },
    "CustomArtifact": {
      "properties": {
        "buildCommand": {
          "type": "string",
          "description": "command executed to build the image.",
          "x-intellij-html-description": "command executed to build the image."
        },
        "dependencies": {
          "$ref": "#/$defs/CustomDependencies",
          "description": "file dependencies that skaffold should watch for both rebuilding and file syncing for this artifact.",
          "x-intellij-html-description": "file dependencies that skaffold should watch for both rebuilding and file syncing for this artifact."
        }
      },
      "preferredOrder": [
        "buildCommand",
        "dependencies"
      ],
      "x-intellij-html-description": "<em>alpha</em> describes an artifact built from a custom build script written by the user. It can be used to build images with builders that aren't directly integrated with skaffold.",
      "type": "object",
      "description": "*alpha* describes an artifact built from a custom build script written by the user. It can be used to build images with builders that aren't directly integrated with skaffold.",
      "additionalProperties": false
    },
    "CustomDependencies": {
      "properties": {
        "command": {
          "type": "string",
          "description": "represents a custom command that skaffold executes to obtain dependencies. The output of this command *must* be a valid JSON array.",
          "x-intellij-html-description": "represents a custom command that skaffold executes to obtain dependencies. The output of this command <em>must</em> be a valid JSON array."
        },
        "dockerfile": {
          "$ref": "#/$defs/DockerfileDependency",
          "description": "should be set if the artifact is built from a Dockerfile, from which skaffold can determine dependencies.",
          "x-intellij-html-description": "should be set if the artifact is built from a Dockerfile, from which skaffold can determine dependencies."
        },
        "ignore": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "specifies the paths that should be ignored by skaffold's file watcher. If a file exists in both `paths` and in `ignore`, it will be ignored, and will be excluded from both rebuilds and file synchronization. Will only work in conjunction with `paths`.",
          "x-intellij-html-description": "specifies the paths that should be ignored by skaffold's file watcher. If a file exists in both <code>paths</code> and in <code>ignore</code>, it will be ignored, and will be excluded from both rebuilds and file synchronization. Will only work in conjunction with <code>paths</code>.",
          "default": "[]"
        },
        "paths": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "should be set to the file dependencies for this artifact, so that the skaffold file watcher knows when to rebuild and perform file synchronization.",
          "x-intellij-html-description": "should be set to the file dependencies for this artifact, so that the skaffold file watcher knows when to rebuild and perform file synchronization.",
          "default": "[]"
        }
      },
      "preferredOrder": [
        "dockerfile",
        "command",
        "paths",
        "ignore"
      ],
      "x-intellij-html-description": "<em>alpha</em> used to specify dependencies for an artifact built by a custom build script. Either <code>dockerfile</code> or <code>paths</code> should be specified for file watching to work as expected.",
      "type": "object",
      "description": "*alpha* used to specify dependencies for an artifact built by a custom build script. Either `dockerfile` or `paths` should be specified for file watching to work as expected.",
      "additionalProperties": false
    },
    "DateTimeTagger": {
      "properties": {
        "format": {
          "type": "string",
          "description": "formats the date and time. See [#Time.Format](https://golang.org/pkg/time/#Time.Format).",
          "x-intellij-html-description": "formats the date and time. See <a href=\"https://golang.org/pkg/time/#Time.Format\">#Time.Format</a>.",
          "default": "2006-01-02_15-04-05.999_MST"
        },
        "timezone": {
          "type": "string",
          "description": "sets the timezone for the date and time. See [Time.LoadLocation](https://golang.org/pkg/time/#Time.LoadLocation). Defaults to the local timezone.",
          "x-intellij-html-description": "sets the timezone for the date and time. See <a href=\"https://golang.org/pkg/time/#Time.LoadLocation\">Time.LoadLocation</a>. Defaults to the local timezone."
        }
      },
      "preferredOrder": [
        "format",
        "timezone"
      ],
      "x-intellij-html-description": "<em>beta</em> tags images with the build timestamp.",
      "type": "object",
      "description": "*beta* tags images with the build timestamp.",
      "additionalProperties": false
    },
    "DeployConfig": {
      "type": "object",
      "anyOf": [
        {
          "additionalProperties": false
        },
        {
          "properties": {
            "helm": {
              "$ref": "#/$defs/HelmDeploy",
              "description": "*beta* uses the `helm` CLI to apply the charts to the cluster.",
              "x-intellij-html-description": "<em>beta</em> uses the <code>helm</code> CLI to apply the charts to the cluster."
            }
          },
          "preferredOrder": [
            "helm"
          ],
          "additionalProperties": false,
          "type": "object"
        },
        {
          "properties": {
            "kubectl": {
              "$ref": "#/$defs/KubectlDeploy",
              "description": "*beta* uses a client side `kubectl apply` to deploy manifests. You'll need a `kubectl` CLI version installed that's compatible with your cluster.",
              "x-intellij-html-description": "<em>beta</em> uses a client side <code>kubectl apply</code> to deploy manifests. You'll need a <code>kubectl</code> CLI version installed that's compatible with your cluster."
            }
          },
          "preferredOrder": [
            "kubectl"
          ],
          "additionalProperties": false,
          "type": "object"
        },
        {
          "properties": {
            "kustomize": {
              "$ref": "#/$defs/KustomizeDeploy",
              "description": "*beta* uses the `kustomize` CLI to \"patch\" a deployment for a target environment.",
              "x-intellij-html-description": "<em>beta</em> uses the <code>kustomize</code> CLI to &quot;patch&quot; a deployment for a target environment."
            }
          },
          "preferredOrder": [
            "kustomize"
          ],
          "additionalProperties": false,
          "type": "object"
        }
      ],
      "description": "contains all the configuration needed by the deploy steps.",
      "x-intellij-html-description": "contains all the configuration needed by the deploy steps."
    },
    "DockerArtifact": {
      "properties": {
        "buildArgs": {
          "examples": [
            "{\"key1\": \"value1\", \"key2\": \"value2\"}"
          ],
          "type": "object",
          "description": "arguments passed to the docker build.",
          "x-intellij-html-description": "arguments passed to the docker build.",
          "default": "{}",
          "additionalProperties": {
            "type": "string"
          }
        },
        "cacheFrom": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "the Docker images used as cache sources.",
          "x-intellij-html-description": "the Docker images used as cache sources.",
          "default": "[]",
          "examples": [
            "[\"golang:1.10.1-alpine3.7\", \"alpine:3.7\"]"
          ]
        },
        "dockerfile": {
          "type": "string",
          "description": "locates the Dockerfile relative to workspace.",
          "x-intellij-html-description": "locates the Dockerfile relative to workspace.",
          "default": "Dockerfile"
        },
        "network": {
          "type": "string",
          "description": "passed through to docker and overrides the network configuration of docker builder. If unset, use whatever is configured in the underlying docker daemon. Valid modes are `host`: use the host's networking stack. `bridge`: use the bridged network configuration. `none`: no networking in the container.",
          "x-intellij-html-description": "passed through to docker and overrides the network configuration of docker builder. If unset, use whatever is configured in the underlying docker daemon. Valid modes are <code>host</code>: use the host's networking stack. <code>bridge</code>: use the bridged network configuration. <code>none</code>: no networking in the container.",
          "enum": [
            "host",
            "bridge",
            "none"
          ]
        },
        "noCache": {
          "type": "boolean",
          "description": "used to pass in --no-cache to docker build to prevent caching.",
          "x-intellij-html-description": "used to pass in --no-cache to docker build to prevent caching.",
          "default": "false"
        },
        "target": {
          "type": "string",
          "description": "Dockerfile target name to build.",
          "x-intellij-html-description": "Dockerfile target name to build."
        }
      },
      "preferredOrder": [
        "dockerfile",
        "target",
        "buildArgs",
        "network",
        "cacheFrom",
        "noCache"
      ],
      "x-intellij-html-description": "<em>beta</em> describes an artifact built from a Dockerfile, usually using <code>docker build</code>.",
      "type": "object",
      "description": "*beta* describes an artifact built from a Dockerfile, usually using `docker build`.",
      "additionalProperties": false
    },
    "DockerConfig": {
      "properties": {
        "path": {
          "type": "string",
          "description": "path to the docker `config.json`.",
          "x-intellij-html-description": "path to the docker <code>config.json</code>."
        },
        "secretName": {
          "type": "string",
          "description": "Kubernetes secret that will hold the Docker configuration.",
          "x-intellij-html-description": "Kubernetes secret that will hold the Docker configuration."
        }
      },
      "preferredOrder": [
        "path",
        "secretName"
      ],
      "x-intellij-html-description": "contains information about the docker <code>config.json</code> to mount.",
      "type": "object",
      "description": "contains information about the docker `config.json` to mount.",
      "additionalProperties": false
    },
    "DockerfileDependency": {
      "properties": {
        "buildArgs": {
          "examples": [
            "{\"key1\": \"value1\", \"key2\": \"value2\", \"key3\": \"{{.ENV_VARIABLE}}\"}"
          ],
          "type": "object",
          "description": "arguments passed to the docker build. It also accepts environment variables via the go template syntax.",
          "x-intellij-html-description": "arguments passed to the docker build. It also accepts environment variables via the go template syntax.",
          "default": "{}",
          "additionalProperties": {
            "type": "string"
          }
        },
        "path": {
          "type": "string",
          "description": "locates the Dockerfile relative to workspace.",
          "x-intellij-html-description": "locates the Dockerfile relative to workspace."
        }
      },
      "preferredOrder": [
        "path",
        "buildArgs"
      ],
      "x-intellij-html-description": "<em>alpha</em> used to specify a custom build artifact that is built from a Dockerfile. This allows skaffold to determine dependencies from the Dockerfile.",
      "type": "object",
      "description": "*alpha* used to specify a custom build artifact that is built from a Dockerfile. This allows skaffold to determine dependencies from the Dockerfile.",
      "additionalProperties": false
    },
    "EnvTemplateTagger": {
      "required": [
        "template"
      ],
      "properties": {
        "template": {
          "type": "string",
          "description": "used to produce the image name and tag. See golang [text/template](https://golang.org/pkg/text/template/). The template is executed against the current environment, with those variables injected:   IMAGE_NAME   |  Name of the image being built, as supplied in the artifacts section.",
          "x-intellij-html-description": "used to produce the image name and tag. See golang <a href=\"https://golang.org/pkg/text/template/\">text/template</a>. The template is executed against the current environment, with those variables injected:   IMAGE_NAME   |  Name of the image being built, as supplied in the artifacts section.",
          "examples": [
            "{{.RELEASE}}-{{.IMAGE_NAME}}"
          ]
        }
      },
      "preferredOrder": [
        "template"
      ],
      "x-intellij-html-description": "<em>beta</em> tags images with a configurable template string.",
      "type": "object",
      "description": "*beta* tags images with a configurable template string.",
      "additionalProperties": false
    },
    "GitTagger": {
      "properties": {
        "variant": {
          "type": "string",
          "description": "determines the behavior of the git tagger. Valid variants are `Tags` (default): use git tags or fall back to abbreviated commit hash. `CommitSha`: use the full git commit sha. `AbbrevCommitSha`: use the abbreviated git commit sha.",
          "x-intellij-html-description": "determines the behavior of the git tagger. Valid variants are <code>Tags</code> (default): use git tags or fall back to abbreviated commit hash. <code>CommitSha</code>: use the full git commit sha. <code>AbbrevCommitSha</code>: use the abbreviated git commit sha.",
          "enum": [
            "Tags",
            "CommitSha",
            "AbbrevCommitSha"
          ]
        }
      },
      "preferredOrder": [
        "variant"
      ],
      "x-intellij-html-description": "<em>beta</em> tags images with the git tag or commit of the artifact's workspace.",
      "type": "object",
      "description": "*beta* tags images with the git tag or commit of the artifact's workspace.",
      "additionalProperties": false
    },
    "GoogleCloudBuild": {
      "properties": {
        "diskSizeGb": {
          "type": "integer",
          "description": "disk size of the VM that runs the build. See [Cloud Build Reference](https://cloud.google.com/cloud-build/docs/api/reference/rest/v1/projects.builds#buildoptions).",
          "x-intellij-html-description": "disk size of the VM that runs the build. See <a href=\"https://cloud.google.com/cloud-build/docs/api/reference/rest/v1/projects.builds#buildoptions\">Cloud Build Reference</a>."
        },
        "dockerImage": {
          "type": "string",
          "description": "image that runs a Docker build. See [Cloud Builders](https://cloud.google.com/cloud-build/docs/cloud-builders).",
          "x-intellij-html-description": "image that runs a Docker build. See <a href=\"https://cloud.google.com/cloud-build/docs/cloud-builders\">Cloud Builders</a>.",
          "default": "gcr.io/cloud-builders/docker"
        },
        "gradleImage": {
          "type": "string",
          "description": "image that runs a Gradle build. See [Cloud Builders](https://cloud.google.com/cloud-build/docs/cloud-builders).",
          "x-intellij-html-description": "image that runs a Gradle build. See <a href=\"https://cloud.google.com/cloud-build/docs/cloud-builders\">Cloud Builders</a>.",
          "default": "gcr.io/cloud-builders/gradle"
        },
        "machineType": {
          "type": "string",
          "description": "type of the VM that runs the build. See [Cloud Build Reference](https://cloud.google.com/cloud-build/docs/api/reference/rest/v1/projects.builds#buildoptions).",
          "x-intellij-html-description": "type of the VM that runs the build. See <a href=\"https://cloud.google.com/cloud-build/docs/api/reference/rest/v1/projects.builds#buildoptions\">Cloud Build Reference</a>."
        },
        "mavenImage": {
          "type": "string",
          "description": "image that runs a Maven build. See [Cloud Builders](https://cloud.google.com/cloud-build/docs/cloud-builders).",
          "x-intellij-html-description": "image that runs a Maven build. See <a href=\"https://cloud.google.com/cloud-build/docs/cloud-builders\">Cloud Builders</a>.",
          "default": "gcr.io/cloud-builders/mvn"
        },
        "projectId": {
          "type": "string",
          "description": "ID of your Cloud Platform Project. If it is not provided, Skaffold will guess it from the image name. For example, given the artifact image name `gcr.io/myproject/image`, Skaffold will use the `myproject` GCP project.",
          "x-intellij-html-description": "ID of your Cloud Platform Project. If it is not provided, Skaffold will guess it from the image name. For example, given the artifact image name <code>gcr.io/myproject/image</code>, Skaffold will use the <code>myproject</code> GCP project."
        },
        "timeout": {
          "type": "string",
          "description": "amount of time (in seconds) that this build should be allowed to run. See [Cloud Build Reference](https://cloud.google.com/cloud-build/docs/api/reference/rest/v1/projects.builds#resource-build).",
          "x-intellij-html-description": "amount of time (in seconds) that this build should be allowed to run. See <a href=\"https://cloud.google.com/cloud-build/docs/api/reference/rest/v1/projects.builds#resource-build\">Cloud Build Reference</a>."
        }
      },
      "preferredOrder": [
        "projectId",
        "diskSizeGb",
        "machineType",
        "timeout",
        "dockerImage",
        "mavenImage",
        "gradleImage"
      ],
      "x-intellij-html-description": "<em>beta</em> describes how to do a remote build on <a href=\"https://cloud.google.com/cloud-build/docs/\">Google Cloud Build</a>. Docker and Jib artifacts can be built on Cloud Build. The <code>projectId</code> needs to be provided and the currently logged in user should be given permissions to trigger new builds.",
      "type": "object",
      "description": "*beta* describes how to do a remote build on [Google Cloud Build](https://cloud.google.com/cloud-build/docs/). Docker and Jib artifacts can be built on Cloud Build. The `projectId` needs to be provided and the currently logged in user should be given permissions to trigger new builds.",
      "additionalProperties": false
    },
    "HelmConventionConfig": {
      "type": "object",
      "description": "image config in the syntax of image.repository and image.tag.",
      "x-intellij-html-description": "image config in the syntax of image.repository and image.tag."
    },
    "HelmDeploy": {
      "required": [
        "releases"
      ],
      "properties": {
        "flags": {
          "$ref": "#/$defs/HelmDeployFlags",
          "description": "additional option flags that are passed on the command line to `helm`.",
          "x-intellij-html-description": "additional option flags that are passed on the command line to <code>helm</code>."
        },
        "releases": {
          "items": {
            "$ref": "#/$defs/HelmRelease"
          },
          "type": "array",
          "description": "a list of Helm releases.",
          "x-intellij-html-description": "a list of Helm releases."
        }
      },
      "preferredOrder": [
        "releases",
        "flags"
      ],
      "x-intellij-html-description": "<em>beta</em> uses the <code>helm</code> CLI to apply the charts to the cluster.",
      "type": "object",
      "description": "*beta* uses the `helm` CLI to apply the charts to the cluster.",
      "additionalProperties": false
    },
    "HelmDeployFlags": {
      "properties": {
        "global": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "additional flags passed on every command.",
          "x-intellij-html-description": "additional flags passed on every command.",
          "default": "[]"
        },
        "install": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "additional flags passed to (`helm install`).",
          "x-intellij-html-description": "additional flags passed to (<code>helm install</code>).",
          "default": "[]"
        },
        "upgrade": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "additional flags passed to (`helm upgrade`).",
          "x-intellij-html-description": "additional flags passed to (<code>helm upgrade</code>).",
          "default": "[]"
        }
      },
      "preferredOrder": [
        "global",
        "install",
        "upgrade"
      ],
      "x-intellij-html-description": "additional option flags that are passed on the command line to <code>helm</code>.",
      "type": "object",
      "description": "additional option flags that are passed on the command line to `helm`.",
      "additionalProperties": false
    },
    "HelmFQNConfig": {
      "properties": {
        "property": {
          "type": "string",
          "description": "defines the image config.",
          "x-intellij-html-description": "defines the image config."
        }
      },
      "preferredOrder": [
        "property"
      ],
      "x-intellij-html-description": "image config to use the FullyQualifiedImageName as param to set.",
      "type": "object",
      "description": "image config to use the FullyQualifiedImageName as param to set.",
      "additionalProperties": false
    },
    "HelmImageStrategy": {
      "type": "object",
      "anyOf": [
        {
          "additionalProperties": false
        },
        {
          "properties": {
            "fqn": {
              "$ref": "#/$defs/HelmFQNConfig",
              "description": "image configuration uses the syntax `IMAGE-NAME=IMAGE-REPOSITORY:IMAGE-TAG`.",
              "x-intellij-html-description": "image configuration uses the syntax <code>IMAGE-NAME=IMAGE-REPOSITORY:IMAGE-TAG</code>."
            }
          },
          "preferredOrder": [
            "fqn"
          ],
          "additionalProperties": false,
          "type": "object"
        },
        {
          "properties": {
            "helm": {
              "$ref": "#/$defs/HelmConventionConfig",
              "description": "image configuration uses the syntax `IMAGE-NAME.repository=IMAGE-REPOSITORY, IMAGE-NAME.tag=IMAGE-TAG`.",
              "x-intellij-html-description": "image configuration uses the syntax <code>IMAGE-NAME.repository=IMAGE-REPOSITORY, IMAGE-NAME.tag=IMAGE-TAG</code>."
            }
          },
          "preferredOrder": [
            "helm"
          ],
          "additionalProperties": false,
          "type": "object"
        }
      ],
      "description": "adds image configurations to the Helm `values` file.",
      "x-intellij-html-description": "adds image configurations to the Helm <code>values</code> file."
    },
    "HelmPackaged": {
      "properties": {
        "appVersion": {
          "type": "string",
          "description": "sets the `appVersion` on the chart to this version.",
          "x-intellij-html-description": "sets the <code>appVersion</code> on the chart to this version."
        },
        "version": {
          "type": "string",
          "description": "sets the `version` on the chart to this semver version.",
          "x-intellij-html-description": "sets the <code>version</code> on the chart to this semver version."
        }
      },
      "preferredOrder": [
        "version",
        "appVersion"
      ],
      "x-intellij-html-description": "parameters for packaging helm chart (<code>helm package</code>).",
      "type": "object",
      "description": "parameters for packaging helm chart (`helm package`).",
      "additionalProperties": false
    },
    "HelmRelease": {
      "required": [
        "name",
        "chartPath"
      ],
      "properties": {
        "chartPath": {
          "type": "string",
          "description": "path to the Helm chart.",
          "x-intellij-html-description": "path to the Helm chart."
        },
        "imageStrategy": {
          "$ref": "#/$defs/HelmImageStrategy",
          "description": "adds image configurations to the Helm `values` file.",
          "x-intellij-html-description": "adds image configurations to the Helm <code>values</code> file."
        },
        "name": {
          "type": "string",
          "description": "name of the Helm release.",
          "x-intellij-html-description": "name of the Helm release."
        },
        "namespace": {
          "type": "string",
          "description": "Kubernetes namespace.",
          "x-intellij-html-description": "Kubernetes namespace."
        },
        "overrides": {
          "description": "key-value pairs. If present, Skaffold will build a Helm `values` file that overrides the original and use it to call Helm CLI (`--f` flag).",
          "x-intellij-html-description": "key-value pairs. If present, Skaffold will build a Helm <code>values</code> file that overrides the original and use it to call Helm CLI (<code>--f</code> flag)."
        },
        "packaged": {
          "$ref": "#/$defs/HelmPackaged",
          "description": "parameters for packaging helm chart (`helm package`).",
          "x-intellij-html-description": "parameters for packaging helm chart (<code>helm package</code>)."
        },
        "recreatePods": {
          "type": "boolean",
          "description": "if `true`, Skaffold will send `--recreate-pods` flag to Helm CLI.",
          "x-intellij-html-description": "if <code>true</code>, Skaffold will send <code>--recreate-pods</code> flag to Helm CLI.",
          "default": "false"
        },
        "setValueTemplates": {
          "default": "{}",
          "type": "object",
          "description": "key-value pairs. If present, Skaffold will try to parse the value part of each key-value pair using environment variables in the system, then send `--set` flag to Helm CLI and append all parsed pairs after the flag.",
          "x-intellij-html-description": "key-value pairs. If present, Skaffold will try to parse the value part of each key-value pair using environment variables in the system, then send <code>--set</code> flag to Helm CLI and append all parsed pairs after the flag.",
          "additionalProperties": {
            "type": "string"
          }
        },
        "setValues": {
          "default": "{}",
          "type": "object",
          "description": "key-value pairs. If present, Skaffold will send `--set` flag to Helm CLI and append all pairs after the flag.",
          "x-intellij-html-description": "key-value pairs. If present, Skaffold will send <code>--set</code> flag to Helm CLI and append all pairs after the flag.",
          "additionalProperties": {
            "type": "string"
          }
        },
        "skipBuildDependencies": {
          "type": "boolean",
          "description": "should build dependencies be skipped.",
          "x-intellij-html-description": "should build dependencies be skipped.",
          "default": "false"
        },
        "useHelmSecrets": {
          "type": "boolean",
          "description": "instructs skaffold to use secrets plugin on deployment.",
          "x-intellij-html-description": "instructs skaffold to use secrets plugin on deployment.",
          "default": "false"
        },
        "values": {
          "default": "{}",
          "type": "object",
          "description": "key-value pairs supplementing the Helm `values` file.",
          "x-intellij-html-description": "key-value pairs supplementing the Helm <code>values</code> file.",
          "additionalProperties": {
            "type": "string"
          }
        },
        "valuesFiles": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "paths to the Helm `values` files.",
          "x-intellij-html-description": "paths to the Helm <code>values</code> files.",
          "default": "[]"
        },
        "version": {
          "type": "string",
          "description": "version of the chart.",
          "x-intellij-html-description": "version of the chart."
        },
        "wait": {
          "type": "boolean",
          "description": "if `true`, Skaffold will send `--wait` flag to Helm CLI.",
          "x-intellij-html-description": "if <code>true</code>, Skaffold will send <code>--wait</code> flag to Helm CLI.",
          "default": "false"
        }
      },
      "preferredOrder": [
        "name",
        "chartPath",
        "valuesFiles",
        "values",
        "namespace",
        "version",
        "setValues",
        "setValueTemplates",
        "wait",
        "recreatePods",
        "skipBuildDependencies",
        "useHelmSecrets",
        "overrides",
        "packaged",
        "imageStrategy"
      ],
      "x-intellij-html-description": "describes a helm release to be deployed.",
      "type": "object",
      "description": "describes a helm release to be deployed.",
      "additionalProperties": false
    },
    "JSONPatch": {
      "required": [
        "path"
      ],
      "properties": {
        "from": {
          "type": "string",
          "description": "source position in the yaml, used for `copy` or `move` operations.",
          "x-intellij-html-description": "source position in the yaml, used for <code>copy</code> or <code>move</code> operations."
        },
        "op": {
          "type": "string",
          "description": "operation carried by the patch: `add`, `remove`, `replace`, `move`, `copy` or `test`.",
          "x-intellij-html-description": "operation carried by the patch: <code>add</code>, <code>remove</code>, <code>replace</code>, <code>move</code>, <code>copy</code> or <code>test</code>.",
          "default": "replace"
        },
        "path": {
          "type": "string",
          "description": "position in the yaml where the operation takes place. For example, this targets the `dockerfile` of the first artifact built.",
          "x-intellij-html-description": "position in the yaml where the operation takes place. For example, this targets the <code>dockerfile</code> of the first artifact built.",
          "examples": [
            "/build/artifacts/0/docker/dockerfile"
          ]
        },
        "value": {
          "description": "value to apply. Can be any portion of yaml.",
          "x-intellij-html-description": "value to apply. Can be any portion of yaml."
        }
      },
      "preferredOrder": [
        "op",
        "path",
        "from",
        "value"
      ],
      "x-intellij-html-description": "patch to be applied by a profile.",
      "type": "object",
      "description": "patch to be applied by a profile.",
      "additionalProperties": false
    },
    "JibGradleArtifact": {
      "properties": {
        "args": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "additional build flags passed to Gradle.",
          "x-intellij-html-description": "additional build flags passed to Gradle.",
          "default": "[]",
          "examples": [
            "[\"--no-build-cache\"]"
          ]
        },
        "project": {
          "type": "string",
          "description": "selects which Gradle project to build.",
          "x-intellij-html-description": "selects which Gradle project to build."
        }
      },
      "preferredOrder": [
        "project",
        "args"
      ],
      "x-intellij-html-description": "<em>alpha</em> builds images using the <a href=\"https://github.com/GoogleContainerTools/jib/tree/master/jib-gradle-plugin\">Jib plugin for Gradle</a>.",
      "type": "object",
      "description": "*alpha* builds images using the [Jib plugin for Gradle](https://github.com/GoogleContainerTools/jib/tree/master/jib-gradle-plugin).",
      "additionalProperties": false
    },
    "JibMavenArtifact": {
      "properties": {
        "args": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "additional build flags passed to Maven.",
          "x-intellij-html-description": "additional build flags passed to Maven.",
          "default": "[]",
          "examples": [
            "[\"-x\", \"-DskipTests\"]"
          ]
        },
        "module": {
          "type": "string",
          "description": "selects which Maven module to build, for a multi module project.",
          "x-intellij-html-description": "selects which Maven module to build, for a multi module project."
        },
        "profile": {
          "type": "string",
          "description": "selects which Maven profile to activate.",
          "x-intellij-html-description": "selects which Maven profile to activate."
        }
      },
      "preferredOrder": [
        "module",
        "profile",
        "args"
      ],
      "x-intellij-html-description": "<em>alpha</em> builds images using the <a href=\"https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin\">Jib plugin for Maven</a>.",
      "type": "object",
      "description": "*alpha* builds images using the [Jib plugin for Maven](https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin).",
      "additionalProperties": false
    },
    "KanikoArtifact": {
      "properties": {
        "buildArgs": {
          "examples": [
            "{\"key1\": \"value1\", \"key2\": \"value2\", \"key3\": \"{{.ENV_VARIABLE}}\"}"
          ],
          "type": "object",
          "description": "arguments passed to the docker build. It also accepts environment variables via the go template syntax.",
          "x-intellij-html-description": "arguments passed to the docker build. It also accepts environment variables via the go template syntax.",
          "default": "{}",
          "additionalProperties": {
            "type": "string"
          }
        },
        "buildContext": {
          "$ref": "#/$defs/KanikoBuildContext",
          "description": "where the build context for this artifact resides.",
          "x-intellij-html-description": "where the build context for this artifact resides."
        },
        "cache": {
          "$ref": "#/$defs/KanikoCache",
          "description": "configures Kaniko caching. If a cache is specified, Kaniko will use a remote cache which will speed up builds.",
          "x-intellij-html-description": "configures Kaniko caching. If a cache is specified, Kaniko will use a remote cache which will speed up builds."
        },
        "dockerfile": {
          "type": "string",
          "description": "locates the Dockerfile relative to workspace.",
          "x-intellij-html-description": "locates the Dockerfile relative to workspace.",
          "default": "Dockerfile"
        },
        "flags": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "additional flags to be passed to Kaniko command line. See [Kaniko Additional Flags](https://github.com/GoogleContainerTools/kaniko#additional-flags). Deprecated - instead the named, unique fields should be used, e.g. `buildArgs`, `cache`, `target`.",
          "x-intellij-html-description": "additional flags to be passed to Kaniko command line. See <a href=\"https://github.com/GoogleContainerTools/kaniko#additional-flags\">Kaniko Additional Flags</a>. Deprecated - instead the named, unique fields should be used, e.g. <code>buildArgs</code>, <code>cache</code>, <code>target</code>.",
          "default": "[]"
        },
        "image": {
          "type": "string",
          "description": "Docker image used by the Kaniko pod. Defaults to the latest released version of `gcr.io/kaniko-project/executor`.",
          "x-intellij-html-description": "Docker image used by the Kaniko pod. Defaults to the latest released version of <code>gcr.io/kaniko-project/executor</code>."
        },
        "target": {
          "type": "string",
          "description": "Dockerfile target name to build.",
          "x-intellij-html-description": "Dockerfile target name to build."
        }
      },
      "preferredOrder": [
        "flags",
        "dockerfile",
        "target",
        "buildArgs",
        "buildContext",
        "image",
        "cache"
      ],
      "x-intellij-html-description": "<em>alpha</em> describes an artifact built from a Dockerfile, with kaniko.",
      "type": "object",
      "description": "*alpha* describes an artifact built from a Dockerfile, with kaniko.",
      "additionalProperties": false
    },
    "KanikoBuildContext": {
      "properties": {
        "gcsBucket": {
          "type": "string",
          "description": "GCS bucket to which sources are uploaded. Kaniko will need access to that bucket to download the sources.",
          "x-intellij-html-description": "GCS bucket to which sources are uploaded. Kaniko will need access to that bucket to download the sources."
        },
        "localDir": {
          "$ref": "#/$defs/LocalDir",
          "description": "configures how Kaniko mounts sources directly via an `emptyDir` volume.",
          "x-intellij-html-description": "configures how Kaniko mounts sources directly via an <code>emptyDir</code> volume."
        }
      },
      "preferredOrder": [
        "gcsBucket",
        "localDir"
      ],
      "x-intellij-html-description": "contains the different fields available to specify a Kaniko build context.",
      "type": "object",
      "description": "contains the different fields available to specify a Kaniko build context.",
      "additionalProperties": false
    },
    "KanikoCache": {
      "properties": {
        "repo": {
          "type": "string",
          "description": "a remote repository to store cached layers. If none is specified, one will be inferred from the image name. See [Kaniko Caching](https://github.com/GoogleContainerTools/kaniko#caching).",
          "x-intellij-html-description": "a remote repository to store cached layers. If none is specified, one will be inferred from the image name. See <a href=\"https://github.com/GoogleContainerTools/kaniko#caching\">Kaniko Caching</a>."
        }
      },
      "preferredOrder": [
        "repo"
      ],
      "x-intellij-html-description": "configures Kaniko caching. If a cache is specified, Kaniko will use a remote cache which will speed up builds.",
      "type": "object",
      "description": "configures Kaniko caching. If a cache is specified, Kaniko will use a remote cache which will speed up builds.",
      "additionalProperties": false
    },
    "KubectlDeploy": {
      "properties": {
        "flags": {
          "$ref": "#/$defs/KubectlFlags",
          "description": "additional flags passed to `kubectl`.",
          "x-intellij-html-description": "additional flags passed to <code>kubectl</code>."
        },
        "manifests": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "the Kubernetes yaml or json manifests.",
          "x-intellij-html-description": "the Kubernetes yaml or json manifests.",
          "default": "[\"k8s/*.yaml\"]"
        },
        "remoteManifests": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Kubernetes manifests in remote clusters.",
          "x-intellij-html-description": "Kubernetes manifests in remote clusters.",
          "default": "[]"
        }
      },
      "preferredOrder": [
        "manifests",
        "remoteManifests",
        "flags"
      ],
      "x-intellij-html-description": "<em>beta</em> uses a client side <code>kubectl apply</code> to deploy manifests. You'll need a <code>kubectl</code> CLI version installed that's compatible with your cluster.",
      "type": "object",
      "description": "*beta* uses a client side `kubectl apply` to deploy manifests. You'll need a `kubectl` CLI version installed that's compatible with your cluster.",
      "additionalProperties": false
    },
    "KubectlFlags": {
      "properties": {
        "apply": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "additional flags passed on creations (`kubectl apply`).",
          "x-intellij-html-description": "additional flags passed on creations (<code>kubectl apply</code>).",
          "default": "[]"
        },
        "delete": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "additional flags passed on deletions (`kubectl delete`).",
          "x-intellij-html-description": "additional flags passed on deletions (<code>kubectl delete</code>).",
          "default": "[]"
        },
        "global": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "additional flags passed on every command.",
          "x-intellij-html-description": "additional flags passed on every command.",
          "default": "[]"
        }
      },
      "preferredOrder": [
        "global",
        "apply",
        "delete"
      ],
      "x-intellij-html-description": "additional flags passed on the command line to kubectl either on every command (Global), on creations (Apply) or deletions (Delete).",
      "type": "object",
      "description": "additional flags passed on the command line to kubectl either on every command (Global), on creations (Apply) or deletions (Delete).",
      "additionalProperties": false
    },
    "KustomizeDeploy": {
      "properties": {
        "flags": {
          "$ref": "#/$defs/KubectlFlags",
          "description": "additional flags passed to `kubectl`.",
          "x-intellij-html-description": "additional flags passed to <code>kubectl</code>."
        },
        "path": {
          "type": "string",
          "description": "path to Kustomization files.",
          "x-intellij-html-description": "path to Kustomization files.",
          "default": "."
        }
      },
      "preferredOrder": [
        "path",
        "flags"
      ],
      "x-intellij-html-description": "<em>beta</em> uses the <code>kustomize</code> CLI to &quot;patch&quot; a deployment for a target environment.",
      "type": "object",
      "description": "*beta* uses the `kustomize` CLI to \"patch\" a deployment for a target environment.",
      "additionalProperties": false
    },
    "LocalBuild": {
      "properties": {
        "push": {
          "type": "boolean",
          "description": "should images be pushed to a registry. If not specified, images are pushed only if the current Kubernetes context connects to a remote cluster.",
          "x-intellij-html-description": "should images be pushed to a registry. If not specified, images are pushed only if the current Kubernetes context connects to a remote cluster."
        },
        "useBuildkit": {
          "type": "boolean",
          "description": "use BuildKit to build Docker images. If unspecified, uses the Docker default.",
          "x-intellij-html-description": "use BuildKit to build Docker images. If unspecified, uses the Docker default."
        },
        "useDockerCLI": {
          "type": "boolean",
          "description": "use `docker` command-line interface instead of Docker Engine APIs.",
          "x-intellij-html-description": "use <code>docker</code> command-line interface instead of Docker Engine APIs.",
          "default": "false"
        }
      },
      "preferredOrder": [
        "push",
        "useDockerCLI",
        "useBuildkit"
      ],
      "x-intellij-html-description": "<em>beta</em> describes how to do a build on the local docker daemon and optionally push to a repository.",
      "type": "object",
      "description": "*beta* describes how to do a build on the local docker daemon and optionally push to a repository.",
      "additionalProperties": false
    },
    "LocalDir": {
      "properties": {
        "initImage": {
          "type": "string",
          "description": "image used to run init container which mounts kaniko context.",
          "x-intellij-html-description": "image used to run init container which mounts kaniko context."
        }
      },
      "preferredOrder": [
        "initImage"
      ],
      "x-intellij-html-description": "configures how Kaniko mounts sources directly via an <code>emptyDir</code> volume.",
      "type": "object",
      "description": "configures how Kaniko mounts sources directly via an `emptyDir` volume.",
      "additionalProperties": false
    },
    "Profile": {
      "required": [
        "name"
      ],
      "properties": {
        "activation": {
          "items": {
            "$ref": "#/$defs/Activation"
          },
          "type": "array",
          "description": "criteria by which a profile can be auto-activated. The profile is auto-activated if any one of the activations are triggered. An activation is triggered if all of the criteria (env, kubeContext, command) are triggered.",
          "x-intellij-html-description": "criteria by which a profile can be auto-activated. The profile is auto-activated if any one of the activations are triggered. An activation is triggered if all of the criteria (env, kubeContext, command) are triggered."
        },
        "build": {
          "$ref": "#/$defs/BuildConfig",
          "description": "describes how images are built.",
          "x-intellij-html-description": "describes how images are built."
        },
        "deploy": {
          "$ref": "#/$defs/DeployConfig",
          "description": "describes how images are deployed.",
          "x-intellij-html-description": "describes how images are deployed."
        },
        "name": {
          "type": "string",
          "description": "a unique profile name.",
          "x-intellij-html-description": "a unique profile name.",
          "examples": [
            "profile-prod"
          ]
        },
        "patches": {
          "items": {
            "$ref": "#/$defs/JSONPatch"
          },
          "type": "array",
          "description": "patches applied to the configuration. Patches use the JSON patch notation.",
          "x-intellij-html-description": "patches applied to the configuration. Patches use the JSON patch notation."
        },
        "test": {
          "items": {
            "$ref": "#/$defs/TestCase"
          },
          "type": "array",
          "description": "describes how images are tested.",
          "x-intellij-html-description": "describes how images are tested."
        }
      },
      "preferredOrder": [
        "name",
        "build",
        "test",
        "deploy",
        "patches",
        "activation"
      ],
      "x-intellij-html-description": "<em>beta</em> profiles are used to override any <code>build</code>, <code>test</code> or <code>deploy</code> configuration.",
      "type": "object",
      "description": "*beta* profiles are used to override any `build`, `test` or `deploy` configuration.",
      "additionalProperties": false
    },
    "ResourceRequirement": {
      "properties": {
        "cpu": {
          "type": "string",
          "description": "the number cores to be used.",
          "x-intellij-html-description": "the number cores to be used.",
          "examples": [
            "2`, `2.0` or `200m"
          ]
        },
        "memory": {
          "type": "string",
          "description": "the amount of memory to allocate to the pod.",
          "x-intellij-html-description": "the amount of memory to allocate to the pod.",
          "examples": [
            "1Gi` or `1000Mi"
          ]
        }
      },
      "preferredOrder": [
        "cpu",
        "memory"
      ],
      "x-intellij-html-description": "stores the CPU/Memory requirements for the pod.",
      "type": "object",
      "description": "stores the CPU/Memory requirements for the pod.",
      "additionalProperties": false
    },
    "ResourceRequirements": {
      "properties": {
        "limits": {
          "$ref": "#/$defs/ResourceRequirement",
          "description": "[resource limits](https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#resource-requests-and-limits-of-pod-and-container) for the Kaniko pod.",
          "x-intellij-html-description": "<a href=\"https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#resource-requests-and-limits-of-pod-and-container\">resource limits</a> for the Kaniko pod."
        },
        "requests": {
          "$ref": "#/$defs/ResourceRequirement",
          "description": "[resource requests](https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#resource-requests-and-limits-of-pod-and-container) for the Kaniko pod.",
          "x-intellij-html-description": "<a href=\"https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#resource-requests-and-limits-of-pod-and-container\">resource requests</a> for the Kaniko pod."
        }
      },
      "preferredOrder": [
        "requests",
        "limits"
      ],
      "x-intellij-html-description": "describes the resource requirements for the kaniko pod.",
      "type": "object",
      "description": "describes the resource requirements for the kaniko pod.",
      "additionalProperties": false
    },
    "ShaTagger": {
      "type": "object",
      "description": "*beta* tags images with their sha256 digest.",
      "x-intellij-html-description": "<em>beta</em> tags images with their sha256 digest."
    },
    "SkaffoldConfig": {
      "required": [
        "apiVersion",
        "kind"
      ],
      "properties": {
        "apiVersion": {
          "type": "string",
          "description": "version of the configuration.",
          "x-intellij-html-description": "version of the configuration."
        },
        "build": {
          "$ref": "#/$defs/BuildConfig",
          "description": "describes how images are built.",
          "x-intellij-html-description": "describes how images are built."
        },
        "deploy": {
          "$ref": "#/$defs/DeployConfig",
          "description": "describes how images are deployed.",
          "x-intellij-html-description": "describes how images are deployed."
        },
        "kind": {
          "type": "string",
          "description": "always `Config`.",
          "x-intellij-html-description": "always <code>Config</code>.",
          "default": "Config"
        },
        "profiles": {
          "items": {
            "$ref": "#/$defs/Profile"
          },
          "type": "array",
          "description": "*beta* can override be used to `build`, `test` or `deploy` configuration.",
          "x-intellij-html-description": "<em>beta</em> can override be used to <code>build</code>, <code>test</code> or <code>deploy</code> configuration."
        },
        "test": {
          "items": {
            "$ref": "#/$defs/TestCase"
          },
          "type": "array",
          "description": "describes how images are tested.",
          "x-intellij-html-description": "describes how images are tested."
        }
      },
      "preferredOrder": [
        "apiVersion",
        "kind",
        "build",
        "test",
        "deploy",
        "profiles"
      ],
      "x-intellij-html-description": "holds the fields parsed from the Skaffold configuration file (skaffold.yaml).",
      "type": "object",
      "description": "holds the fields parsed from the Skaffold configuration file (skaffold.yaml).",
      "additionalProperties": false
    },
    "Sync": {
      "properties": {
        "manual": {
          "items": {
            "$ref": "#/$defs/SyncRule"
          },
          "type": "array",
          "description": "manual sync rules indicating the source and destination.",
          "x-intellij-html-description": "manual sync rules indicating the source and destination."
        }
      },
      "preferredOrder": [
        "manual"
      ],
      "x-intellij-html-description": "<em>alpha</em> specifies what files to sync into the container. This is a list of sync rules indicating the intent to sync for source files.",
      "type": "object",
      "description": "*alpha* specifies what files to sync into the container. This is a list of sync rules indicating the intent to sync for source files.",
      "additionalProperties": false
    },
    "SyncRule": {
      "required": [
        "src",
        "dest"
      ],
      "properties": {
        "dest": {
          "type": "string",
          "description": "destination path in the container where the files should be synced to.",
          "x-intellij-html-description": "destination path in the container where the files should be synced to.",
          "examples": [
            "\"app/\""
          ]
        },
        "src": {
          "type": "string",
          "description": "a glob pattern to match local paths against.",
          "x-intellij-html-description": "a glob pattern to match local paths against.",
          "examples": [
            "\"css/**/*.css\""
          ]
        },
        "strip": {
          "type": "string",
          "description": "specifies the path prefix to remove from the source path when transplanting the files into the destination folder.",
          "x-intellij-html-description": "specifies the path prefix to remove from the source path when transplanting the files into the destination folder.",
          "examples": [
            "\"css/\""
          ]
        }
      },
      "preferredOrder": [
        "src",
        "dest",
        "strip"
      ],
      "x-intellij-html-description": "specifies which local files to sync to remote folders.",
      "type": "object",
      "description": "specifies which local files to sync to remote folders.",
      "additionalProperties": false
    },
    "TagPolicy": {
      "properties": {
        "dateTime": {
          "$ref": "#/$defs/DateTimeTagger",
          "description": "*beta* tags images with the build timestamp.",
          "x-intellij-html-description": "<em>beta</em> tags images with the build timestamp."
        },
        "envTemplate": {
          "$ref": "#/$defs/EnvTemplateTagger",
          "description": "*beta* tags images with a configurable template string.",
          "x-intellij-html-description": "<em>beta</em> tags images with a configurable template string."
        },
        "gitCommit": {
          "$ref": "#/$defs/GitTagger",
          "description": "*beta* tags images with the git tag or commit of the artifact's workspace.",
          "x-intellij-html-description": "<em>beta</em> tags images with the git tag or commit of the artifact's workspace."
        },
        "sha256": {
          "$ref": "#/$defs/ShaTagger",
          "description": "*beta* tags images with their sha256 digest.",
          "x-intellij-html-description": "<em>beta</em> tags images with their sha256 digest."
        }
      },
      "preferredOrder": [
        "gitCommit",
        "sha256",
        "envTemplate",
        "dateTime"
      ],
      "x-intellij-html-description": "contains all the configuration for the tagging step.",
      "type": "object",
      "description": "contains all the configuration for the tagging step.",
      "additionalProperties": false
    },
    "TestCase": {
      "required": [
        "image"
      ],
      "properties": {
        "image": {
          "type": "string",
          "description": "artifact on which to run those tests.",
          "x-intellij-html-description": "artifact on which to run those tests.",
          "examples": [
            "gcr.io/k8s-skaffold/example"
          ]
        },
        "structureTests": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "the [Container Structure Tests](https://github.com/GoogleContainerTools/container-structure-test) to run on that artifact.",
          "x-intellij-html-description": "the <a href=\"https://github.com/GoogleContainerTools/container-structure-test\">Container Structure Tests</a> to run on that artifact.",
          "default": "[]",
          "examples": [
            "[\"./test/*\"]"
          ]
        }
      },
      "preferredOrder": [
        "image",
        "structureTests"
      ],
      "x-intellij-html-description": "a list of structure tests to run on images that Skaffold builds.",
      "type": "object",
      "description": "a list of structure tests to run on images that Skaffold builds.",
      "additionalProperties": false
    }
  },
  "anyOf": [
    {
      "$ref": "#/$defs/SkaffoldConfig"
    }
  ]
}
