{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/",
  "additionalProperties": false,
  "definitions": {
    "architecture": {
      "type": "string",
      "enum": ["ARM32", "x64", "x86"]
    },
    "branch": {
      "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#onpull_requestpull_request_targetbranchesbranches-ignore",
      "$ref": "#/definitions/globs",
      "description": "При использовании событий push и pull_request вы можете настроить воркфлоу для выполнения в конкретных ветках или тегах. Если вы определяете только теги или только ветки, воркфлоу не будет запускаться для событий, затрагивающих неопределённую ссылку Git.\nКлючевые слова branches, branches-ignore, tags и tags-ignore принимают шаблоны glob, в которых используются символы-шаблоны * и ** для сопоставления с несколькими ветками или тегами. Для получения дополнительной информации см. https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet.\nШаблоны, определенные в branches и tags, сравниваются с именем ссылки Git. Например, определение шаблона mona/octocat в branches будет соответствовать ссылке Git refs/heads/mona/octocat. Шаблон releases/** будет соответствовать ссылке Git refs/heads/releases/10.\nВы можете использовать два типа фильтров, чтобы предотвратить выполнение воркфлоу при пушах и запросах на включение изменений (pull request) в теги и ветки:\nbranches или branches-ignore — Вы не можете использовать оба фильтра branches и branches-ignore для одного события в воркфлоу. Используйте фильтр branches, когда вам нужно фильтровать ветки для положительных совпадений и исключать ветки. Используйте фильтр branches-ignore, когда вам нужно только исключить имена веток.\ntags или tags-ignore — Вы не можете использовать оба фильтра tags и tags-ignore для одного события в воркфлоу. Используйте фильтр tags, когда вам нужно фильтровать теги для положительных совпадений и исключать теги. Используйте фильтр tags-ignore, когда вам нужно только исключить имена тегов.\nВы можете исключать теги и ветки с помощью символа !. Порядок, в котором вы определяете шаблоны, имеет значение.\nСовпадающий негативный шаблон (начинающийся с !) после положительного совпадения исключит ссылку Git.\nСовпадающий позитивный шаблон после негативного совпадения снова включит ссылку Git."
    },
    "configuration": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "number"
        },
        {
          "type": "boolean"
        },
        {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/configuration"
          }
        },
        {
          "type": "array",
          "items": {
            "$ref": "#/definitions/configuration"
          }
        }
      ]
    },
    "container": {
      "type": "object",
      "properties": {
        "image": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idcontainer",
          "description": "Образ Docker, используемый в качестве контейнера для выполнения действия. Значением может быть имя образа из Docker Hub или имя реестра.",
          "type": "string"
        },
        "credentials": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idcontainercredentials",
          "description": "Если для получения образа требуется аутентификация в реестре контейнеров, вы можете использовать параметр credentials, чтобы задать карту (объект) с именем пользователя и паролем. Эти учетные данные представляют собой те же значения, которые вы указали бы для команды docker login",
          "type": "object",
          "properties": {
            "username": {
              "type": "string"
            },
            "password": {
              "type": "string"
            }
          }
        },
        "env": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idcontainerenv",
          "$ref": "#/definitions/env",
          "description": "Задаёт массив переменных окружения в контейнере."
        },
        "ports": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idcontainerports",
          "description": "Задаёт массив портов, которые нужно открыть (опубликовать) на контейнере.",
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ]
          },
          "minItems": 1
        },
        "volumes": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idcontainervolumes",
          "description": "Задаёт массив томов для использования контейнером. Вы можете использовать тома для обмена данными между сервисами или другими шагами в задаче. Вы можете указывать именованные тома Docker, анонимные тома Docker или bind-монтирования на хосте.\nЧтобы указать том, задайте исходный путь и путь назначения: <source>:<destinationPath>\nГде <source> — это имя тома или абсолютный путь на хост-машине, а <destinationPath> — абсолютный путь в контейнере.",
          "type": "array",
          "items": {
            "type": "string"
          },
          "minItems": 1
        },
        "options": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idcontaineroptions",
          "description": "Дополнительные параметры ресурсов контейнера Docker. Список параметров см. по адресу: https://docs.docker.com/engine/reference/commandline/create/#options.",
          "type": "string"
        }
      },
      "required": ["image"],
      "additionalProperties": false
    },
    "defaults": {
      "type": "object",
      "properties": {
        "run": {
          "type": "object",
          "properties": {
            "shell": {
              "$ref": "#/definitions/shell"
            },
            "working-directory": {
              "$ref": "#/definitions/working-directory"
            }
          },
          "minProperties": 1,
          "additionalProperties": false
        }
      },
      "minProperties": 1,
      "additionalProperties": false
    },
    "env": {
      "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#env",
      "description": "Чтобы задать пользовательские переменные окружения, необходимо указать переменные в файле воркфлоу. Вы можете определять переменные окружения для шага, задачи или всего воркфлоу с помощью ключевых слов jobs.<job_id>.steps[*].env, jobs.<job_id>.env и env. Для получения дополнительной информации см. https://docs.github.com/en/actions/learn-github-actions/variables",

      "oneOf": [
        {
          "type": "object",
          "additionalProperties": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              }
            ]
          }
        },
        {
          "$ref": "#/definitions/stringContainingExpressionSyntax"
        }
      ]
    },
    "event": {
      "$comment": "https://gitverse.ru/docs/cicd/docs/triggers/",
      "type": "string",
      "enum": [
        "branch_protection_rule",
        "create",
        "delete",
        "deployment",
        "deployment_status",
        "discussion",
        "discussion_comment",
        "fork",
        "merge_group",
        "page_build",
        "pull_request",
        "pull_request_review",
        "pull_request_review_comment",
        "pull_request_target",
        "push",
        "release",
        "workflow_call",
        "workflow_dispatch",
        "repository_dispatch"
      ]
    },
    "eventObject": {
      "oneOf": [
        {
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "additionalProperties": true
    },
    "expressionSyntax": {
      "$comment": "Экранировать { и } в шаблоне для совместимости с Unicode (#1360)",
      "type": "string",
      "pattern": "^\\$\\{\\{(.|[\r\n])*\\}\\}$"
    },
    "stringContainingExpressionSyntax": {
      "$comment": "Экранировать { и } в шаблоне для совместимости с Unicode (#1360)",
      "type": "string",
      "pattern": "^.*\\$\\{\\{(.|[\r\n])*\\}\\}.*$"
    },
    "globs": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      },
      "minItems": 1
    },
    "machine": {
      "type": "string",
      "enum": ["linux", "macos", "windows"]
    },
    "name": {
      "type": "string",
      "pattern": "^[_a-zA-Z][a-zA-Z0-9_-]*$"
    },
    "path": {
      "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#onpushpull_requestpull_request_targetpathspaths-ignore",
      "$ref": "#/definitions/globs",
      "description": "При использовании событий push и pull_request вы можете настроить воркфлоу на выполнение, когда хотя бы один файл не соответствует paths-ignore или хотя бы один изменённый файл соответствует настроенным путям paths. Фильтры путей не обрабатываются для пушей в теги.\n\nКлючевые слова paths-ignore и paths принимают шаблоны glob, использующие символы подстановки * и ** для сопоставления с несколькими именами путей. Для получения дополнительной информации см. https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet.\n\nВы можете исключать пути, используя два типа фильтров. Вы не можете использовать оба этих фильтра для одного события в воркфлоу.\n\npaths-ignore — Используйте фильтр paths-ignore, когда вам нужно только исключить имена путей.\n\npaths — Используйте фильтр paths, когда вам нужно отфильтровать пути для положительных совпадений и исключить пути."
    },
    "shell": {
      "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#onpushpull_requestpull_request_targetpathspaths-ignore",
      "description": "Вы можете переопределить настройки оболочки по умолчанию в операционной системе исполнителя (runner), используя ключевое слово shell. Вы можете использовать встроенные ключевые слова оболочки или определить собственный набор параметров оболочки.",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#onpushpull_requestpull_request_targetpathspaths-ignore",
          "type": "string",
          "enum": ["bash", "pwsh", "python", "sh", "cmd", "powershell"]
        }
      ]
    },
    "step": {
      "type": "object",
      "additionalProperties": false,
      "dependencies": {
        "working-directory": ["run"],
        "shell": ["run"]
      },
      "oneOf": [
        {
          "required": ["uses"]
        },
        {
          "required": ["run"]
        }
      ],
      "properties": {
        "id": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#onpushpull_requestpull_request_targetpathspaths-ignore",
          "description": "Уникальный идентификатор шага. Вы можете использовать этот идентификатор, чтобы ссылаться на шаг в контекстах. Для получения дополнительной информации см. https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions.",
          "type": "string"
        },
        "if": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idstepsif",
          "description": "Вы можете использовать условный оператор if, чтобы предотвратить выполнение шага, если условие не выполнено. Вы можете использовать любой поддерживаемый контекст и выражение для создания условия.\n\nВыражения в условном операторе if не требуют синтаксиса ${{ }}. Для получения дополнительной информации см. https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions.",
          "type": ["boolean", "number", "string"]
        },
        "name": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idstepsname",
          "description": "Название шага для отображения на GitVerse.",
          "type": "string"
        },
        "uses": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idstepsuses",
          "description": "Выбирает действие для выполнения в составе шага вашей задачи. Действие — это многократно используемая единица кода. Вы можете использовать действие, определенное в том же репозитории, что и воркфлоу, в публичном репозитории или в опубликованном образе Docker-контейнера (https://hub.docker.com/).\n\nМы настоятельно рекомендуем указывать версию используемого действия с помощью Git-ссылки (ref), SHA или номера Docker-тега. Если вы не укажете версию, это может нарушить работу ваших воркфлоу или вызвать неожиданное поведение, когда владелец действия опубликует обновление.\n\nИспользование SHA коммита выпущенной версии действия — самый безопасный вариант с точки зрения стабильности и безопасности.\n\nИспользование конкретной мажорной версии действия позволяет получать критические исправления и патчи безопасности, сохраняя совместимость. Это также гарантирует, что ваш воркфлоу должен продолжать работать.\n\nИспользование ветки master действия может быть удобным, но если кто-то выпустит новую мажорную версию с изменением, нарушающим обратную совместимость, ваш воркфлоу может сломаться.\n\nНекоторые действия требуют входных параметров, которые вы должны задать с помощью ключевого слова with. Изучите файл README действия, чтобы определить необходимые входные параметры.\n\nДействия могут быть либо JavaScript-файлами, либо Docker-контейнерами. Если используемое вами действие является Docker-контейнером, вы должны выполнять задачу в виртуальной среде Linux. Для получения более подробной информации см. https://help.github.com/en/articles/virtual-environments-for-github-actions.",
          "type": "string"
        },
        "run": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idstepsrun",
          "description": "Запускает программы командной строки с использованием оболочки операционной системы. Если вы не укажете имя, имя шага по умолчанию будет соответствовать тексту, указанному в команде run.\n\nКоманды по умолчанию выполняются в невходных (non-login) оболочках. Вы можете выбрать другую оболочку и настроить оболочку, используемую для выполнения команд. Для получения дополнительной информации см. https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#using-a-specific-shell.\n\nКаждое ключевое слово run представляет новый процесс и оболочку в виртуальной среде. Когда вы указываете многострочные команды, каждая строка выполняется в одной и той же оболочке.",
          "type": "string"
        },
        "working-directory": {
          "$ref": "#/definitions/working-directory"
        },
        "shell": {
          "$ref": "#/definitions/shell"
        },
        "with": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idstepswith",
          "$ref": "#/definitions/env",
          "description": "Набор входных параметров, определенных действием. Каждый входной параметр представляет собой пару \"ключ-значение\". Входные параметры задаются как переменные окружения. Переменная имеет префикс INPUT_ и преобразуется в верхний регистр.",
          "properties": {
            "args": {
              "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idstepswithargs",
              "type": "string"
            },
            "entrypoint": {
              "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idstepswithentrypoint",
              "type": "string"
            }
          }
        },
        "env": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idstepsenv",
          "$ref": "#/definitions/env",
          "description": "Задает переменные окружения для использования шагами в виртуальной среде. Вы также можете устанавливать переменные окружения для всего воркфлоу или отдельной задачи."
        },
        "continue-on-error": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idstepsenv",
          "description": "Предотвращает сбой задачи при сбое шага. Установите значение true, чтобы задача считалась успешной, даже если этот шаг завершится ошибкой.",
          "oneOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/expressionSyntax"
            }
          ],
          "default": false
        }
      }
    },
    "types": {
      "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#onevent_nametypes",
      "description": "Выбирает типы активности, которые запускают выполнение воркфлоу. Большинство событий GitVerse вызываются более чем одним типом активности. Например, событие для ресурса release (релиза) запускается, когда релиз опубликован, отменен, создан, отредактирован, удален или выпущен как пре-релиз. Ключевое слово types позволяет вам сузить круг активности, вызывающей выполнение воркфлоу. Если только один тип активности вызывает событие веб-хука, ключевое слово types не требуется.\n\nВы можете использовать массив типов событий. Для получения дополнительной информации о каждом событии и их типах активности см. https://help.github.com/en/articles/events-that-trigger-workflows#webhook-events.",
      "oneOf": [
        {
          "type": "array",
          "minItems": 1
        },
        {
          "type": "string"
        }
      ]
    },
    "working-directory": {
      "$comment": "https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsrun",
      "description": "Используя ключевое слово working-directory, вы можете указать рабочую директорию, в которой будет выполняться команда.",
      "type": "string"
    },
    "jobNeeds": {
      "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idneeds",
      "description": "Определяет любые задачи, которые должны успешно завершиться до того, как эта задача будет запущена. Это может быть строка или массив строк. Если задача завершается сбоем, все задачи, которые зависят от нее, пропускаются, если только эти задачи не используют условный оператор, позволяющий продолжить выполнение.",
      "oneOf": [
        {
          "type": "array",
          "items": {
            "$ref": "#/definitions/name"
          },
          "minItems": 1
        },
        {
          "$ref": "#/definitions/name"
        }
      ]
    },
    "matrix": {
      "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idneeds",
      "description": "Матрица сборки — это набор различных конфигураций виртуальной среды. Например, вы можете запустить задачу для нескольких поддерживаемых версий языка, операционной системы или инструмента. Каждая конфигурация представляет собой копию задачи, которая выполняется и сообщает о своем статусе.\n\nВы можете задать матрицу, указав массив параметров конфигурации. Например, если виртуальная среда GitVerse поддерживает версии Node.js 6, 8 и 10, вы можете указать массив этих версий в матрице.\n\nКогда вы определяете матрицу операционных систем, вы должны установить обязательное ключевое слово runs-on в значение операционной системы текущей задачи, а не жестко задавать имя операционной системы. Для доступа к имени операционной системы вы можете использовать параметр контекста matrix.os, чтобы задать runs-on. Для получения дополнительной информации см. https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions.",
      "oneOf": [
        {
          "type": "object",
          "patternProperties": {
            "^(in|ex)clude$": {
              "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idneeds",
              "oneOf": [
                {
                  "$ref": "#/definitions/expressionSyntax"
                },
                {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "additionalProperties": {
                      "$ref": "#/definitions/configuration"
                    }
                  },
                  "minItems": 1
                }
              ]
            }
          },
          "additionalProperties": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/definitions/configuration"
                },
                "minItems": 1
              },
              {
                "$ref": "#/definitions/expressionSyntax"
              }
            ]
          },
          "minProperties": 1
        },
        {
          "$ref": "#/definitions/expressionSyntax"
        }
      ]
    },
    "reusableWorkflowCallJob": {
      "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idneeds",
      "description": "Каждая задача должна иметь идентификатор (id), чтобы ассоциироваться с задачей. Ключ job_id представляет собой строку, а его значение — это набор конфигурационных данных задачи. Вы должны заменить <job_id> на строку, которая уникальна в пределах объекта jobs. <job_id> должен начинаться с буквы или символа подчеркивания (_) и содержать только буквенно-цифровые символы, дефис (-) или символ подчеркивания (_).",
      "type": "object",
      "properties": {
        "name": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idname",
          "description": "Имя задачи, отображаемое на GitVerse.",
          "type": "string"
        },
        "needs": {
          "$ref": "#/definitions/jobNeeds"
        },
        "if": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idif",
          "description": "Вы можете использовать условный оператор if, чтобы предотвратить запуск задачи, если не выполнено определённое условие. Для создания условия можно использовать любой поддерживаемый контекст и выражение.\n\nВыражения в условном операторе if не требуют использования синтаксиса ${{ }}.",
          "type": ["boolean", "number", "string"]
        },
        "uses": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_iduses",
          "description": "Расположение и версия файла многоразового воркфлоу (reusable workflow), который необходимо запустить в рамках задачи. Формат:\n\n'./{путь/к/локальному_файлу}.yml' — для локальных файлов;\n'{владелец}/{репозиторий}/{путь}/{имя_файла}@{ссылка}' — для внешних воркфлоу.\nВ качестве {ссылка} (ref) можно указать SHA коммита, тег релиза или имя ветки. Использование SHA коммита является наиболее надёжным вариантом с точки зрения стабильности и безопасности.",
          "type": "string",
          "pattern": "^(.+\\/)+(.+)\\.(ya?ml)(@.+)?$"
        },
        "with": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idwith",
          "$ref": "#/definitions/env",
          "description": "Набор входных данных, которые передаются в вызываемый воркфлоу. Все передаваемые вами входные данные должны соответствовать спецификациям входных данных, определённым в вызываемом воркфлоу.\n\nВ отличие от jobs.<job_id>.steps[*].with, входные данные, передаваемые через jobs.<job_id>.with, не становятся доступными как переменные окружения в вызываемом воркфлоу. Вместо этого к ним можно обращаться с помощью контекста inputs"
        },
        "secrets": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idsecrets",
          "description": "Когда задача (job) используется для вызова многоразового воркфлоу, вы можете воспользоваться параметром secrets, чтобы передать карту секретов в вызываемый воркфлоу. Все передаваемые секреты должны соответствовать именам, определённым в вызываемом воркфлоу.",
          "oneOf": [
            {
              "$ref": "#/definitions/env"
            },
            {
              "type": "string",
              "enum": ["inherit"]
            }
          ]
        },
        "strategy": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idstrategy",
          "description": "Стратегия позволяет создать матрицу сборок для ваших задач. Вы можете задать различные варианты окружения, в которых будет выполняться каждая задача.",
          "type": "object",
          "properties": {
            "matrix": {
              "$ref": "#/definitions/matrix"
            },
            "fail-fast": {
              "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idstrategyfail-fast",
              "description": "Если установлено значение true, GitVerse отменяет все выполняющиеся задания, если хотя бы одно задание в матрице завершилось с ошибкой. Значение по умолчанию: true.",
              "type": ["boolean", "string"],
              "default": true
            },
            "max-parallel": {
              "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idstrategymax-parallel",
              "description": "Максимальное количество задач, которые могут выполняться одновременно при использовании стратегии матрицы. По умолчанию GitVerse автоматически максимизирует число одновременно выполняемых задач в зависимости от доступных исполнителей (runners) на виртуальных машинах GitVerse.",
              "type": ["number", "string"]
            }
          },
          "required": ["matrix"],
          "additionalProperties": false
        }
      },
      "required": ["uses"],
      "additionalProperties": false
    },
    "normalJob": {
      "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_id",
      "description": "Each job must have an id to associate with the job. The key job_id is a string and its value is a map of the job's configuration data. You must replace <job_id> with a string that is unique to the jobs object. The <job_id> must start with a letter or _ and contain only alphanumeric characters, -, or _.",
      "type": "object",
      "properties": {
        "name": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idname",
          "description": "The name of the job displayed on GitVerse.",
          "type": "string"
        },
        "needs": {
          "$ref": "#/definitions/jobNeeds"
        },
        "runs-on": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idruns-on",
          "description": "Тип машины, на которой будет выполняться задача. Машина может быть либо GitVerse-хостed раннером, либо самостоятельно управляемым (self-hosted) раннером.",
          "anyOf": [
            {
              "$comment": "https://gitverse.ru/docs/cicd/docs/runners/cloud-hosted/",
              "type": "string"
            },
            {
              "$comment": "https://gitverse.ru/docs/cicd/docs/runners/self-hosted/",
              "type": "array",
              "anyOf": [
                {
                  "items": [
                    {
                      "type": "string"
                    }
                  ],
                  "minItems": 1,
                  "additionalItems": {
                    "type": "string"
                  }
                }
              ]
            },
            {
              "$ref": "#/definitions/stringContainingExpressionSyntax"
            },
            {
              "$ref": "#/definitions/expressionSyntax"
            }
          ]
        },
        "outputs": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idoutputs",
          "description": "Набор выходных данных для задачи. Выходные данные задачи доступны всем последующим задачам, которые зависят от этой задачи.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "minProperties": 1
        },
        "env": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idenv",
          "$ref": "#/definitions/env",
          "description": "Набор переменных окружения, которые доступны всем шагам в работе."
        },
        "defaults": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idenv",
          "$ref": "#/definitions/defaults",
          "description": "Набор настроек по умолчанию, которые будут применяться ко всем шагам в работе."
        },
        "if": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idif",
          "description": "Вы можете использовать условный оператор if, чтобы предотвратить запуск задачи, если не выполнено определённое условие. Для создания условия можно использовать любой поддерживаемый контекст и выражение.\n\nВыражения в условном операторе if не требуют использования синтаксиса ${{ }}. Дополнительную информацию см. в документации GitVerse Actions.",
          "type": ["boolean", "number", "string"]
        },
        "steps": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idsteps",
          "description": "Задача содержит последовательность задач, называемых шагами. Шаги могут выполнять команды, задачи по настройке или запускать действие (action) из вашего репозитория, публичного репозитория или действия, опубликованного в Docker-реестре. Не все шаги запускают действия, но все действия выполняются как шаг.\n\nКаждый шаг выполняется в собственном процессе в виртуальной среде и имеет доступ к рабочему пространству и файловой системе. Поскольку шаги работают в отдельных процессах, изменения переменных окружения не сохраняются между шагами. GitVerse предоставляет встроенные шаги для настройки и завершения задачи.\n\nДолжен содержать либо uses, либо run.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/step"
          },
          "minItems": 1
        },
        "strategy": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idstrategy",
          "description": "Стратегия позволяет создать матрицу сборок для ваших задач. Вы можете определить различные варианты окружения, в которых будет выполняться каждая задача.",
          "type": "object",
          "properties": {
            "matrix": {
              "$ref": "#/definitions/matrix"
            },
            "fail-fast": {
              "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idstrategyfail-fast",
              "description": "Если установлено значение true, GitVerse отменяет все выполняющиеся задания, если хотя бы одно задание в матрице завершилось с ошибкой. Значение по умолчанию: true.",
              "type": ["boolean", "string"],
              "default": true
            },
            "max-parallel": {
              "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idstrategymax-parallel",
              "description": "Максимальное количество задач, которые могут выполняться одновременно при использовании стратегии матрицы. По умолчанию GitVerse автоматически максимизирует число одновременно выполняемых задач в зависимости от доступных исполнителей (runners) на виртуальных машинах GitVerse.",
              "type": ["number", "string"]
            }
          },
          "required": ["matrix"],
          "additionalProperties": false
        },
        "continue-on-error": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idstepscontinue-on-error",
          "description": "Предотвращает сбой выполнения воркфлоу при неудаче задачи. Установите значение true, чтобы выполнение воркфлоу считалось успешным даже в случае сбоя этой задачи.",
          "oneOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/expressionSyntax"
            }
          ]
        },
        "container": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idcontainer",
          "description": "A container to run any steps in a job that don't already specify a container. If you have steps that use both script and container actions, the container actions will run as sibling containers on the same network with the same volume mounts.\nIf you do not set a container, all steps will run directly on the host specified by runs-on unless a step refers to an action configured to run in a container.",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/container"
            }
          ]
        },
        "services": {
          "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idservices",
          "description": "Дополнительные контейнеры для размещения сервисов для выполнения задачи в воркфлоу**. Они удобны для создания сервисов баз данных или кэширования, например *Redis*. Раннер на виртуальной машине автоматически создаст сеть и будет управлять жизненным циклом сервисных контейнеров.\n\nЕсли вы используете сервисный контейнер для задачи или ваш шаг использует контейнерные действия, вам **не нужно указывать информацию о портах** для доступа к сервису. *Docker* автоматически открывает все порты между контейнерами в одной сети.\n\nЕсли и задача, и действие выполняются в контейнерах, вы можете обращаться к контейнеру напрямую по его **hostname**. Имя хоста автоматически сопоставляется с именем сервиса.\n\nЕсли шаг **не использует контейнерное действие**, для доступа к сервису необходимо обращаться через **localhost** и выполнять проброс портов.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/container"
          }
        }
      },
      "required": ["runs-on"],
      "additionalProperties": false
    },
    "workflowDispatchInput": {
      "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idcontinue-on-error",
      "description": "A string identifier to associate with the input. The value of <input_id> is a map of the input's metadata. The <input_id> must be a unique identifier within the inputs object. The <input_id> must start with a letter or _ and contain only alphanumeric characters, -, or _.",
      "type": "object",
      "properties": {
        "description": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_idcontinue-on-error",
          "description": "Строковое описание входного параметра.",
          "type": "string"
        },
        "deprecationMessage": {
          "description": "Сообщение при использовании устаревшего ввода.",
          "type": "string"
        },
        "required": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#onworkflow_dispatchinputsinput_idrequired",
          "description": "Признак обязательности входного параметра. Значение true — параметр обязателен.",
          "type": "boolean"
        },
        "default": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#onworkflow_dispatchinputs",
          "description": "Значение по умолчанию. Используется, если параметр не задан в workflow-файле."
        },
        "type": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#onworkflow_dispatchinputsinput_idtype",
          "description": "Тип входного параметра.",
          "type": "string",
          "enum": ["string", "choice", "boolean", "number", "environment"]
        },
        "options": {
          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#onworkflow_dispatchinputs",
          "description": "Варианты выбора для типа choice.",
          "type": "array",
          "items": {
            "type": "string"
          },
          "minItems": 1
        }
      },
      "allOf": [
        {
          "if": {
            "properties": {
              "type": {
                "const": "string"
              }
            },
            "required": ["type"]
          },
          "then": {
            "properties": {
              "default": {
                "type": "string"
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "const": "boolean"
              }
            },
            "required": ["type"]
          },
          "then": {
            "properties": {
              "default": {
                "type": "boolean"
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "const": "number"
              }
            },
            "required": ["type"]
          },
          "then": {
            "properties": {
              "default": {
                "type": "number"
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "const": "environment"
              }
            },
            "required": ["type"]
          },
          "then": {
            "properties": {
              "default": {
                "type": "string"
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "const": "choice"
              }
            },
            "required": ["type"]
          },
          "then": {
            "required": ["options"]
          }
        }
      ],
      "additionalProperties": false
    }
  },
  "properties": {
    "name": {
      "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#name",
      "description": "Имя workflow. Отображается на странице Actions. Если не указано — используется имя файла.",
      "type": "string"
    },
    "on": {
      "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#on",
      "description": "Событие, запускающее workflow. Можно указать строку, массив событий, массив типов или карту конфигурации (расписание, фильтры по файлам, тегам, веткам). Список событий: см. ссылку.",
      "oneOf": [
        {
          "$ref": "#/definitions/event"
        },
        {
          "type": "array",
          "items": {
            "$ref": "#/definitions/event"
          },
          "minItems": 1
        },
        {
          "type": "object",
          "properties": {
            "create": {
              "$comment": "https://gitverse.ru/docs/cicd/docs/triggers/#create",
              "$ref": "#/definitions/eventObject",
              "description": "Запускает workflow при создании ветки или тега (событие create). Подробнее об API: см. ссылку."
            },
            "delete": {
              "$comment": "https://gitverse.ru/docs/cicd/docs/triggers/#delete",
              "$ref": "#/definitions/eventObject",
              "description": "Запускает workflow при удалении ветки или тега (событие delete). Подробнее об API: см. ссылку."
            },
            "fork": {
              "$comment": "https://gitverse.ru/docs/cicd/docs/triggers/#fork",
              "$ref": "#/definitions/eventObject",
              "description": "Запускает workflow при создании форка от репозитория. Подробнее об API: см. ссылку."
            },
            "pull_request": {
              "$comment": "https://gitverse.ru/docs/cicd/docs/triggers/#pull_request",
              "description": "Запускает ваш workflow всякий раз, когда происходит событие pull_request. Более одного типа активности инициируют это событие. Информацию о REST API см. по адресу: https://developer.github.com/v3/pulls.\n\nПримечание: Workflow не запускаются в приватных базовых репозиториях, когда вы открываете pull request из форкнутого репозитория.\n\nКогда вы создаёте pull request из форкнутого репозитория в базовый репозиторий, GitVerse отправляет событие pull_request в базовый репозиторий, и никакие события pull request не происходят в форкнутом репозитории.\n\nWorkflow по умолчанию не запускаются в форкнутых репозиториях. Вы должны включить GitVerse Actions на вкладке Actions форкнутого репозитория.\n\nРазрешения для GITHUB_TOKEN в форкнутых репозиториях — только для чтения. Дополнительную информацию о GITHUB_TOKEN см. по адресу: https://help.github.com/en/articles/virtual-environments-for-github-actions.",
              "oneOf": [
                { "type": "null" },
                {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "types": {
                          "$ref": "#/definitions/types",
                          "items": {
                            "type": "string",
                            "enum": [
                              "assigned",
                              "unassigned",
                              "labeled",
                              "unlabeled",
                              "opened",
                              "edited",
                              "closed",
                              "reopened",
                              "synchronize",
                              "converted_to_draft",
                              "ready_for_review",
                              "locked",
                              "unlocked",
                              "milestoned",
                              "demilestoned",
                              "review_requested",
                              "review_request_removed",
                              "auto_merge_enabled",
                              "auto_merge_disabled",
                              "enqueued",
                              "dequeued"
                            ]
                          },
                          "default": ["opened", "synchronize", "reopened"]
                        },
                        "branches": {
                          "$ref": "#/definitions/branch"
                        },
                        "branches-ignore": {
                          "$ref": "#/definitions/branch"
                        },
                        "tags": {
                          "$ref": "#/definitions/branch"
                        },
                        "tags-ignore": {
                          "$ref": "#/definitions/branch"
                        },
                        "paths": {
                          "$ref": "#/definitions/path"
                        },
                        "paths-ignore": {
                          "$ref": "#/definitions/path"
                        }
                      },
                      "additionalProperties": false
                    },
                    {
                      "not": {
                        "required": ["branches", "branches-ignore"]
                      }
                    },
                    {
                      "not": {
                        "required": ["tags", "tags-ignore"]
                      }
                    },
                    {
                      "not": {
                        "required": ["paths", "paths-ignore"]
                      }
                    }
                  ]
                }
              ]
            },
            "pull_request_review": {
              "$comment": "https://gitverse.ru/docs/cicd/docs/triggers/#pull_request_review",
              "$ref": "#/definitions/eventObject",
              "description": "Запускает ваш workflow всякий раз, когда происходит событие pull_request_review. Более одного типа активности инициируют это событие. Информацию о REST API см. по адресу: https://developer.github.com/v3/pulls.\n\nПримечание: Workflow не запускаются в приватных базовых репозиториях, когда вы открываете pull request из форкнутого репозитория.\n\nКогда вы создаёте pull request из форкнутого репозитория в базовый репозиторий, GitVerse отправляет событие pull_request_review в базовый репозиторий, и никакие события pull request не происходят в форкнутом репозитории.\n\nWorkflow по умолчанию не запускаются в форкнутых репозиториях. Вы должны включить GitVerse Actions на вкладке Actions форкнутого репозитория.\n\nРазрешения для GITHUB_TOKEN в форкнутых репозиториях — только для чтения. Дополнительную информацию о GITHUB_TOKEN см. по адресу: https://help.github.com/en/articles/virtual-environments-for-github-actions.",
              "properties": {
                "types": {
                  "$ref": "#/definitions/types",
                  "items": {
                    "type": "string",
                    "enum": ["submitted", "edited", "dismissed"]
                  },
                  "default": ["submitted", "edited", "dismissed"]
                }
              }
            },
            "pull_request_review_comment": {
              "$comment": "https://gitverse.ru/docs/cicd/docs/triggers/#pull_request_review_comment",
              "$ref": "#/definitions/eventObject",
              "description": "Запускает ваш workflow всякий раз, когда изменяется комментарий в унифицированном диффе pull request, что инициирует событие pull_request_review_comment. Более одного типа активности инициируют это событие. Информацию о REST API см. по адресу: https://developer.github.com/v3/pulls/comments.\n\nПримечание: Workflow не запускаются в приватных базовых репозиториях, когда вы открываете pull request из форкнутого репозитория.\n\nКогда вы создаёте pull request из форкнутого репозитория в базовый репозиторий, GitVerse отправляет событие pull_request в базовый репозиторий, и никакие события pull request не происходят в форкнутом репозитории.\n\nWorkflow по умолчанию не запускаются в форкнутых репозиториях. Вы должны включить GitVerse Actions на вкладке Actions форкнутого репозитория.\n\nРазрешения для GITHUB_TOKEN в форкнутых репозиториях — только для чтения. Дополнительную информацию о GITHUB_TOKEN см. по адресу: https://help.github.com/en/articles/virtual-environments-for-github-actions.",
              "properties": {
                "types": {
                  "$ref": "#/definitions/types",
                  "items": {
                    "type": "string",
                    "enum": ["created", "edited", "deleted"]
                  },
                  "default": ["created", "edited", "deleted"]
                }
              }
            },
            "pull_request_target": {
              "$comment": "https://gitverse.ru/docs/cicd/docs/triggers/#pull_request_target",
              "description": "Это событие похоже на pull_request, за исключением того, что оно выполняется в контексте базового репозитория pull request, а не в merge-коммите. Это означает, что вы можете более безопасно предоставлять свои секреты воркфлоу, запускаемым по событию pull request, поскольку выполняются только воркфлоу, определённые в коммите базового репозитория. Например, это событие позволяет создавать воркфлоу, которые добавляют метки и комментарии к pull request на основе содержимого полезной нагрузки события.",
              "oneOf": [
                { "type": "null" },
                {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "types": {
                          "$ref": "#/definitions/types",
                          "items": {
                            "type": "string",
                            "enum": [
                              "assigned",
                              "unassigned",
                              "labeled",
                              "unlabeled",
                              "opened",
                              "edited",
                              "closed",
                              "reopened",
                              "synchronize",
                              "converted_to_draft",
                              "ready_for_review",
                              "locked",
                              "unlocked",
                              "review_requested",
                              "review_request_removed",
                              "auto_merge_enabled",
                              "auto_merge_disabled"
                            ]
                          },
                          "default": ["opened", "synchronize", "reopened"]
                        },
                        "branches": {
                          "$ref": "#/definitions/branch"
                        },
                        "branches-ignore": {
                          "$ref": "#/definitions/branch"
                        },
                        "tags": {
                          "$ref": "#/definitions/branch"
                        },
                        "tags-ignore": {
                          "$ref": "#/definitions/branch"
                        },
                        "paths": {
                          "$ref": "#/definitions/path"
                        },
                        "paths-ignore": {
                          "$ref": "#/definitions/path"
                        }
                      },
                      "additionalProperties": false
                    },
                    {
                      "not": {
                        "required": ["branches", "branches-ignore"]
                      }
                    },
                    {
                      "not": {
                        "required": ["tags", "tags-ignore"]
                      }
                    },
                    {
                      "not": {
                        "required": ["paths", "paths-ignore"]
                      }
                    }
                  ]
                }
              ]
            },
            "push": {
              "$comment": "https://gitverse.ru/docs/cicd/docs/triggers/#push",
              "description": "Запускает ваш workflow, когда кто-то отправляет изменения в ветку репозитория, что инициирует событие push.\n\nПримечание: Полезная нагрузка веб-хука, доступная для GitVerse Actions, не включает атрибуты added, removed и modified в объекте коммита. Вы можете получить полный объект коммита с помощью REST API. Дополнительную информацию см. по адресу: https://developer.github.com/v3/repos/commits/#get-a-single-commit.",
              "oneOf": [
                { "type": "null" },
                {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "branches": {
                          "$ref": "#/definitions/branch"
                        },
                        "branches-ignore": {
                          "$ref": "#/definitions/branch"
                        },
                        "tags": {
                          "$ref": "#/definitions/branch"
                        },
                        "tags-ignore": {
                          "$ref": "#/definitions/branch"
                        },
                        "paths": {
                          "$ref": "#/definitions/path"
                        },
                        "paths-ignore": {
                          "$ref": "#/definitions/path"
                        }
                      },
                      "additionalProperties": false
                    },
                    {
                      "not": {
                        "required": ["branches", "branches-ignore"]
                      }
                    },
                    {
                      "not": {
                        "required": ["tags", "tags-ignore"]
                      }
                    },
                    {
                      "not": {
                        "required": ["paths", "paths-ignore"]
                      }
                    }
                  ]
                }
              ]
            },
            "registry_package": {
              "$comment": "https://help.github.com/en/actions/reference/events-that-trigger-workflows#registry-package-event-registry_package",
              "$ref": "#/definitions/eventObject",
              "description": "Запускает ваш workflow всякий раз, когда пакет публикуется или обновляется. Дополнительную информацию см. по адресу: https://help.github.com/en/github/managing-packages-with-github-packages.",
              "properties": {
                "types": {
                  "$ref": "#/definitions/types",
                  "items": {
                    "type": "string",
                    "enum": ["published", "updated"]
                  },
                  "default": ["published", "updated"]
                }
              }
            },
            "release": {
              "$comment": "https://gitverse.ru/docs/cicd/docs/triggers/#release",
              "$ref": "#/definitions/eventObject",
              "description": "Запускает ваш workflow всякий раз, когда происходит событие release. Более одного типа активности инициируют это событие. Информацию о REST API см. в документации для разработчиков GitVerse по адресу: https://developer.github.com/v3/repos/releases/.",
              "properties": {
                "types": {
                  "$ref": "#/definitions/types",
                  "items": {
                    "type": "string",
                    "enum": [
                      "published",
                      "unpublished",
                      "created",
                      "edited",
                      "deleted",
                      "prereleased",
                      "released"
                    ]
                  },
                  "default": [
                    "published",
                    "unpublished",
                    "created",
                    "edited",
                    "deleted",
                    "prereleased",
                    "released"
                  ]
                }
              }
            },
            "workflow_call": {
              "$comment": "https://gitverse.ru/docs/cicd/docs/triggers/#workflow_call",
              "description": "Позволяет повторно использовать воркфлоу в других воркфлоу.",
              "properties": {
                "inputs": {
                  "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#onworkflow_callinputs",
                  "description": "При использовании ключевого слова workflow_call вы можете опционально указать входные параметры (inputs), которые передаются вызываемому workflow из вызывающего воркфлоу.",
                  "type": "object",
                  "patternProperties": {
                    "^[_a-zA-Z][a-zA-Z0-9_-]*$": {
                      "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#onworkflow_callinputs",
                      "description": "Строковый идентификатор для привязки к входному параметру. Значение <input_id> представляет собой карту метаданных входного параметра. <input_id> должен быть уникальным идентификатором внутри объекта inputs. <input_id> должен начинаться с буквы или символа _ и содержать только буквенно-цифровые символы, дефисы (-) или символы подчёркивания (_).",
                      "type": "object",
                      "properties": {
                        "description": {
                          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#onworkflow_callinputs",
                          "description": "Строковое описание входного параметра.",
                          "type": "string"
                        },
                        "required": {
                          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#onworkflow_callinputs",
                          "description": "Логическое значение (boolean), указывающее, требует ли действие (action) этот входной параметр. Установите значение true, если параметр обязателен.",
                          "type": "boolean"
                        },
                        "type": {
                          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#onworkflow_callinputsinput_idtype",
                          "description": "Обязательно, если входной параметр определён для ключевого слова on.workflow_call. Значением этого параметра является строка, указывающая тип данных входного параметра. Это должно быть одно из значений: boolean, number или string.",
                          "type": "string",
                          "enum": ["boolean", "number", "string"]
                        },
                        "default": {
                          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#onworkflow_callinputs",
                          "description": "Значение по умолчанию используется, когда входной параметр не указан в файле воркфлоу.",
                          "type": ["boolean", "number", "string"]
                        }
                      },
                      "required": ["type"],
                      "additionalProperties": false
                    }
                  },
                  "additionalProperties": false
                },
                "outputs": {
                  "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#onworkflow_calloutputs",
                  "description": "При использовании ключевого слова workflow_call вы можете опционально указать входные параметры (inputs), которые передаются вызываемому workflow из вызывающего воркфлоу.",
                  "type": "object",
                  "patternProperties": {
                    "^[_a-zA-Z][a-zA-Z0-9_-]*$": {
                      "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#onworkflow_calloutputs",
                      "description": "Строковый идентификатор для привязки к входному параметру. Значение <output_id> представляет собой карту метаданных входного параметра. <output_id> должен быть уникальным идентификатором внутри объекта outputs. <output_id> должен начинаться с буквы или символа _ и содержать только буквенно-цифровые символы, дефисы (-) или символы подчёркивания (_).",
                      "type": "object",
                      "properties": {
                        "description": {
                          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#onworkflow_calloutputs",
                          "description": "Строковое описание выходного параметра.",
                          "type": "string"
                        },
                        "value": {
                          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#onworkflow_calloutputs",
                          "description": "Значение, с которым будет сопоставлен выходной параметр. Вы можете задать его как строку или выражение с контекстом. Например, вы можете использовать контекст steps, чтобы установить значение выходного параметра равным выходному значению какого-либо шага.",
                          "type": "string"
                        }
                      },
                      "required": ["value"],
                      "additionalProperties": false
                    }
                  },
                  "additionalProperties": false
                },
                "secrets": {
                  "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#onworkflow_callsecrets",
                  "description": "Коллекция секретов, которые могут быть использованы в вызываемом workflow. Внутри вызываемого workflow вы можете использовать контекст secrets для обращения к секрету.",
                  "patternProperties": {
                    "^[_a-zA-Z][a-zA-Z0-9_-]*$": {
                      "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#onworkflow_callsecretssecret_id",
                      "description": "Строковый идентификатор секрета",
                      "properties": {
                        "description": {
                          "description": "Строковое описание секрета",
                          "type": "string"
                        },
                        "required": {
                          "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#onworkflow_callsecretssecret_idrequired",
                          "description": "Обязательность секрета",
                          "type": "boolean"
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "additionalProperties": false
                }
              }
            },
            "workflow_dispatch": {
              "$comment": "https://gitverse.ru/docs/cicd/docs/triggers/#workflow_dispatch",
              "description": "Вы можете создавать воркфлоу, которые запускаются вручную с помощью нового события workflow_dispatch.",
              "properties": {
                "inputs": {
                  "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#onworkflow_callinputs",
                  "description": "Входные параметры позволяют вам указывать данные, которые воркфлоу должен использовать во время выполнения. GitVerse сохраняет входные параметры как переменные окружения. Идентификаторы входных параметров, содержащие заглавные буквы, преобразуются в строчные во время выполнения. Мы рекомендуем использовать идентификаторы входных параметров в нижнем регистре.",
                  "type": "object",
                  "patternProperties": {
                    "^[_a-zA-Z][a-zA-Z0-9_-]*$": {
                      "$ref": "#/definitions/workflowDispatchInput"
                    }
                  },
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            },
            "schedule": {
              "$comment": "https://gitverse.ru/docs/cicd/docs/triggers/#schedule",
              "description": "Вы можете запланировать запуск воркфлоу в определённое время UTC, используя синтаксис POSIX cron (https://pubs.opengroup.org/onlinepubs/9699919799/utilities/crontab.html#tag_20_25_07). При необходимости вы можете указать часовой пояс с помощью строки IANA (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) для планирования с учётом часового пояса. Запланированные воркфлоу запускаются на последнем коммите в ветке по умолчанию или базовой ветке. Самый короткий интервал для запуска запланированных воркфлоу — один раз каждые 5 минут.\n\nПримечание: GitVerse Actions не поддерживает нестандартный синтаксис @yearly, @monthly, @weekly, @daily, @hourly и @reboot.\n\nВы можете использовать crontab guru (https://crontab.guru/), чтобы помочь сгенерировать синтаксис cron и узнать, в какое время он будет выполняться. Чтобы помочь вам начать, также существует список примеров на crontab guru (https://crontab.guru/examples.html).",
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "cron": {
                    "description": "Cron-выражение, представляющее расписание. Запланированный воркфлоу будет выполняться не чаще одного раза каждые 5 минут.",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "Строка, представляющая часовой пояс, относительно которого будет выполняться запланированный воркфлоу, в формате IANA (например, 'America/New_York' или 'Europe/London'). Если этот параметр опущен, воркфлоу будет выполняться относительно полуночи UTC.",
                    "type": "string"
                  }
                },
                "required": ["cron"],
                "additionalProperties": false
              },
              "minItems": 1
            }
          },
          "additionalProperties": false
        }
      ]
    },
    "env": {
      "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#env",
      "$ref": "#/definitions/env",
      "description": "Список переменных окружения, которые доступны всем задачам (jobs) и шагам (steps) в воркфлоу."
    },
    "defaults": {
      "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#jobsjob_iddefaults",
      "$ref": "#/definitions/defaults",
      "description": "Список настроек по умолчанию, которые будут применяться ко всем задачам (jobs) в воркфлоу."
    },
    "jobs": {
      "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#env",
      "description": "Выполнение воркфлоу состоит из одного или нескольких заданий (jobs). По умолчанию задания выполняются параллельно. Чтобы выполнять задания последовательно, вы можете определить зависимости от других заданий с помощью ключевого слова jobs.<job_id>.needs.\n\nКаждое задание выполняется в новом экземпляре виртуальной среды, указанной в runs-on.\n\nВы можете выполнять неограниченное количество заданий, если укладываетесь в лимиты использования воркфлоу. Дополнительную информацию см. по адресу: https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#usage-limits.",
      "type": "object",
      "patternProperties": {
        "^[_a-zA-Z][a-zA-Z0-9_-]*$": {
          "oneOf": [
            {
              "$ref": "#/definitions/normalJob"
            },
            {
              "$ref": "#/definitions/reusableWorkflowCallJob"
            }
          ]
        }
      },
      "minProperties": 1,
      "additionalProperties": false
    },
    "run-name": {
      "$comment": "https://gitverse.ru/docs/cicd/docs/workflow/#run-name",
      "description": "Название для запусков воркфлоу, создаваемых из этого workflow. GitVerse отображает имя запуска воркфлоу в списке запусков на вкладке «Actions» вашего репозитория.",
      "type": "string"
    }
  },
  "required": ["on", "jobs"],
  "type": "object"
}