Перейти к содержимому

soul-lint

Офлайн-линтер: статически проверяет конфиги, Destiny, сервисы, сценарии и манифесты плагинов, ничего не исполняя. Ставится на рабочую станцию оператора или в CI — чтобы ловить ошибки до применения на хостах.

Destiny, сценарии и сервисы — это YAML с типизированной схемой и шаблонными выражениями. soul-lint валидирует их форму и контракт локально, не обращаясь к Keeper-у и не трогая хосты. Типовое применение — pre-commit / CI-гейт в репозитории сервиса: PR не проходит, если артефакт не валиден.

Окно терминала
soul-lint validate-config <path> [--json] # keeper.yml или soul.yml
soul-lint validate-destiny <path> [--json] # destiny.yml (корневой манифест Destiny)
soul-lint validate-service <path> [--json] # service.yml (корневой манифест сервиса)
soul-lint validate-scenario <path> [--json] # scenario/<name>/main.yml
soul-lint validate-manifest <path> [--json] # manifest.yaml плагина
soul-lint plugin-init <namespace>/<name> [flags] # scaffold нового SoulModule-плагина
ПодкомандаЧто валидирует
validate-configконфиг Keeper-а (keeper.yml) или агента (soul.yml)
validate-destinyкорневой манифест Destiny
validate-serviceкорневой манифест сервиса
validate-scenarioсценарий (scenario/<name>/main.yml)
validate-manifestманифест плагина (kind: soul_module / cloud_driver / ssh_provider)
plugin-initгенерирует каркас нового SoulModule-плагина

Флаг --json переключает вывод на машиночитаемый формат (удобно в CI).

КодЗначение
0валидно, ошибок нет
1найдены ошибки валидации
2I/O-ошибка или неверный вызов (usage)

В CI-гейте опираются на exit-код: ненулевой завершает пайплайн.

Окно терминала
# пример шага CI: провалить пайплайн, если какой-либо артефакт невалиден
soul-lint validate-service ./service.yml
soul-lint validate-scenario ./scenario/create/main.yml --json

Авторам custom-модулей soul-lint plugin-init <namespace>/<name> генерирует готовый каркас SoulModule-плагина:

Окно терминала
soul-lint plugin-init official/my-module --out ./soul-mod-my-module --author "Your Name"

Флаги: --out DIR (каталог вывода), --description TEXT, --author NAME, --force (перезаписать существующий каталог).

soul-lint ставится из пакета soul-stack-soul-lint (только CLI, без демона и конфига), бинарного релиза или сборки. См. Установка из пакетов и Из бинарных релизов.