{
    "anyOf": [
        {
            "$ref": "#/definitions/SkaffoldConfig"
        }
    ],
    "definitions": {
        "Activation": {
            "additionalProperties": false,
            "description": "criteria by which a profile is auto-activated.",
            "preferredOrder": [
                "env",
                "kubeContext",
                "command"
            ],
            "properties": {
                "command": {
                    "description": "a Skaffold command for which the profile is auto-activated.",
                    "examples": [
                        "dev"
                    ],
                    "type": "string",
                    "x-intellij-html-description": "a Skaffold command for which the profile is auto-activated."
                },
                "env": {
                    "description": "a `key=pattern` pair. The profile is auto-activated if an Environment Variable `key` matches the pattern. If the pattern starts with `!`, activation happens if the remaining pattern is _not_ matched. The pattern matches if the Environment Variable value is exactly `pattern`, or the regex `pattern` is found in it. An empty `pattern` (e.g. `env: \"key=\"`) always only matches if the Environment Variable is undefined or empty.",
                    "examples": [
                        "ENV=production"
                    ],
                    "type": "string",
                    "x-intellij-html-description": "a <code>key=pattern</code> pair. The profile is auto-activated if an Environment Variable <code>key</code> matches the pattern. If the pattern starts with <code>!</code>, activation happens if the remaining pattern is <em>not</em> matched. The pattern matches if the Environment Variable value is exactly <code>pattern</code>, or the regex <code>pattern</code> is found in it. An empty <code>pattern</code> (e.g. <code>env: &quot;key=&quot;</code>) always only matches if the Environment Variable is undefined or empty."
                },
                "kubeContext": {
                    "description": "a Kubernetes context for which the profile is auto-activated.",
                    "examples": [
                        "minikube"
                    ],
                    "type": "string",
                    "x-intellij-html-description": "a Kubernetes context for which the profile is auto-activated."
                }
            },
            "x-intellij-html-description": "criteria by which a profile is auto-activated."
        },
        "Artifact": {
            "anyOf": [
                {
                    "additionalProperties": false,
                    "preferredOrder": [
                        "image",
                        "context",
                        "sync"
                    ],
                    "properties": {
                        "context": {
                            "default": ".",
                            "description": "directory containing the artifact's sources.",
                            "type": "string",
                            "x-intellij-html-description": "directory containing the artifact's sources."
                        },
                        "image": {
                            "description": "name of the image to be built.",
                            "examples": [
                                "gcr.io/k8s-skaffold/example"
                            ],
                            "type": "string",
                            "x-intellij-html-description": "name of the image to be built."
                        },
                        "sync": {
                            "$ref": "#/definitions/Sync",
                            "default": "infer: [\"**/*\"]",
                            "description": "*beta* local files synced to pods instead of triggering an image build when modified. If no files are listed, sync all the files and infer the destination.",
                            "x-intellij-html-description": "<em>beta</em> local files synced to pods instead of triggering an image build when modified. If no files are listed, sync all the files and infer the destination."
                        }
                    }
                },
                {
                    "additionalProperties": false,
                    "preferredOrder": [
                        "image",
                        "context",
                        "sync",
                        "docker"
                    ],
                    "properties": {
                        "context": {
                            "default": ".",
                            "description": "directory containing the artifact's sources.",
                            "type": "string",
                            "x-intellij-html-description": "directory containing the artifact's sources."
                        },
                        "docker": {
                            "$ref": "#/definitions/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": {
                            "description": "name of the image to be built.",
                            "examples": [
                                "gcr.io/k8s-skaffold/example"
                            ],
                            "type": "string",
                            "x-intellij-html-description": "name of the image to be built."
                        },
                        "sync": {
                            "$ref": "#/definitions/Sync",
                            "default": "infer: [\"**/*\"]",
                            "description": "*beta* local files synced to pods instead of triggering an image build when modified. If no files are listed, sync all the files and infer the destination.",
                            "x-intellij-html-description": "<em>beta</em> local files synced to pods instead of triggering an image build when modified. If no files are listed, sync all the files and infer the destination."
                        }
                    }
                },
                {
                    "additionalProperties": false,
                    "preferredOrder": [
                        "image",
                        "context",
                        "sync",
                        "bazel"
                    ],
                    "properties": {
                        "bazel": {
                            "$ref": "#/definitions/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": {
                            "default": ".",
                            "description": "directory containing the artifact's sources.",
                            "type": "string",
                            "x-intellij-html-description": "directory containing the artifact's sources."
                        },
                        "image": {
                            "description": "name of the image to be built.",
                            "examples": [
                                "gcr.io/k8s-skaffold/example"
                            ],
                            "type": "string",
                            "x-intellij-html-description": "name of the image to be built."
                        },
                        "sync": {
                            "$ref": "#/definitions/Sync",
                            "default": "infer: [\"**/*\"]",
                            "description": "*beta* local files synced to pods instead of triggering an image build when modified. If no files are listed, sync all the files and infer the destination.",
                            "x-intellij-html-description": "<em>beta</em> local files synced to pods instead of triggering an image build when modified. If no files are listed, sync all the files and infer the destination."
                        }
                    }
                },
                {
                    "additionalProperties": false,
                    "preferredOrder": [
                        "image",
                        "context",
                        "sync",
                        "jib"
                    ],
                    "properties": {
                        "context": {
                            "default": ".",
                            "description": "directory containing the artifact's sources.",
                            "type": "string",
                            "x-intellij-html-description": "directory containing the artifact's sources."
                        },
                        "image": {
                            "description": "name of the image to be built.",
                            "examples": [
                                "gcr.io/k8s-skaffold/example"
                            ],
                            "type": "string",
                            "x-intellij-html-description": "name of the image to be built."
                        },
                        "jib": {
                            "$ref": "#/definitions/JibArtifact",
                            "description": "builds images using the [Jib plugins for Maven or Gradle](https://github.com/GoogleContainerTools/jib/).",
                            "x-intellij-html-description": "builds images using the <a href=\"https://github.com/GoogleContainerTools/jib/\">Jib plugins for Maven or Gradle</a>."
                        },
                        "sync": {
                            "$ref": "#/definitions/Sync",
                            "default": "infer: [\"**/*\"]",
                            "description": "*beta* local files synced to pods instead of triggering an image build when modified. If no files are listed, sync all the files and infer the destination.",
                            "x-intellij-html-description": "<em>beta</em> local files synced to pods instead of triggering an image build when modified. If no files are listed, sync all the files and infer the destination."
                        }
                    }
                },
                {
                    "additionalProperties": false,
                    "preferredOrder": [
                        "image",
                        "context",
                        "sync",
                        "kaniko"
                    ],
                    "properties": {
                        "context": {
                            "default": ".",
                            "description": "directory containing the artifact's sources.",
                            "type": "string",
                            "x-intellij-html-description": "directory containing the artifact's sources."
                        },
                        "image": {
                            "description": "name of the image to be built.",
                            "examples": [
                                "gcr.io/k8s-skaffold/example"
                            ],
                            "type": "string",
                            "x-intellij-html-description": "name of the image to be built."
                        },
                        "kaniko": {
                            "$ref": "#/definitions/KanikoArtifact",
                            "description": "builds images using [kaniko](https://github.com/GoogleContainerTools/kaniko).",
                            "x-intellij-html-description": "builds images using <a href=\"https://github.com/GoogleContainerTools/kaniko\">kaniko</a>."
                        },
                        "sync": {
                            "$ref": "#/definitions/Sync",
                            "default": "infer: [\"**/*\"]",
                            "description": "*beta* local files synced to pods instead of triggering an image build when modified. If no files are listed, sync all the files and infer the destination.",
                            "x-intellij-html-description": "<em>beta</em> local files synced to pods instead of triggering an image build when modified. If no files are listed, sync all the files and infer the destination."
                        }
                    }
                },
                {
                    "additionalProperties": false,
                    "preferredOrder": [
                        "image",
                        "context",
                        "sync",
                        "buildpack"
                    ],
                    "properties": {
                        "buildpack": {
                            "$ref": "#/definitions/BuildpackArtifact",
                            "description": "builds images using [Cloud Native Buildpacks](https://buildpacks.io/).",
                            "x-intellij-html-description": "builds images using <a href=\"https://buildpacks.io/\">Cloud Native Buildpacks</a>."
                        },
                        "context": {
                            "default": ".",
                            "description": "directory containing the artifact's sources.",
                            "type": "string",
                            "x-intellij-html-description": "directory containing the artifact's sources."
                        },
                        "image": {
                            "description": "name of the image to be built.",
                            "examples": [
                                "gcr.io/k8s-skaffold/example"
                            ],
                            "type": "string",
                            "x-intellij-html-description": "name of the image to be built."
                        },
                        "sync": {
                            "$ref": "#/definitions/Sync",
                            "default": "infer: [\"**/*\"]",
                            "description": "*beta* local files synced to pods instead of triggering an image build when modified. If no files are listed, sync all the files and infer the destination.",
                            "x-intellij-html-description": "<em>beta</em> local files synced to pods instead of triggering an image build when modified. If no files are listed, sync all the files and infer the destination."
                        }
                    }
                },
                {
                    "additionalProperties": false,
                    "preferredOrder": [
                        "image",
                        "context",
                        "sync",
                        "custom"
                    ],
                    "properties": {
                        "context": {
                            "default": ".",
                            "description": "directory containing the artifact's sources.",
                            "type": "string",
                            "x-intellij-html-description": "directory containing the artifact's sources."
                        },
                        "custom": {
                            "$ref": "#/definitions/CustomArtifact",
                            "description": "*beta* builds images using a custom build script written by the user.",
                            "x-intellij-html-description": "<em>beta</em> builds images using a custom build script written by the user."
                        },
                        "image": {
                            "description": "name of the image to be built.",
                            "examples": [
                                "gcr.io/k8s-skaffold/example"
                            ],
                            "type": "string",
                            "x-intellij-html-description": "name of the image to be built."
                        },
                        "sync": {
                            "$ref": "#/definitions/Sync",
                            "default": "infer: [\"**/*\"]",
                            "description": "*beta* local files synced to pods instead of triggering an image build when modified. If no files are listed, sync all the files and infer the destination.",
                            "x-intellij-html-description": "<em>beta</em> local files synced to pods instead of triggering an image build when modified. If no files are listed, sync all the files and infer the destination."
                        }
                    }
                }
            ],
            "description": "items that need to be built, along with the context in which they should be built.",
            "required": [
                "image"
            ],
            "x-intellij-html-description": "items that need to be built, along with the context in which they should be built."
        },
        "Auto": {
            "description": "cannot be customized.",
            "x-intellij-html-description": "cannot be customized."
        },
        "BazelArtifact": {
            "additionalProperties": false,
            "description": "describes an artifact built with [Bazel](https://bazel.build/).",
            "preferredOrder": [
                "target",
                "args"
            ],
            "properties": {
                "args": {
                    "default": "[]",
                    "description": "additional args to pass to `bazel build`.",
                    "examples": [
                        "[\"-flag\", \"--otherflag\"]"
                    ],
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "x-intellij-html-description": "additional args to pass to <code>bazel build</code>."
                },
                "target": {
                    "description": "`bazel build` target to run.",
                    "examples": [
                        "//:skaffold_example.tar"
                    ],
                    "type": "string",
                    "x-intellij-html-description": "<code>bazel build</code> target to run."
                }
            },
            "required": [
                "target"
            ],
            "x-intellij-html-description": "describes an artifact built with <a href=\"https://bazel.build/\">Bazel</a>."
        },
        "BuildConfig": {
            "anyOf": [
                {
                    "additionalProperties": false,
                    "preferredOrder": [
                        "artifacts",
                        "insecureRegistries",
                        "tagPolicy"
                    ],
                    "properties": {
                        "artifacts": {
                            "description": "the images you're going to be building.",
                            "items": {
                                "$ref": "#/definitions/Artifact"
                            },
                            "type": "array",
                            "x-intellij-html-description": "the images you're going to be building."
                        },
                        "insecureRegistries": {
                            "default": "[]",
                            "description": "a list of registries declared by the user to be insecure. These registries will be connected to via HTTP instead of HTTPS.",
                            "items": {
                                "type": "string"
                            },
                            "type": "array",
                            "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."
                        },
                        "tagPolicy": {
                            "$ref": "#/definitions/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>."
                        }
                    }
                },
                {
                    "additionalProperties": false,
                    "preferredOrder": [
                        "artifacts",
                        "insecureRegistries",
                        "tagPolicy",
                        "local"
                    ],
                    "properties": {
                        "artifacts": {
                            "description": "the images you're going to be building.",
                            "items": {
                                "$ref": "#/definitions/Artifact"
                            },
                            "type": "array",
                            "x-intellij-html-description": "the images you're going to be building."
                        },
                        "insecureRegistries": {
                            "default": "[]",
                            "description": "a list of registries declared by the user to be insecure. These registries will be connected to via HTTP instead of HTTPS.",
                            "items": {
                                "type": "string"
                            },
                            "type": "array",
                            "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."
                        },
                        "local": {
                            "$ref": "#/definitions/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": "#/definitions/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>."
                        }
                    }
                },
                {
                    "additionalProperties": false,
                    "preferredOrder": [
                        "artifacts",
                        "insecureRegistries",
                        "tagPolicy",
                        "googleCloudBuild"
                    ],
                    "properties": {
                        "artifacts": {
                            "description": "the images you're going to be building.",
                            "items": {
                                "$ref": "#/definitions/Artifact"
                            },
                            "type": "array",
                            "x-intellij-html-description": "the images you're going to be building."
                        },
                        "googleCloudBuild": {
                            "$ref": "#/definitions/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": {
                            "default": "[]",
                            "description": "a list of registries declared by the user to be insecure. These registries will be connected to via HTTP instead of HTTPS.",
                            "items": {
                                "type": "string"
                            },
                            "type": "array",
                            "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."
                        },
                        "tagPolicy": {
                            "$ref": "#/definitions/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>."
                        }
                    }
                },
                {
                    "additionalProperties": false,
                    "preferredOrder": [
                        "artifacts",
                        "insecureRegistries",
                        "tagPolicy",
                        "cluster"
                    ],
                    "properties": {
                        "artifacts": {
                            "description": "the images you're going to be building.",
                            "items": {
                                "$ref": "#/definitions/Artifact"
                            },
                            "type": "array",
                            "x-intellij-html-description": "the images you're going to be building."
                        },
                        "cluster": {
                            "$ref": "#/definitions/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": {
                            "default": "[]",
                            "description": "a list of registries declared by the user to be insecure. These registries will be connected to via HTTP instead of HTTPS.",
                            "items": {
                                "type": "string"
                            },
                            "type": "array",
                            "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."
                        },
                        "tagPolicy": {
                            "$ref": "#/definitions/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>."
                        }
                    }
                }
            ],
            "description": "contains all the configuration for the build steps.",
            "x-intellij-html-description": "contains all the configuration for the build steps."
        },
        "BuildpackArtifact": {
            "additionalProperties": false,
            "description": "*alpha* describes an artifact built using [Cloud Native Buildpacks](https://buildpacks.io/). It can be used to build images out of project's sources without any additional configuration.",
            "preferredOrder": [
                "builder",
                "runImage",
                "env",
                "buildpacks",
                "dependencies"
            ],
            "properties": {
                "builder": {
                    "description": "builder image used.",
                    "type": "string",
                    "x-intellij-html-description": "builder image used."
                },
                "buildpacks": {
                    "default": "[]",
                    "description": "a list of strings, where each string is a specific buildpack to use with the builder. If you specify buildpacks the builder image automatic detection will be ignored. These buildpacks will be used to build the Image from your source code. Order matters.",
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "x-intellij-html-description": "a list of strings, where each string is a specific buildpack to use with the builder. If you specify buildpacks the builder image automatic detection will be ignored. These buildpacks will be used to build the Image from your source code. Order matters."
                },
                "dependencies": {
                    "$ref": "#/definitions/BuildpackDependencies",
                    "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."
                },
                "env": {
                    "default": "[]",
                    "description": "environment variables, in the `key=value` form,  passed to the build. Values can use the go template syntax.",
                    "examples": [
                        "[\"key1=value1\", \"key2=value2\", \"key3={{.ENV_VARIABLE}}\"]"
                    ],
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "x-intellij-html-description": "environment variables, in the <code>key=value</code> form,  passed to the build. Values can use the go template syntax."
                },
                "runImage": {
                    "description": "overrides the stack's default run image.",
                    "type": "string",
                    "x-intellij-html-description": "overrides the stack's default run image."
                }
            },
            "required": [
                "builder"
            ],
            "x-intellij-html-description": "<em>alpha</em> describes an artifact built using <a href=\"https://buildpacks.io/\">Cloud Native Buildpacks</a>. It can be used to build images out of project's sources without any additional configuration."
        },
        "BuildpackDependencies": {
            "additionalProperties": false,
            "description": "*alpha* used to specify dependencies for an artifact built by a buildpack.",
            "preferredOrder": [
                "paths",
                "ignore"
            ],
            "properties": {
                "ignore": {
                    "default": "[]",
                    "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`.",
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "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>."
                },
                "paths": {
                    "default": "[]",
                    "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.",
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "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."
                }
            },
            "x-intellij-html-description": "<em>alpha</em> used to specify dependencies for an artifact built by a buildpack."
        },
        "ClusterDetails": {
            "additionalProperties": false,
            "description": "*beta* describes how to do an on-cluster build.",
            "preferredOrder": [
                "HTTP_PROXY",
                "HTTPS_PROXY",
                "pullSecret",
                "pullSecretName",
                "pullSecretMountPath",
                "namespace",
                "timeout",
                "dockerConfig",
                "serviceAccount",
                "runAsUser",
                "resources",
                "concurrency",
                "volumes",
                "randomPullSecret",
                "randomDockerConfigSecret"
            ],
            "properties": {
                "HTTPS_PROXY": {
                    "description": "for kaniko pod.",
                    "type": "string",
                    "x-intellij-html-description": "for kaniko pod."
                },
                "HTTP_PROXY": {
                    "description": "for kaniko pod.",
                    "type": "string",
                    "x-intellij-html-description": "for kaniko pod."
                },
                "concurrency": {
                    "default": "0",
                    "description": "how many artifacts can be built concurrently. 0 means \"no-limit\".",
                    "type": "integer",
                    "x-intellij-html-description": "how many artifacts can be built concurrently. 0 means &quot;no-limit&quot;."
                },
                "dockerConfig": {
                    "$ref": "#/definitions/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": {
                    "description": "Kubernetes namespace. Defaults to current namespace in Kubernetes configuration.",
                    "type": "string",
                    "x-intellij-html-description": "Kubernetes namespace. Defaults to current namespace in Kubernetes configuration."
                },
                "pullSecret": {
                    "description": "path to the Google Cloud service account secret key file.",
                    "type": "string",
                    "x-intellij-html-description": "path to the Google Cloud service account secret key file."
                },
                "pullSecretMountPath": {
                    "description": "path the pull secret will be mounted at within the running container.",
                    "type": "string",
                    "x-intellij-html-description": "path the pull secret will be mounted at within the running container."
                },
                "pullSecretName": {
                    "default": "kaniko-secret",
                    "description": "name of the Kubernetes secret for pulling base images and pushing the final image. If given, the secret needs to contain the Google Cloud service account secret key under the key `kaniko-secret`.",
                    "type": "string",
                    "x-intellij-html-description": "name of the Kubernetes secret for pulling base images and pushing the final image. If given, the secret needs to contain the Google Cloud service account secret key under the key <code>kaniko-secret</code>."
                },
                "randomDockerConfigSecret": {
                    "default": "false",
                    "description": "adds a random UUID postfix to the default name of the docker secret to facilitate parallel builds, e.g. docker-cfgfd154022-c761-416f-8eb3-cf8258450b85.",
                    "type": "boolean",
                    "x-intellij-html-description": "adds a random UUID postfix to the default name of the docker secret to facilitate parallel builds, e.g. docker-cfgfd154022-c761-416f-8eb3-cf8258450b85."
                },
                "randomPullSecret": {
                    "default": "false",
                    "description": "adds a random UUID postfix to the default name of the pull secret to facilitate parallel builds, e.g. kaniko-secretdocker-cfgfd154022-c761-416f-8eb3-cf8258450b85.",
                    "type": "boolean",
                    "x-intellij-html-description": "adds a random UUID postfix to the default name of the pull secret to facilitate parallel builds, e.g. kaniko-secretdocker-cfgfd154022-c761-416f-8eb3-cf8258450b85."
                },
                "resources": {
                    "$ref": "#/definitions/ResourceRequirements",
                    "description": "define the resource requirements for the kaniko pod.",
                    "x-intellij-html-description": "define the resource requirements for the kaniko pod."
                },
                "runAsUser": {
                    "description": "defines the UID to request for running the container. If omitted, no SeurityContext will be specified for the pod and will therefore be inherited from the service account.",
                    "type": "integer",
                    "x-intellij-html-description": "defines the UID to request for running the container. If omitted, no SeurityContext will be specified for the pod and will therefore be inherited from the service account."
                },
                "serviceAccount": {
                    "description": "describes the Kubernetes service account to use for the pod. Defaults to 'default'.",
                    "type": "string",
                    "x-intellij-html-description": "describes the Kubernetes service account to use for the pod. Defaults to 'default'."
                },
                "timeout": {
                    "description": "amount of time (in seconds) that this build is allowed to run. Defaults to 20 minutes (`20m`).",
                    "type": "string",
                    "x-intellij-html-description": "amount of time (in seconds) that this build is allowed to run. Defaults to 20 minutes (<code>20m</code>)."
                },
                "volumes": {
                    "default": "[]",
                    "description": "defines container mounts for ConfigMap and Secret resources.",
                    "items": {},
                    "type": "array",
                    "x-intellij-html-description": "defines container mounts for ConfigMap and Secret resources."
                }
            },
            "x-intellij-html-description": "<em>beta</em> describes how to do an on-cluster build."
        },
        "CustomArtifact": {
            "additionalProperties": false,
            "description": "*beta* 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.",
            "preferredOrder": [
                "buildCommand",
                "dependencies"
            ],
            "properties": {
                "buildCommand": {
                    "description": "command executed to build the image.",
                    "type": "string",
                    "x-intellij-html-description": "command executed to build the image."
                },
                "dependencies": {
                    "$ref": "#/definitions/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."
                }
            },
            "x-intellij-html-description": "<em>beta</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."
        },
        "CustomDependencies": {
            "additionalProperties": false,
            "description": "*beta* 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.",
            "preferredOrder": [
                "dockerfile",
                "command",
                "paths",
                "ignore"
            ],
            "properties": {
                "command": {
                    "description": "represents a custom command that skaffold executes to obtain dependencies. The output of this command *must* be a valid JSON array.",
                    "type": "string",
                    "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": "#/definitions/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": {
                    "default": "[]",
                    "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`.",
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "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>."
                },
                "paths": {
                    "default": "[]",
                    "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.",
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "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."
                }
            },
            "x-intellij-html-description": "<em>beta</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."
        },
        "DateTimeTagger": {
            "additionalProperties": false,
            "description": "*beta* tags images with the build timestamp.",
            "preferredOrder": [
                "format",
                "timezone"
            ],
            "properties": {
                "format": {
                    "default": "2006-01-02_15-04-05.999_MST",
                    "description": "formats the date and time. See [#Time.Format](https://golang.org/pkg/time/#Time.Format).",
                    "type": "string",
                    "x-intellij-html-description": "formats the date and time. See <a href=\"https://golang.org/pkg/time/#Time.Format\">#Time.Format</a>."
                },
                "timezone": {
                    "description": "sets the timezone for the date and time. See [Time.LoadLocation](https://golang.org/pkg/time/#Time.LoadLocation). Defaults to the local timezone.",
                    "type": "string",
                    "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."
                }
            },
            "x-intellij-html-description": "<em>beta</em> tags images with the build timestamp."
        },
        "DeployConfig": {
            "additionalProperties": false,
            "description": "contains all the configuration needed by the deploy steps.",
            "preferredOrder": [
                "helm",
                "kubectl",
                "kustomize",
                "statusCheckDeadlineSeconds",
                "kubeContext"
            ],
            "properties": {
                "helm": {
                    "$ref": "#/definitions/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."
                },
                "kubeContext": {
                    "description": "Kubernetes context that Skaffold should deploy to.",
                    "examples": [
                        "minikube"
                    ],
                    "type": "string",
                    "x-intellij-html-description": "Kubernetes context that Skaffold should deploy to."
                },
                "kubectl": {
                    "$ref": "#/definitions/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."
                },
                "kustomize": {
                    "$ref": "#/definitions/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."
                },
                "statusCheckDeadlineSeconds": {
                    "description": "*beta* deadline for deployments to stabilize in seconds.",
                    "type": "integer",
                    "x-intellij-html-description": "<em>beta</em> deadline for deployments to stabilize in seconds."
                }
            },
            "x-intellij-html-description": "contains all the configuration needed by the deploy steps."
        },
        "DockerArtifact": {
            "additionalProperties": false,
            "description": "describes an artifact built from a Dockerfile, usually using `docker build`.",
            "preferredOrder": [
                "dockerfile",
                "target",
                "buildArgs",
                "network",
                "cacheFrom",
                "noCache"
            ],
            "properties": {
                "buildArgs": {
                    "additionalProperties": {
                        "type": "string"
                    },
                    "default": "{}",
                    "description": "arguments passed to the docker build.",
                    "examples": [
                        "{\"key1\": \"value1\", \"key2\": \"value2\"}"
                    ],
                    "type": "object",
                    "x-intellij-html-description": "arguments passed to the docker build."
                },
                "cacheFrom": {
                    "default": "[]",
                    "description": "the Docker images used as cache sources.",
                    "examples": [
                        "[\"golang:1.10.1-alpine3.7\", \"alpine:3.7\"]"
                    ],
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "x-intellij-html-description": "the Docker images used as cache sources."
                },
                "dockerfile": {
                    "default": "Dockerfile",
                    "description": "locates the Dockerfile relative to workspace.",
                    "type": "string",
                    "x-intellij-html-description": "locates the Dockerfile relative to workspace."
                },
                "network": {
                    "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.",
                    "enum": [
                        "host",
                        "bridge",
                        "none"
                    ],
                    "type": "string",
                    "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."
                },
                "noCache": {
                    "default": "false",
                    "description": "used to pass in --no-cache to docker build to prevent caching.",
                    "type": "boolean",
                    "x-intellij-html-description": "used to pass in --no-cache to docker build to prevent caching."
                },
                "target": {
                    "description": "Dockerfile target name to build.",
                    "type": "string",
                    "x-intellij-html-description": "Dockerfile target name to build."
                }
            },
            "x-intellij-html-description": "describes an artifact built from a Dockerfile, usually using <code>docker build</code>."
        },
        "DockerConfig": {
            "additionalProperties": false,
            "description": "contains information about the docker `config.json` to mount.",
            "preferredOrder": [
                "path",
                "secretName"
            ],
            "properties": {
                "path": {
                    "description": "path to the docker `config.json`.",
                    "type": "string",
                    "x-intellij-html-description": "path to the docker <code>config.json</code>."
                },
                "secretName": {
                    "description": "Kubernetes secret that contains the `config.json` Docker configuration. Note that the expected secret type is not 'kubernetes.io/dockerconfigjson' but 'Opaque'.",
                    "type": "string",
                    "x-intellij-html-description": "Kubernetes secret that contains the <code>config.json</code> Docker configuration. Note that the expected secret type is not 'kubernetes.io/dockerconfigjson' but 'Opaque'."
                }
            },
            "x-intellij-html-description": "contains information about the docker <code>config.json</code> to mount."
        },
        "DockerfileDependency": {
            "additionalProperties": false,
            "description": "*beta* used to specify a custom build artifact that is built from a Dockerfile. This allows skaffold to determine dependencies from the Dockerfile.",
            "preferredOrder": [
                "path",
                "buildArgs"
            ],
            "properties": {
                "buildArgs": {
                    "additionalProperties": {
                        "type": "string"
                    },
                    "default": "{}",
                    "description": "key/value pairs used to resolve values of `ARG` instructions in a Dockerfile. Values can be constants or environment variables via the go template syntax.",
                    "examples": [
                        "{\"key1\": \"value1\", \"key2\": \"value2\", \"key3\": \"'{{.ENV_VARIABLE}}'\"}"
                    ],
                    "type": "object",
                    "x-intellij-html-description": "key/value pairs used to resolve values of <code>ARG</code> instructions in a Dockerfile. Values can be constants or environment variables via the go template syntax."
                },
                "path": {
                    "description": "locates the Dockerfile relative to workspace.",
                    "type": "string",
                    "x-intellij-html-description": "locates the Dockerfile relative to workspace."
                }
            },
            "x-intellij-html-description": "<em>beta</em> used to specify a custom build artifact that is built from a Dockerfile. This allows skaffold to determine dependencies from the Dockerfile."
        },
        "EnvTemplateTagger": {
            "additionalProperties": false,
            "description": "*beta* tags images with a configurable template string.",
            "preferredOrder": [
                "template"
            ],
            "properties": {
                "template": {
                    "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.",
                    "examples": [
                        "{{.RELEASE}}-{{.IMAGE_NAME}}"
                    ],
                    "type": "string",
                    "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."
                }
            },
            "required": [
                "template"
            ],
            "x-intellij-html-description": "<em>beta</em> tags images with a configurable template string."
        },
        "GitTagger": {
            "additionalProperties": false,
            "description": "*beta* tags images with the git tag or commit of the artifact's workspace.",
            "preferredOrder": [
                "variant",
                "prefix"
            ],
            "properties": {
                "prefix": {
                    "description": "adds a fixed prefix to the tag.",
                    "type": "string",
                    "x-intellij-html-description": "adds a fixed prefix to the tag."
                },
                "variant": {
                    "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. `TreeSha`: use the full tree hash of the artifact workingdir. `AbbrevTreeSha`: use the abbreviated tree hash of the artifact workingdir.",
                    "type": "string",
                    "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. <code>TreeSha</code>: use the full tree hash of the artifact workingdir. <code>AbbrevTreeSha</code>: use the abbreviated tree hash of the artifact workingdir."
                }
            },
            "x-intellij-html-description": "<em>beta</em> tags images with the git tag or commit of the artifact's workspace."
        },
        "GoogleCloudBuild": {
            "additionalProperties": false,
            "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.",
            "preferredOrder": [
                "projectId",
                "diskSizeGb",
                "machineType",
                "timeout",
                "logging",
                "logStreamingOption",
                "dockerImage",
                "kanikoImage",
                "mavenImage",
                "gradleImage",
                "packImage",
                "concurrency"
            ],
            "properties": {
                "concurrency": {
                    "default": "0",
                    "description": "how many artifacts can be built concurrently. 0 means \"no-limit\".",
                    "type": "integer",
                    "x-intellij-html-description": "how many artifacts can be built concurrently. 0 means &quot;no-limit&quot;."
                },
                "diskSizeGb": {
                    "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).",
                    "type": "integer",
                    "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": {
                    "default": "gcr.io/cloud-builders/docker",
                    "description": "image that runs a Docker build. See [Cloud Builders](https://cloud.google.com/cloud-build/docs/cloud-builders).",
                    "type": "string",
                    "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>."
                },
                "gradleImage": {
                    "default": "gcr.io/cloud-builders/gradle",
                    "description": "image that runs a Gradle build. See [Cloud Builders](https://cloud.google.com/cloud-build/docs/cloud-builders).",
                    "type": "string",
                    "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>."
                },
                "kanikoImage": {
                    "default": "gcr.io/kaniko-project/executor",
                    "description": "image that runs a Kaniko build. See [Cloud Builders](https://cloud.google.com/cloud-build/docs/cloud-builders).",
                    "type": "string",
                    "x-intellij-html-description": "image that runs a Kaniko build. See <a href=\"https://cloud.google.com/cloud-build/docs/cloud-builders\">Cloud Builders</a>."
                },
                "logStreamingOption": {
                    "description": "specifies the behavior when writing build logs to Google Cloud Storage. Valid options are: `STREAM_DEFAULT`: Service may automatically determine build log streaming behavior. `STREAM_ON`:  Build logs should be streamed to Google Cloud Storage. `STREAM_OFF`: Build logs should not be streamed to Google Cloud Storage; they will be written when the build is completed. See [Cloud Build Reference](https://cloud.google.com/cloud-build/docs/api/reference/rest/v1/projects.builds#logstreamingoption).",
                    "type": "string",
                    "x-intellij-html-description": "specifies the behavior when writing build logs to Google Cloud Storage. Valid options are: <code>STREAM_DEFAULT</code>: Service may automatically determine build log streaming behavior. <code>STREAM_ON</code>:  Build logs should be streamed to Google Cloud Storage. <code>STREAM_OFF</code>: Build logs should not be streamed to Google Cloud Storage; they will be written when the build is completed. See <a href=\"https://cloud.google.com/cloud-build/docs/api/reference/rest/v1/projects.builds#logstreamingoption\">Cloud Build Reference</a>."
                },
                "logging": {
                    "description": "specifies the logging mode. Valid modes are: `LOGGING_UNSPECIFIED`: The service determines the logging mode. `LEGACY`: Stackdriver logging and Cloud Storage logging are enabled (default). `GCS_ONLY`: Only Cloud Storage logging is enabled. See [Cloud Build Reference](https://cloud.google.com/cloud-build/docs/api/reference/rest/v1/projects.builds#loggingmode).",
                    "type": "string",
                    "x-intellij-html-description": "specifies the logging mode. Valid modes are: <code>LOGGING_UNSPECIFIED</code>: The service determines the logging mode. <code>LEGACY</code>: Stackdriver logging and Cloud Storage logging are enabled (default). <code>GCS_ONLY</code>: Only Cloud Storage logging is enabled. See <a href=\"https://cloud.google.com/cloud-build/docs/api/reference/rest/v1/projects.builds#loggingmode\">Cloud Build Reference</a>."
                },
                "machineType": {
                    "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).",
                    "type": "string",
                    "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": {
                    "default": "gcr.io/cloud-builders/mvn",
                    "description": "image that runs a Maven build. See [Cloud Builders](https://cloud.google.com/cloud-build/docs/cloud-builders).",
                    "type": "string",
                    "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>."
                },
                "packImage": {
                    "default": "gcr.io/k8s-skaffold/pack",
                    "description": "image that runs a Cloud Native Buildpacks build. See [Cloud Builders](https://cloud.google.com/cloud-build/docs/cloud-builders).",
                    "type": "string",
                    "x-intellij-html-description": "image that runs a Cloud Native Buildpacks build. See <a href=\"https://cloud.google.com/cloud-build/docs/cloud-builders\">Cloud Builders</a>."
                },
                "projectId": {
                    "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.",
                    "type": "string",
                    "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": {
                    "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).",
                    "type": "string",
                    "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>."
                }
            },
            "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."
        },
        "HelmConventionConfig": {
            "additionalProperties": false,
            "description": "image config in the syntax of image.repository and image.tag.",
            "preferredOrder": [
                "explicitRegistry"
            ],
            "properties": {
                "explicitRegistry": {
                    "default": "false",
                    "description": "separates `image.registry` to the image config syntax. Useful for some charts e.g. `postgresql`.",
                    "type": "boolean",
                    "x-intellij-html-description": "separates <code>image.registry</code> to the image config syntax. Useful for some charts e.g. <code>postgresql</code>."
                }
            },
            "x-intellij-html-description": "image config in the syntax of image.repository and image.tag."
        },
        "HelmDeploy": {
            "additionalProperties": false,
            "description": "*beta* uses the `helm` CLI to apply the charts to the cluster.",
            "preferredOrder": [
                "releases",
                "flags"
            ],
            "properties": {
                "flags": {
                    "$ref": "#/definitions/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": {
                    "description": "a list of Helm releases.",
                    "items": {
                        "$ref": "#/definitions/HelmRelease"
                    },
                    "type": "array",
                    "x-intellij-html-description": "a list of Helm releases."
                }
            },
            "required": [
                "releases"
            ],
            "x-intellij-html-description": "<em>beta</em> uses the <code>helm</code> CLI to apply the charts to the cluster."
        },
        "HelmDeployFlags": {
            "additionalProperties": false,
            "description": "additional option flags that are passed on the command line to `helm`.",
            "preferredOrder": [
                "global",
                "install",
                "upgrade"
            ],
            "properties": {
                "global": {
                    "default": "[]",
                    "description": "additional flags passed on every command.",
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "x-intellij-html-description": "additional flags passed on every command."
                },
                "install": {
                    "default": "[]",
                    "description": "additional flags passed to (`helm install`).",
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "x-intellij-html-description": "additional flags passed to (<code>helm install</code>)."
                },
                "upgrade": {
                    "default": "[]",
                    "description": "additional flags passed to (`helm upgrade`).",
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "x-intellij-html-description": "additional flags passed to (<code>helm upgrade</code>)."
                }
            },
            "x-intellij-html-description": "additional option flags that are passed on the command line to <code>helm</code>."
        },
        "HelmFQNConfig": {
            "additionalProperties": false,
            "description": "image config to use the FullyQualifiedImageName as param to set.",
            "preferredOrder": [
                "property"
            ],
            "properties": {
                "property": {
                    "description": "defines the image config.",
                    "type": "string",
                    "x-intellij-html-description": "defines the image config."
                }
            },
            "x-intellij-html-description": "image config to use the FullyQualifiedImageName as param to set."
        },
        "HelmImageStrategy": {
            "anyOf": [
                {
                    "additionalProperties": false
                },
                {
                    "additionalProperties": false,
                    "preferredOrder": [
                        "fqn"
                    ],
                    "properties": {
                        "fqn": {
                            "$ref": "#/definitions/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>."
                        }
                    }
                },
                {
                    "additionalProperties": false,
                    "preferredOrder": [
                        "helm"
                    ],
                    "properties": {
                        "helm": {
                            "$ref": "#/definitions/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>."
                        }
                    }
                }
            ],
            "description": "adds image configurations to the Helm `values` file.",
            "x-intellij-html-description": "adds image configurations to the Helm <code>values</code> file."
        },
        "HelmPackaged": {
            "additionalProperties": false,
            "description": "parameters for packaging helm chart (`helm package`).",
            "preferredOrder": [
                "version",
                "appVersion"
            ],
            "properties": {
                "appVersion": {
                    "description": "sets the `appVersion` on the chart to this version.",
                    "type": "string",
                    "x-intellij-html-description": "sets the <code>appVersion</code> on the chart to this version."
                },
                "version": {
                    "description": "sets the `version` on the chart to this semver version.",
                    "type": "string",
                    "x-intellij-html-description": "sets the <code>version</code> on the chart to this semver version."
                }
            },
            "x-intellij-html-description": "parameters for packaging helm chart (<code>helm package</code>)."
        },
        "HelmRelease": {
            "additionalProperties": false,
            "description": "describes a helm release to be deployed.",
            "preferredOrder": [
                "name",
                "chartPath",
                "valuesFiles",
                "artifactOverrides",
                "namespace",
                "version",
                "setValues",
                "setValueTemplates",
                "setFiles",
                "wait",
                "recreatePods",
                "skipBuildDependencies",
                "useHelmSecrets",
                "remote",
                "overrides",
                "packaged",
                "imageStrategy"
            ],
            "properties": {
                "artifactOverrides": {
                    "additionalProperties": {
                        "type": "string"
                    },
                    "default": "{}",
                    "description": "key value pairs where key represents the parameter used in `values` file to define a container image and value corresponds to artifact i.e. `ImageName` defined in `Build.Artifacts` section.",
                    "type": "object",
                    "x-intellij-html-description": "key value pairs where key represents the parameter used in <code>values</code> file to define a container image and value corresponds to artifact i.e. <code>ImageName</code> defined in <code>Build.Artifacts</code> section."
                },
                "chartPath": {
                    "description": "path to the Helm chart.",
                    "type": "string",
                    "x-intellij-html-description": "path to the Helm chart."
                },
                "imageStrategy": {
                    "$ref": "#/definitions/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": {
                    "description": "name of the Helm release.",
                    "type": "string",
                    "x-intellij-html-description": "name of the Helm release."
                },
                "namespace": {
                    "description": "Kubernetes namespace.",
                    "type": "string",
                    "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": "#/definitions/HelmPackaged",
                    "description": "parameters for packaging helm chart (`helm package`).",
                    "x-intellij-html-description": "parameters for packaging helm chart (<code>helm package</code>)."
                },
                "recreatePods": {
                    "default": "false",
                    "description": "if `true`, Skaffold will send `--recreate-pods` flag to Helm CLI when upgrading a new version of a chart in subsequent dev loop deploy.",
                    "type": "boolean",
                    "x-intellij-html-description": "if <code>true</code>, Skaffold will send <code>--recreate-pods</code> flag to Helm CLI when upgrading a new version of a chart in subsequent dev loop deploy."
                },
                "remote": {
                    "default": "false",
                    "description": "specifies whether the chart path is remote, or exists on the host filesystem. `remote: true` implies `skipBuildDependencies: true`.",
                    "type": "boolean",
                    "x-intellij-html-description": "specifies whether the chart path is remote, or exists on the host filesystem. <code>remote: true</code> implies <code>skipBuildDependencies: true</code>."
                },
                "setFiles": {
                    "additionalProperties": {
                        "type": "string"
                    },
                    "default": "{}",
                    "description": "key-value pairs. If present, Skaffold will send `--set-file` flag to Helm CLI and append all pairs after the flag.",
                    "type": "object",
                    "x-intellij-html-description": "key-value pairs. If present, Skaffold will send <code>--set-file</code> flag to Helm CLI and append all pairs after the flag."
                },
                "setValueTemplates": {
                    "additionalProperties": {
                        "type": "string"
                    },
                    "default": "{}",
                    "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.",
                    "type": "object",
                    "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."
                },
                "setValues": {
                    "additionalProperties": {
                        "type": "string"
                    },
                    "default": "{}",
                    "description": "key-value pairs. If present, Skaffold will send `--set` flag to Helm CLI and append all pairs after the flag.",
                    "type": "object",
                    "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."
                },
                "skipBuildDependencies": {
                    "default": "false",
                    "description": "should build dependencies be skipped.",
                    "type": "boolean",
                    "x-intellij-html-description": "should build dependencies be skipped."
                },
                "useHelmSecrets": {
                    "default": "false",
                    "description": "instructs skaffold to use secrets plugin on deployment.",
                    "type": "boolean",
                    "x-intellij-html-description": "instructs skaffold to use secrets plugin on deployment."
                },
                "valuesFiles": {
                    "default": "[]",
                    "description": "paths to the Helm `values` files.",
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "x-intellij-html-description": "paths to the Helm <code>values</code> files."
                },
                "version": {
                    "description": "version of the chart.",
                    "type": "string",
                    "x-intellij-html-description": "version of the chart."
                },
                "wait": {
                    "default": "false",
                    "description": "if `true`, Skaffold will send `--wait` flag to Helm CLI.",
                    "type": "boolean",
                    "x-intellij-html-description": "if <code>true</code>, Skaffold will send <code>--wait</code> flag to Helm CLI."
                }
            },
            "required": [
                "name",
                "chartPath"
            ],
            "x-intellij-html-description": "describes a helm release to be deployed."
        },
        "JSONPatch": {
            "additionalProperties": false,
            "description": "patch to be applied by a profile.",
            "preferredOrder": [
                "op",
                "path",
                "from",
                "value"
            ],
            "properties": {
                "from": {
                    "description": "source position in the yaml, used for `copy` or `move` operations.",
                    "type": "string",
                    "x-intellij-html-description": "source position in the yaml, used for <code>copy</code> or <code>move</code> operations."
                },
                "op": {
                    "default": "replace",
                    "description": "operation carried by the patch: `add`, `remove`, `replace`, `move`, `copy` or `test`.",
                    "type": "string",
                    "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>."
                },
                "path": {
                    "description": "position in the yaml where the operation takes place. For example, this targets the `dockerfile` of the first artifact built.",
                    "examples": [
                        "/build/artifacts/0/docker/dockerfile"
                    ],
                    "type": "string",
                    "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."
                },
                "value": {
                    "description": "value to apply. Can be any portion of yaml.",
                    "x-intellij-html-description": "value to apply. Can be any portion of yaml."
                }
            },
            "required": [
                "path"
            ],
            "x-intellij-html-description": "patch to be applied by a profile."
        },
        "JibArtifact": {
            "additionalProperties": false,
            "description": "builds images using the [Jib plugins for Maven and Gradle](https://github.com/GoogleContainerTools/jib/).",
            "preferredOrder": [
                "project",
                "args",
                "type"
            ],
            "properties": {
                "args": {
                    "default": "[]",
                    "description": "additional build flags passed to the builder.",
                    "examples": [
                        "[\"--no-build-cache\"]"
                    ],
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "x-intellij-html-description": "additional build flags passed to the builder."
                },
                "project": {
                    "description": "selects which sub-project to build for multi-module builds.",
                    "type": "string",
                    "x-intellij-html-description": "selects which sub-project to build for multi-module builds."
                },
                "type": {
                    "description": "the Jib builder type; normally determined automatically. Valid types are `maven`: for Maven. `gradle`: for Gradle.",
                    "enum": [
                        "maven",
                        "gradle"
                    ],
                    "type": "string",
                    "x-intellij-html-description": "the Jib builder type; normally determined automatically. Valid types are <code>maven</code>: for Maven. <code>gradle</code>: for Gradle."
                }
            },
            "x-intellij-html-description": "builds images using the <a href=\"https://github.com/GoogleContainerTools/jib/\">Jib plugins for Maven and Gradle</a>."
        },
        "KanikoArtifact": {
            "additionalProperties": false,
            "description": "describes an artifact built from a Dockerfile, with kaniko.",
            "preferredOrder": [
                "flags",
                "dockerfile",
                "target",
                "buildArgs",
                "env",
                "initImage",
                "image",
                "cache",
                "reproducible",
                "skipTLS",
                "volumeMounts"
            ],
            "properties": {
                "buildArgs": {
                    "additionalProperties": {
                        "type": "string"
                    },
                    "default": "{}",
                    "description": "arguments passed to the docker build. It also accepts environment variables via the go template syntax.",
                    "examples": [
                        "{\"key1\": \"value1\", \"key2\": \"value2\", \"key3\": \"'{{.ENV_VARIABLE}}'\"}"
                    ],
                    "type": "object",
                    "x-intellij-html-description": "arguments passed to the docker build. It also accepts environment variables via the go template syntax."
                },
                "cache": {
                    "$ref": "#/definitions/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": {
                    "default": "Dockerfile",
                    "description": "locates the Dockerfile relative to workspace.",
                    "type": "string",
                    "x-intellij-html-description": "locates the Dockerfile relative to workspace."
                },
                "env": {
                    "default": "[]",
                    "description": "environment variables passed to the kaniko pod.",
                    "items": {},
                    "type": "array",
                    "x-intellij-html-description": "environment variables passed to the kaniko pod."
                },
                "flags": {
                    "default": "[]",
                    "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`.",
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "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>."
                },
                "image": {
                    "description": "Docker image used by the Kaniko pod. Defaults to the latest released version of `gcr.io/kaniko-project/executor`.",
                    "type": "string",
                    "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>."
                },
                "initImage": {
                    "description": "image used to run init container which mounts kaniko context.",
                    "type": "string",
                    "x-intellij-html-description": "image used to run init container which mounts kaniko context."
                },
                "reproducible": {
                    "default": "false",
                    "description": "used to strip timestamps out of the built image.",
                    "type": "boolean",
                    "x-intellij-html-description": "used to strip timestamps out of the built image."
                },
                "skipTLS": {
                    "default": "false",
                    "description": "skips TLS verification when pulling and pushing the image.",
                    "type": "boolean",
                    "x-intellij-html-description": "skips TLS verification when pulling and pushing the image."
                },
                "target": {
                    "description": "Dockerfile target name to build.",
                    "type": "string",
                    "x-intellij-html-description": "Dockerfile target name to build."
                },
                "volumeMounts": {
                    "default": "[]",
                    "description": "volume mounts passed to kaniko pod.",
                    "items": {},
                    "type": "array",
                    "x-intellij-html-description": "volume mounts passed to kaniko pod."
                }
            },
            "x-intellij-html-description": "describes an artifact built from a Dockerfile, with kaniko."
        },
        "KanikoCache": {
            "additionalProperties": false,
            "description": "configures Kaniko caching. If a cache is specified, Kaniko will use a remote cache which will speed up builds.",
            "preferredOrder": [
                "repo",
                "hostPath"
            ],
            "properties": {
                "hostPath": {
                    "description": "specifies a path on the host that is mounted to each pod as read only cache volume containing base images. If set, must exist on each node and prepopulated with kaniko-warmer.",
                    "type": "string",
                    "x-intellij-html-description": "specifies a path on the host that is mounted to each pod as read only cache volume containing base images. If set, must exist on each node and prepopulated with kaniko-warmer."
                },
                "repo": {
                    "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).",
                    "type": "string",
                    "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>."
                }
            },
            "x-intellij-html-description": "configures Kaniko caching. If a cache is specified, Kaniko will use a remote cache which will speed up builds."
        },
        "KubectlDeploy": {
            "additionalProperties": false,
            "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.",
            "preferredOrder": [
                "manifests",
                "remoteManifests",
                "flags"
            ],
            "properties": {
                "flags": {
                    "$ref": "#/definitions/KubectlFlags",
                    "description": "additional flags passed to `kubectl`.",
                    "x-intellij-html-description": "additional flags passed to <code>kubectl</code>."
                },
                "manifests": {
                    "default": "[\"k8s/*.yaml\"]",
                    "description": "the Kubernetes yaml or json manifests.",
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "x-intellij-html-description": "the Kubernetes yaml or json manifests."
                },
                "remoteManifests": {
                    "default": "[]",
                    "description": "Kubernetes manifests in remote clusters.",
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "x-intellij-html-description": "Kubernetes manifests in remote clusters."
                }
            },
            "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."
        },
        "KubectlFlags": {
            "additionalProperties": false,
            "description": "additional flags passed on the command line to kubectl either on every command (Global), on creations (Apply) or deletions (Delete).",
            "preferredOrder": [
                "global",
                "apply",
                "delete",
                "disableValidation"
            ],
            "properties": {
                "apply": {
                    "default": "[]",
                    "description": "additional flags passed on creations (`kubectl apply`).",
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "x-intellij-html-description": "additional flags passed on creations (<code>kubectl apply</code>)."
                },
                "delete": {
                    "default": "[]",
                    "description": "additional flags passed on deletions (`kubectl delete`).",
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "x-intellij-html-description": "additional flags passed on deletions (<code>kubectl delete</code>)."
                },
                "disableValidation": {
                    "default": "false",
                    "description": "passes the `--validate=false` flag to supported `kubectl` commands when enabled.",
                    "type": "boolean",
                    "x-intellij-html-description": "passes the <code>--validate=false</code> flag to supported <code>kubectl</code> commands when enabled."
                },
                "global": {
                    "default": "[]",
                    "description": "additional flags passed on every command.",
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "x-intellij-html-description": "additional flags passed on every command."
                }
            },
            "x-intellij-html-description": "additional flags passed on the command line to kubectl either on every command (Global), on creations (Apply) or deletions (Delete)."
        },
        "KustomizeDeploy": {
            "additionalProperties": false,
            "description": "*beta* uses the `kustomize` CLI to \"patch\" a deployment for a target environment.",
            "preferredOrder": [
                "paths",
                "flags",
                "buildArgs"
            ],
            "properties": {
                "buildArgs": {
                    "default": "[]",
                    "description": "additional args passed to `kustomize build`.",
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "x-intellij-html-description": "additional args passed to <code>kustomize build</code>."
                },
                "flags": {
                    "$ref": "#/definitions/KubectlFlags",
                    "description": "additional flags passed to `kubectl`.",
                    "x-intellij-html-description": "additional flags passed to <code>kubectl</code>."
                },
                "paths": {
                    "default": "[\".\"]",
                    "description": "path to Kustomization files.",
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "x-intellij-html-description": "path to Kustomization files."
                }
            },
            "x-intellij-html-description": "<em>beta</em> uses the <code>kustomize</code> CLI to &quot;patch&quot; a deployment for a target environment."
        },
        "LocalBuild": {
            "additionalProperties": false,
            "description": "*beta* describes how to do a build on the local docker daemon and optionally push to a repository.",
            "preferredOrder": [
                "push",
                "useDockerCLI",
                "useBuildkit",
                "concurrency"
            ],
            "properties": {
                "concurrency": {
                    "default": "1",
                    "description": "how many artifacts can be built concurrently. 0 means \"no-limit\".",
                    "type": "integer",
                    "x-intellij-html-description": "how many artifacts can be built concurrently. 0 means &quot;no-limit&quot;."
                },
                "push": {
                    "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.",
                    "type": "boolean",
                    "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": {
                    "default": "false",
                    "description": "use BuildKit to build Docker images.",
                    "type": "boolean",
                    "x-intellij-html-description": "use BuildKit to build Docker images."
                },
                "useDockerCLI": {
                    "default": "false",
                    "description": "use `docker` command-line interface instead of Docker Engine APIs.",
                    "type": "boolean",
                    "x-intellij-html-description": "use <code>docker</code> command-line interface instead of Docker Engine APIs."
                }
            },
            "x-intellij-html-description": "<em>beta</em> describes how to do a build on the local docker daemon and optionally push to a repository."
        },
        "Metadata": {
            "additionalProperties": false,
            "description": "holds an optional name of the project.",
            "preferredOrder": [
                "name"
            ],
            "properties": {
                "name": {
                    "description": "an identifier for the project.",
                    "type": "string",
                    "x-intellij-html-description": "an identifier for the project."
                }
            },
            "x-intellij-html-description": "holds an optional name of the project."
        },
        "PortForwardResource": {
            "additionalProperties": false,
            "description": "describes a resource to port forward.",
            "preferredOrder": [
                "resourceType",
                "resourceName",
                "namespace",
                "port",
                "address",
                "localPort"
            ],
            "properties": {
                "address": {
                    "description": "local address to bind to. Defaults to the loopback address 127.0.0.1.",
                    "type": "string",
                    "x-intellij-html-description": "local address to bind to. Defaults to the loopback address 127.0.0.1."
                },
                "localPort": {
                    "description": "local port to forward to. If the port is unavailable, Skaffold will choose a random open port to forward to. *Optional*.",
                    "type": "integer",
                    "x-intellij-html-description": "local port to forward to. If the port is unavailable, Skaffold will choose a random open port to forward to. <em>Optional</em>."
                },
                "namespace": {
                    "description": "namespace of the resource to port forward.",
                    "type": "string",
                    "x-intellij-html-description": "namespace of the resource to port forward."
                },
                "port": {
                    "description": "resource port that will be forwarded.",
                    "type": "integer",
                    "x-intellij-html-description": "resource port that will be forwarded."
                },
                "resourceName": {
                    "description": "name of the Kubernetes resource to port forward.",
                    "type": "string",
                    "x-intellij-html-description": "name of the Kubernetes resource to port forward."
                },
                "resourceType": {
                    "description": "Kubernetes type that should be port forwarded. Acceptable resource types include: `Service`, `Pod` and Controller resource type that has a pod spec: `ReplicaSet`, `ReplicationController`, `Deployment`, `StatefulSet`, `DaemonSet`, `Job`, `CronJob`.",
                    "type": "string",
                    "x-intellij-html-description": "Kubernetes type that should be port forwarded. Acceptable resource types include: <code>Service</code>, <code>Pod</code> and Controller resource type that has a pod spec: <code>ReplicaSet</code>, <code>ReplicationController</code>, <code>Deployment</code>, <code>StatefulSet</code>, <code>DaemonSet</code>, <code>Job</code>, <code>CronJob</code>."
                }
            },
            "x-intellij-html-description": "describes a resource to port forward."
        },
        "Profile": {
            "additionalProperties": false,
            "description": "used to override any `build`, `test` or `deploy` configuration.",
            "preferredOrder": [
                "name",
                "activation",
                "patches",
                "build",
                "test",
                "deploy",
                "portForward"
            ],
            "properties": {
                "activation": {
                    "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.",
                    "items": {
                        "$ref": "#/definitions/Activation"
                    },
                    "type": "array",
                    "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": "#/definitions/BuildConfig",
                    "description": "describes how images are built.",
                    "x-intellij-html-description": "describes how images are built."
                },
                "deploy": {
                    "$ref": "#/definitions/DeployConfig",
                    "description": "describes how images are deployed.",
                    "x-intellij-html-description": "describes how images are deployed."
                },
                "name": {
                    "description": "a unique profile name.",
                    "examples": [
                        "profile-prod"
                    ],
                    "type": "string",
                    "x-intellij-html-description": "a unique profile name."
                },
                "patches": {
                    "description": "patches applied to the configuration. Patches use the JSON patch notation.",
                    "items": {
                        "$ref": "#/definitions/JSONPatch"
                    },
                    "type": "array",
                    "x-intellij-html-description": "patches applied to the configuration. Patches use the JSON patch notation."
                },
                "portForward": {
                    "description": "describes user defined resources to port-forward.",
                    "items": {
                        "$ref": "#/definitions/PortForwardResource"
                    },
                    "type": "array",
                    "x-intellij-html-description": "describes user defined resources to port-forward."
                },
                "test": {
                    "description": "describes how images are tested.",
                    "items": {
                        "$ref": "#/definitions/TestCase"
                    },
                    "type": "array",
                    "x-intellij-html-description": "describes how images are tested."
                }
            },
            "required": [
                "name"
            ],
            "x-intellij-html-description": "used to override any <code>build</code>, <code>test</code> or <code>deploy</code> configuration."
        },
        "ResourceRequirement": {
            "additionalProperties": false,
            "description": "stores the CPU/Memory requirements for the pod.",
            "preferredOrder": [
                "cpu",
                "memory",
                "ephemeralStorage",
                "resourceStorage"
            ],
            "properties": {
                "cpu": {
                    "description": "the number cores to be used.",
                    "examples": [
                        "2`, `2.0` or `200m"
                    ],
                    "type": "string",
                    "x-intellij-html-description": "the number cores to be used."
                },
                "ephemeralStorage": {
                    "description": "the amount of Ephemeral storage to allocate to the pod.",
                    "examples": [
                        "1Gi` or `1000Mi"
                    ],
                    "type": "string",
                    "x-intellij-html-description": "the amount of Ephemeral storage to allocate to the pod."
                },
                "memory": {
                    "description": "the amount of memory to allocate to the pod.",
                    "examples": [
                        "1Gi` or `1000Mi"
                    ],
                    "type": "string",
                    "x-intellij-html-description": "the amount of memory to allocate to the pod."
                },
                "resourceStorage": {
                    "description": "the amount of resource storage to allocate to the pod.",
                    "examples": [
                        "1Gi` or `1000Mi"
                    ],
                    "type": "string",
                    "x-intellij-html-description": "the amount of resource storage to allocate to the pod."
                }
            },
            "x-intellij-html-description": "stores the CPU/Memory requirements for the pod."
        },
        "ResourceRequirements": {
            "additionalProperties": false,
            "description": "describes the resource requirements for the kaniko pod.",
            "preferredOrder": [
                "requests",
                "limits"
            ],
            "properties": {
                "limits": {
                    "$ref": "#/definitions/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": "#/definitions/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."
                }
            },
            "x-intellij-html-description": "describes the resource requirements for the kaniko pod."
        },
        "ResourceType": {
            "description": "describes the Kubernetes resource types used for port forwarding.",
            "type": "string",
            "x-intellij-html-description": "describes the Kubernetes resource types used for port forwarding."
        },
        "ShaTagger": {
            "description": "*beta* tags images with their sha256 digest.",
            "x-intellij-html-description": "<em>beta</em> tags images with their sha256 digest."
        },
        "SkaffoldConfig": {
            "additionalProperties": false,
            "description": "holds the fields parsed from the Skaffold configuration file (skaffold.yaml).",
            "preferredOrder": [
                "apiVersion",
                "kind",
                "metadata",
                "build",
                "test",
                "deploy",
                "portForward",
                "profiles"
            ],
            "properties": {
                "apiVersion": {
                    "description": "version of the configuration.",
                    "type": "string",
                    "x-intellij-html-description": "version of the configuration."
                },
                "build": {
                    "$ref": "#/definitions/BuildConfig",
                    "description": "describes how images are built.",
                    "x-intellij-html-description": "describes how images are built."
                },
                "deploy": {
                    "$ref": "#/definitions/DeployConfig",
                    "description": "describes how images are deployed.",
                    "x-intellij-html-description": "describes how images are deployed."
                },
                "kind": {
                    "default": "Config",
                    "description": "always `Config`.",
                    "type": "string",
                    "x-intellij-html-description": "always <code>Config</code>."
                },
                "metadata": {
                    "$ref": "#/definitions/Metadata",
                    "description": "holds additional information about the config.",
                    "x-intellij-html-description": "holds additional information about the config."
                },
                "portForward": {
                    "description": "describes user defined resources to port-forward.",
                    "items": {
                        "$ref": "#/definitions/PortForwardResource"
                    },
                    "type": "array",
                    "x-intellij-html-description": "describes user defined resources to port-forward."
                },
                "profiles": {
                    "description": "*beta* can override be used to `build`, `test` or `deploy` configuration.",
                    "items": {
                        "$ref": "#/definitions/Profile"
                    },
                    "type": "array",
                    "x-intellij-html-description": "<em>beta</em> can override be used to <code>build</code>, <code>test</code> or <code>deploy</code> configuration."
                },
                "test": {
                    "description": "describes how images are tested.",
                    "items": {
                        "$ref": "#/definitions/TestCase"
                    },
                    "type": "array",
                    "x-intellij-html-description": "describes how images are tested."
                }
            },
            "required": [
                "apiVersion",
                "kind"
            ],
            "x-intellij-html-description": "holds the fields parsed from the Skaffold configuration file (skaffold.yaml)."
        },
        "Sync": {
            "additionalProperties": false,
            "default": "infer: [\"**/*\"]",
            "description": "*beta* specifies what files to sync into the container. This is a list of sync rules indicating the intent to sync for source files. If no files are listed, sync all the files and infer the destination.",
            "preferredOrder": [
                "manual",
                "infer",
                "auto"
            ],
            "properties": {
                "auto": {
                    "$ref": "#/definitions/Auto",
                    "description": "delegates discovery of sync rules to the build system. Only available for jib and buildpacks.",
                    "x-intellij-html-description": "delegates discovery of sync rules to the build system. Only available for jib and buildpacks."
                },
                "infer": {
                    "default": "[]",
                    "description": "file patterns which may be synced into the container The container destination is inferred by the builder based on the instructions of a Dockerfile. Available for docker and kaniko artifacts and custom artifacts that declare dependencies on a dockerfile.",
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "x-intellij-html-description": "file patterns which may be synced into the container The container destination is inferred by the builder based on the instructions of a Dockerfile. Available for docker and kaniko artifacts and custom artifacts that declare dependencies on a dockerfile."
                },
                "manual": {
                    "description": "manual sync rules indicating the source and destination.",
                    "items": {
                        "$ref": "#/definitions/SyncRule"
                    },
                    "type": "array",
                    "x-intellij-html-description": "manual sync rules indicating the source and destination."
                }
            },
            "x-intellij-html-description": "<em>beta</em> specifies what files to sync into the container. This is a list of sync rules indicating the intent to sync for source files. If no files are listed, sync all the files and infer the destination."
        },
        "SyncRule": {
            "additionalProperties": false,
            "description": "specifies which local files to sync to remote folders.",
            "preferredOrder": [
                "src",
                "dest",
                "strip"
            ],
            "properties": {
                "dest": {
                    "description": "destination path in the container where the files should be synced to.",
                    "examples": [
                        "\"app/\""
                    ],
                    "type": "string",
                    "x-intellij-html-description": "destination path in the container where the files should be synced to."
                },
                "src": {
                    "description": "a glob pattern to match local paths against. Directories should be delimited by `/` on all platforms.",
                    "examples": [
                        "\"css/**/*.css\""
                    ],
                    "type": "string",
                    "x-intellij-html-description": "a glob pattern to match local paths against. Directories should be delimited by <code>/</code> on all platforms."
                },
                "strip": {
                    "description": "specifies the path prefix to remove from the source path when transplanting the files into the destination folder.",
                    "examples": [
                        "\"css/\""
                    ],
                    "type": "string",
                    "x-intellij-html-description": "specifies the path prefix to remove from the source path when transplanting the files into the destination folder."
                }
            },
            "required": [
                "src",
                "dest"
            ],
            "x-intellij-html-description": "specifies which local files to sync to remote folders."
        },
        "TagPolicy": {
            "additionalProperties": false,
            "description": "contains all the configuration for the tagging step.",
            "preferredOrder": [
                "gitCommit",
                "sha256",
                "envTemplate",
                "dateTime"
            ],
            "properties": {
                "dateTime": {
                    "$ref": "#/definitions/DateTimeTagger",
                    "description": "*beta* tags images with the build timestamp.",
                    "x-intellij-html-description": "<em>beta</em> tags images with the build timestamp."
                },
                "envTemplate": {
                    "$ref": "#/definitions/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": "#/definitions/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": "#/definitions/ShaTagger",
                    "description": "*beta* tags images with their sha256 digest.",
                    "x-intellij-html-description": "<em>beta</em> tags images with their sha256 digest."
                }
            },
            "x-intellij-html-description": "contains all the configuration for the tagging step."
        },
        "TestCase": {
            "additionalProperties": false,
            "description": "a list of structure tests to run on images that Skaffold builds.",
            "preferredOrder": [
                "image",
                "structureTests"
            ],
            "properties": {
                "image": {
                    "description": "artifact on which to run those tests.",
                    "examples": [
                        "gcr.io/k8s-skaffold/example"
                    ],
                    "type": "string",
                    "x-intellij-html-description": "artifact on which to run those tests."
                },
                "structureTests": {
                    "default": "[]",
                    "description": "the [Container Structure Tests](https://github.com/GoogleContainerTools/container-structure-test) to run on that artifact.",
                    "examples": [
                        "[\"./test/*\"]"
                    ],
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "x-intellij-html-description": "the <a href=\"https://github.com/GoogleContainerTools/container-structure-test\">Container Structure Tests</a> to run on that artifact."
                }
            },
            "required": [
                "image"
            ],
            "x-intellij-html-description": "a list of structure tests to run on images that Skaffold builds."
        }
    },
    "type": "object"
}