{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/skaffold-yaml/versions/v1alpha1.json",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/GoogleContainerTools/skaffold/main/docs-v1/content/en/schemas/v1alpha1.json",
    "sourceSha256": "fb8b66b406eb5dd33bd703120ae094fd6fe3ee4a55db8738ba6266fa47a81bfd",
    "fileMatch": [
      "skaffold.yaml",
      "skaffold.yml"
    ],
    "parsers": [
      "yaml"
    ]
  },
  "type": "object",
  "$defs": {
    "Artifact": {
      "properties": {
        "buildArgs": {
          "default": "{}",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "dockerfilePath": {
          "type": "string"
        },
        "imageName": {
          "type": "string"
        },
        "workspace": {
          "type": "string"
        }
      },
      "preferredOrder": [
        "imageName",
        "dockerfilePath",
        "workspace",
        "buildArgs"
      ],
      "x-intellij-html-description": "represents items that need should be built, along with the context in which they should be built.",
      "type": "object",
      "description": "represents items that need should be built, along with the context in which they should be built.",
      "additionalProperties": false
    },
    "BuildConfig": {
      "type": "object",
      "anyOf": [
        {
          "properties": {
            "artifacts": {
              "items": {
                "$ref": "#/$defs/Artifact"
              },
              "type": "array"
            },
            "tagPolicy": {
              "type": "string"
            }
          },
          "preferredOrder": [
            "artifacts",
            "tagPolicy"
          ],
          "additionalProperties": false,
          "type": "object"
        },
        {
          "properties": {
            "artifacts": {
              "items": {
                "$ref": "#/$defs/Artifact"
              },
              "type": "array"
            },
            "local": {
              "$ref": "#/$defs/LocalBuild"
            },
            "tagPolicy": {
              "type": "string"
            }
          },
          "preferredOrder": [
            "artifacts",
            "tagPolicy",
            "local"
          ],
          "additionalProperties": false,
          "type": "object"
        },
        {
          "properties": {
            "artifacts": {
              "items": {
                "$ref": "#/$defs/Artifact"
              },
              "type": "array"
            },
            "googleCloudBuild": {
              "$ref": "#/$defs/GoogleCloudBuild"
            },
            "tagPolicy": {
              "type": "string"
            }
          },
          "preferredOrder": [
            "artifacts",
            "tagPolicy",
            "googleCloudBuild"
          ],
          "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"
    },
    "DeployConfig": {
      "type": "object",
      "anyOf": [
        {
          "properties": {
            "name": {
              "type": "string"
            }
          },
          "preferredOrder": [
            "name"
          ],
          "additionalProperties": false,
          "type": "object"
        },
        {
          "properties": {
            "helm": {
              "$ref": "#/$defs/HelmDeploy"
            },
            "name": {
              "type": "string"
            }
          },
          "preferredOrder": [
            "name",
            "helm"
          ],
          "additionalProperties": false,
          "type": "object"
        },
        {
          "properties": {
            "kubectl": {
              "$ref": "#/$defs/KubectlDeploy"
            },
            "name": {
              "type": "string"
            }
          },
          "preferredOrder": [
            "name",
            "kubectl"
          ],
          "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"
    },
    "GoogleCloudBuild": {
      "properties": {
        "projectId": {
          "type": "string"
        }
      },
      "preferredOrder": [
        "projectId"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "HelmDeploy": {
      "properties": {
        "releases": {
          "items": {
            "$ref": "#/$defs/HelmRelease"
          },
          "type": "array"
        }
      },
      "preferredOrder": [
        "releases"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "HelmRelease": {
      "properties": {
        "chartPath": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "namespace": {
          "type": "string"
        },
        "values": {
          "default": "{}",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "valuesFilePath": {
          "type": "string"
        },
        "version": {
          "type": "string"
        }
      },
      "preferredOrder": [
        "name",
        "chartPath",
        "valuesFilePath",
        "values",
        "namespace",
        "version"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "KubectlDeploy": {
      "properties": {
        "manifests": {
          "items": {
            "$ref": "#/$defs/Manifest"
          },
          "type": "array"
        }
      },
      "preferredOrder": [
        "manifests"
      ],
      "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
    },
    "LocalBuild": {
      "properties": {
        "skipPush": {
          "type": "boolean"
        }
      },
      "preferredOrder": [
        "skipPush"
      ],
      "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
    },
    "Manifest": {
      "properties": {
        "parameters": {
          "default": "{}",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "paths": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "default": "[]"
        }
      },
      "preferredOrder": [
        "paths",
        "parameters"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "SkaffoldConfig": {
      "properties": {
        "apiVersion": {
          "type": "string"
        },
        "build": {
          "$ref": "#/$defs/BuildConfig"
        },
        "deploy": {
          "$ref": "#/$defs/DeployConfig"
        },
        "kind": {
          "type": "string"
        }
      },
      "preferredOrder": [
        "apiVersion",
        "kind",
        "build",
        "deploy"
      ],
      "x-intellij-html-description": "top level config object that is parsed from a skaffold.yaml",
      "type": "object",
      "description": "top level config object that is parsed from a skaffold.yaml",
      "additionalProperties": false
    }
  },
  "anyOf": [
    {
      "$ref": "#/$defs/SkaffoldConfig"
    }
  ]
}
