Я сейчас экспериментирую с Pact и наткнулся на проблему с рабочим процессом и не могу найти удовлетворительное решение. Надеюсь, кто-нибудь сможет мне помочь. :-)
Прежде всего, это мой текущий рабочий процесс для изменений на стороне потребителя:
- Изменения потребителя загружаются на Github в ветви функций
- Тесты Pact выполняются в системе CI, и полученный пакт загружается в брокер Pact с тегами [имя-элемента-ветви] и verify_feature (в настоящее время я использую только последний вариант). )
- Потребитель ожидает подтверждения (с помощью инструмента can-i-deploy)
- Пакт-посредник запускает провайдера через webhook (триггер: contract_content_changed )
- Поставщик запускает pact-verify для последней версии с тегом verify_feature и загружает результат
- Потребитель проверяет результат, если проверка прошла успешно, ветвь может быть объединена
Пока все хорошо. Проблема возникает, когда потребитель вводит критические изменения:
После того, как потребитель загружает изменения в Github, описанный выше процесс выполняется, и проверка поставщика не проходит, что, в свою очередь, приводит к сбою сборки клиента, как и ожидалось.
Теперь необходимые изменения внесены на стороне провайдера. Поставщик запускает pact-verify для потребительской версии этапа тестирования и, в случае успеха, затем объединяет и развертывает новую версию.
Теперь новая потребительская версия также может быть объединена. Увы, это не работает, потому что эта версия не была проверена снова. И когда я перезапускаю задание CI, пакт повторно загружается в посредник пактов, но, поскольку содержимое пакта не изменяется, никакой веб-крючок не запускается. Потребительская версия никогда не проверяется.
Итак, что я делаю не так?