diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 72834e92..a5323f6f 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -370,7 +370,9 @@ export function sentryUnpluginFactory({ shouldCreateRelease: options.release.create, shouldFinalizeRelease: options.release.finalize, include: options.release.uploadLegacySourcemaps, - setCommitsOption: options.release.setCommits, + // setCommits has a default defined by the options mappings + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + setCommitsOption: options.release.setCommits!, deployOptions: options.release.deploy, dist: options.release.dist, handleRecoverableError: handleRecoverableError, diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index ba12d3e5..fbb65695 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -26,6 +26,7 @@ export function normalizeUserOptions(userOptions: UserOptions) { create: userOptions.release?.create ?? true, finalize: userOptions.release?.finalize ?? true, vcsRemote: userOptions.release?.vcsRemote ?? process.env["SENTRY_VSC_REMOTE"] ?? "origin", + setCommits: userOptions.release?.setCommits, }, bundleSizeOptimizations: userOptions.bundleSizeOptimizations, reactComponentAnnotation: userOptions.reactComponentAnnotation, @@ -39,6 +40,14 @@ export function normalizeUserOptions(userOptions: UserOptions) { _experiments: userOptions._experiments ?? {}, }; + if (options.release.setCommits === undefined) { + options.release.setCommits = { + // @ts-expect-error This is fine + auto: true, + isDefault: true, + }; + } + return options; } diff --git a/packages/bundler-plugin-core/src/plugins/release-management.ts b/packages/bundler-plugin-core/src/plugins/release-management.ts index 8abac956..50e0a302 100644 --- a/packages/bundler-plugin-core/src/plugins/release-management.ts +++ b/packages/bundler-plugin-core/src/plugins/release-management.ts @@ -13,7 +13,7 @@ interface ReleaseManagementPluginOptions { shouldCreateRelease: boolean; shouldFinalizeRelease: boolean; include?: string | IncludeEntry | Array; - setCommitsOption?: SentryCliCommitsOptions; + setCommitsOption: SentryCliCommitsOptions | false | { auto: true; isDefault: true }; deployOptions?: SentryCliNewDeployOptions; dist?: string; handleRecoverableError: HandleRecoverableErrorFn; @@ -37,6 +37,7 @@ interface ReleaseManagementPluginOptions { * Additionally, if legacy upload options are set, it uploads source maps in the legacy (non-debugId) way. */ export function releaseManagementPlugin({ + logger, releaseName, include, dist, @@ -86,8 +87,20 @@ export function releaseManagementPlugin({ }); } - if (setCommitsOption) { - await cliInstance.releases.setCommits(releaseName, setCommitsOption); + if (setCommitsOption !== false) { + try { + await cliInstance.releases.setCommits(releaseName, setCommitsOption); + } catch (e) { + // isDefault being present means that the plugin defaulted to `{ auto: true }` for the setCommitsOptions, meaning that wee should not throw when CLI throws because there is no repo + if (!("isDefault" in setCommitsOption)) { + throw e; + } else { + logger.debug( + "An error occurred setting commits on release (this message can be ignored unless your commits on release are desired):", + e + ); + } + } } if (shouldFinalizeRelease) { diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 61db9049..bc55427e 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -200,8 +200,10 @@ export interface Options { /** * Associates the release with its commits in Sentry. + * + * Defaults to `{ auto: true }`. Set to `false` to disable commit association. */ - setCommits?: SetCommitsOptions; + setCommits?: SetCommitsOptions | false; /** * Adds deployment information to the release in Sentry. diff --git a/packages/bundler-plugin-core/test/option-mappings.test.ts b/packages/bundler-plugin-core/test/option-mappings.test.ts index 54907571..af008ad5 100644 --- a/packages/bundler-plugin-core/test/option-mappings.test.ts +++ b/packages/bundler-plugin-core/test/option-mappings.test.ts @@ -23,6 +23,10 @@ describe("normalizeUserOptions()", () => { create: true, vcsRemote: "origin", uploadLegacySourcemaps: "./out", + setCommits: { + auto: true, + isDefault: true, + }, }, silent: false, telemetry: true, @@ -74,6 +78,10 @@ describe("normalizeUserOptions()", () => { sourceMapReference: false, stripCommonPrefix: true, }, + setCommits: { + auto: true, + isDefault: true, + }, }, silent: false, telemetry: true, diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index 1d2f3244..bd522fe7 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -154,7 +154,8 @@ errorHandler: (err) => { }, { name: "setCommits", - fullDescription: "Option to associate the created release with its commits in Sentry.", + fullDescription: + "Option to associate the created release with its commits in Sentry. Defaults to `{ auto: true }`. Set to `false` to disable.", children: [ { name: "previousCommit", diff --git a/packages/integration-tests/fixtures/telemetry/telemetry.test.ts b/packages/integration-tests/fixtures/telemetry/telemetry.test.ts index 5015cfdf..deb289e1 100644 --- a/packages/integration-tests/fixtures/telemetry/telemetry.test.ts +++ b/packages/integration-tests/fixtures/telemetry/telemetry.test.ts @@ -101,7 +101,7 @@ test("rollup bundle telemetry", async () => { "upload-legacy-sourcemaps": false, "module-metadata": false, "inject-build-information": false, - "set-commits": "undefined", + "set-commits": "auto", "finalize-release": true, "deploy-options": false, "custom-error-handler": false,