
Renovate is a tool to track your project dependencies and create merge/pull request for them. It works perfectly for most common packages managers, but...
Shopware version schema
Shopware is using a custom versioning schema. You can read the official article, but in short:
Shopware implemented SemVer as "SemVer with benefits".
A SemVer compliant version has three numbers: Major, Minor, and Patch. They are incremented following this ruleset:
- MAJOR: Incompatible API changes are made
- MINOR: Functionality is added in a backward-compatible manner
- PATCH: Backward-compatible bug fixes are made
The "with benefits" part is: We keep the big marketing number. So Shopware 6 still is the product, but there's a Shopware 6.3.0.0. With 3.0.0 being the SemVer part.
Renovate configuration
The "big marketing number"
or "generation"
is reflected in Renovate as compatibility
The following configuration will:
- Group all shopware specific updates
- Group the updates as
shopware
- Tell Renovate how to extract the version
- Tell Renovate where to find changelog information
renovate.json
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"packageRules": [
{
"description": "Follow Shopware version schema",
"matchDatasources": [
"packagist"
],
"matchPackageNames": [
"shopware/administration",
"shopware/core",
"shopware/elasticsearch",
"shopware/storefront"
],
"groupName": "shopware",
"versioning": "regex:(?<compatibility>\\d+)\\.(?<major>\\d+)(\\.(?<minor>\\d+))?(\\.(?<patch>\\d+))?$",
"changelogUrl": "https://github.com/shopware/platform/blob/trunk/CHANGELOG.md"
}
]
}
This should result in creation of following merge/pull requests
- fix(deps): update shopware (
shopware/administration
,shopware/core
,shopware/elasticsearch
,shopware/storefront
)` - fix(deps): update shopware to v7 (major) (
shopware/administration
,shopware/core
,shopware/elasticsearch
,shopware/storefront
)`