使用Renovate对 stylelint包进行分组
使用Renovate时,我想把 stylelint 包的更新,与其相关的编码规范依赖合并分组,以避免跨越分离合并请求时出现循环依赖解析冲突。
我在 packageRules 节下尝试了两种方法。
第一种,手动:
{
groupName: "stylelint packages",
groupSlug: "stylelint",
matchCategories: ["js"],
matchPackageNames: [
'stylelint',
'stylelint-config-recommended',
'stylelint-config-standard',
]
}
然后,使用预定义的 packages:stylelint 供应商预设:
{
extends: ["packages:stylelint"],
groupName: "stylelint packages",
groupSlug: "stylelint",
},
都不起作用,Renovate仍然在提出两个分开的更新:
如果我在列表中同时选择这两个提议,就会创建两个独立的合并请求。
我该如何解决这个问题?
以下是其余的配置,以防这里的某些设置导致行为与预期不符:
const prBodyColumns = [
'Package',
'Type',
'Update',
'Change',
];
/**
* @see https://docs.renovatebot.com/self-hosted-configuration/
* @see https://docs.renovatebot.com/configuration-options/
* @see https://docs.renovatebot.com/config-presets/
*/
module.exports = {
extends: [
':pinAllExceptPeerDependencies',
':dependencyDashboard',
':ignoreModulesAndTests',
':semanticCommits',
':separateMultipleMajorReleases',
'group:monorepos',
'group:recommended',
'workarounds:all',
],
timezone: 'Europe/Paris',
autodiscover: false,
npmrc: '@ss-open:registry=https://gitlab.com/api/v4/packages/npm/',
persistRepoData: true,
onboarding: false,
platform: 'gitlab',
platformAutomerge: true,
automergeType: 'pr',
prConcurrentLimit: 10,
gitLabIgnoreApprovals: true,
requireConfig: 'optional',
commitBodyTable: true,
stabilityDays: 3,
major: {
dependencyDashboardApproval: true,
gitLabIgnoreApprovals: false,
},
prBodyDefinitions: {
// @see https://github.com/whitesource/merge-confidence/blob/main/beta.json
Age: "[](https://docs.renovatebot.com/merge-confidence/)",
Adoption: "[](https://docs.renovatebot.com/merge-confidence/)",
Passing: "[](https://docs.renovatebot.com/merge-confidence/)",
Confidence: "[](https://docs.renovatebot.com/merge-confidence/)",
},
// https://sourcegraph.com/search/badge?q=repo:github.com/babel/babel+case:yes+-file:package-lock.json+babel/babel&label=matches
// https://sourcegraph.com/search?q=repo:github.com/babel/babel+case:yes+-file:package-lock.json+babel/babel
prBodyColumns,
hostRules: [
{
hostType: 'npm',
matchHost: 'https://gitlab.com/api/v4/packages/npm/',
token: process.env.GITLAB_TOKEN,
},
{
matchHost: process.env.CI_REGISTRY,
username: process.env.GITLAB_USER,
password: process.env.GITLAB_TOKEN,
},
],
packageRules: [
// @see https://github.com/renovatebot/renovate/issues/7879
{
matchDatasources: ['maven', 'npm', 'pypi'],
updateTypes: ['patch', 'minor', 'major'],
prBodyColumns: [
...prBodyColumns,
'Age',
'Adoption',
'Passing',
'Confidence',
],
},
{
matchManagers: [
'composer',
'npm',
],
matchDepTypes: [
'dependencies',
'peerDependencies',
'require',
],
semanticCommitType: 'fix',
},
// Weekly schedule
{
schedule: [
'before 4am on Monday',
],
matchPackageNames: [
'bridgecrew/checkov',
'renovate/renovate',
],
},
// Monthly schedule
{
schedule: [
'before 4am on the first day of the month',
],
matchPackageNames: [
'eslint',
],
matchPackagePrefixes: [
'ss-open/',
'@ss-open/',
'registry.gitlab.com/ss-open/',
],
},
{
matchPackagePrefixes: [
'ss-open/',
'@ss-open/',
],
dependencyDashboardApproval: false,
stabilityDays: 0,
prBodyColumns,
},
{
matchManagers: [
'gitlabci-include',
],
semanticCommitType: 'ci',
semanticCommitScope: null,
},
{
matchUpdateTypes: [
'minor',
'patch',
'pin',
],
matchDepTypes: [
'devDependencies',
'require-dev',
'repository',
],
matchPackageNames: [
'eslint',
'typescript',
],
matchPackagePrefixes: [
'@ss-open/',
'@types/',
'@typescript-eslint/',
'eslint-',
'eslint-',
'ss-open/',
],
matchPackagePatterns: [
'/ss-open/',
],
automerge: true,
},
// The following packages can not be updated because of the Expo constraints.
// @see https://github.com/renovatebot/renovate/issues/7417
{
matchSourceUrlPrefixes: [
'https://github.com/expo',
],
updateTypes: ['patch', 'minor', 'major'],
enabled: false,
},
{
matchPackageNames: [
'@react-native-community/datetimepicker',
'@types/react-native',
'react-native',
'react-native-gesture-handler',
'react-native-maps',
'react-native-reanimated',
'react-native-safe-area-context',
'react-native-screens',
'react-native-svg',
'react-native-web',
],
updateTypes: ['patch', 'minor', 'major'],
matchManagers: ['npm'],
enabled: false,
},
// STYLELINT PACKAGE RULES CONFIG -> See previous code block on the post.
],
};
由于该项目是开源的,您可以在此处查看相关的进行中的合并请求:https://gitlab.com/ss-open/scheduling/-/merge_requests/84
解决方案
配置块是正确的,问题出在软件包与已激活的 :separateMultipleMajorReleases 之间的主版本差异。因此,Renovate尝试将它们分组,但由于版本差异被迫将合并请求分开。
我们可以通过确保在 packageRules 配置块中不出现分离的版本发布来解决,如下所示:
{
extends: ["packages:stylelint"],
groupName: "stylelint packages",
groupSlug: "stylelint",
separateMajorMinor: false,
separateMultipleMajor: false,
}
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。
