当版本和标签保持不变但协议的内容在(重新)发布试验之间发生变化时,我们现在面临一个问题。
最近我们的 CICD 开始使用一个全新的协议代理服务器,它取代了旧的。旧代理图像来自 dius/pact-broker 新代理图像来自 pactfoundation/pact-broker(最新)
要发布协议,我们使用“pact:publish”maven 插件命令
场景:(试验之间projectVersion和tag的值是一样的)
- 第一次发布协议时,一切正常(返回 201)
- 重新发布时,虽然协议内容保持不变,但返回 ok (200),因为协议中没有任何更改
- 当重新发布,但协议内容发生变化时,返回错误 500,表示一个或多个协议文件被代理拒绝。
在 pact broker 日志上,错误显示如下:
2019-09-18 08:38:50.512340 E [9:puma 001 delegate.rb:83] root -- PG::UniqueViolation: 错误:重复键值违反唯一约束“unq_latest_ppid_prov_conver”详细信息:键(provider_id,consumer_version_id)= (15, 39) 已经存在。: INSERT INTO "latest_pact_publication_ids_for_consumer_versions" ("consumer_version_id", "provider_id", "pact_publication_id", "consumer_id", "pact_version_id") VALUES (39, 15, 71, 16, 48) RETURNING NULL 2019 -09-18 08:38:50.513334 E [9:puma 001 logging.rb:37] root -- 错误参考 YouFegbNWY - Sequel::UniqueConstraintViolation PG::UniqueViolation: 错误:重复键值违反唯一约束“unq_latest_ppid_prov_conver”详细信息:键 (provider_id, consumer_version_id)=(15, 39) 已经存在。
我希望契约经纪人允许我用新的内容替换相同版本和标签的现有契约内容(据我所知——这在“旧”契约经纪人中工作得很好)