【问题标题】:Publish Spring Cloud Contract verification to Pact broker将 Spring Cloud Contract 验证发布到 Pact 代理
【发布时间】:2018-10-12 12:09:38
【问题描述】:

是否可以将 Spring Cloud Contract Producer 验证发布到 Pact 代理?

【问题讨论】:

    标签: spring-cloud spring-cloud-contract


    【解决方案1】:

    您必须将 DSL 转换为 Pact 文件,然后推送这些文件。所以在技术上这是可能的。

    更新:我们在文档中描述了如何执行此操作 - https://cloud.spring.io/spring-cloud-contract/reference/html/howto.html#how-to-generate-pact-from-scc

    因为在 SO 中,“检查文档”的答案似乎不被接受,让我复制粘贴文档

    1. 如何从 Spring Cloud Contract Contracts 生成 Pact、YAML 或 X 文件?

    Spring Cloud Contract 带有一个 ToFileContractsTransformer 类,可让您将合同转储为给定 ContractConverter 的文件。它包含一个静态 void main 方法,可让您将转换器作为可执行文件执行。它采用以下参数:

    argument 1 : FQN: Fully qualified name of the ContractConverter (for example, PactContractConverter). REQUIRED.
    
    argument 2 : path: Path where the dumped files should be stored. OPTIONAL — defaults to target/converted-contracts.
    
    argument 3 : path: Path were the contracts should be searched for. OPTIONAL — defaults to src/test/resources/contracts.
    

    执行转换器后,Spring Cloud Contract 文件被处理,并根据提供的 ContractTransformer 的 FQN,将合同转换为所需的格式并转储到提供的文件夹中。

    以下示例显示了如何为 Maven 和 Gradle 配置 Pact 集成:

    行家

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.6.0</version>
        <executions>
            <execution>
                <id>convert-dsl-to-pact</id>
                <phase>process-test-classes</phase>
                <configuration>
                    <classpathScope>test</classpathScope>
                    <mainClass>
                        org.springframework.cloud.contract.verifier.util.ToFileContractsTransformer
                    </mainClass>
                    <arguments>
                        <argument>
                            org.springframework.cloud.contract.verifier.spec.pact.PactContractConverter
                        </argument>
                        <argument>${project.basedir}/target/pacts</argument>
                        <argument>
                            ${project.basedir}/src/test/resources/contracts
                        </argument>
                    </arguments>
                </configuration>
                <goals>
                    <goal>java</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    

    分级

    task convertContracts(type: JavaExec) {
        main = "org.springframework.cloud.contract.verifier.util.ToFileContractsTransformer"
        classpath = sourceSets.test.compileClasspath
        args("org.springframework.cloud.contract.verifier.spec.pact.PactContractConverter",
                "${project.rootDir}/build/pacts", "${project.rootDir}/src/test/resources/contracts")
    }
    
    test.dependsOn("convertContracts")
    

    build/pactstarget/pacts 生成文件后,您可以使用 Pact Gradle / Maven 插件将这些文件上传到代理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-27
      • 1970-01-01
      • 2017-09-29
      • 2020-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多