diff --git a/lib/manager/gitlabci/__fixtures__/gitlab-ci.5.yaml b/lib/manager/gitlabci/__fixtures__/gitlab-ci.5.yaml new file mode 100644 index 00000000000000..488485385ee986 --- /dev/null +++ b/lib/manager/gitlabci/__fixtures__/gitlab-ci.5.yaml @@ -0,0 +1,10 @@ +image: + # comment + name: renovate/renovate:19.70.8-slim + +services: + # comment + - mariadb:10.4.11 + # another comment + - name: other/image:1.0.0 + alias: imagealias diff --git a/lib/manager/gitlabci/__snapshots__/extract.spec.ts.snap b/lib/manager/gitlabci/__snapshots__/extract.spec.ts.snap index 89a2a0259235a0..bb3fedc1113f03 100644 --- a/lib/manager/gitlabci/__snapshots__/extract.spec.ts.snap +++ b/lib/manager/gitlabci/__snapshots__/extract.spec.ts.snap @@ -174,3 +174,40 @@ Array [ }, ] `; + +exports[`manager/gitlabci/extract extractAllPackageFiles() extracts named services 1`] = ` +Array [ + Object { + "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.5.yaml", + }, +] +`; diff --git a/lib/manager/gitlabci/extract.spec.ts b/lib/manager/gitlabci/extract.spec.ts index 1c624c5635148b..d739dcaae0329b 100644 --- a/lib/manager/gitlabci/extract.spec.ts +++ b/lib/manager/gitlabci/extract.spec.ts @@ -28,6 +28,15 @@ describe(getName(), () => { expect(deps).toHaveLength(5); }); + it('extracts named services', async () => { + const res = await extractAllPackageFiles({}, [ + 'lib/manager/gitlabci/__fixtures__/gitlab-ci.5.yaml', + ]); + expect(res).toMatchSnapshot(); + expect(res).toHaveLength(1); + expect(res[0].deps).toHaveLength(3); + }); + it('extracts multiple image lines', async () => { const res = await extractAllPackageFiles({}, [ 'lib/manager/gitlabci/__fixtures__/gitlab-ci.yaml', diff --git a/lib/manager/gitlabci/extract.ts b/lib/manager/gitlabci/extract.ts index 356d94176eecca..35eb6470b9e41c 100644 --- a/lib/manager/gitlabci/extract.ts +++ b/lib/manager/gitlabci/extract.ts @@ -61,7 +61,7 @@ export function extractPackageFile(content: string): PackageFile | null { foundImage = false; const serviceImageLine = skipCommentLines(lines, lineNumber + 1); logger.trace(`serviceImageLine: "${serviceImageLine.line}"`); - const serviceImageMatch = /^\s*-\s*'?"?([^\s'"]+)'?"?\s*$/.exec( + const serviceImageMatch = /^\s*-\s*(?:name:\s*)?'?"?([^\s'"]+)'?"?\s*$/.exec( serviceImageLine.line ); if (serviceImageMatch) {