diff --git a/lib/manager/gitlabci-include/__fixtures__/gitlab-ci.2.yaml b/lib/manager/gitlabci-include/__fixtures__/gitlab-ci.2.yaml deleted file mode 100644 index 0829ba25fcbc74..00000000000000 --- a/lib/manager/gitlabci-include/__fixtures__/gitlab-ci.2.yaml +++ /dev/null @@ -1,5 +0,0 @@ -include: -- local: 'lib/manager/gitlabci-include/__fixtures__/include.1.yml' - -stages: -- test diff --git a/lib/manager/gitlabci-include/__fixtures__/gitlab-ci.3.yaml b/lib/manager/gitlabci-include/__fixtures__/gitlab-ci.3.yaml deleted file mode 100644 index 8607426d785cab..00000000000000 --- a/lib/manager/gitlabci-include/__fixtures__/gitlab-ci.3.yaml +++ /dev/null @@ -1,6 +0,0 @@ -include: -- local: 'lib/manager/gitlabci-include/__fixtures__/include.1.yml' -- local: 'lib/manager/gitlabci-include/__fixtures__/include.2.yml' - -stages: -- test diff --git a/lib/manager/gitlabci-include/__snapshots__/extract.spec.ts.snap b/lib/manager/gitlabci-include/__snapshots__/extract.spec.ts.snap index a0e6277d1e1afd..046e4127deaf45 100644 --- a/lib/manager/gitlabci-include/__snapshots__/extract.spec.ts.snap +++ b/lib/manager/gitlabci-include/__snapshots__/extract.spec.ts.snap @@ -1,19 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`lib/manager/gitlabci-include/extract extractPackageFile() extracts local include block 1`] = ` -Array [ - Object { - "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}", - "currentDigest": undefined, - "currentValue": "3.11", - "datasource": "docker", - "depName": "alpine", - "depType": "image", - "replaceString": "alpine:3.11", - }, -] -`; - exports[`lib/manager/gitlabci-include/extract extractPackageFile() extracts multiple include blocks 1`] = ` Array [ Object { @@ -36,27 +22,3 @@ Array [ }, ] `; - -exports[`lib/manager/gitlabci-include/extract extractPackageFile() extracts multiple local include blocks 1`] = ` -Array [ - Object { - "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}", - "currentDigest": undefined, - "currentValue": "3.11", - "datasource": "docker", - "depName": "alpine", - "depType": "image", - "replaceString": "alpine:3.11", - }, - Object { - "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}", - "commitMessageTopic": "Node.js", - "currentDigest": undefined, - "currentValue": "12", - "datasource": "docker", - "depName": "node", - "depType": "image", - "replaceString": "node:12", - }, -] -`; diff --git a/lib/manager/gitlabci-include/extract.spec.ts b/lib/manager/gitlabci-include/extract.spec.ts index 68c3604297044f..ec24ad47c381d9 100644 --- a/lib/manager/gitlabci-include/extract.spec.ts +++ b/lib/manager/gitlabci-include/extract.spec.ts @@ -5,50 +5,27 @@ const yamlFile = fs.readFileSync( 'lib/manager/gitlabci-include/__fixtures__/gitlab-ci.1.yaml', 'utf8' ); -const yamlLocal = fs.readFileSync( - 'lib/manager/gitlabci-include/__fixtures__/gitlab-ci.2.yaml', - 'utf8' -); - -const yamlLocalBlock = fs.readFileSync( - 'lib/manager/gitlabci-include/__fixtures__/gitlab-ci.3.yaml', - 'utf8' -); describe('lib/manager/gitlabci-include/extract', () => { describe('extractPackageFile()', () => { - it('returns null for empty', async () => { + it('returns null for empty', () => { expect( - await extractPackageFile('nothing here', '.gitlab-ci.yml', {}) + extractPackageFile('nothing here', '.gitlab-ci.yml', {}) ).toBeNull(); }); - it('extracts multiple include blocks', async () => { - const res = await extractPackageFile(yamlFile, '.gitlab-ci.yml', {}); + it('extracts multiple include blocks', () => { + const res = extractPackageFile(yamlFile, '.gitlab-ci.yml', {}); expect(res.deps).toMatchSnapshot(); expect(res.deps).toHaveLength(3); }); - it('extracts local include block', async () => { - const res = await extractPackageFile(yamlLocal, '.gitlab-ci.yml', {}); - expect(res.deps).toMatchSnapshot(); - expect(res.deps).toHaveLength(1); - }); - it('extracts multiple local include blocks', async () => { - const res = await extractPackageFile( - yamlLocalBlock, - '.gitlab-ci.yml', - {} - ); - expect(res.deps).toMatchSnapshot(); - expect(res.deps).toHaveLength(2); - }); - it('normalizes configured endpoints', async () => { + it('normalizes configured endpoints', () => { const endpoints = [ 'http://gitlab.test/api/v4', 'http://gitlab.test/api/v4/', ]; for (const endpoint of endpoints) { - const res = await extractPackageFile(yamlFile, '.gitlab-ci.yml', { + const res = extractPackageFile(yamlFile, '.gitlab-ci.yml', { endpoint, }); expect(res.deps[0].registryUrls[0]).toEqual('http://gitlab.test'); diff --git a/lib/manager/gitlabci-include/extract.ts b/lib/manager/gitlabci-include/extract.ts index 702081356dde09..2d5b6c0cf76467 100644 --- a/lib/manager/gitlabci-include/extract.ts +++ b/lib/manager/gitlabci-include/extract.ts @@ -3,9 +3,7 @@ import yaml from 'js-yaml'; import * as datasourceGitlabTags from '../../datasource/gitlab-tags'; import { logger } from '../../logger'; import { SkipReason } from '../../types'; -import { readLocalFile } from '../../util/fs'; import { ExtractConfig, PackageDependency, PackageFile } from '../common'; -import * as gitlabci from '../gitlabci/extract'; function extractDepFromIncludeFile(includeObj: { file: any; @@ -25,19 +23,11 @@ function extractDepFromIncludeFile(includeObj: { return dep; } -async function extractDepsFromIncludeLocal(includeObj: { - local: string; -}): Promise { - const content = await readLocalFile(includeObj.local, 'utf8'); - const deps = gitlabci.extractPackageFile(content)?.deps; - return deps; -} - -export async function extractPackageFile( +export function extractPackageFile( content: string, _packageFile: string, config: ExtractConfig -): Promise { +): PackageFile | null { const deps: PackageDependency[] = []; try { // TODO: fix me @@ -50,13 +40,6 @@ export async function extractPackageFile( dep.registryUrls = [config.endpoint.replace(/\/api\/v4\/?/, '')]; } deps.push(dep); - } else if (includeObj.local) { - const includedDeps = await extractDepsFromIncludeLocal(includeObj); - if (includedDeps) { - for (const includedDep of includedDeps) { - deps.push(includedDep); - } - } } } } diff --git a/lib/manager/gitlabci/__fixtures__/gitlab-ci.2.yaml b/lib/manager/gitlabci/__fixtures__/gitlab-ci.2.yaml new file mode 100644 index 00000000000000..e69de29bb2d1d6 diff --git a/lib/manager/gitlabci/__fixtures__/gitlab-ci.3.yaml b/lib/manager/gitlabci/__fixtures__/gitlab-ci.3.yaml new file mode 100644 index 00000000000000..b977704c90999d --- /dev/null +++ b/lib/manager/gitlabci/__fixtures__/gitlab-ci.3.yaml @@ -0,0 +1,13 @@ +image: + # comment + name: renovate/renovate:19.70.8-slim + +services: + # comment + - mariadb:10.4.11 + # another comment + - other/image:1.0.0 + +include: + - local: 'lib/manager/gitlabci/__fixtures__/include.yml' + - local: 'lib/manager/gitlabci/__fixtures__/include.1.yml' diff --git a/lib/manager/gitlabci/__fixtures__/include.1.yml b/lib/manager/gitlabci/__fixtures__/include.1.yml new file mode 100644 index 00000000000000..76e4de4fa0e754 --- /dev/null +++ b/lib/manager/gitlabci/__fixtures__/include.1.yml @@ -0,0 +1,5 @@ +test: + stage: test + image: node:12 + script: + - echo test diff --git a/lib/manager/gitlabci/__fixtures__/include.yml b/lib/manager/gitlabci/__fixtures__/include.yml new file mode 100644 index 00000000000000..a4c0bb2233106f --- /dev/null +++ b/lib/manager/gitlabci/__fixtures__/include.yml @@ -0,0 +1,5 @@ +test: + stage: test + image: alpine:3.11 + script: + - echo test diff --git a/lib/manager/gitlabci/__snapshots__/extract.spec.ts.snap b/lib/manager/gitlabci/__snapshots__/extract.spec.ts.snap index cf7c455c59d31d..49c21dc44194a2 100644 --- a/lib/manager/gitlabci/__snapshots__/extract.spec.ts.snap +++ b/lib/manager/gitlabci/__snapshots__/extract.spec.ts.snap @@ -1,101 +1,177 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`lib/manager/gitlabci/extract extractPackageFile() extracts multiple image lines 1`] = ` +exports[`lib/manager/gitlabci/extract extractAllPackageFiles() extracts multiple image lines 1`] = ` Array [ Object { - "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}", - "currentDigest": undefined, - "currentValue": "2.5.0", - "datasource": "docker", - "depName": "ruby", - "depType": "image", - "replaceString": "ruby:2.5.0", - }, - Object { - "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}", - "currentDigest": undefined, - "currentValue": "latest", - "datasource": "docker", - "depName": "hadolint/hadolint", - "depType": "image", - "replaceString": "hadolint/hadolint:latest", - }, - Object { - "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}", - "currentDigest": undefined, - "currentValue": "latest", - "datasource": "docker", - "depName": "docker", - "depType": "image", - "replaceString": "docker:latest", - }, - Object { - "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}", - "currentDigest": undefined, - "currentValue": "dind", - "datasource": "docker", - "depName": "docker", - "depType": "service-image", - "replaceString": "docker:dind", - }, - Object { - "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}", - "currentDigest": undefined, - "currentValue": "latest", - "datasource": "docker", - "depName": "docker", - "depType": "image", - "replaceString": "docker:latest", - }, - Object { - "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}", - "currentDigest": undefined, - "currentValue": "dind", - "datasource": "docker", - "depName": "docker", - "depType": "service-image", - "replaceString": "docker:dind", + "deps": Array [ + Object { + "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}", + "currentDigest": undefined, + "currentValue": "2.5.0", + "datasource": "docker", + "depName": "ruby", + "depType": "image", + "replaceString": "ruby:2.5.0", + }, + Object { + "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}", + "currentDigest": undefined, + "currentValue": "latest", + "datasource": "docker", + "depName": "hadolint/hadolint", + "depType": "image", + "replaceString": "hadolint/hadolint:latest", + }, + Object { + "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}", + "currentDigest": undefined, + "currentValue": "latest", + "datasource": "docker", + "depName": "docker", + "depType": "image", + "replaceString": "docker:latest", + }, + Object { + "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}", + "currentDigest": undefined, + "currentValue": "dind", + "datasource": "docker", + "depName": "docker", + "depType": "service-image", + "replaceString": "docker:dind", + }, + Object { + "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}", + "currentDigest": undefined, + "currentValue": "latest", + "datasource": "docker", + "depName": "docker", + "depType": "image", + "replaceString": "docker:latest", + }, + Object { + "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}", + "currentDigest": undefined, + "currentValue": "dind", + "datasource": "docker", + "depName": "docker", + "depType": "service-image", + "replaceString": "docker:dind", + }, + Object { + "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}", + "currentDigest": undefined, + "currentValue": "1.15", + "datasource": "docker", + "depName": "image-name-test", + "depType": "image-name", + "replaceString": "image-name-test:1.15", + }, + ], + "packageFile": "lib/manager/gitlabci/__fixtures__/gitlab-ci.yaml", }, +] +`; + +exports[`lib/manager/gitlabci/extract extractAllPackageFiles() extracts multiple image lines with comments 1`] = ` +Array [ Object { - "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}", - "currentDigest": undefined, - "currentValue": "1.15", - "datasource": "docker", - "depName": "image-name-test", - "depType": "image-name", - "replaceString": "image-name-test:1.15", + "deps": Array [ + Object { + "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}", + "currentDigest": undefined, + "currentValue": "19.70.8-slim", + "datasource": "docker", + "depName": "renovate/renovate", + "depType": "image-name", + "replaceString": "renovate/renovate:19.70.8-slim", + }, + Object { + "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}", + "currentDigest": undefined, + "currentValue": "10.4.11", + "datasource": "docker", + "depName": "mariadb", + "depType": "service-image", + "replaceString": "mariadb:10.4.11", + }, + Object { + "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}", + "currentDigest": undefined, + "currentValue": "1.0.0", + "datasource": "docker", + "depName": "other/image", + "depType": "service-image", + "replaceString": "other/image:1.0.0", + }, + ], + "packageFile": "lib/manager/gitlabci/__fixtures__/gitlab-ci.1.yaml", }, ] `; -exports[`lib/manager/gitlabci/extract extractPackageFile() extracts multiple image lines with comments 1`] = ` +exports[`lib/manager/gitlabci/extract extractAllPackageFiles() extracts multiple included image lines 1`] = ` Array [ Object { - "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}", - "currentDigest": undefined, - "currentValue": "19.70.8-slim", - "datasource": "docker", - "depName": "renovate/renovate", - "depType": "image-name", - "replaceString": "renovate/renovate:19.70.8-slim", + "deps": Array [ + Object { + "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}", + "currentDigest": undefined, + "currentValue": "19.70.8-slim", + "datasource": "docker", + "depName": "renovate/renovate", + "depType": "image-name", + "replaceString": "renovate/renovate:19.70.8-slim", + }, + Object { + "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}", + "currentDigest": undefined, + "currentValue": "10.4.11", + "datasource": "docker", + "depName": "mariadb", + "depType": "service-image", + "replaceString": "mariadb:10.4.11", + }, + Object { + "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}", + "currentDigest": undefined, + "currentValue": "1.0.0", + "datasource": "docker", + "depName": "other/image", + "depType": "service-image", + "replaceString": "other/image:1.0.0", + }, + ], + "packageFile": "lib/manager/gitlabci/__fixtures__/gitlab-ci.3.yaml", }, Object { - "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}", - "currentDigest": undefined, - "currentValue": "10.4.11", - "datasource": "docker", - "depName": "mariadb", - "depType": "service-image", - "replaceString": "mariadb:10.4.11", + "deps": Array [ + Object { + "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}", + "currentDigest": undefined, + "currentValue": "3.11", + "datasource": "docker", + "depName": "alpine", + "depType": "image", + "replaceString": "alpine:3.11", + }, + ], + "packageFile": "lib/manager/gitlabci/__fixtures__/include.yml", }, Object { - "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}", - "currentDigest": undefined, - "currentValue": "1.0.0", - "datasource": "docker", - "depName": "other/image", - "depType": "service-image", - "replaceString": "other/image:1.0.0", + "deps": Array [ + Object { + "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}", + "commitMessageTopic": "Node.js", + "currentDigest": undefined, + "currentValue": "12", + "datasource": "docker", + "depName": "node", + "depType": "image", + "replaceString": "node:12", + }, + ], + "packageFile": "lib/manager/gitlabci/__fixtures__/include.1.yml", }, ] `; diff --git a/lib/manager/gitlabci/extract.spec.ts b/lib/manager/gitlabci/extract.spec.ts index 269e4d30e44be1..6242d45e0499e5 100644 --- a/lib/manager/gitlabci/extract.spec.ts +++ b/lib/manager/gitlabci/extract.spec.ts @@ -1,34 +1,61 @@ -import { readFileSync } from 'fs'; -import { extractPackageFile } from './extract'; - -const yamlFile = readFileSync( - 'lib/manager/gitlabci/__fixtures__/gitlab-ci.yaml', - 'utf8' -); - -const yamlFile1 = readFileSync( - 'lib/manager/gitlabci/__fixtures__/gitlab-ci.1.yaml', - 'utf8' -); +import { PackageDependency } from '../common'; +import { extractAllPackageFiles } from './extract'; describe('lib/manager/gitlabci/extract', () => { - describe('extractPackageFile()', () => { - it('returns null for empty', () => { - expect(extractPackageFile('nothing here')).toBeNull(); + describe('extractAllPackageFiles()', () => { + it('returns null for empty', async () => { + expect( + await extractAllPackageFiles({}, [ + 'lib/manager/gitlabci/__fixtures__/gitlab-ci.2.yaml', + ]) + ).toBeNull(); + }); + it('extracts multiple included image lines', async () => { + const res = await extractAllPackageFiles({}, [ + 'lib/manager/gitlabci/__fixtures__/gitlab-ci.3.yaml', + ]); + expect(res).toMatchSnapshot(); + expect(res).toHaveLength(3); + + const deps: PackageDependency[] = []; + res.forEach((e) => { + e.deps.forEach((d) => { + deps.push(d); + }); + }); + expect(deps).toHaveLength(5); }); - it('extracts multiple image lines', () => { - const res = extractPackageFile(yamlFile); - expect(res.deps).toMatchSnapshot(); - expect(res.deps).toHaveLength(7); - expect(res.deps.some((dep) => dep.currentValue.includes("'"))).toBe( - false - ); + it('extracts multiple image lines', async () => { + const res = await extractAllPackageFiles({}, [ + 'lib/manager/gitlabci/__fixtures__/gitlab-ci.yaml', + ]); + expect(res).toMatchSnapshot(); + expect(res).toHaveLength(1); + + const deps: PackageDependency[] = []; + res.forEach((e) => { + e.deps.forEach((d) => { + deps.push(d); + }); + }); + expect(deps).toHaveLength(7); + + expect(deps.some((dep) => dep.currentValue.includes("'"))).toBe(false); }); + it('extracts multiple image lines with comments', async () => { + const res = await extractAllPackageFiles({}, [ + 'lib/manager/gitlabci/__fixtures__/gitlab-ci.1.yaml', + ]); + expect(res).toMatchSnapshot(); + expect(res).toHaveLength(1); - it('extracts multiple image lines with comments', () => { - const res = extractPackageFile(yamlFile1); - expect(res.deps).toMatchSnapshot(); - expect(res.deps).toHaveLength(3); + const deps: PackageDependency[] = []; + res.forEach((e) => { + e.deps.forEach((d) => { + deps.push(d); + }); + }); + expect(deps).toHaveLength(3); }); }); }); diff --git a/lib/manager/gitlabci/extract.ts b/lib/manager/gitlabci/extract.ts index b3361db186db30..7357a965b9412b 100644 --- a/lib/manager/gitlabci/extract.ts +++ b/lib/manager/gitlabci/extract.ts @@ -1,5 +1,8 @@ +import is from '@sindresorhus/is'; +import yaml from 'js-yaml'; import { logger } from '../../logger'; -import { PackageDependency, PackageFile } from '../common'; +import { readLocalFile } from '../../util/fs'; +import { ExtractConfig, PackageDependency, PackageFile } from '../common'; import { getDep } from '../dockerfile/extract'; function skipCommentLines( @@ -79,3 +82,49 @@ export function extractPackageFile(content: string): PackageFile | null { } return { deps }; } + +export async function extractAllPackageFiles( + config: ExtractConfig, + packageFiles: string[] +): Promise { + const filesToExamine = new Set(packageFiles); + const results: PackageFile[] = []; + + // extract all includes from the files + for (const file of packageFiles) { + const content = await readLocalFile(file, 'utf8'); + const doc = yaml.safeLoad(content, { json: true }) as any; + if (doc?.include && is.array(doc.include)) { + for (const includeObj of doc.include) { + if (includeObj.local) { + filesToExamine.add((includeObj.local as string).replace(/^\//, '')); + } + } + } + } + + logger.trace( + { packageFiles, files: filesToExamine.entries() }, + 'extracted all GitLab CI files' + ); + + while (filesToExamine.size > 0) { + const packageFile = filesToExamine.values().next().value; + filesToExamine.delete(packageFile); + + const content = await readLocalFile(packageFile, 'utf8'); + const result = extractPackageFile(content); + if (result !== null) { + results.push({ + packageFile, + deps: result.deps, + }); + } + } + + if (!results.length) { + return null; + } + + return results; +} diff --git a/lib/manager/gitlabci/index.ts b/lib/manager/gitlabci/index.ts index a37df1e2146725..9facb5581a6d13 100644 --- a/lib/manager/gitlabci/index.ts +++ b/lib/manager/gitlabci/index.ts @@ -1,9 +1,9 @@ import { LANGUAGE_DOCKER } from '../../constants/languages'; -import { extractPackageFile } from './extract'; +import { extractAllPackageFiles, extractPackageFile } from './extract'; const language = LANGUAGE_DOCKER; -export { extractPackageFile, language }; +export { extractAllPackageFiles, extractPackageFile, language }; export const defaultConfig = { fileMatch: ['^\\.gitlab-ci\\.yml$'],