From 70fc9e03707079e030b15bed2af0f837089bab89 Mon Sep 17 00:00:00 2001 From: Stijn Brouwers Date: Wed, 27 May 2026 14:29:41 +0200 Subject: [PATCH 1/4] bugfix(gitlabUrlReader): Fix issue with repository archive retrieval Signed-off-by: Stijn Brouwers --- .../src/entrypoints/urlReader/lib/GitlabUrlReader.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/backend-defaults/src/entrypoints/urlReader/lib/GitlabUrlReader.ts b/packages/backend-defaults/src/entrypoints/urlReader/lib/GitlabUrlReader.ts index 23a39003b6..5baed44be0 100644 --- a/packages/backend-defaults/src/entrypoints/urlReader/lib/GitlabUrlReader.ts +++ b/packages/backend-defaults/src/entrypoints/urlReader/lib/GitlabUrlReader.ts @@ -211,6 +211,7 @@ export class GitlabUrlReader implements UrlReaderService { )}/repository/archive?${archiveReqParams.toString()}`; const archiveGitLabResponse = await this.integration.fetch(reqUrl, { ...getGitLabRequestOptions(this.integration.config, token), + mode: `same-origin`, // TODO(freben): The signal cast is there because pre-3.x versions of // node-fetch have a very slightly deviating AbortSignal type signature. // The difference does not affect us in practice however. The cast can From 34f21c39a50b10f79ec06c8b445dfd451560c43b Mon Sep 17 00:00:00 2001 From: Stijn Brouwers Date: Wed, 27 May 2026 14:32:51 +0200 Subject: [PATCH 2/4] chore(changeset): Add PR changeset Signed-off-by: Stijn Brouwers --- .changeset/six-pandas-yawn.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/six-pandas-yawn.md diff --git a/.changeset/six-pandas-yawn.md b/.changeset/six-pandas-yawn.md new file mode 100644 index 0000000000..0f4665f7c1 --- /dev/null +++ b/.changeset/six-pandas-yawn.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-defaults': patch +--- + +Fix gitlabUrlReader issue with retrieving the repository archive tree From 05d4126db00b5a188c6006a21a9cabaac78fe08d Mon Sep 17 00:00:00 2001 From: Stijn Brouwers Date: Thu, 28 May 2026 09:13:38 +0200 Subject: [PATCH 3/4] chore(code-review): Use single quote instead of ticks Signed-off-by: Stijn Brouwers --- .../src/entrypoints/urlReader/lib/GitlabUrlReader.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/backend-defaults/src/entrypoints/urlReader/lib/GitlabUrlReader.ts b/packages/backend-defaults/src/entrypoints/urlReader/lib/GitlabUrlReader.ts index 5baed44be0..a41df5ad14 100644 --- a/packages/backend-defaults/src/entrypoints/urlReader/lib/GitlabUrlReader.ts +++ b/packages/backend-defaults/src/entrypoints/urlReader/lib/GitlabUrlReader.ts @@ -211,7 +211,7 @@ export class GitlabUrlReader implements UrlReaderService { )}/repository/archive?${archiveReqParams.toString()}`; const archiveGitLabResponse = await this.integration.fetch(reqUrl, { ...getGitLabRequestOptions(this.integration.config, token), - mode: `same-origin`, + mode: 'same-origin', // TODO(freben): The signal cast is there because pre-3.x versions of // node-fetch have a very slightly deviating AbortSignal type signature. // The difference does not affect us in practice however. The cast can From 3692a346a552014f4e2f515a6bfdcbd4ef4aac23 Mon Sep 17 00:00:00 2001 From: Stijn Brouwers Date: Thu, 28 May 2026 09:26:05 +0200 Subject: [PATCH 4/4] chore(gitlabUrlReader): Add comment and patch file Signed-off-by: Stijn Brouwers --- .patches/pr-34415.txt | 1 + .../src/entrypoints/urlReader/lib/GitlabUrlReader.ts | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 .patches/pr-34415.txt diff --git a/.patches/pr-34415.txt b/.patches/pr-34415.txt new file mode 100644 index 0000000000..b728afdcff --- /dev/null +++ b/.patches/pr-34415.txt @@ -0,0 +1 @@ +Fix 406 response for repository/archive retrieval in gitlabUrlReader \ No newline at end of file diff --git a/packages/backend-defaults/src/entrypoints/urlReader/lib/GitlabUrlReader.ts b/packages/backend-defaults/src/entrypoints/urlReader/lib/GitlabUrlReader.ts index a41df5ad14..81c493dd46 100644 --- a/packages/backend-defaults/src/entrypoints/urlReader/lib/GitlabUrlReader.ts +++ b/packages/backend-defaults/src/entrypoints/urlReader/lib/GitlabUrlReader.ts @@ -211,6 +211,9 @@ export class GitlabUrlReader implements UrlReaderService { )}/repository/archive?${archiveReqParams.toString()}`; const archiveGitLabResponse = await this.integration.fetch(reqUrl, { ...getGitLabRequestOptions(this.integration.config, token), + // The mode is set to 'same-origin' to overwrite the default 'cors' value. + // The repository/archive endpoint marks mode='cors' as a "hotlink" which will return 406 - Not Acceptable as a response + // More info on this issue can be found @ https://github.com/backstage/backstage/issues/34395 mode: 'same-origin', // TODO(freben): The signal cast is there because pre-3.x versions of // node-fetch have a very slightly deviating AbortSignal type signature.