使用Pact can-i-deploy时,消费者更新合约后如何部署服务新版本?
Pact Broker验证矩阵下的Consumer v2/Provider v2部署方案
当前验证矩阵
| Consumer版本 | Provider版本 | 已验证? | 备注 |
|---|---|---|---|
| 1(生产环境) | 1(生产环境) | 是 | |
| 2 | 1 | 否 | 消费者已更新合约 |
| 2 | 2 | 是 | Provider已根据合约完成更新 |
核心问题
直接使用can-i-deploy工具检查部署时会被阻止:
- 部署Consumer v2:生产环境当前Provider为v1,二者合约未验证,工具判定不兼容
- 部署Provider v2:生产环境当前Consumer为v1,二者无验证记录,工具无法确认兼容性
可行部署方案
方案1:按兼容顺序分步部署
这是最稳妥的常规部署方式:
- 补充Provider v2与Consumer v1的兼容性验证
- 在测试环境中,用Consumer v1的合约对Provider v2进行验证,验证通过后将结果同步至Pact Broker
- 执行命令:
can-i-deploy --pacticipant Provider --version 2 --to-environment production,此时因Provider v2兼容生产环境的Consumer v1,工具会允许部署
- 将Provider v2部署至生产环境
- 部署Consumer v2至生产环境
- 此时生产环境Provider已为v2,二者合约已验证,执行
can-i-deploy --pacticipant Consumer --version 2 --to-environment production即可通过检查
- 此时生产环境Provider已为v2,二者合约已验证,执行
方案2:蓝绿部署同步上线
如果业务允许同时切换新版本组合:
- 在生产环境搭建独立的蓝环境,同时部署Consumer v2和Provider v2
- 执行
can-i-deploy --pacticipant Consumer --version 2 --pacticipant Provider --version 2 --to-environment production-blue,因二者已验证,工具允许部署 - 验证蓝环境业务正常后,切换流量至蓝环境,完成新版本上线
内容的提问来源于stack exchange,提问作者user2208140
相关产品推荐
相关产品推荐

