{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/cirrus-yml/latest.json",
  "title": "JSON schema for Cirrus CI configuration files",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/cirruslabs/cirrus-cli/main/pkg/parser/testdata/cirrus.json",
    "sourceSha256": "2c71da5c85f2cc97becc610ed85c14ced365b75246073898a9f88eebfbdc10b4",
    "fileMatch": [
      ".cirrus.yml"
    ],
    "parsers": [
      "yaml"
    ]
  },
  "type": "object",
  "properties": {
    "allow_failures": {
      "description": "Boolean expression that can use environment variables.",
      "type": "string"
    },
    "container": {
      "description": "Container definition for Community Cluster.",
      "properties": {
        "additional_containers": {
          "type": "array",
          "prefixItems": [
            {
              "description": "Additional Container definition.",
              "properties": {
                "command": {
                  "description": "Container CMD to override.",
                  "type": "string"
                },
                "cpu": {
                  "type": "number"
                },
                "env": {
                  "description": "Map represented as an object.",
                  "type": "object",
                  "patternProperties": {
                    ".*": {
                      "type": "string"
                    }
                  }
                },
                "environment": {
                  "description": "Map represented as an object.",
                  "type": "object",
                  "patternProperties": {
                    ".*": {
                      "type": "string"
                    }
                  }
                },
                "image": {
                  "description": "Docker Image.",
                  "type": "string"
                },
                "memory": {
                  "pattern": "\\d+(G|Mb)?",
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "port": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string"
                    }
                  ],
                  "description": "Port exposed by the container."
                },
                "ports": {
                  "description": "Ports exposed by the container.",
                  "type": "array",
                  "prefixItems": [
                    {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "string"
                        }
                      ],
                      "description": "Port exposed by the container."
                    }
                  ]
                },
                "privileged": {
                  "description": "Boolean expression that can use environment variables.",
                  "type": "string"
                },
                "readiness_command": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        }
                      ]
                    }
                  ],
                  "description": "Container readiness probe command."
                }
              },
              "required": [
                "image"
              ],
              "type": "object"
            }
          ]
        },
        "cpu": {
          "type": "number"
        },
        "docker_arguments": {
          "description": "Arguments for Docker build",
          "type": "object",
          "patternProperties": {
            ".*": {
              "type": "string"
            }
          }
        },
        "dockerfile": {
          "description": "Relative path to Dockerfile to build container from.",
          "type": "string"
        },
        "image": {
          "description": "Docker Image to use.",
          "type": "string"
        },
        "kvm": {
          "description": "Boolean expression that can use environment variables.",
          "type": "string"
        },
        "memory": {
          "pattern": "\\d+(G|Mb)?",
          "type": "string"
        },
        "registry_config": {
          "type": "string"
        },
        "use_in_memory_disk": {
          "description": "Boolean expression that can use environment variables.",
          "type": "string"
        },
        "use_static_ip": {
          "description": "Boolean expression that can use environment variables.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "env": {
      "description": "Map represented as an object.",
      "type": "object",
      "patternProperties": {
        ".*": {
          "type": "string"
        }
      }
    },
    "environment": {
      "description": "Map represented as an object.",
      "type": "object",
      "patternProperties": {
        ".*": {
          "type": "string"
        }
      }
    },
    "macos_instance": {
      "description": "MacOS VM definition.",
      "properties": {
        "cpu": {
          "type": "number"
        },
        "image": {
          "description": "Tart Image to use.",
          "type": "string"
        },
        "memory": {
          "pattern": "\\d+(G|Mb)?",
          "type": "string"
        },
        "password": {
          "description": "password for SSH connection.",
          "type": "string"
        },
        "user": {
          "description": "username for SSH connection.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "only_if": {
      "description": "Boolean expression that can use environment variables.",
      "type": "string"
    },
    "persistent_worker": {
      "description": "Persistent Worker definition.",
      "properties": {
        "isolation": {
          "description": "Persistent Worker isolation.",
          "properties": {
            "container": {
              "description": "Container engine isolation.",
              "properties": {
                "cpu": {
                  "description": "CPU units for the container to use.",
                  "type": "number"
                },
                "docker_arguments": {
                  "description": "Arguments for Docker build.",
                  "type": "object",
                  "patternProperties": {
                    ".*": {
                      "type": "string"
                    }
                  }
                },
                "dockerfile": {
                  "description": "Relative path to Dockerfile to build container from.",
                  "type": "string"
                },
                "image": {
                  "description": "Container image to use.",
                  "type": "string"
                },
                "memory": {
                  "description": "Memory in megabytes for the container to use.",
                  "pattern": "\\d+(G|Mb)?",
                  "type": "string"
                },
                "platform": {
                  "description": "Image Platform.",
                  "enum": [
                    "darwin",
                    "linux",
                    "windows"
                  ]
                },
                "volumes": {
                  "description": "A list of volumes mounted inside of the container.",
                  "type": "array",
                  "prefixItems": [
                    {
                      "description": "A volume in the format of source:target[:ro].",
                      "type": "string"
                    }
                  ]
                }
              },
              "type": "object"
            },
            "parallels": {
              "description": "Parallels VM isolation.",
              "properties": {
                "image": {
                  "description": "Image name.",
                  "type": "string"
                },
                "password": {
                  "description": "SSH password",
                  "type": "string"
                },
                "platform": {
                  "description": "Image Platform.",
                  "enum": [
                    "darwin",
                    "linux",
                    "windows"
                  ]
                },
                "user": {
                  "description": "SSH username",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tart": {
              "description": "Tart VM isolation.",
              "properties": {
                "cpu": {
                  "description": "Number of VM CPUs.",
                  "type": "number"
                },
                "display": {
                  "description": "Virtual display configuration.",
                  "type": "string"
                },
                "image": {
                  "description": "Source VM image (or name) to clone the new VM from.",
                  "type": "string"
                },
                "memory": {
                  "description": "VM memory size in megabytes.",
                  "pattern": "\\d+(G|Mb)?",
                  "type": "string"
                },
                "password": {
                  "default": "admin",
                  "description": "SSH password.",
                  "type": "string"
                },
                "port": {
                  "description": "SSH port.",
                  "type": "integer"
                },
                "softnet": {
                  "description": "Enable or disable the Softnet networking.",
                  "type": "boolean"
                },
                "user": {
                  "default": "admin",
                  "description": "SSH username.",
                  "type": "string"
                },
                "volumes": {
                  "type": "array",
                  "prefixItems": [
                    {
                      "description": "Tart volume definition.",
                      "properties": {
                        "name": {
                          "description": "Volume name that will be mounted into /Volumes/My Shared Files/<name>.",
                          "type": "string"
                        },
                        "readonly": {
                          "description": "Whether this volume should be mounted in readonly mode.",
                          "type": "string"
                        },
                        "source": {
                          "description": "Volume source, a path to a directory on the host.",
                          "type": "string"
                        },
                        "target": {
                          "description": "Volume target, a path to a directory in the guest.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "source"
                      ],
                      "type": "object"
                    }
                  ]
                }
              },
              "type": "object"
            },
            "vetu": {
              "description": "Vetu VM isolation.",
              "properties": {
                "cpu": {
                  "description": "Number of VM CPUs.",
                  "type": "number"
                },
                "disk_size": {
                  "description": "Disk size to use in gigabytes.",
                  "type": "integer"
                },
                "image": {
                  "description": "Source VM image (or name) to clone the new VM from.",
                  "type": "string"
                },
                "memory": {
                  "description": "VM memory size in megabytes.",
                  "pattern": "\\d+(G|Mb)?",
                  "type": "string"
                },
                "password": {
                  "default": "admin",
                  "description": "SSH password.",
                  "type": "string"
                },
                "port": {
                  "description": "SSH port.",
                  "type": "integer"
                },
                "user": {
                  "default": "admin",
                  "description": "SSH username.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "labels": {
          "description": "Labels for selection.",
          "type": "string"
        },
        "resources": {
          "description": "Resources to acquire on the Persistent Worker.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "skip": {
      "description": "Boolean expression that can use environment variables.",
      "type": "string"
    },
    "timeout_in": {
      "description": "Task timeout in minutes",
      "type": "number"
    },
    "windows_container": {
      "description": "Windows Container definition for Community Cluster.",
      "properties": {
        "cpu": {
          "type": "number"
        },
        "docker_arguments": {
          "description": "Arguments for Docker build",
          "type": "object",
          "patternProperties": {
            ".*": {
              "type": "string"
            }
          }
        },
        "dockerfile": {
          "description": "Relative path to Dockerfile to build container from.",
          "type": "string"
        },
        "image": {
          "description": "Docker Image to use.",
          "type": "string"
        },
        "memory": {
          "pattern": "\\d+(G|Mb)?",
          "type": "string"
        },
        "os_version": {
          "description": "Windows version of container.",
          "enum": [
            "2019",
            "1709",
            "1803"
          ]
        },
        "use_static_ip": {
          "description": "Boolean expression that can use environment variables.",
          "type": "string"
        }
      },
      "type": "object"
    }
  },
  "patternProperties": {
    "^(.*)docker_builder$": {
      "type": "object",
      "properties": {
        "alias": {
          "type": "string"
        },
        "allow_failures": {
          "description": "Boolean expression that can use environment variables.",
          "type": "string"
        },
        "always": {
          "description": "ALWAYS commands.",
          "type": "object",
          "properties": {
            "upload_caches": {
              "type": "array",
              "prefixItems": [
                {
                  "description": "Cache name to upload.",
                  "type": "string"
                }
              ]
            }
          },
          "patternProperties": {
            "^(.*)artifacts$": {
              "properties": {
                "format": {
                  "description": "Content Format.",
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "path": {
                  "description": "Path or pattern of artifacts.",
                  "type": "string"
                },
                "paths": {
                  "type": "array",
                  "prefixItems": [
                    {
                      "description": "Path or pattern of artifacts.",
                      "type": "string"
                    }
                  ]
                },
                "type": {
                  "description": "Content Type.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "^(.*)background_script$": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": "string"
                    }
                  ]
                }
              ]
            },
            "^(.*)cache$": {
              "description": "Folder Cache Definition.",
              "oneOf": [
                {
                  "required": [
                    "folder"
                  ]
                },
                {
                  "required": [
                    "folders"
                  ]
                }
              ],
              "properties": {
                "fingerprint_key": {
                  "description": "Cache key in it's raw form.",
                  "type": "string"
                },
                "fingerprint_script": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        }
                      ]
                    }
                  ],
                  "description": "Script that is used to calculate cache key."
                },
                "folder": {
                  "description": "Path of a folder to cache.",
                  "type": "string"
                },
                "folders": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        }
                      ]
                    }
                  ],
                  "description": "A list of folders to cache."
                },
                "name": {
                  "type": "string"
                },
                "optimistically_restore_on_miss": {
                  "description": "Boolean expression. A flag to enable optimistic cache restoration on miss by finding the latest available key.",
                  "type": "string"
                },
                "populate_script": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        }
                      ]
                    }
                  ],
                  "description": "In case of a cache miss this script will be executed."
                },
                "reupload_on_changes": {
                  "description": "Boolean expression. A flag to check if contents of folder has changed after a cache hit.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "^(.*)file$": {
              "properties": {
                "from_contents": {
                  "description": "Provide the file contents directly instead of using an environment variable.",
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "path": {
                  "description": "Destination path.",
                  "type": "string"
                },
                "variable_name": {
                  "description": "Environment variable name to get the file contents from.",
                  "type": "string"
                }
              },
              "required": [
                "path"
              ],
              "type": "object"
            },
            "^(.*)script$": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": "string"
                    }
                  ]
                }
              ]
            }
          }
        },
        "depends_on": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "prefixItems": [
                {
                  "type": "string"
                }
              ]
            }
          ],
          "description": "List of task names this task depends on."
        },
        "env": {
          "description": "Map represented as an object.",
          "type": "object",
          "patternProperties": {
            ".*": {
              "type": "string"
            }
          }
        },
        "environment": {
          "description": "Map represented as an object.",
          "type": "object",
          "patternProperties": {
            ".*": {
              "type": "string"
            }
          }
        },
        "name": {
          "type": "string"
        },
        "on_failure": {
          "description": "ON_FAILURE commands.",
          "type": "object",
          "properties": {
            "upload_caches": {
              "type": "array",
              "prefixItems": [
                {
                  "description": "Cache name to upload.",
                  "type": "string"
                }
              ]
            }
          },
          "patternProperties": {
            "^(.*)artifacts$": {
              "properties": {
                "format": {
                  "description": "Content Format.",
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "path": {
                  "description": "Path or pattern of artifacts.",
                  "type": "string"
                },
                "paths": {
                  "type": "array",
                  "prefixItems": [
                    {
                      "description": "Path or pattern of artifacts.",
                      "type": "string"
                    }
                  ]
                },
                "type": {
                  "description": "Content Type.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "^(.*)background_script$": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": "string"
                    }
                  ]
                }
              ]
            },
            "^(.*)cache$": {
              "description": "Folder Cache Definition.",
              "oneOf": [
                {
                  "required": [
                    "folder"
                  ]
                },
                {
                  "required": [
                    "folders"
                  ]
                }
              ],
              "properties": {
                "fingerprint_key": {
                  "description": "Cache key in it's raw form.",
                  "type": "string"
                },
                "fingerprint_script": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        }
                      ]
                    }
                  ],
                  "description": "Script that is used to calculate cache key."
                },
                "folder": {
                  "description": "Path of a folder to cache.",
                  "type": "string"
                },
                "folders": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        }
                      ]
                    }
                  ],
                  "description": "A list of folders to cache."
                },
                "name": {
                  "type": "string"
                },
                "optimistically_restore_on_miss": {
                  "description": "Boolean expression. A flag to enable optimistic cache restoration on miss by finding the latest available key.",
                  "type": "string"
                },
                "populate_script": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        }
                      ]
                    }
                  ],
                  "description": "In case of a cache miss this script will be executed."
                },
                "reupload_on_changes": {
                  "description": "Boolean expression. A flag to check if contents of folder has changed after a cache hit.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "^(.*)file$": {
              "properties": {
                "from_contents": {
                  "description": "Provide the file contents directly instead of using an environment variable.",
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "path": {
                  "description": "Destination path.",
                  "type": "string"
                },
                "variable_name": {
                  "description": "Environment variable name to get the file contents from.",
                  "type": "string"
                }
              },
              "required": [
                "path"
              ],
              "type": "object"
            },
            "^(.*)script$": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": "string"
                    }
                  ]
                }
              ]
            }
          }
        },
        "on_success": {
          "description": "ON_SUCCESS commands.",
          "type": "object",
          "properties": {
            "upload_caches": {
              "type": "array",
              "prefixItems": [
                {
                  "description": "Cache name to upload.",
                  "type": "string"
                }
              ]
            }
          },
          "patternProperties": {
            "^(.*)artifacts$": {
              "properties": {
                "format": {
                  "description": "Content Format.",
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "path": {
                  "description": "Path or pattern of artifacts.",
                  "type": "string"
                },
                "paths": {
                  "type": "array",
                  "prefixItems": [
                    {
                      "description": "Path or pattern of artifacts.",
                      "type": "string"
                    }
                  ]
                },
                "type": {
                  "description": "Content Type.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "^(.*)background_script$": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": "string"
                    }
                  ]
                }
              ]
            },
            "^(.*)cache$": {
              "description": "Folder Cache Definition.",
              "oneOf": [
                {
                  "required": [
                    "folder"
                  ]
                },
                {
                  "required": [
                    "folders"
                  ]
                }
              ],
              "properties": {
                "fingerprint_key": {
                  "description": "Cache key in it's raw form.",
                  "type": "string"
                },
                "fingerprint_script": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        }
                      ]
                    }
                  ],
                  "description": "Script that is used to calculate cache key."
                },
                "folder": {
                  "description": "Path of a folder to cache.",
                  "type": "string"
                },
                "folders": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        }
                      ]
                    }
                  ],
                  "description": "A list of folders to cache."
                },
                "name": {
                  "type": "string"
                },
                "optimistically_restore_on_miss": {
                  "description": "Boolean expression. A flag to enable optimistic cache restoration on miss by finding the latest available key.",
                  "type": "string"
                },
                "populate_script": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        }
                      ]
                    }
                  ],
                  "description": "In case of a cache miss this script will be executed."
                },
                "reupload_on_changes": {
                  "description": "Boolean expression. A flag to check if contents of folder has changed after a cache hit.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "^(.*)file$": {
              "properties": {
                "from_contents": {
                  "description": "Provide the file contents directly instead of using an environment variable.",
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "path": {
                  "description": "Destination path.",
                  "type": "string"
                },
                "variable_name": {
                  "description": "Environment variable name to get the file contents from.",
                  "type": "string"
                }
              },
              "required": [
                "path"
              ],
              "type": "object"
            },
            "^(.*)script$": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": "string"
                    }
                  ]
                }
              ]
            }
          }
        },
        "on_timeout": {
          "description": "ON_TIMEOUT commands.",
          "type": "object",
          "properties": {
            "upload_caches": {
              "type": "array",
              "prefixItems": [
                {
                  "description": "Cache name to upload.",
                  "type": "string"
                }
              ]
            }
          },
          "patternProperties": {
            "^(.*)artifacts$": {
              "properties": {
                "format": {
                  "description": "Content Format.",
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "path": {
                  "description": "Path or pattern of artifacts.",
                  "type": "string"
                },
                "paths": {
                  "type": "array",
                  "prefixItems": [
                    {
                      "description": "Path or pattern of artifacts.",
                      "type": "string"
                    }
                  ]
                },
                "type": {
                  "description": "Content Type.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "^(.*)background_script$": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": "string"
                    }
                  ]
                }
              ]
            },
            "^(.*)cache$": {
              "description": "Folder Cache Definition.",
              "oneOf": [
                {
                  "required": [
                    "folder"
                  ]
                },
                {
                  "required": [
                    "folders"
                  ]
                }
              ],
              "properties": {
                "fingerprint_key": {
                  "description": "Cache key in it's raw form.",
                  "type": "string"
                },
                "fingerprint_script": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        }
                      ]
                    }
                  ],
                  "description": "Script that is used to calculate cache key."
                },
                "folder": {
                  "description": "Path of a folder to cache.",
                  "type": "string"
                },
                "folders": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        }
                      ]
                    }
                  ],
                  "description": "A list of folders to cache."
                },
                "name": {
                  "type": "string"
                },
                "optimistically_restore_on_miss": {
                  "description": "Boolean expression. A flag to enable optimistic cache restoration on miss by finding the latest available key.",
                  "type": "string"
                },
                "populate_script": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        }
                      ]
                    }
                  ],
                  "description": "In case of a cache miss this script will be executed."
                },
                "reupload_on_changes": {
                  "description": "Boolean expression. A flag to check if contents of folder has changed after a cache hit.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "^(.*)file$": {
              "properties": {
                "from_contents": {
                  "description": "Provide the file contents directly instead of using an environment variable.",
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "path": {
                  "description": "Destination path.",
                  "type": "string"
                },
                "variable_name": {
                  "description": "Environment variable name to get the file contents from.",
                  "type": "string"
                }
              },
              "required": [
                "path"
              ],
              "type": "object"
            },
            "^(.*)script$": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": "string"
                    }
                  ]
                }
              ]
            }
          }
        },
        "only_if": {
          "description": "Boolean expression that can use environment variables.",
          "type": "string"
        },
        "os_version": {
          "description": "Windows version of container.",
          "enum": [
            "2019",
            "1709",
            "1803"
          ]
        },
        "platform": {
          "description": "Container Platform.",
          "enum": [
            "linux",
            "windows"
          ]
        },
        "skip": {
          "description": "Boolean expression that can use environment variables.",
          "type": "string"
        },
        "timeout_in": {
          "description": "Task timeout in minutes",
          "type": "number"
        },
        "upload_caches": {
          "type": "array",
          "prefixItems": [
            {
              "description": "Cache name to upload.",
              "type": "string"
            }
          ]
        },
        "use_static_ip": {
          "description": "Boolean expression that can use environment variables.",
          "type": "string"
        }
      },
      "patternProperties": {
        "^(.*)artifacts$": {
          "properties": {
            "format": {
              "description": "Content Format.",
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "path": {
              "description": "Path or pattern of artifacts.",
              "type": "string"
            },
            "paths": {
              "type": "array",
              "prefixItems": [
                {
                  "description": "Path or pattern of artifacts.",
                  "type": "string"
                }
              ]
            },
            "type": {
              "description": "Content Type.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "^(.*)background_script$": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "prefixItems": [
                {
                  "type": "string"
                }
              ]
            }
          ]
        },
        "^(.*)cache$": {
          "description": "Folder Cache Definition.",
          "oneOf": [
            {
              "required": [
                "folder"
              ]
            },
            {
              "required": [
                "folders"
              ]
            }
          ],
          "properties": {
            "fingerprint_key": {
              "description": "Cache key in it's raw form.",
              "type": "string"
            },
            "fingerprint_script": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": "string"
                    }
                  ]
                }
              ],
              "description": "Script that is used to calculate cache key."
            },
            "folder": {
              "description": "Path of a folder to cache.",
              "type": "string"
            },
            "folders": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": "string"
                    }
                  ]
                }
              ],
              "description": "A list of folders to cache."
            },
            "name": {
              "type": "string"
            },
            "optimistically_restore_on_miss": {
              "description": "Boolean expression. A flag to enable optimistic cache restoration on miss by finding the latest available key.",
              "type": "string"
            },
            "populate_script": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": "string"
                    }
                  ]
                }
              ],
              "description": "In case of a cache miss this script will be executed."
            },
            "reupload_on_changes": {
              "description": "Boolean expression. A flag to check if contents of folder has changed after a cache hit.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "^(.*)file$": {
          "properties": {
            "from_contents": {
              "description": "Provide the file contents directly instead of using an environment variable.",
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "path": {
              "description": "Destination path.",
              "type": "string"
            },
            "variable_name": {
              "description": "Environment variable name to get the file contents from.",
              "type": "string"
            }
          },
          "required": [
            "path"
          ],
          "type": "object"
        },
        "^(.*)script$": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "prefixItems": [
                {
                  "type": "string"
                }
              ]
            }
          ]
        }
      }
    },
    "^(.*)pipe$": {
      "properties": {
        "alias": {
          "type": "string"
        },
        "allow_failures": {
          "description": "Boolean expression that can use environment variables.",
          "type": "string"
        },
        "depends_on": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "prefixItems": [
                {
                  "type": "string"
                }
              ]
            }
          ],
          "description": "List of task names this task depends on."
        },
        "env": {
          "description": "Map represented as an object.",
          "type": "object",
          "patternProperties": {
            ".*": {
              "type": "string"
            }
          }
        },
        "environment": {
          "description": "Map represented as an object.",
          "type": "object",
          "patternProperties": {
            ".*": {
              "type": "string"
            }
          }
        },
        "name": {
          "type": "string"
        },
        "only_if": {
          "description": "Boolean expression that can use environment variables.",
          "type": "string"
        },
        "resources": {
          "description": "Pipe resources",
          "properties": {
            "cpu": {
              "type": "number"
            },
            "memory": {
              "pattern": "\\d+(G|Mb)?",
              "type": "string"
            }
          },
          "type": "object"
        },
        "skip": {
          "description": "Boolean expression that can use environment variables.",
          "type": "string"
        },
        "steps": {
          "type": "array",
          "prefixItems": [
            {
              "description": "Pipe step",
              "type": "object",
              "properties": {
                "always": {
                  "description": "ALWAYS commands.",
                  "type": "object",
                  "properties": {
                    "upload_caches": {
                      "type": "array",
                      "prefixItems": [
                        {
                          "description": "Cache name to upload.",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "patternProperties": {
                    "^(.*)artifacts$": {
                      "properties": {
                        "format": {
                          "description": "Content Format.",
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "path": {
                          "description": "Path or pattern of artifacts.",
                          "type": "string"
                        },
                        "paths": {
                          "type": "array",
                          "prefixItems": [
                            {
                              "description": "Path or pattern of artifacts.",
                              "type": "string"
                            }
                          ]
                        },
                        "type": {
                          "description": "Content Type.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "^(.*)background_script$": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "prefixItems": [
                            {
                              "type": "string"
                            }
                          ]
                        }
                      ]
                    },
                    "^(.*)cache$": {
                      "description": "Folder Cache Definition.",
                      "oneOf": [
                        {
                          "required": [
                            "folder"
                          ]
                        },
                        {
                          "required": [
                            "folders"
                          ]
                        }
                      ],
                      "properties": {
                        "fingerprint_key": {
                          "description": "Cache key in it's raw form.",
                          "type": "string"
                        },
                        "fingerprint_script": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "array",
                              "prefixItems": [
                                {
                                  "type": "string"
                                }
                              ]
                            }
                          ],
                          "description": "Script that is used to calculate cache key."
                        },
                        "folder": {
                          "description": "Path of a folder to cache.",
                          "type": "string"
                        },
                        "folders": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "array",
                              "prefixItems": [
                                {
                                  "type": "string"
                                }
                              ]
                            }
                          ],
                          "description": "A list of folders to cache."
                        },
                        "name": {
                          "type": "string"
                        },
                        "optimistically_restore_on_miss": {
                          "description": "Boolean expression. A flag to enable optimistic cache restoration on miss by finding the latest available key.",
                          "type": "string"
                        },
                        "populate_script": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "array",
                              "prefixItems": [
                                {
                                  "type": "string"
                                }
                              ]
                            }
                          ],
                          "description": "In case of a cache miss this script will be executed."
                        },
                        "reupload_on_changes": {
                          "description": "Boolean expression. A flag to check if contents of folder has changed after a cache hit.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "^(.*)file$": {
                      "properties": {
                        "from_contents": {
                          "description": "Provide the file contents directly instead of using an environment variable.",
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "path": {
                          "description": "Destination path.",
                          "type": "string"
                        },
                        "variable_name": {
                          "description": "Environment variable name to get the file contents from.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "path"
                      ],
                      "type": "object"
                    },
                    "^(.*)script$": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "prefixItems": [
                            {
                              "type": "string"
                            }
                          ]
                        }
                      ]
                    }
                  }
                },
                "image": {
                  "description": "Docker Image to use.",
                  "type": "string"
                },
                "on_failure": {
                  "description": "ON_FAILURE commands.",
                  "type": "object",
                  "properties": {
                    "upload_caches": {
                      "type": "array",
                      "prefixItems": [
                        {
                          "description": "Cache name to upload.",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "patternProperties": {
                    "^(.*)artifacts$": {
                      "properties": {
                        "format": {
                          "description": "Content Format.",
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "path": {
                          "description": "Path or pattern of artifacts.",
                          "type": "string"
                        },
                        "paths": {
                          "type": "array",
                          "prefixItems": [
                            {
                              "description": "Path or pattern of artifacts.",
                              "type": "string"
                            }
                          ]
                        },
                        "type": {
                          "description": "Content Type.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "^(.*)background_script$": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "prefixItems": [
                            {
                              "type": "string"
                            }
                          ]
                        }
                      ]
                    },
                    "^(.*)cache$": {
                      "description": "Folder Cache Definition.",
                      "oneOf": [
                        {
                          "required": [
                            "folder"
                          ]
                        },
                        {
                          "required": [
                            "folders"
                          ]
                        }
                      ],
                      "properties": {
                        "fingerprint_key": {
                          "description": "Cache key in it's raw form.",
                          "type": "string"
                        },
                        "fingerprint_script": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "array",
                              "prefixItems": [
                                {
                                  "type": "string"
                                }
                              ]
                            }
                          ],
                          "description": "Script that is used to calculate cache key."
                        },
                        "folder": {
                          "description": "Path of a folder to cache.",
                          "type": "string"
                        },
                        "folders": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "array",
                              "prefixItems": [
                                {
                                  "type": "string"
                                }
                              ]
                            }
                          ],
                          "description": "A list of folders to cache."
                        },
                        "name": {
                          "type": "string"
                        },
                        "optimistically_restore_on_miss": {
                          "description": "Boolean expression. A flag to enable optimistic cache restoration on miss by finding the latest available key.",
                          "type": "string"
                        },
                        "populate_script": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "array",
                              "prefixItems": [
                                {
                                  "type": "string"
                                }
                              ]
                            }
                          ],
                          "description": "In case of a cache miss this script will be executed."
                        },
                        "reupload_on_changes": {
                          "description": "Boolean expression. A flag to check if contents of folder has changed after a cache hit.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "^(.*)file$": {
                      "properties": {
                        "from_contents": {
                          "description": "Provide the file contents directly instead of using an environment variable.",
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "path": {
                          "description": "Destination path.",
                          "type": "string"
                        },
                        "variable_name": {
                          "description": "Environment variable name to get the file contents from.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "path"
                      ],
                      "type": "object"
                    },
                    "^(.*)script$": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "prefixItems": [
                            {
                              "type": "string"
                            }
                          ]
                        }
                      ]
                    }
                  }
                },
                "on_success": {
                  "description": "ON_SUCCESS commands.",
                  "type": "object",
                  "properties": {
                    "upload_caches": {
                      "type": "array",
                      "prefixItems": [
                        {
                          "description": "Cache name to upload.",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "patternProperties": {
                    "^(.*)artifacts$": {
                      "properties": {
                        "format": {
                          "description": "Content Format.",
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "path": {
                          "description": "Path or pattern of artifacts.",
                          "type": "string"
                        },
                        "paths": {
                          "type": "array",
                          "prefixItems": [
                            {
                              "description": "Path or pattern of artifacts.",
                              "type": "string"
                            }
                          ]
                        },
                        "type": {
                          "description": "Content Type.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "^(.*)background_script$": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "prefixItems": [
                            {
                              "type": "string"
                            }
                          ]
                        }
                      ]
                    },
                    "^(.*)cache$": {
                      "description": "Folder Cache Definition.",
                      "oneOf": [
                        {
                          "required": [
                            "folder"
                          ]
                        },
                        {
                          "required": [
                            "folders"
                          ]
                        }
                      ],
                      "properties": {
                        "fingerprint_key": {
                          "description": "Cache key in it's raw form.",
                          "type": "string"
                        },
                        "fingerprint_script": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "array",
                              "prefixItems": [
                                {
                                  "type": "string"
                                }
                              ]
                            }
                          ],
                          "description": "Script that is used to calculate cache key."
                        },
                        "folder": {
                          "description": "Path of a folder to cache.",
                          "type": "string"
                        },
                        "folders": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "array",
                              "prefixItems": [
                                {
                                  "type": "string"
                                }
                              ]
                            }
                          ],
                          "description": "A list of folders to cache."
                        },
                        "name": {
                          "type": "string"
                        },
                        "optimistically_restore_on_miss": {
                          "description": "Boolean expression. A flag to enable optimistic cache restoration on miss by finding the latest available key.",
                          "type": "string"
                        },
                        "populate_script": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "array",
                              "prefixItems": [
                                {
                                  "type": "string"
                                }
                              ]
                            }
                          ],
                          "description": "In case of a cache miss this script will be executed."
                        },
                        "reupload_on_changes": {
                          "description": "Boolean expression. A flag to check if contents of folder has changed after a cache hit.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "^(.*)file$": {
                      "properties": {
                        "from_contents": {
                          "description": "Provide the file contents directly instead of using an environment variable.",
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "path": {
                          "description": "Destination path.",
                          "type": "string"
                        },
                        "variable_name": {
                          "description": "Environment variable name to get the file contents from.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "path"
                      ],
                      "type": "object"
                    },
                    "^(.*)script$": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "prefixItems": [
                            {
                              "type": "string"
                            }
                          ]
                        }
                      ]
                    }
                  }
                },
                "on_timeout": {
                  "description": "ON_TIMEOUT commands.",
                  "type": "object",
                  "properties": {
                    "upload_caches": {
                      "type": "array",
                      "prefixItems": [
                        {
                          "description": "Cache name to upload.",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "patternProperties": {
                    "^(.*)artifacts$": {
                      "properties": {
                        "format": {
                          "description": "Content Format.",
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "path": {
                          "description": "Path or pattern of artifacts.",
                          "type": "string"
                        },
                        "paths": {
                          "type": "array",
                          "prefixItems": [
                            {
                              "description": "Path or pattern of artifacts.",
                              "type": "string"
                            }
                          ]
                        },
                        "type": {
                          "description": "Content Type.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "^(.*)background_script$": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "prefixItems": [
                            {
                              "type": "string"
                            }
                          ]
                        }
                      ]
                    },
                    "^(.*)cache$": {
                      "description": "Folder Cache Definition.",
                      "oneOf": [
                        {
                          "required": [
                            "folder"
                          ]
                        },
                        {
                          "required": [
                            "folders"
                          ]
                        }
                      ],
                      "properties": {
                        "fingerprint_key": {
                          "description": "Cache key in it's raw form.",
                          "type": "string"
                        },
                        "fingerprint_script": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "array",
                              "prefixItems": [
                                {
                                  "type": "string"
                                }
                              ]
                            }
                          ],
                          "description": "Script that is used to calculate cache key."
                        },
                        "folder": {
                          "description": "Path of a folder to cache.",
                          "type": "string"
                        },
                        "folders": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "array",
                              "prefixItems": [
                                {
                                  "type": "string"
                                }
                              ]
                            }
                          ],
                          "description": "A list of folders to cache."
                        },
                        "name": {
                          "type": "string"
                        },
                        "optimistically_restore_on_miss": {
                          "description": "Boolean expression. A flag to enable optimistic cache restoration on miss by finding the latest available key.",
                          "type": "string"
                        },
                        "populate_script": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "array",
                              "prefixItems": [
                                {
                                  "type": "string"
                                }
                              ]
                            }
                          ],
                          "description": "In case of a cache miss this script will be executed."
                        },
                        "reupload_on_changes": {
                          "description": "Boolean expression. A flag to check if contents of folder has changed after a cache hit.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "^(.*)file$": {
                      "properties": {
                        "from_contents": {
                          "description": "Provide the file contents directly instead of using an environment variable.",
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "path": {
                          "description": "Destination path.",
                          "type": "string"
                        },
                        "variable_name": {
                          "description": "Environment variable name to get the file contents from.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "path"
                      ],
                      "type": "object"
                    },
                    "^(.*)script$": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "prefixItems": [
                            {
                              "type": "string"
                            }
                          ]
                        }
                      ]
                    }
                  }
                },
                "upload_caches": {
                  "type": "array",
                  "prefixItems": [
                    {
                      "description": "Cache name to upload.",
                      "type": "string"
                    }
                  ]
                }
              },
              "required": [
                "image"
              ],
              "patternProperties": {
                "^(.*)artifacts$": {
                  "properties": {
                    "format": {
                      "description": "Content Format.",
                      "type": "string"
                    },
                    "name": {
                      "type": "string"
                    },
                    "path": {
                      "description": "Path or pattern of artifacts.",
                      "type": "string"
                    },
                    "paths": {
                      "type": "array",
                      "prefixItems": [
                        {
                          "description": "Path or pattern of artifacts.",
                          "type": "string"
                        }
                      ]
                    },
                    "type": {
                      "description": "Content Type.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "^(.*)cache$": {
                  "description": "Folder Cache Definition.",
                  "oneOf": [
                    {
                      "required": [
                        "folder"
                      ]
                    },
                    {
                      "required": [
                        "folders"
                      ]
                    }
                  ],
                  "properties": {
                    "fingerprint_key": {
                      "description": "Cache key in it's raw form.",
                      "type": "string"
                    },
                    "fingerprint_script": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "prefixItems": [
                            {
                              "type": "string"
                            }
                          ]
                        }
                      ],
                      "description": "Script that is used to calculate cache key."
                    },
                    "folder": {
                      "description": "Path of a folder to cache.",
                      "type": "string"
                    },
                    "folders": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "prefixItems": [
                            {
                              "type": "string"
                            }
                          ]
                        }
                      ],
                      "description": "A list of folders to cache."
                    },
                    "name": {
                      "type": "string"
                    },
                    "optimistically_restore_on_miss": {
                      "description": "Boolean expression. A flag to enable optimistic cache restoration on miss by finding the latest available key.",
                      "type": "string"
                    },
                    "populate_script": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "prefixItems": [
                            {
                              "type": "string"
                            }
                          ]
                        }
                      ],
                      "description": "In case of a cache miss this script will be executed."
                    },
                    "reupload_on_changes": {
                      "description": "Boolean expression. A flag to check if contents of folder has changed after a cache hit.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "^(.*)file$": {
                  "properties": {
                    "from_contents": {
                      "description": "Provide the file contents directly instead of using an environment variable.",
                      "type": "string"
                    },
                    "name": {
                      "type": "string"
                    },
                    "path": {
                      "description": "Destination path.",
                      "type": "string"
                    },
                    "variable_name": {
                      "description": "Environment variable name to get the file contents from.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "path"
                  ],
                  "type": "object"
                },
                "^(.*)script$": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        }
                      ]
                    }
                  ]
                }
              }
            }
          ]
        },
        "timeout_in": {
          "description": "Task timeout in minutes",
          "type": "number"
        }
      },
      "type": "object"
    },
    "^(.*)task$": {
      "description": "Cirrus CI task definition.",
      "type": "object",
      "properties": {
        "alias": {
          "type": "string"
        },
        "allow_failures": {
          "description": "Boolean expression that can use environment variables.",
          "type": "string"
        },
        "always": {
          "description": "ALWAYS commands.",
          "type": "object",
          "properties": {
            "upload_caches": {
              "type": "array",
              "prefixItems": [
                {
                  "description": "Cache name to upload.",
                  "type": "string"
                }
              ]
            }
          },
          "patternProperties": {
            "^(.*)artifacts$": {
              "properties": {
                "format": {
                  "description": "Content Format.",
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "path": {
                  "description": "Path or pattern of artifacts.",
                  "type": "string"
                },
                "paths": {
                  "type": "array",
                  "prefixItems": [
                    {
                      "description": "Path or pattern of artifacts.",
                      "type": "string"
                    }
                  ]
                },
                "type": {
                  "description": "Content Type.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "^(.*)background_script$": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": "string"
                    }
                  ]
                }
              ]
            },
            "^(.*)cache$": {
              "description": "Folder Cache Definition.",
              "oneOf": [
                {
                  "required": [
                    "folder"
                  ]
                },
                {
                  "required": [
                    "folders"
                  ]
                }
              ],
              "properties": {
                "fingerprint_key": {
                  "description": "Cache key in it's raw form.",
                  "type": "string"
                },
                "fingerprint_script": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        }
                      ]
                    }
                  ],
                  "description": "Script that is used to calculate cache key."
                },
                "folder": {
                  "description": "Path of a folder to cache.",
                  "type": "string"
                },
                "folders": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        }
                      ]
                    }
                  ],
                  "description": "A list of folders to cache."
                },
                "name": {
                  "type": "string"
                },
                "optimistically_restore_on_miss": {
                  "description": "Boolean expression. A flag to enable optimistic cache restoration on miss by finding the latest available key.",
                  "type": "string"
                },
                "populate_script": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        }
                      ]
                    }
                  ],
                  "description": "In case of a cache miss this script will be executed."
                },
                "reupload_on_changes": {
                  "description": "Boolean expression. A flag to check if contents of folder has changed after a cache hit.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "^(.*)file$": {
              "properties": {
                "from_contents": {
                  "description": "Provide the file contents directly instead of using an environment variable.",
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "path": {
                  "description": "Destination path.",
                  "type": "string"
                },
                "variable_name": {
                  "description": "Environment variable name to get the file contents from.",
                  "type": "string"
                }
              },
              "required": [
                "path"
              ],
              "type": "object"
            },
            "^(.*)script$": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": "string"
                    }
                  ]
                }
              ]
            }
          }
        },
        "container": {
          "description": "Container definition for Community Cluster.",
          "properties": {
            "additional_containers": {
              "type": "array",
              "prefixItems": [
                {
                  "description": "Additional Container definition.",
                  "properties": {
                    "command": {
                      "description": "Container CMD to override.",
                      "type": "string"
                    },
                    "cpu": {
                      "type": "number"
                    },
                    "env": {
                      "description": "Map represented as an object.",
                      "type": "object",
                      "patternProperties": {
                        ".*": {
                          "type": "string"
                        }
                      }
                    },
                    "environment": {
                      "description": "Map represented as an object.",
                      "type": "object",
                      "patternProperties": {
                        ".*": {
                          "type": "string"
                        }
                      }
                    },
                    "image": {
                      "description": "Docker Image.",
                      "type": "string"
                    },
                    "memory": {
                      "pattern": "\\d+(G|Mb)?",
                      "type": "string"
                    },
                    "name": {
                      "type": "string"
                    },
                    "port": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "string"
                        }
                      ],
                      "description": "Port exposed by the container."
                    },
                    "ports": {
                      "description": "Ports exposed by the container.",
                      "type": "array",
                      "prefixItems": [
                        {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "string"
                            }
                          ],
                          "description": "Port exposed by the container."
                        }
                      ]
                    },
                    "privileged": {
                      "description": "Boolean expression that can use environment variables.",
                      "type": "string"
                    },
                    "readiness_command": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "prefixItems": [
                            {
                              "type": "string"
                            }
                          ]
                        }
                      ],
                      "description": "Container readiness probe command."
                    }
                  },
                  "required": [
                    "image"
                  ],
                  "type": "object"
                }
              ]
            },
            "cpu": {
              "type": "number"
            },
            "docker_arguments": {
              "description": "Arguments for Docker build",
              "type": "object",
              "patternProperties": {
                ".*": {
                  "type": "string"
                }
              }
            },
            "dockerfile": {
              "description": "Relative path to Dockerfile to build container from.",
              "type": "string"
            },
            "image": {
              "description": "Docker Image to use.",
              "type": "string"
            },
            "kvm": {
              "description": "Boolean expression that can use environment variables.",
              "type": "string"
            },
            "memory": {
              "pattern": "\\d+(G|Mb)?",
              "type": "string"
            },
            "registry_config": {
              "type": "string"
            },
            "use_in_memory_disk": {
              "description": "Boolean expression that can use environment variables.",
              "type": "string"
            },
            "use_static_ip": {
              "description": "Boolean expression that can use environment variables.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "depends_on": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "prefixItems": [
                {
                  "type": "string"
                }
              ]
            }
          ],
          "description": "List of task names this task depends on."
        },
        "env": {
          "description": "Map represented as an object.",
          "type": "object",
          "patternProperties": {
            ".*": {
              "type": "string"
            }
          }
        },
        "environment": {
          "description": "Map represented as an object.",
          "type": "object",
          "patternProperties": {
            ".*": {
              "type": "string"
            }
          }
        },
        "macos_instance": {
          "description": "MacOS VM definition.",
          "properties": {
            "cpu": {
              "type": "number"
            },
            "image": {
              "description": "Tart Image to use.",
              "type": "string"
            },
            "memory": {
              "pattern": "\\d+(G|Mb)?",
              "type": "string"
            },
            "password": {
              "description": "password for SSH connection.",
              "type": "string"
            },
            "user": {
              "description": "username for SSH connection.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "name": {
          "type": "string"
        },
        "on_failure": {
          "description": "ON_FAILURE commands.",
          "type": "object",
          "properties": {
            "upload_caches": {
              "type": "array",
              "prefixItems": [
                {
                  "description": "Cache name to upload.",
                  "type": "string"
                }
              ]
            }
          },
          "patternProperties": {
            "^(.*)artifacts$": {
              "properties": {
                "format": {
                  "description": "Content Format.",
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "path": {
                  "description": "Path or pattern of artifacts.",
                  "type": "string"
                },
                "paths": {
                  "type": "array",
                  "prefixItems": [
                    {
                      "description": "Path or pattern of artifacts.",
                      "type": "string"
                    }
                  ]
                },
                "type": {
                  "description": "Content Type.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "^(.*)background_script$": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": "string"
                    }
                  ]
                }
              ]
            },
            "^(.*)cache$": {
              "description": "Folder Cache Definition.",
              "oneOf": [
                {
                  "required": [
                    "folder"
                  ]
                },
                {
                  "required": [
                    "folders"
                  ]
                }
              ],
              "properties": {
                "fingerprint_key": {
                  "description": "Cache key in it's raw form.",
                  "type": "string"
                },
                "fingerprint_script": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        }
                      ]
                    }
                  ],
                  "description": "Script that is used to calculate cache key."
                },
                "folder": {
                  "description": "Path of a folder to cache.",
                  "type": "string"
                },
                "folders": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        }
                      ]
                    }
                  ],
                  "description": "A list of folders to cache."
                },
                "name": {
                  "type": "string"
                },
                "optimistically_restore_on_miss": {
                  "description": "Boolean expression. A flag to enable optimistic cache restoration on miss by finding the latest available key.",
                  "type": "string"
                },
                "populate_script": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        }
                      ]
                    }
                  ],
                  "description": "In case of a cache miss this script will be executed."
                },
                "reupload_on_changes": {
                  "description": "Boolean expression. A flag to check if contents of folder has changed after a cache hit.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "^(.*)file$": {
              "properties": {
                "from_contents": {
                  "description": "Provide the file contents directly instead of using an environment variable.",
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "path": {
                  "description": "Destination path.",
                  "type": "string"
                },
                "variable_name": {
                  "description": "Environment variable name to get the file contents from.",
                  "type": "string"
                }
              },
              "required": [
                "path"
              ],
              "type": "object"
            },
            "^(.*)script$": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": "string"
                    }
                  ]
                }
              ]
            }
          }
        },
        "on_success": {
          "description": "ON_SUCCESS commands.",
          "type": "object",
          "properties": {
            "upload_caches": {
              "type": "array",
              "prefixItems": [
                {
                  "description": "Cache name to upload.",
                  "type": "string"
                }
              ]
            }
          },
          "patternProperties": {
            "^(.*)artifacts$": {
              "properties": {
                "format": {
                  "description": "Content Format.",
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "path": {
                  "description": "Path or pattern of artifacts.",
                  "type": "string"
                },
                "paths": {
                  "type": "array",
                  "prefixItems": [
                    {
                      "description": "Path or pattern of artifacts.",
                      "type": "string"
                    }
                  ]
                },
                "type": {
                  "description": "Content Type.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "^(.*)background_script$": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": "string"
                    }
                  ]
                }
              ]
            },
            "^(.*)cache$": {
              "description": "Folder Cache Definition.",
              "oneOf": [
                {
                  "required": [
                    "folder"
                  ]
                },
                {
                  "required": [
                    "folders"
                  ]
                }
              ],
              "properties": {
                "fingerprint_key": {
                  "description": "Cache key in it's raw form.",
                  "type": "string"
                },
                "fingerprint_script": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        }
                      ]
                    }
                  ],
                  "description": "Script that is used to calculate cache key."
                },
                "folder": {
                  "description": "Path of a folder to cache.",
                  "type": "string"
                },
                "folders": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        }
                      ]
                    }
                  ],
                  "description": "A list of folders to cache."
                },
                "name": {
                  "type": "string"
                },
                "optimistically_restore_on_miss": {
                  "description": "Boolean expression. A flag to enable optimistic cache restoration on miss by finding the latest available key.",
                  "type": "string"
                },
                "populate_script": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        }
                      ]
                    }
                  ],
                  "description": "In case of a cache miss this script will be executed."
                },
                "reupload_on_changes": {
                  "description": "Boolean expression. A flag to check if contents of folder has changed after a cache hit.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "^(.*)file$": {
              "properties": {
                "from_contents": {
                  "description": "Provide the file contents directly instead of using an environment variable.",
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "path": {
                  "description": "Destination path.",
                  "type": "string"
                },
                "variable_name": {
                  "description": "Environment variable name to get the file contents from.",
                  "type": "string"
                }
              },
              "required": [
                "path"
              ],
              "type": "object"
            },
            "^(.*)script$": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": "string"
                    }
                  ]
                }
              ]
            }
          }
        },
        "on_timeout": {
          "description": "ON_TIMEOUT commands.",
          "type": "object",
          "properties": {
            "upload_caches": {
              "type": "array",
              "prefixItems": [
                {
                  "description": "Cache name to upload.",
                  "type": "string"
                }
              ]
            }
          },
          "patternProperties": {
            "^(.*)artifacts$": {
              "properties": {
                "format": {
                  "description": "Content Format.",
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "path": {
                  "description": "Path or pattern of artifacts.",
                  "type": "string"
                },
                "paths": {
                  "type": "array",
                  "prefixItems": [
                    {
                      "description": "Path or pattern of artifacts.",
                      "type": "string"
                    }
                  ]
                },
                "type": {
                  "description": "Content Type.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "^(.*)background_script$": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": "string"
                    }
                  ]
                }
              ]
            },
            "^(.*)cache$": {
              "description": "Folder Cache Definition.",
              "oneOf": [
                {
                  "required": [
                    "folder"
                  ]
                },
                {
                  "required": [
                    "folders"
                  ]
                }
              ],
              "properties": {
                "fingerprint_key": {
                  "description": "Cache key in it's raw form.",
                  "type": "string"
                },
                "fingerprint_script": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        }
                      ]
                    }
                  ],
                  "description": "Script that is used to calculate cache key."
                },
                "folder": {
                  "description": "Path of a folder to cache.",
                  "type": "string"
                },
                "folders": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        }
                      ]
                    }
                  ],
                  "description": "A list of folders to cache."
                },
                "name": {
                  "type": "string"
                },
                "optimistically_restore_on_miss": {
                  "description": "Boolean expression. A flag to enable optimistic cache restoration on miss by finding the latest available key.",
                  "type": "string"
                },
                "populate_script": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        }
                      ]
                    }
                  ],
                  "description": "In case of a cache miss this script will be executed."
                },
                "reupload_on_changes": {
                  "description": "Boolean expression. A flag to check if contents of folder has changed after a cache hit.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "^(.*)file$": {
              "properties": {
                "from_contents": {
                  "description": "Provide the file contents directly instead of using an environment variable.",
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "path": {
                  "description": "Destination path.",
                  "type": "string"
                },
                "variable_name": {
                  "description": "Environment variable name to get the file contents from.",
                  "type": "string"
                }
              },
              "required": [
                "path"
              ],
              "type": "object"
            },
            "^(.*)script$": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": "string"
                    }
                  ]
                }
              ]
            }
          }
        },
        "only_if": {
          "description": "Boolean expression that can use environment variables.",
          "type": "string"
        },
        "persistent_worker": {
          "description": "Persistent Worker definition.",
          "properties": {
            "isolation": {
              "description": "Persistent Worker isolation.",
              "properties": {
                "container": {
                  "description": "Container engine isolation.",
                  "properties": {
                    "cpu": {
                      "description": "CPU units for the container to use.",
                      "type": "number"
                    },
                    "docker_arguments": {
                      "description": "Arguments for Docker build.",
                      "type": "object",
                      "patternProperties": {
                        ".*": {
                          "type": "string"
                        }
                      }
                    },
                    "dockerfile": {
                      "description": "Relative path to Dockerfile to build container from.",
                      "type": "string"
                    },
                    "image": {
                      "description": "Container image to use.",
                      "type": "string"
                    },
                    "memory": {
                      "description": "Memory in megabytes for the container to use.",
                      "pattern": "\\d+(G|Mb)?",
                      "type": "string"
                    },
                    "platform": {
                      "description": "Image Platform.",
                      "enum": [
                        "darwin",
                        "linux",
                        "windows"
                      ]
                    },
                    "volumes": {
                      "description": "A list of volumes mounted inside of the container.",
                      "type": "array",
                      "prefixItems": [
                        {
                          "description": "A volume in the format of source:target[:ro].",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "type": "object"
                },
                "parallels": {
                  "description": "Parallels VM isolation.",
                  "properties": {
                    "image": {
                      "description": "Image name.",
                      "type": "string"
                    },
                    "password": {
                      "description": "SSH password",
                      "type": "string"
                    },
                    "platform": {
                      "description": "Image Platform.",
                      "enum": [
                        "darwin",
                        "linux",
                        "windows"
                      ]
                    },
                    "user": {
                      "description": "SSH username",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tart": {
                  "description": "Tart VM isolation.",
                  "properties": {
                    "cpu": {
                      "description": "Number of VM CPUs.",
                      "type": "number"
                    },
                    "display": {
                      "description": "Virtual display configuration.",
                      "type": "string"
                    },
                    "image": {
                      "description": "Source VM image (or name) to clone the new VM from.",
                      "type": "string"
                    },
                    "memory": {
                      "description": "VM memory size in megabytes.",
                      "pattern": "\\d+(G|Mb)?",
                      "type": "string"
                    },
                    "password": {
                      "default": "admin",
                      "description": "SSH password.",
                      "type": "string"
                    },
                    "port": {
                      "description": "SSH port.",
                      "type": "integer"
                    },
                    "softnet": {
                      "description": "Enable or disable the Softnet networking.",
                      "type": "boolean"
                    },
                    "user": {
                      "default": "admin",
                      "description": "SSH username.",
                      "type": "string"
                    },
                    "volumes": {
                      "type": "array",
                      "prefixItems": [
                        {
                          "description": "Tart volume definition.",
                          "properties": {
                            "name": {
                              "description": "Volume name that will be mounted into /Volumes/My Shared Files/<name>.",
                              "type": "string"
                            },
                            "readonly": {
                              "description": "Whether this volume should be mounted in readonly mode.",
                              "type": "string"
                            },
                            "source": {
                              "description": "Volume source, a path to a directory on the host.",
                              "type": "string"
                            },
                            "target": {
                              "description": "Volume target, a path to a directory in the guest.",
                              "type": "string"
                            }
                          },
                          "required": [
                            "source"
                          ],
                          "type": "object"
                        }
                      ]
                    }
                  },
                  "type": "object"
                },
                "vetu": {
                  "description": "Vetu VM isolation.",
                  "properties": {
                    "cpu": {
                      "description": "Number of VM CPUs.",
                      "type": "number"
                    },
                    "disk_size": {
                      "description": "Disk size to use in gigabytes.",
                      "type": "integer"
                    },
                    "image": {
                      "description": "Source VM image (or name) to clone the new VM from.",
                      "type": "string"
                    },
                    "memory": {
                      "description": "VM memory size in megabytes.",
                      "pattern": "\\d+(G|Mb)?",
                      "type": "string"
                    },
                    "password": {
                      "default": "admin",
                      "description": "SSH password.",
                      "type": "string"
                    },
                    "port": {
                      "description": "SSH port.",
                      "type": "integer"
                    },
                    "user": {
                      "default": "admin",
                      "description": "SSH username.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "labels": {
              "description": "Labels for selection.",
              "type": "string"
            },
            "resources": {
              "description": "Resources to acquire on the Persistent Worker.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "skip": {
          "description": "Boolean expression that can use environment variables.",
          "type": "string"
        },
        "timeout_in": {
          "description": "Task timeout in minutes",
          "type": "number"
        },
        "upload_caches": {
          "type": "array",
          "prefixItems": [
            {
              "description": "Cache name to upload.",
              "type": "string"
            }
          ]
        },
        "windows_container": {
          "description": "Windows Container definition for Community Cluster.",
          "properties": {
            "cpu": {
              "type": "number"
            },
            "docker_arguments": {
              "description": "Arguments for Docker build",
              "type": "object",
              "patternProperties": {
                ".*": {
                  "type": "string"
                }
              }
            },
            "dockerfile": {
              "description": "Relative path to Dockerfile to build container from.",
              "type": "string"
            },
            "image": {
              "description": "Docker Image to use.",
              "type": "string"
            },
            "memory": {
              "pattern": "\\d+(G|Mb)?",
              "type": "string"
            },
            "os_version": {
              "description": "Windows version of container.",
              "enum": [
                "2019",
                "1709",
                "1803"
              ]
            },
            "use_static_ip": {
              "description": "Boolean expression that can use environment variables.",
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "patternProperties": {
        "^(.*)artifacts$": {
          "properties": {
            "format": {
              "description": "Content Format.",
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "path": {
              "description": "Path or pattern of artifacts.",
              "type": "string"
            },
            "paths": {
              "type": "array",
              "prefixItems": [
                {
                  "description": "Path or pattern of artifacts.",
                  "type": "string"
                }
              ]
            },
            "type": {
              "description": "Content Type.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "^(.*)background_script$": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "prefixItems": [
                {
                  "type": "string"
                }
              ]
            }
          ]
        },
        "^(.*)cache$": {
          "description": "Folder Cache Definition.",
          "oneOf": [
            {
              "required": [
                "folder"
              ]
            },
            {
              "required": [
                "folders"
              ]
            }
          ],
          "properties": {
            "fingerprint_key": {
              "description": "Cache key in it's raw form.",
              "type": "string"
            },
            "fingerprint_script": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": "string"
                    }
                  ]
                }
              ],
              "description": "Script that is used to calculate cache key."
            },
            "folder": {
              "description": "Path of a folder to cache.",
              "type": "string"
            },
            "folders": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": "string"
                    }
                  ]
                }
              ],
              "description": "A list of folders to cache."
            },
            "name": {
              "type": "string"
            },
            "optimistically_restore_on_miss": {
              "description": "Boolean expression. A flag to enable optimistic cache restoration on miss by finding the latest available key.",
              "type": "string"
            },
            "populate_script": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": "string"
                    }
                  ]
                }
              ],
              "description": "In case of a cache miss this script will be executed."
            },
            "reupload_on_changes": {
              "description": "Boolean expression. A flag to check if contents of folder has changed after a cache hit.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "^(.*)file$": {
          "properties": {
            "from_contents": {
              "description": "Provide the file contents directly instead of using an environment variable.",
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "path": {
              "description": "Destination path.",
              "type": "string"
            },
            "variable_name": {
              "description": "Environment variable name to get the file contents from.",
              "type": "string"
            }
          },
          "required": [
            "path"
          ],
          "type": "object"
        },
        "^(.*)script$": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "prefixItems": [
                {
                  "type": "string"
                }
              ]
            }
          ]
        }
      }
    }
  },
  "id": "https://cirrus-ci.org/"
}
