From 575613f5608c2def7472f333c90d63efc7b69c31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Mon, 23 Dec 2024 12:50:36 +0100 Subject: [PATCH] Go back to using node-fetch for gitlab MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/famous-balloons-punch.md | 6 ++++++ .../entrypoints/urlReader/lib/GitlabUrlReader.ts | 14 ++++++++++++-- plugins/catalog-backend-module-gitlab/package.json | 1 + .../src/lib/client.ts | 3 +++ yarn.lock | 1 + 5 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 .changeset/famous-balloons-punch.md diff --git a/.changeset/famous-balloons-punch.md b/.changeset/famous-balloons-punch.md new file mode 100644 index 0000000000..a6e7072974 --- /dev/null +++ b/.changeset/famous-balloons-punch.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-catalog-backend-module-gitlab': patch +'@backstage/backend-defaults': patch +--- + +Go back to using `node-fetch` for gitlab diff --git a/packages/backend-defaults/src/entrypoints/urlReader/lib/GitlabUrlReader.ts b/packages/backend-defaults/src/entrypoints/urlReader/lib/GitlabUrlReader.ts index c1d8c02a53..77a8d31623 100644 --- a/packages/backend-defaults/src/entrypoints/urlReader/lib/GitlabUrlReader.ts +++ b/packages/backend-defaults/src/entrypoints/urlReader/lib/GitlabUrlReader.ts @@ -14,6 +14,9 @@ * limitations under the License. */ +// NOTE(freben): Intentionally uses node-fetch because of https://github.com/backstage/backstage/issues/28190 +import fetch, { Response } from 'node-fetch'; + import { UrlReaderService, UrlReaderServiceReadTreeOptions, @@ -34,8 +37,10 @@ import { import parseGitUrl from 'git-url-parse'; import { trimEnd, trimStart } from 'lodash'; import { Minimatch } from 'minimatch'; +import { Readable } from 'stream'; import { ReadUrlResponseFactory } from './ReadUrlResponseFactory'; import { ReadTreeResponseFactory, ReaderFactory } from './types'; +import { parseLastModified } from './util'; /** * Implements a {@link @backstage/backend-plugin-api#UrlReaderService} for files on GitLab. @@ -98,7 +103,12 @@ export class GitlabUrlReader implements UrlReaderService { } if (response.ok) { - return ReadUrlResponseFactory.fromResponse(response); + return ReadUrlResponseFactory.fromNodeJSReadable(response.body, { + etag: response.headers.get('ETag') ?? undefined, + lastModifiedAt: parseLastModified( + response.headers.get('Last-Modified'), + ), + }); } const message = `${url} could not be read as ${builtUrl}, ${response.status} ${response.statusText}`; @@ -220,7 +230,7 @@ export class GitlabUrlReader implements UrlReaderService { } return await this.deps.treeResponseFactory.fromTarArchive({ - response: archiveGitLabResponse, + stream: Readable.from(archiveGitLabResponse.body), subpath: filepath, etag: commitSha, filter: options?.filter, diff --git a/plugins/catalog-backend-module-gitlab/package.json b/plugins/catalog-backend-module-gitlab/package.json index 8705fa467a..d4064d3c6f 100644 --- a/plugins/catalog-backend-module-gitlab/package.json +++ b/plugins/catalog-backend-module-gitlab/package.json @@ -61,6 +61,7 @@ "@backstage/plugin-events-node": "workspace:^", "@gitbeaker/rest": "^40.0.3", "lodash": "^4.17.21", + "node-fetch": "^2.7.0", "uuid": "^11.0.0" }, "devDependencies": { diff --git a/plugins/catalog-backend-module-gitlab/src/lib/client.ts b/plugins/catalog-backend-module-gitlab/src/lib/client.ts index 81ba58db5d..561f38634b 100644 --- a/plugins/catalog-backend-module-gitlab/src/lib/client.ts +++ b/plugins/catalog-backend-module-gitlab/src/lib/client.ts @@ -14,6 +14,9 @@ * limitations under the License. */ +// NOTE(freben): Intentionally uses node-fetch because of https://github.com/backstage/backstage/issues/28190 +import fetch from 'node-fetch'; + import { getGitLabRequestOptions, GitLabIntegrationConfig, diff --git a/yarn.lock b/yarn.lock index 4deff47df3..7706d01114 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5643,6 +5643,7 @@ __metadata: lodash: ^4.17.21 luxon: ^3.0.0 msw: ^1.0.0 + node-fetch: ^2.7.0 uuid: ^11.0.0 languageName: unknown linkType: soft