首页 > 解决方案 > 无法将结果发布给契约经纪人

问题描述

我正在尝试使用以下命令在 localhost:9292 上的协议代理主机上发布验证结果:

curl -XPOST -H 'Content-Type: application/json' -d@/home/ec2-user/pact-ruby/example/zoo-app/spec/pacts/zoo_app-animal_service.json ${verification_url}

在这里,我无法从下面的语法中获取验证 url 的值。

BASE_URL="http://localhost:9292"

response_body=$(curl ${BASE_URL}/pacts/provider/Bar/consumer/Foo/latest)
verification_url=$(echo "${response_body}" | ruby -e "require 'json'; puts JSON.parse(ARGF.read)['_links']['pb:publish-verification-results']['href']")
curl -XPOST -H 'Content-Type: application/json' -d@script/foo-bar-verification.json ${verification_url}

目前我已经在以下网址进行了验证: ../animal-service > specs/service_consumers> rake:pact-verify-at[]

我无法弄清楚如何从上述请求中检索验证 URL。我错过了什么,请帮忙。

标签: postverificationproviderconsumerpact-broker

解决方案


Provider 可以通过两种方式验证来自 Pact Broker 的已发布协议。

  1. 在 Pact Broker 本身上设置了一个 webhook ' contract content changed${pactbroker.pactUrl} ',它通过传递给它来调用 Provider 的验证构建。
  2. Broker 要求您为您发布的每个合约分配一个消费者版本${commit_hash}。在运行提供者验证时,提供者需要指定它想要验证的消费者版本。然后,代理将返回该特定消费者版本的最新合同版本。

推荐阅读