Как заставить производителя Пакта проверить конкретную версию контракта?

У меня есть потребитель, который сгенерировал первую версию контракта Pact и загрузил ее брокеру. Производитель подтвердил, что контракт и подтверждение были опубликованы для брокера.

Теперь хочу продлить контракт. Когда я публикую обновленный контракт для брокера и впоследствии запускаю проверку на стороне производителя, он терпит неудачу, поскольку API выполнения контракта еще не реализован. Я хотел бы сначала обновить контракт, опубликовать его и избежать нарушения сборки производителя (т.е. не изменять потребителя и производителя синхронно).

Как мне изменить версию потребителя / производителя / контракта, чтобы я мог указать производителю, что она в настоящее время совместима с конкретной версией потребителя / контракта?

Я использую Pact JVM / Java (версия 3) с Maven. В pom.xml нет управления версиями проекта - это просто 1.0.0-SNAPSHOT версия. projectVersion, настроенный в подключаемом модуле Pact Maven, совпадает с версией проекта Maven - 1.0.0-SNAPSHOT.

Стоит ли играть с projectVersion и tags? Следует ли мне перейти на Pact версии 4 и использовать селекторы потребительской версии?


person mgryszko    schedule 09.10.2020    source источник


Ответы (1)


Итак, я думаю, вы спрашиваете о том, как эффективно добавить тесты Pact в ваш конвейер CI / CD и рабочий процесс разработки функций?

  1. Эффективное руководство по настройке пакта
  2. Мастер-класс по CI / CD

Первый документ объясняет общий подход, а (2) - это семинар, которому вы можете следовать, чтобы реализовать шаги (на JS). Принципы одинаковы, независимо от того, какой язык вы используете (в вашем случае Java).

Однако, в частности, вам обязательно нужно будет использовать теги, чтобы новая функция теги не нарушала ваши основная сборка провайдера (например, featureA, созданный потребителем, не нарушит работу провайдера, который, например, ищет только production и development).

Вы также можете просмотреть ожидающие заключения пакты (см. https://docs.pact.io/pending и https://docs.pact.io/implementation_guides/jvm/provider/junit5/#pending-pact-support-version-410-and-later), которая представляет собой новую функцию, которая не позволяет поставщику нарушать новые контракты.

Контроль версий

Поэтому вам нужно будет добавить в свой код более конкретные версии, чтобы эффективно использовать Pact (и рабочие процессы, предоставляемые брокером). Вы можете указать это с помощью системного свойства pact.provider.version (например, System.setProperty("pact.provider.version", "some git sha");)

Мы рекомендуем использовать ваш контроль версий SHA в версии.

person Matthew Fellows    schedule 12.10.2020
comment
В моей компании уже есть установленный брокер; мы просто изучаем управление версиями и рабочие процессы. Добавление Git SHA1 в конфигурацию Pact Maven (через buildnumber-maven-plugin) + тегирование решил мои проблемы - person mgryszko; 13.10.2020
comment
Приятно слышать, надеюсь, все пойдет хорошо, присоединяйтесь к slack.pact.io, чтобы пообщаться с сообществом! - person Matthew Fellows; 14.10.2020