diff --git a/lib/manager/dockerfile/extract.js b/lib/manager/dockerfile/extract.js index fb6a226ec94141ae318a70e4c4eefc6a38ecc0aa..3950da0cd6acacac88f15ceb3edecbe2bba10198 100644 --- a/lib/manager/dockerfile/extract.js +++ b/lib/manager/dockerfile/extract.js @@ -57,7 +57,10 @@ function getDep(currentFrom) { }; const purl = getPurl(dep.dockerRegistry, dep.depName, dep.tagSuffix); dep.purl = purl; - if (dep.depName === 'node' || dep.depName.endsWith('/node')) { + if ( + (dep.depName === 'node' || dep.depName.endsWith('/node')) && + dep.depName !== 'calico/node' + ) { dep.commitMessageTopic = 'Node.js'; } return dep; diff --git a/lib/workers/repository/updates/flatten.js b/lib/workers/repository/updates/flatten.js index 10ccf0e3836266fb4fd77461b21d2146ada56317..702b331683486544111d675c046d81fcdfbd0f3e 100644 --- a/lib/workers/repository/updates/flatten.js +++ b/lib/workers/repository/updates/flatten.js @@ -63,7 +63,8 @@ function flattenUpdates(config, packageFiles) { : undefined; if ( updateConfig.language === 'docker' && - updateConfig.depName.match(/(^|\/)node$/) + updateConfig.depName.match(/(^|\/)node$/) && + updateConfig.depName !== 'calico/node' ) { updateConfig.managerBranchPrefix = ''; updateConfig.depNameSanitized = 'node'; diff --git a/test/manager/dockerfile/__snapshots__/extract.spec.js.snap b/test/manager/dockerfile/__snapshots__/extract.spec.js.snap index da952dea32bacac02538dbad1c309dd98a50b7d7..4b57e774e09837f3d3a51e63f844371ff49684b2 100644 --- a/test/manager/dockerfile/__snapshots__/extract.spec.js.snap +++ b/test/manager/dockerfile/__snapshots__/extract.spec.js.snap @@ -119,6 +119,27 @@ Array [ ] `; +exports[`lib/manager/dockerfile/extract extractDependencies() handles calico/node 1`] = ` +Array [ + Object { + "currentDepTag": "calico/node", + "currentDepTagDigest": "calico/node", + "currentDigest": undefined, + "currentFrom": "calico/node", + "currentTag": undefined, + "currentValue": undefined, + "depName": "calico/node", + "dockerRegistry": undefined, + "fromPrefix": "FROM", + "fromSuffix": "", + "lineNumber": 0, + "purl": "pkg:docker/calico/node", + "tagSuffix": undefined, + "versionScheme": "docker", + }, +] +`; + exports[`lib/manager/dockerfile/extract extractDependencies() handles comments 1`] = ` Array [ Object { diff --git a/test/manager/dockerfile/extract.spec.js b/test/manager/dockerfile/extract.spec.js index 6d929adc9127392885d5cb934b60835da7d58c01..2f04bdb793331409ef891c913cd8249216d174c1 100644 --- a/test/manager/dockerfile/extract.spec.js +++ b/test/manager/dockerfile/extract.spec.js @@ -140,5 +140,9 @@ describe('lib/manager/dockerfile/extract', () => { expect(res).toMatchSnapshot(); expect(res).toHaveLength(2); }); + it('handles calico/node', () => { + const res = extractDependencies('FROM calico/node\n', config).deps; + expect(res).toMatchSnapshot(); + }); }); }); diff --git a/test/workers/repository/updates/__snapshots__/flatten.spec.js.snap b/test/workers/repository/updates/__snapshots__/flatten.spec.js.snap index ecfaecaac9cfc8d2fdfe9a81aa2fc2a81bdbbb2c..584595b2c5ef83eb0120db80f3ded66327357037 100644 --- a/test/workers/repository/updates/__snapshots__/flatten.spec.js.snap +++ b/test/workers/repository/updates/__snapshots__/flatten.spec.js.snap @@ -290,5 +290,74 @@ Array [ "warnings": Array [], "yarnrc": null, }, + Object { + "assignees": Array [], + "automerge": false, + "automergeComment": "automergeComment", + "automergeType": "pr", + "branchName": "{{{branchPrefix}}}{{{managerBranchPrefix}}}{{{branchTopic}}}", + "branchPrefix": "renovate/", + "branchTopic": "{{{depNameSanitized}}}-{{{newMajor}}}{{#if isPatch}}.{{{newMinor}}}{{/if}}.x", + "bumpVersion": null, + "commitBody": null, + "commitMessage": "{{{commitMessagePrefix}}} {{{commitMessageAction}}} {{{commitMessageTopic}}} {{{commitMessageExtra}}} {{{commitMessageSuffix}}}", + "commitMessageAction": "Update", + "commitMessageExtra": "to {{#if isMajor}}v{{{newMajor}}}{{else}}{{#if isSingleVersion}}v{{{toVersion}}}{{else}}{{{newValue}}}{{/if}}{{/if}}", + "commitMessagePrefix": null, + "commitMessageSuffix": null, + "commitMessageTopic": "{{{depName}}} Docker tag", + "copyLocalLibs": false, + "depName": "calico/node", + "depNameSanitized": "calico-node", + "errors": Array [], + "gitAuthor": null, + "gitPrivateKey": null, + "group": Object { + "branchTopic": "{{{groupSlug}}}", + "commitMessageTopic": "{{{groupName}}} Docker tags", + "prBody": "This Pull Request updates Dockerfiles to use image digests.\\n\\n{{#if schedule}}\\n**Note**: This PR was created on a configured schedule (\\"{{{schedule}}}\\"{{#if timezone}} in timezone \`{{{timezone}}}\`{{/if}}) and will not receive updates outside those times.\\n{{/if}}\\n\\n{{#each upgrades as |upgrade|}}\\n- {{#if repositoryUrl}}[{{upgrade.depName}}]({{upgrade.repositoryUrl}}){{else}}\`{{{depName}}}\`{{/if}}: \`{{upgrade.newDigest}}\`\\n{{/each}}\\n\\n{{#if hasErrors}}\\n\\n---\\n\\n# Errors\\n\\nRenovate encountered some errors when processing your repository, so you are being notified here even if they do not directly apply to this PR.\\n\\n{{#each errors as |error|}}\\n- \`{{error.depName}}\`: {{error.message}}\\n{{/each}}\\n{{/if}}\\n\\n{{#if hasWarnings}}\\n\\n---\\n\\n# Warnings\\n\\nPlease make sure the following warnings are safe to ignore:\\n\\n{{#each warnings as |warning|}}\\n- \`{{warning.depName}}\`: {{warning.message}}\\n{{/each}}\\n{{/if}}", + }, + "groupName": null, + "groupSlug": null, + "labels": Array [], + "language": "docker", + "lazyGrouping": true, + "manager": "dockerfile", + "managerBranchPrefix": "docker-", + "newValue": "3.2.0", + "npmToken": null, + "npmrc": null, + "packageFile": "Dockerfile", + "prBody": "This Pull Request updates Docker base image \`{{{depName}}}\` from tag \`{{{currentTag}}}\` to new tag \`{{{newValue}}}{{#if tagSuffix}}-{{{tagSuffix}}}{{/if}}\`. For details on Renovate's Docker support, please visit https://renovatebot.com/docs/docker\\n\\n{{#if schedule}}\\n**Note**: This PR was created on a configured schedule (\\"{{{schedule}}}\\"{{#if timezone}} in timezone \`{{{timezone}}}\`{{/if}}) and will not receive updates outside those times.\\n{{/if}}\\n\\n{{#if hasErrors}}\\n\\n---\\n\\n# Errors\\n\\nRenovate encountered some errors when processing your repository, so you are being notified here even if they do not directly apply to this PR.\\n\\n{{#each errors as |error|}}\\n- \`{{error.depName}}\`: {{error.message}}\\n{{/each}}\\n{{/if}}\\n\\n{{#if hasWarnings}}\\n\\n---\\n\\n# Warnings\\n\\nPlease make sure the following warnings are safe to ignore:\\n\\n{{#each warnings as |warning|}}\\n- \`{{warning.depName}}\`: {{warning.message}}\\n{{/each}}\\n{{/if}}", + "prConcurrentLimit": 0, + "prCreation": "immediate", + "prHourlyLimit": 0, + "prNotPendingHours": 25, + "prTitle": null, + "raiseDeprecationWarnings": true, + "rebaseStalePrs": null, + "recreateClosed": false, + "requiredStatusChecks": Array [], + "reviewers": Array [], + "rollbackPrs": false, + "schedule": Array [], + "semanticCommitScope": "deps", + "semanticCommitType": "chore", + "semanticCommits": null, + "skipInstalls": true, + "statusCheckVerify": false, + "timezone": null, + "unpublishSafe": false, + "updateLockFiles": true, + "updateNotScheduled": true, + "vulnerabilityAlerts": Object { + "commitMessageSuffix": "[SECURITY]", + "enabled": true, + "groupName": null, + "schedule": Array [], + }, + "warnings": Array [], + "yarnrc": null, + }, ] `; diff --git a/test/workers/repository/updates/flatten.spec.js b/test/workers/repository/updates/flatten.spec.js index 3b227cc29f420fa5b2137e146f1b2359e7d1c891..b9de9e5feed62b88ae0b953214ece4400ca22773 100644 --- a/test/workers/repository/updates/flatten.spec.js +++ b/test/workers/repository/updates/flatten.spec.js @@ -41,6 +41,16 @@ describe('workers/repository/updates/flatten', () => { }, ], }, + { + packageFile: 'Dockerfile', + deps: [ + { + depName: 'calico/node', + language: 'docker', + updates: [{ newValue: '3.2.0' }], + }, + ], + }, ], }; const res = await flattenUpdates(config, packageFiles);