Principal Engineering

Pressing buttons in the right order.

oasdiff

Posted at — Sep 21, 2023

Дано:

Задача:

Почему бы просто не вызывать diff и не изучить различия?

Решить последний пункт не так уж и сложно с помощью jq --sort-keys. Приведу простой пример:

diff \
    <(jo foo=1 bar=2 baz=3 | jq --sort-keys) \
    <(jo baz=4 foo=1 bar=2 | jq --sort-keys)
3c3
<   "baz": 3,
---
>   "baz": 4,

Однако это не ускоряет и не упрощает решение основной проблемы.

Нужно найти или реализовать инструмент, который бы показывал в понятном формате изменения в двух версиях одной и той же спецификации.

К счастью, такие решения существуют. Поверхностно обратим внимание на те инструменты, которые попали в исследование.

redskap/swagger-brake 1

civisanalytics/swagger-diff 2

Sayi/swagger-diff 3

atlassian/openapi-diff 4

Tufin/oasdiff — ✅ 5

Именно oasdiff и был выбран в качестве основного инструмента поиска различий в контрактах OpenAPI.

Вот, например, как можно вывести список обратно несовместимых изменений:

oasdiff breaking \
    spec1.json \
    spec2.json

Напоследок хочу заметить, что задача перехода с одной версии на другую решается не только с помощью понимания изменений в контракте, но и хорошим комплектом e2e-тестов.

comments powered by Disqus