使用 jenkins 将 java 合同发布到 pact flow 时出现未经授权的错误
Unauthorised error when publishing java contract to pact flow using jenkins
我有一份合约,我们可以在 运行 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"
}
}
现在可以了。
由于发布步骤来自 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>
我有一份合约,我们可以在 运行 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"
}
}
现在可以了。 由于发布步骤来自 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>