From e9d392439192d5a5623eee8e2c38c2a6047cc161 Mon Sep 17 00:00:00 2001 From: gagik Date: Mon, 3 Feb 2025 20:20:07 +0100 Subject: [PATCH 1/2] feat(ci): skip pushing tags on a dry run --- packages/build/src/npm-packages/push-tags.ts | 9 +++++++-- packages/build/src/publish-auxiliary.ts | 5 ++++- packages/build/src/publish-mongosh.ts | 5 ++++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/packages/build/src/npm-packages/push-tags.ts b/packages/build/src/npm-packages/push-tags.ts index 6ce0654fc7..217f504f9d 100644 --- a/packages/build/src/npm-packages/push-tags.ts +++ b/packages/build/src/npm-packages/push-tags.ts @@ -9,7 +9,10 @@ import { listNpmPackages as listNpmPackagesFn } from './list'; import { spawnSync as spawnSyncFn } from '../helpers/spawn-sync'; export function pushTags( - { useAuxiliaryPackagesOnly }: { useAuxiliaryPackagesOnly: boolean }, + { + useAuxiliaryPackagesOnly, + isDryRun, + }: { useAuxiliaryPackagesOnly: boolean; isDryRun: boolean }, listNpmPackages: typeof listNpmPackagesFn = listNpmPackagesFn, existsVersionTag: typeof existsTag = existsTag, spawnSync: typeof spawnSyncFn = spawnSyncFn @@ -68,7 +71,9 @@ export function pushTags( } } - spawnSync('git', ['push', '--follow-tags'], commandOptions); + if (!isDryRun) { + spawnSync('git', ['push', '--follow-tags'], commandOptions); + } } /** Returns true if the tag exists in the remote repository. */ diff --git a/packages/build/src/publish-auxiliary.ts b/packages/build/src/publish-auxiliary.ts index 7ea7f01df6..d994d84972 100644 --- a/packages/build/src/publish-auxiliary.ts +++ b/packages/build/src/publish-auxiliary.ts @@ -8,5 +8,8 @@ export function publishAuxiliaryPackages(config: Config) { ); } publishToNpm(config); - pushTags({ useAuxiliaryPackagesOnly: true }); + pushTags({ + useAuxiliaryPackagesOnly: true, + isDryRun: config.isDryRun || false, + }); } diff --git a/packages/build/src/publish-mongosh.ts b/packages/build/src/publish-mongosh.ts index 81ae1c3057..17cc479959 100644 --- a/packages/build/src/publish-mongosh.ts +++ b/packages/build/src/publish-mongosh.ts @@ -105,7 +105,10 @@ export async function publishMongosh( !!config.isDryRun ); - pushTags({ useAuxiliaryPackagesOnly: true }); + pushTags({ + useAuxiliaryPackagesOnly: true, + isDryRun: config.isDryRun || false, + }); console.info('mongosh: finished release process.'); } From 2969c6158e2220bac74982ea12f2aac3ca799290 Mon Sep 17 00:00:00 2001 From: gagik Date: Mon, 3 Feb 2025 21:04:50 +0100 Subject: [PATCH 2/2] fix(ci): push all tags when doing a mongosh release This is a drive-by fix which makes sure that all tags get pushed when we actually release mongosh. --- .../build/src/npm-packages/push-tags.spec.ts | 33 ++++++++++++++++++- packages/build/src/publish-mongosh.ts | 2 +- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/packages/build/src/npm-packages/push-tags.spec.ts b/packages/build/src/npm-packages/push-tags.spec.ts index 66996e3af2..83395f5907 100644 --- a/packages/build/src/npm-packages/push-tags.spec.ts +++ b/packages/build/src/npm-packages/push-tags.spec.ts @@ -54,7 +54,10 @@ describe('pushing tags', function () { expect(() => pushTags( - { useAuxiliaryPackagesOnly: false }, + { + isDryRun: false, + useAuxiliaryPackagesOnly: false, + }, listNpmPackages, existsVersionTag, spawnSync @@ -65,6 +68,7 @@ describe('pushing tags', function () { it('takes mongosh version and pushes tags when releasing', function () { pushTags( { + isDryRun: false, useAuxiliaryPackagesOnly: false, }, listNpmPackages, @@ -95,6 +99,7 @@ describe('pushing tags', function () { it('pushes only package tags when using auxiliary packages', function () { pushTags( { + isDryRun: false, useAuxiliaryPackagesOnly: true, }, listNpmPackages, @@ -146,6 +151,7 @@ describe('pushing tags', function () { pushTags( { + isDryRun: false, useAuxiliaryPackagesOnly: true, }, listNpmPackages, @@ -194,6 +200,7 @@ describe('pushing tags', function () { pushTags( { useAuxiliaryPackagesOnly: false, + isDryRun: false, }, listNpmPackages, existsVersionTag, @@ -209,5 +216,29 @@ describe('pushing tags', function () { ]); expect(spawnSync).calledWith('git', ['push', '--follow-tags']); }); + + it('skips tag push if it is a dry run', function () { + existsVersionTag.withArgs(`v${mongoshVersion}`).returns(true); + + pushTags( + { + useAuxiliaryPackagesOnly: false, + isDryRun: true, + }, + listNpmPackages, + existsVersionTag, + spawnSync + ); + + expect(spawnSync).not.calledWith('git', [ + 'tag', + '-a', + `v${mongoshVersion}`, + '-m', + `v${mongoshVersion}`, + ]); + + expect(spawnSync).not.calledWith('git', ['push', '--follow-tags']); + }); }); }); diff --git a/packages/build/src/publish-mongosh.ts b/packages/build/src/publish-mongosh.ts index 17cc479959..ded7d901b3 100644 --- a/packages/build/src/publish-mongosh.ts +++ b/packages/build/src/publish-mongosh.ts @@ -106,7 +106,7 @@ export async function publishMongosh( ); pushTags({ - useAuxiliaryPackagesOnly: true, + useAuxiliaryPackagesOnly: false, isDryRun: config.isDryRun || false, });