0

我有一份合同,我们可以在运行 mvn pact:publish -Dpactbroker.auth.token=myToken 时将其发布到 pact flow broker。但是,当从 Jenkins 运行它时,相同的合同和 maven 命令会给我们一个身份验证错误。不确定接下来的步骤会出现什么问题,并且合同验证是否成功并使用相同的令牌。

这是我们正在使用的版本:

<pact.version>4.2.14</pact.version>
<pact.plugin.version>4.0.10</pact.plugin.version>
<maven.surefire.version>3.0.0-M5</maven.surefire.version>

这里是我们的詹金斯文件

node {
def git_commit
def mvnHome = tool name: 'maven3.6.0'

stage(name: 'Checkout') {
    git credentialsId: ‘someCredentials’, url: “my.git", branch: "$branch_name"
    sh "git rev-parse HEAD > commit"
    git_commit = readFile('commit').trim()
}

stage(name: 'Compile') {
   sh "$mvnHome/bin/mvn clean package -DskipTests"
}

stage(name: 'Pact Generate Contracts') {
   sh "$mvnHome/bin/mvn -Dtest=com.hmhco.viaductservice.pact.consumer.*Test test"
}

stage(name: 'Pact Publish Contracts Tests') {
   sh "$mvnHome/bin/mvn pact:publish -Dpactbroker.auth.token=myToken”
}

stage(name: 'Pact Verify Tests') {
   sh "$mvnHome/bin/mvn -Dpactbroker.auth.token=myToken -Dtest=com.hmhco.viaductservice.pact.provider.*Test test"
}
  
}
4

1 回答 1

0

它现在正在工作。由于发布步骤来自 maven pact jvm 插件,我们需要通过将这一行添加到插件来为其添加获取令牌的方法。

<pactBrokerUrl>https://hmhco.pact.dius.com.au/</pactBrokerUrl>

所以现在我们有

<plugin>
    <groupId>au.com.dius</groupId>
    <artifactId>pact-jvm-provider-maven</artifactId>
    <version>${pact.plugin.version}</version>
        <configuration>
            <pactDirectory>target/pacts</pactDirectory>
            <pactBrokerUrl>https://hmhco.pact.dius.com.au/</pactBrokerUrl>
            <!--suppress UnresolvedMavenProperty -->
            <pactBrokerToken>${pactbroker.auth.token}</pactBrokerToken>
            <projectVersion>${project.version}</projectVersion>
            <trimSnapshot>true</trimSnapshot>
        </configuration>
</plugin>
于 2021-11-15T11:47:56.003 回答