#!groovy pipeline { agent any parameters { string(name: 'pactConsumerTags', defaultValue: 'junit5', description: 'Tags to verify') } stages { stage ('Get Latest Prod Version From Pact Broker') { steps { sh 'curl -LO https://github.com/pact-foundation/pact-ruby-standalone/releases/download/v1.88.3/pact-1.88.3-linux-x86_64.tar.gz' sh 'tar xzf pact-1.88.3-linux-x86_64.tar.gz' dir('pact/bin') { script { env.PROD_VERSION = sh(script: "./pact-broker describe-version -a user-service -b http://pact_broker -l prod | tail -1 | cut -f 1 -d \\|", returnStdout: true).trim() } } echo "Current prod version: " + PROD_VERSION } } stage("Checkout Latest Prod Version") { steps { sh "git checkout ${PROD_VERSION}" } } stage ('Run Contract Tests') { steps { dir('user-service') { sh "../mvnw clean test " + "-Pcontract-tests " + "-Dpact.provider.version=${PROD_VERSION} " + "-Dpact.verifier.publishResults=true " + "-Dpactbroker.tags=prod,${params.pactConsumerTags}" } } } } }