diff --git a/lib/workers/pr/changelog/__snapshots__/gitlab.spec.ts.snap b/lib/workers/pr/changelog/__snapshots__/gitlab.spec.ts.snap index cc229009feb0d3c6e6a4670c94d03a799ad5431f..d02b4cdfbaf35f5069b0dd3b3ac52716e53d1b75 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 976f87b5a518a1ba033e06e305e2287ef7d7b43d..4386f098d4e6cdbc016a4192109da8343a842607 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 ab7e71625d4f1226da6ea62196ccf07f009a4c28..282e2f5c218b1fe80a2e6bb52b43fcb20fb7ccad 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 622b0d618b3e3707b50d7f59523ccfeb76ef6f2b..9967a40d7936ac1268081fab4f401716ee083ff2 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 c241bb9a04f7415fee6c93b62586534b4838c257..9eb713d13b03f1050976147c8e9cf6984a857a4c 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, };