diff --git a/lib/datasource/gitlab-tags/__snapshots__/index.spec.ts.snap b/lib/datasource/gitlab-tags/__snapshots__/index.spec.ts.snap index 2379601b48944342753b9d74e7656fb072c54269..bf29c12e1019850a4673af97f650e0cb504122e7 100644 --- a/lib/datasource/gitlab-tags/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/gitlab-tags/__snapshots__/index.spec.ts.snap @@ -5,12 +5,19 @@ Object { "releases": Array [ Object { "gitRef": "v1.0.0", + "releaseTimestamp": "2020-03-04T12:01:37.000-06:00", "version": "v1.0.0", }, Object { "gitRef": "v1.1.0", + "releaseTimestamp": undefined, "version": "v1.1.0", }, + Object { + "gitRef": "v1.1.1", + "releaseTimestamp": undefined, + "version": "v1.1.1", + }, ], "sourceUrl": "https://gitlab.company.com/api/v4/some/dep2", } @@ -21,10 +28,12 @@ Object { "releases": Array [ Object { "gitRef": "v1.0.0", + "releaseTimestamp": undefined, "version": "v1.0.0", }, Object { "gitRef": "v1.1.0", + "releaseTimestamp": undefined, "version": "v1.1.0", }, ], diff --git a/lib/datasource/gitlab-tags/index.spec.ts b/lib/datasource/gitlab-tags/index.spec.ts index 5982053edf40988c2b3b3ccfa00909db038104b8..30dfbb2b29b594d33104c9c39e184b01d44d1f35 100644 --- a/lib/datasource/gitlab-tags/index.spec.ts +++ b/lib/datasource/gitlab-tags/index.spec.ts @@ -14,14 +14,28 @@ describe('datasource/gitlab-tags', () => { describe('getPkgReleases', () => { beforeAll(() => global.renovateCache.rmAll()); it('returns tags', async () => { - const body = [{ name: 'v1.0.0' }, { name: 'v1.1.0' }]; + const body = [ + { + name: 'v1.0.0', + commit: { + created_at: '2020-03-04T12:01:37.000-06:00', + }, + }, + { + name: 'v1.1.0', + commit: {}, + }, + { + name: 'v1.1.1', + }, + ]; glGot.mockReturnValueOnce({ headers: {}, body }); const res = await gitlab.getPkgReleases({ registryUrls: ['https://gitlab.company.com/api/v4/'], lookupName: 'some/dep2', }); expect(res).toMatchSnapshot(); - expect(res.releases).toHaveLength(2); + expect(res.releases).toHaveLength(3); }); it('returns tags with default registry', async () => { diff --git a/lib/datasource/gitlab-tags/index.ts b/lib/datasource/gitlab-tags/index.ts index 9a2a46f50314249be8a37d021d4ebbc86884051c..dc086e5a74c0062bbd7ae6d329eba009ecbe822c 100644 --- a/lib/datasource/gitlab-tags/index.ts +++ b/lib/datasource/gitlab-tags/index.ts @@ -13,6 +13,13 @@ function getCacheKey(depHost: string, repo: string): string { return `${depHost}:${repo}:${type}`; } +type GitlabTag = { + name: string; + commit?: { + created_at?: string; + }; +}; + export async function getPkgReleases({ registryUrls, lookupName: repo, @@ -21,7 +28,7 @@ export async function getPkgReleases({ const depHost = is.nonEmptyArray(registryUrls) ? registryUrls[0].replace(/\/$/, '') : 'https://gitlab.com'; - let versions: string[]; + let gitlabTags: GitlabTag[]; const cachedResult = await renovateCache.get<ReleaseResult>( cacheNamespace, getCacheKey(depHost, repo) @@ -36,22 +43,19 @@ export async function getPkgReleases({ try { // tag const url = `${depHost}/api/v4/projects/${urlEncodedRepo}/repository/tags?per_page=100`; - type GlTag = { - name: string; - }[]; - versions = ( - await glGot<GlTag>(url, { + gitlabTags = ( + await glGot<GitlabTag[]>(url, { paginate: true, }) - ).body.map(o => o.name); + ).body; } catch (err) { // istanbul ignore next logger.debug({ repo, err }, 'Error retrieving from Gitlab'); } // istanbul ignore if - if (!versions) { + if (!gitlabTags) { return null; } @@ -59,9 +63,10 @@ export async function getPkgReleases({ sourceUrl: `${depHost}/${repo}`, releases: null, }; - dependency.releases = versions.map(version => ({ - version, - gitRef: version, + dependency.releases = gitlabTags.map(({ name, commit }) => ({ + version: name, + gitRef: name, + releaseTimestamp: commit?.created_at, })); const cacheMinutes = 10;