GitHub
03/25/2025, 1:58 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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDI5MTE3NTMsIm5iZiI6MTc0MjkxMTQ1MywicGF0aCI6Ii80NTE0ODY5NC80MjY1NjE5OTMtMThkZjk0NjEtOTEyNS00NGI4LWI0NzQtNmUyNjM4Zjg4YmFmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAzMjUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMzI1VDE0MDQxM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTFmNDdjZDgxZGVmM2RjYmMxNDQ4YWVmNzY4ODg1ZGM4YTM4Y2RkNTg4MjRmMGQ0MTY5NmEwNjg4MjZkODM0MDYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.0mGddkH6vsOsNV2vA9udp0aeJjIv-cSg_jGVmqNMUgQ)
With fix
[Image](https://private-user-images.githubusercontent.com/45148694/426562126-19f169b4-dd12-49c1-82a8-0a9718702ea8.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDI5MTE3NTMsIm5iZiI6MTc0MjkxMTQ1MywicGF0aCI6Ii80NTE0ODY5NC80MjY1NjIxMjYtMTlmMTY5YjQtZGQxMi00OWMxLTgyYTgtMGE5NzE4NzAyZWE4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAzMjUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMzI1VDE0MDQxM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTNkMzNlZWMwYjA4MmQwZWVjZmIyMzJlOTU3NDcwODdkYjg2ZTA0MTQ0YmNjOWUzNThlN2MzMDVjM2NmOWVhMWEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.oTjpF6hRs6VTpKBnPIf_5u5NGznLMyyo1tGEGc4Stgg)
pact-foundation/pact-js-core