我正在准备 PACT 工作流程的演示,作为其中的一部分,我想演示 webhooks 的概念。
至此,我创建了一个运行着 pact-broker 的容器,我可以使用 CLI 成功发布和验证 PACT。然后,我可以通过在 API 规范中引入重大更改、重新生成对象并使用重大更改重新运行提供程序应用程序来使验证失败。到目前为止一切都很顺利。
在最后一部分中,我想丰富演示,展示如何创建 webhooks 通知收件人合同内容已更改。为此,我创建了一个小型 SpringBoot 应用程序,它公开了一个
/notifications
端点,我想将其用作 webhook 的接收者。我当前的问题是创建 Webhook,特别是尝试使用以下执行行创建 Webhook 返回 401:
docker run --rm --network="host" pactfoundation/pact-cli:latest pact-broker create_webhook http://localhost:8080/notifications -X POST -b http://localhost:9292/webhooks -u pactBrokerUsername -p pactBrokerUserPassword -d "{\"events\":[{\"name\":\"contract_content_changed\"}],\"request\":{\"method\":\"POST\",\"url\":\"http:/localhost:8080/notifications\",\"headers\":{\"Content-Type\":\"application/json\"},\"body\":{\"some\":\"json\"}}}" --contract-published
在上面的行中:
我在查看 PACT 文档时形成了这条线,但是我发现那里所说的很多内容令人困惑,因此显然有些东西放错了地方或丢失了。对于之前创建过 webhooks 的人来说,我将不胜感激。
提前致谢。
我不确定这是否有帮助,但看起来您的请求中缺少一些授权令牌。最有可能的是,您只需要生成可以访问触发管道的令牌。这有点很难说,因为我不知道你正在使用哪个 CI/CD。 此链接中有一些示例: https://docs.pact.io/pact_broker/webhooks/template_library 我成功设置了 webhook,但在 pactflow 中,我记得一些问题也是由于标头造成的,例如它们在不使用“”的情况下工作,但在您的情况下 401 指示授权问题。