新增契约场景下的Pact CICD工作流正确配置方案咨询
新增Pact契约场景下的CI流程处理方案
核心场景回顾
消费者main分支未发布任何契约,提供者main分支无对应验证测试用例;CI规则为:
- 消费者向main分支发起PR时,若提供者main分支的验证测试失败则CI不通过
- 提供者CI针对消费者main分支契约的验证测试失败时,CI直接失败
正确处理流程
- 消费者侧:在feature分支开发新增契约逻辑,本地验证通过后,将契约发布到Pact Broker(关联当前feature分支标签)
- 提供者侧:基于消费者发布的feature分支契约,在自己的feature分支编写对应的验证测试用例,本地运行验证通过后,给提供者main分支提交PR,临时添加
@IgnoreNoPactsToVerify注解(避免CI因找不到消费者main分支契约而失败) - 合并提供者PR:此时提供者main分支已有对应测试用例,且临时注解让CI能正常通过
- 合并消费者PR:提交消费者feature分支到main的PR,此时CI会触发提供者main分支的验证测试——因为提供者已有测试用例,且消费者合并后会将契约发布到main分支关联节点,验证会通过,顺利合并消费者代码
- 恢复提供者校验逻辑:提交移除
@IgnoreNoPactsToVerify注解的PR到提供者main分支,CI验证通过后合并,恢复正常的契约校验规则
问题解答
是否应设置
@IgnoreNoPactsToVerify先合并提供者代码,再合并消费者?
是的。默认配置下,提供者CI会拉取消费者main分支的契约进行验证,但此时消费者main无任何契约,会直接导致验证测试失败,无法通过CI。临时添加该注解是唯一能让提供者PR顺利合并的方式。是否可先添加注解,待消费者合并后再提交移除注解的PR?
完全可以。这是新增契约场景下的标准临时兼容方案,既保证了CI流程能正常推进,又能在消费者契约发布后恢复完整的校验逻辑,避免长期跳过必要的契约验证。
内容的提问来源于stack exchange,提问作者John Doe
相关产品推荐
相关产品推荐

