{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/skaffold-yaml/versions/v1beta4.json",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/GoogleContainerTools/skaffold/main/docs-v1/content/en/schemas/v1beta4.json",
    "sourceSha256": "85349f9983ac159c8840fabb47de5355d55b6196c11d8e485c0366d824938230",
    "fileMatch": [
      "skaffold.yaml",
      "skaffold.yml"
    ],
    "parsers": [
      "yaml"
    ]
  },
  "type": "object",
  "$defs": {
    "Activation": {
      "properties": {
        "command": {
          "type": "string"
        },
        "env": {
          "type": "string"
        },
        "kubeContext": {
          "type": "string"
        }
      },
      "preferredOrder": [
        "env",
        "kubeContext",
        "command"
      ],
      "x-intellij-html-description": "defines criteria to auto-activate a profile.",
      "type": "object",
      "description": "defines criteria to auto-activate a profile.",
      "additionalProperties": false
    },
    "Artifact": {
      "type": "object",
      "anyOf": [
        {
          "properties": {
            "context": {
              "type": "string"
            },
            "image": {
              "type": "string"
            },
            "sync": {
              "default": "{}",
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          },
          "preferredOrder": [
            "image",
            "context",
            "sync"
          ],
          "additionalProperties": false,
          "type": "object"
        },
        {
          "properties": {
            "context": {
              "type": "string"
            },
            "docker": {
              "$ref": "#/$defs/DockerArtifact"
            },
            "image": {
              "type": "string"
            },
            "sync": {
              "default": "{}",
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          },
          "preferredOrder": [
            "image",
            "context",
            "sync",
            "docker"
          ],
          "additionalProperties": false,
          "type": "object"
        },
        {
          "properties": {
            "bazel": {
              "$ref": "#/$defs/BazelArtifact"
            },
            "context": {
              "type": "string"
            },
            "image": {
              "type": "string"
            },
            "sync": {
              "default": "{}",
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          },
          "preferredOrder": [
            "image",
            "context",
            "sync",
            "bazel"
          ],
          "additionalProperties": false,
          "type": "object"
        },
        {
          "properties": {
            "context": {
              "type": "string"
            },
            "image": {
              "type": "string"
            },
            "jibMaven": {
              "$ref": "#/$defs/JibMavenArtifact"
            },
            "sync": {
              "default": "{}",
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          },
          "preferredOrder": [
            "image",
            "context",
            "sync",
            "jibMaven"
          ],
          "additionalProperties": false,
          "type": "object"
        },
        {
          "properties": {
            "context": {
              "type": "string"
            },
            "image": {
              "type": "string"
            },
            "jibGradle": {
              "$ref": "#/$defs/JibGradleArtifact"
            },
            "sync": {
              "default": "{}",
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          },
          "preferredOrder": [
            "image",
            "context",
            "sync",
            "jibGradle"
          ],
          "additionalProperties": false,
          "type": "object"
        }
      ],
      "description": "represents items that need to be built, along with the context in which they should be built.",
      "x-intellij-html-description": "represents items that need to be built, along with the context in which they should be built."
    },
    "BazelArtifact": {
      "properties": {
        "args": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "default": "[]"
        },
        "target": {
          "type": "string"
        }
      },
      "preferredOrder": [
        "target",
        "args"
      ],
      "x-intellij-html-description": "describes an artifact built with Bazel.",
      "type": "object",
      "description": "describes an artifact built with Bazel.",
      "additionalProperties": false
    },
    "BuildConfig": {
      "type": "object",
      "anyOf": [
        {
          "properties": {
            "artifacts": {
              "items": {
                "$ref": "#/$defs/Artifact"
              },
              "type": "array"
            },
            "tagPolicy": {
              "$ref": "#/$defs/TagPolicy"
            }
          },
          "preferredOrder": [
            "artifacts",
            "tagPolicy"
          ],
          "additionalProperties": false,
          "type": "object"
        },
        {
          "properties": {
            "artifacts": {
              "items": {
                "$ref": "#/$defs/Artifact"
              },
              "type": "array"
            },
            "local": {
              "$ref": "#/$defs/LocalBuild"
            },
            "tagPolicy": {
              "$ref": "#/$defs/TagPolicy"
            }
          },
          "preferredOrder": [
            "artifacts",
            "tagPolicy",
            "local"
          ],
          "additionalProperties": false,
          "type": "object"
        },
        {
          "properties": {
            "artifacts": {
              "items": {
                "$ref": "#/$defs/Artifact"
              },
              "type": "array"
            },
            "googleCloudBuild": {
              "$ref": "#/$defs/GoogleCloudBuild"
            },
            "tagPolicy": {
              "$ref": "#/$defs/TagPolicy"
            }
          },
          "preferredOrder": [
            "artifacts",
            "tagPolicy",
            "googleCloudBuild"
          ],
          "additionalProperties": false,
          "type": "object"
        },
        {
          "properties": {
            "artifacts": {
              "items": {
                "$ref": "#/$defs/Artifact"
              },
              "type": "array"
            },
            "kaniko": {
              "$ref": "#/$defs/KanikoBuild"
            },
            "tagPolicy": {
              "$ref": "#/$defs/TagPolicy"
            }
          },
          "preferredOrder": [
            "artifacts",
            "tagPolicy",
            "kaniko"
          ],
          "additionalProperties": false,
          "type": "object"
        }
      ],
      "description": "contains all the configuration for the build steps",
      "x-intellij-html-description": "contains all the configuration for the build steps"
    },
    "DateTimeTagger": {
      "properties": {
        "format": {
          "type": "string"
        },
        "timezone": {
          "type": "string"
        }
      },
      "preferredOrder": [
        "format",
        "timezone"
      ],
      "x-intellij-html-description": "contains the configuration for the DateTime tagger.",
      "type": "object",
      "description": "contains the configuration for the DateTime tagger.",
      "additionalProperties": false
    },
    "DeployConfig": {
      "type": "object",
      "anyOf": [
        {
          "additionalProperties": false
        },
        {
          "properties": {
            "helm": {
              "$ref": "#/$defs/HelmDeploy"
            }
          },
          "preferredOrder": [
            "helm"
          ],
          "additionalProperties": false,
          "type": "object"
        },
        {
          "properties": {
            "kubectl": {
              "$ref": "#/$defs/KubectlDeploy"
            }
          },
          "preferredOrder": [
            "kubectl"
          ],
          "additionalProperties": false,
          "type": "object"
        },
        {
          "properties": {
            "kustomize": {
              "$ref": "#/$defs/KustomizeDeploy"
            }
          },
          "preferredOrder": [
            "kustomize"
          ],
          "additionalProperties": false,
          "type": "object"
        }
      ],
      "description": "contains all the configuration needed by the deploy steps",
      "x-intellij-html-description": "contains all the configuration needed by the deploy steps"
    },
    "DockerArtifact": {
      "properties": {
        "buildArgs": {
          "default": "{}",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "cacheFrom": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "default": "[]"
        },
        "dockerfile": {
          "type": "string"
        },
        "target": {
          "type": "string"
        }
      },
      "preferredOrder": [
        "dockerfile",
        "buildArgs",
        "cacheFrom",
        "target"
      ],
      "x-intellij-html-description": "describes an artifact built from a Dockerfile, usually using <code>docker build</code>.",
      "type": "object",
      "description": "describes an artifact built from a Dockerfile, usually using `docker build`.",
      "additionalProperties": false
    },
    "DockerConfig": {
      "properties": {
        "path": {
          "type": "string"
        },
        "secretName": {
          "type": "string"
        }
      },
      "preferredOrder": [
        "path",
        "secretName"
      ],
      "x-intellij-html-description": "contains information about the docker config.json to mount",
      "type": "object",
      "description": "contains information about the docker config.json to mount",
      "additionalProperties": false
    },
    "EnvTemplateTagger": {
      "properties": {
        "template": {
          "type": "string"
        }
      },
      "preferredOrder": [
        "template"
      ],
      "x-intellij-html-description": "contains the configuration for the envTemplate tagger.",
      "type": "object",
      "description": "contains the configuration for the envTemplate tagger.",
      "additionalProperties": false
    },
    "GitTagger": {
      "type": "object",
      "description": "contains the configuration for the git tagger.",
      "x-intellij-html-description": "contains the configuration for the git tagger."
    },
    "GoogleCloudBuild": {
      "properties": {
        "diskSizeGb": {
          "type": "integer"
        },
        "dockerImage": {
          "type": "string"
        },
        "gradleImage": {
          "type": "string"
        },
        "machineType": {
          "type": "string"
        },
        "mavenImage": {
          "type": "string"
        },
        "projectId": {
          "type": "string"
        },
        "timeout": {
          "type": "string"
        }
      },
      "preferredOrder": [
        "projectId",
        "diskSizeGb",
        "machineType",
        "timeout",
        "dockerImage",
        "mavenImage",
        "gradleImage"
      ],
      "x-intellij-html-description": "contains the fields needed to do a remote build on Google Cloud Build.",
      "type": "object",
      "description": "contains the fields needed to do a remote build on Google Cloud Build.",
      "additionalProperties": false
    },
    "HelmConventionConfig": {
      "type": "object",
      "description": "represents image config in the syntax of image.repository and image.tag",
      "x-intellij-html-description": "represents image config in the syntax of image.repository and image.tag"
    },
    "HelmDeploy": {
      "properties": {
        "releases": {
          "items": {
            "$ref": "#/$defs/HelmRelease"
          },
          "type": "array"
        }
      },
      "preferredOrder": [
        "releases"
      ],
      "x-intellij-html-description": "contains the configuration needed for deploying with helm",
      "type": "object",
      "description": "contains the configuration needed for deploying with helm",
      "additionalProperties": false
    },
    "HelmFQNConfig": {
      "properties": {
        "property": {
          "type": "string"
        }
      },
      "preferredOrder": [
        "property"
      ],
      "x-intellij-html-description": "represents image config to use the FullyQualifiedImageName as param to set",
      "type": "object",
      "description": "represents image config to use the FullyQualifiedImageName as param to set",
      "additionalProperties": false
    },
    "HelmImageStrategy": {
      "type": "object",
      "anyOf": [
        {
          "additionalProperties": false
        },
        {
          "properties": {
            "fqn": {
              "$ref": "#/$defs/HelmFQNConfig"
            }
          },
          "preferredOrder": [
            "fqn"
          ],
          "additionalProperties": false,
          "type": "object"
        },
        {
          "properties": {
            "helm": {
              "$ref": "#/$defs/HelmConventionConfig"
            }
          },
          "preferredOrder": [
            "helm"
          ],
          "additionalProperties": false,
          "type": "object"
        }
      ]
    },
    "HelmPackaged": {
      "properties": {
        "appVersion": {
          "type": "string",
          "description": "set the appVersion on the chart to this version",
          "x-intellij-html-description": "set the appVersion on the chart to this version"
        },
        "version": {
          "type": "string",
          "description": "sets the version on the chart to this semver version.",
          "x-intellij-html-description": "sets the version on the chart to this semver version."
        }
      },
      "preferredOrder": [
        "version",
        "appVersion"
      ],
      "x-intellij-html-description": "represents parameters for packaging helm chart.",
      "type": "object",
      "description": "represents parameters for packaging helm chart.",
      "additionalProperties": false
    },
    "HelmRelease": {
      "properties": {
        "chartPath": {
          "type": "string"
        },
        "imageStrategy": {
          "$ref": "#/$defs/HelmImageStrategy"
        },
        "name": {
          "type": "string"
        },
        "namespace": {
          "type": "string"
        },
        "overrides": {},
        "packaged": {
          "$ref": "#/$defs/HelmPackaged"
        },
        "recreatePods": {
          "type": "boolean",
          "default": "false"
        },
        "setValueTemplates": {
          "default": "{}",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "setValues": {
          "default": "{}",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "skipBuildDependencies": {
          "type": "boolean",
          "default": "false"
        },
        "values": {
          "default": "{}",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "valuesFiles": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "default": "[]"
        },
        "version": {
          "type": "string"
        },
        "wait": {
          "type": "boolean",
          "default": "false"
        }
      },
      "preferredOrder": [
        "name",
        "chartPath",
        "valuesFiles",
        "values",
        "namespace",
        "version",
        "setValues",
        "setValueTemplates",
        "wait",
        "recreatePods",
        "skipBuildDependencies",
        "overrides",
        "packaged",
        "imageStrategy"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "JibGradleArtifact": {
      "properties": {
        "project": {
          "type": "string",
          "description": "Only multi-module",
          "x-intellij-html-description": "Only multi-module"
        }
      },
      "preferredOrder": [
        "project"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "JibMavenArtifact": {
      "properties": {
        "module": {
          "type": "string",
          "description": "Only multi-module",
          "x-intellij-html-description": "Only multi-module"
        },
        "profile": {
          "type": "string"
        }
      },
      "preferredOrder": [
        "module",
        "profile"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "KanikoBuild": {
      "properties": {
        "buildContext": {
          "$ref": "#/$defs/KanikoBuildContext"
        },
        "cache": {
          "$ref": "#/$defs/KanikoCache"
        },
        "dockerConfig": {
          "$ref": "#/$defs/DockerConfig"
        },
        "flags": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "default": "[]"
        },
        "image": {
          "type": "string"
        },
        "namespace": {
          "type": "string"
        },
        "pullSecret": {
          "type": "string"
        },
        "pullSecretName": {
          "type": "string"
        },
        "timeout": {
          "type": "string"
        }
      },
      "preferredOrder": [
        "buildContext",
        "cache",
        "flags",
        "pullSecret",
        "pullSecretName",
        "namespace",
        "timeout",
        "image",
        "dockerConfig"
      ],
      "x-intellij-html-description": "contains the fields needed to do a on-cluster build using the kaniko image",
      "type": "object",
      "description": "contains the fields needed to do a on-cluster build using the kaniko image",
      "additionalProperties": false
    },
    "KanikoBuildContext": {
      "properties": {
        "gcsBucket": {
          "type": "string"
        },
        "localDir": {
          "$ref": "#/$defs/LocalDir"
        }
      },
      "preferredOrder": [
        "gcsBucket",
        "localDir"
      ],
      "x-intellij-html-description": "contains the different fields available to specify a kaniko build context",
      "type": "object",
      "description": "contains the different fields available to specify a kaniko build context",
      "additionalProperties": false
    },
    "KanikoCache": {
      "properties": {
        "repo": {
          "type": "string"
        }
      },
      "preferredOrder": [
        "repo"
      ],
      "x-intellij-html-description": "contains fields related to kaniko caching",
      "type": "object",
      "description": "contains fields related to kaniko caching",
      "additionalProperties": false
    },
    "KubectlDeploy": {
      "properties": {
        "flags": {
          "$ref": "#/$defs/KubectlFlags"
        },
        "manifests": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "default": "[]"
        },
        "remoteManifests": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "default": "[]"
        }
      },
      "preferredOrder": [
        "manifests",
        "remoteManifests",
        "flags"
      ],
      "x-intellij-html-description": "contains the configuration needed for deploying with <code>kubectl apply</code>",
      "type": "object",
      "description": "contains the configuration needed for deploying with `kubectl apply`",
      "additionalProperties": false
    },
    "KubectlFlags": {
      "properties": {
        "apply": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "default": "[]"
        },
        "delete": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "default": "[]"
        },
        "global": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "default": "[]"
        }
      },
      "preferredOrder": [
        "global",
        "apply",
        "delete"
      ],
      "x-intellij-html-description": "describes additional options flags that are passed on the command line to kubectl either on every command (Global), on creations (Apply) or deletions (Delete).",
      "type": "object",
      "description": "describes additional options flags that are passed on the command line to kubectl either on every command (Global), on creations (Apply) or deletions (Delete).",
      "additionalProperties": false
    },
    "KustomizeDeploy": {
      "properties": {
        "flags": {
          "$ref": "#/$defs/KubectlFlags"
        },
        "path": {
          "type": "string"
        }
      },
      "preferredOrder": [
        "path",
        "flags"
      ],
      "x-intellij-html-description": "contains the configuration needed for deploying with kustomize.",
      "type": "object",
      "description": "contains the configuration needed for deploying with kustomize.",
      "additionalProperties": false
    },
    "LocalBuild": {
      "properties": {
        "push": {
          "type": "boolean"
        },
        "useBuildkit": {
          "type": "boolean",
          "default": "false"
        },
        "useDockerCLI": {
          "type": "boolean",
          "default": "false"
        }
      },
      "preferredOrder": [
        "push",
        "useDockerCLI",
        "useBuildkit"
      ],
      "x-intellij-html-description": "contains the fields needed to do a build on the local docker daemon and optionally push to a repository.",
      "type": "object",
      "description": "contains the fields needed to do a build on the local docker daemon and optionally push to a repository.",
      "additionalProperties": false
    },
    "LocalDir": {
      "type": "object",
      "description": "represents the local directory kaniko build context",
      "x-intellij-html-description": "represents the local directory kaniko build context"
    },
    "Profile": {
      "properties": {
        "activation": {
          "items": {
            "$ref": "#/$defs/Activation"
          },
          "type": "array"
        },
        "build": {
          "$ref": "#/$defs/BuildConfig"
        },
        "deploy": {
          "$ref": "#/$defs/DeployConfig"
        },
        "name": {
          "type": "string"
        },
        "patches": {},
        "test": {
          "$ref": "#/$defs/TestConfig"
        }
      },
      "preferredOrder": [
        "name",
        "build",
        "test",
        "deploy",
        "patches",
        "activation"
      ],
      "x-intellij-html-description": "additional configuration that overrides default configuration when it is activated.",
      "type": "object",
      "description": "additional configuration that overrides default configuration when it is activated.",
      "additionalProperties": false
    },
    "ShaTagger": {
      "type": "object",
      "description": "contains the configuration for the SHA tagger.",
      "x-intellij-html-description": "contains the configuration for the SHA tagger."
    },
    "SkaffoldConfig": {
      "properties": {
        "apiVersion": {
          "type": "string"
        },
        "build": {
          "$ref": "#/$defs/BuildConfig"
        },
        "deploy": {
          "$ref": "#/$defs/DeployConfig"
        },
        "kind": {
          "type": "string"
        },
        "profiles": {
          "items": {
            "$ref": "#/$defs/Profile"
          },
          "type": "array"
        },
        "test": {
          "$ref": "#/$defs/TestConfig"
        }
      },
      "preferredOrder": [
        "apiVersion",
        "kind",
        "build",
        "test",
        "deploy",
        "profiles"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "TagPolicy": {
      "properties": {
        "dateTime": {
          "$ref": "#/$defs/DateTimeTagger"
        },
        "envTemplate": {
          "$ref": "#/$defs/EnvTemplateTagger"
        },
        "gitCommit": {
          "$ref": "#/$defs/GitTagger"
        },
        "sha256": {
          "$ref": "#/$defs/ShaTagger"
        }
      },
      "preferredOrder": [
        "gitCommit",
        "sha256",
        "envTemplate",
        "dateTime"
      ],
      "x-intellij-html-description": "contains all the configuration for the tagging step",
      "type": "object",
      "description": "contains all the configuration for the tagging step",
      "additionalProperties": false
    },
    "TestCase": {
      "properties": {
        "image": {
          "type": "string"
        },
        "structureTests": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "default": "[]"
        }
      },
      "preferredOrder": [
        "image",
        "structureTests"
      ],
      "x-intellij-html-description": "a struct containing all the specified test configuration for an image.",
      "type": "object",
      "description": "a struct containing all the specified test configuration for an image.",
      "additionalProperties": false
    },
    "TestConfig": {
      "items": {
        "$ref": "#/$defs/TestCase"
      },
      "type": "array"
    }
  },
  "anyOf": [
    {
      "$ref": "#/$defs/SkaffoldConfig"
    }
  ]
}
