From b9930407f40b5f1fa0a3a4be55cf710c58c70d50 Mon Sep 17 00:00:00 2001 From: Sergey Vedmak <serg.vedmak@gmail.com> Date: Thu, 7 Oct 2021 12:54:51 +0300 Subject: [PATCH] fix(monorepo): load changelog.md file from gitlab monorepo (#12053) --- .../__snapshots__/gitlab.spec.ts.snap | 6 +++++ .../__snapshots__/release-notes.spec.ts.snap | 2 +- lib/workers/pr/changelog/gitlab/index.ts | 22 ++++++++----------- .../pr/changelog/release-notes.spec.ts | 8 +++---- lib/workers/pr/changelog/source-gitlab.ts | 2 ++ 5 files changed, 22 insertions(+), 18 deletions(-) diff --git a/lib/workers/pr/changelog/__snapshots__/gitlab.spec.ts.snap b/lib/workers/pr/changelog/__snapshots__/gitlab.spec.ts.snap index cc229009fe..d02b4cdfba 100644 --- a/lib/workers/pr/changelog/__snapshots__/gitlab.spec.ts.snap +++ b/lib/workers/pr/changelog/__snapshots__/gitlab.spec.ts.snap @@ -8,6 +8,7 @@ Object { "baseUrl": "https://gitlab.com/", "depName": "renovate", "repository": "meno/dropzone", + "sourceDirectory": undefined, "sourceUrl": "https://gitlab.com/meno/dropzone/", "type": "gitlab", }, @@ -156,6 +157,7 @@ Object { "baseUrl": "https://gitlab-enterprise.example.com/", "depName": "renovate", "repository": "meno/dropzone", + "sourceDirectory": undefined, "sourceUrl": "https://gitlab-enterprise.example.com/meno/dropzone/", "type": "gitlab", }, @@ -200,6 +202,7 @@ Object { "baseUrl": "https://git.test.com/", "depName": "renovate", "repository": "meno/dropzone", + "sourceDirectory": undefined, "sourceUrl": "https://git.test.com/meno/dropzone/", "type": "gitlab", }, @@ -244,6 +247,7 @@ Object { "baseUrl": "https://gitlab.com/", "depName": "renovate", "repository": "meno/dropzone", + "sourceDirectory": undefined, "sourceUrl": "https://gitlab.com/meno/dropzone/", "type": "gitlab", }, @@ -408,6 +412,7 @@ Object { "baseUrl": "https://gitlab.com/", "depName": "renovate", "repository": "meno/dropzone", + "sourceDirectory": undefined, "sourceUrl": "https://gitlab.com/meno/dropzone/", "type": "gitlab", }, @@ -556,6 +561,7 @@ Object { "baseUrl": "https://gitlab.com/", "depName": "renovate", "repository": "meno/dropzone", + "sourceDirectory": undefined, "sourceUrl": "https://gitlab.com/meno/dropzone/", "type": "gitlab", }, diff --git a/lib/workers/pr/changelog/__snapshots__/release-notes.spec.ts.snap b/lib/workers/pr/changelog/__snapshots__/release-notes.spec.ts.snap index 976f87b5a5..4386f098d4 100644 --- a/lib/workers/pr/changelog/__snapshots__/release-notes.spec.ts.snap +++ b/lib/workers/pr/changelog/__snapshots__/release-notes.spec.ts.snap @@ -366,7 +366,7 @@ Array [ "user-agent": "RenovateBot/0.0.0-semantic-release (https://github.com/renovatebot/renovate)", }, "method": "GET", - "url": "https://gitlab.com/api/v4/projects/itentialopensource%2fadapter-utils/repository/tree?per_page=100", + "url": "https://gitlab.com/api/v4/projects/itentialopensource%2fadapter-utils/repository/tree?per_page=100&path=packages/foo", }, Object { "headers": Object { diff --git a/lib/workers/pr/changelog/gitlab/index.ts b/lib/workers/pr/changelog/gitlab/index.ts index ab7e71625d..282e2f5c21 100644 --- a/lib/workers/pr/changelog/gitlab/index.ts +++ b/lib/workers/pr/changelog/gitlab/index.ts @@ -60,23 +60,19 @@ export async function getReleaseNotesMd( // https://docs.gitlab.com/13.2/ee/api/repositories.html#list-repository-tree const tree = ( - await http.getJson<GitlabTreeNode[]>(`${apiPrefix}tree?per_page=100`, { - paginate: true, - }) + await http.getJson<GitlabTreeNode[]>( + `${apiPrefix}tree?per_page=100${ + sourceDirectory ? `&path=${sourceDirectory}` : '' + }`, + { + paginate: true, + } + ) ).body; const allFiles = tree.filter((f) => f.type === 'blob'); let files: GitlabTreeNode[] = []; - if (sourceDirectory?.length) { - files = allFiles - .filter((f) => f.path.startsWith(sourceDirectory)) - .filter((f) => - changelogFilenameRegex.test( - f.path.replace(ensureTrailingSlash(sourceDirectory), '') - ) - ); - } if (!files.length) { - files = allFiles.filter((f) => changelogFilenameRegex.test(f.path)); + files = allFiles.filter((f) => changelogFilenameRegex.test(f.name)); } if (!files.length) { logger.trace('no changelog file found'); diff --git a/lib/workers/pr/changelog/release-notes.spec.ts b/lib/workers/pr/changelog/release-notes.spec.ts index 622b0d618b..9967a40d79 100644 --- a/lib/workers/pr/changelog/release-notes.spec.ts +++ b/lib/workers/pr/changelog/release-notes.spec.ts @@ -37,9 +37,9 @@ const githubTreeResponse = { }; const gitlabTreeResponse = [ - { path: 'lib', type: 'tree' }, - { path: 'CHANGELOG.md', type: 'blob', id: 'abcd' }, - { path: 'README.md', type: 'blob' }, + { path: 'lib', name: 'lib', type: 'tree' }, + { path: 'CHANGELOG.md', name: 'CHANGELOG.md', type: 'blob', id: 'abcd' }, + { path: 'README.md', name: 'README.md', type: 'blob' }, ]; const githubProject = { @@ -615,7 +615,7 @@ describe('workers/pr/changelog/release-notes', () => { httpMock .scope('https://gitlab.com/') .get( - '/api/v4/projects/itentialopensource%2fadapter-utils/repository/tree?per_page=100' + `/api/v4/projects/itentialopensource%2fadapter-utils/repository/tree?per_page=100&path=${sourceDirectory}` ) .reply(200, response) .get( diff --git a/lib/workers/pr/changelog/source-gitlab.ts b/lib/workers/pr/changelog/source-gitlab.ts index c241bb9a04..9eb713d13b 100644 --- a/lib/workers/pr/changelog/source-gitlab.ts +++ b/lib/workers/pr/changelog/source-gitlab.ts @@ -36,6 +36,7 @@ export async function getChangeLogJSON({ releases, depName, manager, + sourceDirectory, }: BranchUpgradeConfig): Promise<ChangeLogResult | null> { logger.trace('getChangeLogJSON for gitlab'); const version = allVersioning.get(versioning); @@ -134,6 +135,7 @@ export async function getChangeLogJSON({ repository, sourceUrl, depName, + sourceDirectory, }, versions: changelogReleases, }; -- GitLab