From c05baec7fdcd599bc72d7d8023cbbbede8634d9c Mon Sep 17 00:00:00 2001 From: Alan Crosswell Date: Sat, 23 Jan 2021 14:12:18 -0500 Subject: [PATCH] Fix gitlab prepare fails with a 404. A GitLab URL not ending in .git requires a redirect which isomorphic-git doesn't follow, resulting in a 404. This incorporates @ruloweb's fix in #4134. --- .changeset/breezy-meals-lie.md | 2 ++ .../src/scaffolder/stages/prepare/gitlab.test.ts | 4 ++-- .../src/scaffolder/stages/prepare/gitlab.ts | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.changeset/breezy-meals-lie.md b/.changeset/breezy-meals-lie.md index cbdd876614..4ca4f1ac35 100644 --- a/.changeset/breezy-meals-lie.md +++ b/.changeset/breezy-meals-lie.md @@ -16,3 +16,5 @@ catalog: - type: url target: https://github.com/backstage/backstage/blob/other/plugins/scaffolder-backend/sample-templates/docs-template/template.yaml ``` + +This also fixes a 404 in the prepare stage for GitLab URLs. diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/prepare/gitlab.test.ts b/plugins/scaffolder-backend/src/scaffolder/stages/prepare/gitlab.test.ts index 8ea1d77859..0b77fd813b 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/prepare/gitlab.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/prepare/gitlab.test.ts @@ -87,7 +87,7 @@ describe('GitLabPreparer', () => { await preparer.prepare(mockEntity, { logger: getVoidLogger() }); expect(mockGitClient.clone).toHaveBeenCalledWith({ - url: 'https://gitlab.com/benjdlambert/backstage-graphql-template', + url: 'https://gitlab.com/benjdlambert/backstage-graphql-template.git', dir: expect.any(String), ref: expect.any(String), }); @@ -112,7 +112,7 @@ describe('GitLabPreparer', () => { await preparer.prepare(mockEntity, { logger: getVoidLogger() }); expect(mockGitClient.clone).toHaveBeenCalledWith({ - url: 'https://gitlab.com/benjdlambert/backstage-graphql-template', + url: 'https://gitlab.com/benjdlambert/backstage-graphql-template.git', dir: expect.any(String), ref: expect.any(String), }); diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/prepare/gitlab.ts b/plugins/scaffolder-backend/src/scaffolder/stages/prepare/gitlab.ts index 0ce5466915..4368c1c242 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/prepare/gitlab.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/prepare/gitlab.ts @@ -41,6 +41,7 @@ export class GitlabPreparer implements PreparerBase { const templateId = template.metadata.name; const parsedGitLocation = parseGitUrl(location); + parsedGitLocation.git_suffix = true; const repositoryCheckoutUrl = parsedGitLocation.toString('https'); const ref = parsedGitLocation.ref; const tempDir = await fs.promises.mkdtemp(