GitHub
03/26/2025, 12:25 PMconst publisher = require('@pact-foundation/pact-node');
const dotenv = require('dotenv');
const path = require('path');
const process = require('process');
dotenv.config();
const args = process.argv;
let version = '1.0.0';
args.forEach(arg => {
if (arg.includes('--version')) version = arg.split('--version=')[1];
});
const opts = {
consumerVersion: version,
pactFilesOrDirs: [path.resolve(process.cwd(), 'contract_testing/pacts')],
pactBrokerPassword: process.env.PACT_BROKER_PASSWORD,
pactBrokerUsername: process.env.PACT_BROKER_USERNAME,
pactBroker: process.env.PACT_BROKER_URL
};
publisher.publishPacts(opts)
I call it in the pipeline like this
stages:
- contract-tests
- ...
contract-tests:
stage: contract-tests
image:
name: ...
script:
- npm run test:pact
- npm run publish:pact -- --version=$CI_COMMIT_TAG
rules:
- if: $SKIP_CONTRACT_TESTS == "true"
when: never
- if: $CI_COMMIT_TAG != null
And so I was able to achieve a pipeline crash so that the following steps do not pass
publisher.publishPacts(opts)
.then(() => {
console.log('✅ Pacts successfully published');
})
.catch((error) => {
console.error('❌ Publish failed:', error);
process.exit(1);
});
Fix - process.exit(1);
Without fix
[Image](https://private-user-images.githubusercontent.com/45148694/426561993-18df9461-9125-44b8-b474-6e2638f88baf.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDI5OTIyMTAsIm5iZiI6MTc0Mjk5MTkxMCwicGF0aCI6Ii80NTE0ODY5NC80MjY1NjE5OTMtMThkZjk0NjEtOTEyNS00NGI4LWI0NzQtNmUyNjM4Zjg4YmFmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAzMjYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMzI2VDEyMjUxMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTc4YjI4YjkyMWQ2YTliY2M1YzU1YzQ4YjI4M2QyYTIzMTI4MDQ3MWY4MmEzZjM2ZWMwNTlmNWYxMDRhNWIyZTUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.Depl0TxaTgHCfLpkcMMsGUjKmi6LDrx-QHkBFwOrOHk)
With fix
[Image](https://private-user-images.githubusercontent.com/45148694/426562126-19f169b4-dd12-49c1-82a8-0a9718702ea8.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDI5OTIyMTAsIm5iZiI6MTc0Mjk5MTkxMCwicGF0aCI6Ii80NTE0ODY5NC80MjY1NjIxMjYtMTlmMTY5YjQtZGQxMi00OWMxLTgyYTgtMGE5NzE4NzAyZWE4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAzMjYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMzI2VDEyMjUxMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJkMTQyMTFmMDY5MzI4ZThiNDhmNjRhYWRmZjY2NzI0NmNlMjMzOWY4Y2U3YjZiZmZhZGFmYTQ2NjM1M2ZiODMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.CL-0WNgKNV-VgpgUPjR59xIw20dZLsG1BI-U1a73xs0)
pact-foundation/pact-js-cli