diff --git a/.changeset/deep-apples-attack.md b/.changeset/deep-apples-attack.md new file mode 100644 index 0000000000..abf34ad863 --- /dev/null +++ b/.changeset/deep-apples-attack.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-gitlab': patch +--- + +Show additional information about the cause in error messages from GitLab diff --git a/plugins/scaffolder-backend-module-gitlab/package.json b/plugins/scaffolder-backend-module-gitlab/package.json index 93f4bb747d..d22eed437f 100644 --- a/plugins/scaffolder-backend-module-gitlab/package.json +++ b/plugins/scaffolder-backend-module-gitlab/package.json @@ -50,6 +50,7 @@ "@backstage/errors": "workspace:^", "@backstage/integration": "workspace:^", "@backstage/plugin-scaffolder-node": "workspace:^", + "@gitbeaker/requester-utils": "^41.2.0", "@gitbeaker/rest": "^41.2.0", "luxon": "^3.0.0", "winston": "^3.2.1", diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/helpers.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/helpers.ts index 7f6dead3ca..59f5601747 100644 --- a/plugins/scaffolder-backend-module-gitlab/src/actions/helpers.ts +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/helpers.ts @@ -17,6 +17,7 @@ import { parseRepoUrl } from '@backstage/plugin-scaffolder-node'; import { ErrorLike, InputError, isError } from '@backstage/errors'; import { ScmIntegrationRegistry } from '@backstage/integration'; import { Gitlab } from '@gitbeaker/rest'; +import { GitbeakerRequestError } from '@gitbeaker/requester-utils'; export function createGitlabApi(options: { integrations: ScmIntegrationRegistry; @@ -57,7 +58,13 @@ function isGitlabError(e: unknown): e is GitlabError { return isError(e) && 'description' in e && typeof e.description === 'string'; } +function isGitbeakerRequestError(e: unknown): e is GitbeakerRequestError { + return isError(e) && e.name === 'GitbeakerRequestError'; +} + export function getErrorMessage(e: unknown): string { + if (isGitbeakerRequestError(e) && e.cause) + return `${e} - ${e.cause.description}`; if (isGitlabError(e)) return `${e} - ${e.description}`; return String(e); } diff --git a/yarn.lock b/yarn.lock index b897f6e81f..5e3d7f5d69 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7310,6 +7310,7 @@ __metadata: "@backstage/integration": "workspace:^" "@backstage/plugin-scaffolder-node": "workspace:^" "@backstage/plugin-scaffolder-node-test-utils": "workspace:^" + "@gitbeaker/requester-utils": "npm:^41.2.0" "@gitbeaker/rest": "npm:^41.2.0" luxon: "npm:^3.0.0" winston: "npm:^3.2.1" @@ -9901,7 +9902,7 @@ __metadata: languageName: node linkType: hard -"@gitbeaker/requester-utils@npm:^41.3.0": +"@gitbeaker/requester-utils@npm:^41.2.0, @gitbeaker/requester-utils@npm:^41.3.0": version: 41.3.0 resolution: "@gitbeaker/requester-utils@npm:41.3.0" dependencies: