-
Notifications
You must be signed in to change notification settings - Fork 65
Version Updates
This guide covers the process of updating Backstage target and minimum versions for your plugins in the overlay repository.
The version of Backstage that the target platform is built on. Defined in versions.json:
{
"backstage": "1.45.3",
"node": "22.19.0",
"cli": "1.9.1",
"cliPackage": "@red-hat-developer-hub/cli"
}The Backstage version your plugin is compatible with:
spec:
backstage:
supportedVersions: 1.42.5 # Plugin was built/tested against this versionThe Backstage version the source repository uses:
{
"repo-backstage-version": "1.45.0"
}Your plugin's source Backstage version should be less than or equal to the target:
source repo-backstage-version β€ versions.json backstage
1.45.0 β€ 1.45.3 β
The automation performs best-effort version matching:
| Scenario | Result |
|---|---|
| Exact match available | β Used directly |
| Older version available | |
| Newer only available | β Blocked |
Warning: Best-effort matches require additional testing. A bot comment will appear on PRs with version mismatches.
With each Backstage monthly release:
- Check if your plugin has a compatible release
-
Update
source.json:repo-refto the new version -
Update
source.json:repo-backstage-version -
Update
metadata/*.yaml:spec.version -
Update
metadata/*.yaml:spec.backstage.supportedVersions -
Test with
/publishand/test
At minimum, update every quarter to ensure:
- Security patches are included
- Breaking changes are addressed before they accumulate
- Plugins remain compatible with platform releases
cat versions.json | jq '.backstage'
# "1.45.3"# For community-plugins, list available versions
git ls-remote --tags https://github.com/backstage/community-plugins \
| grep "@backstage-community/plugin-your-plugin@" \
| tail -10For Backstage core plugins, check the Backstage releases.
# Check what Backstage version the plugin release uses
curl -s "https://raw.githubusercontent.com/backstage/community-plugins/@backstage-community/plugin-your-plugin@1.2.3/workspaces/your-workspace/backstage.json" | jq '.version'{
"repo": "https://github.com/backstage/community-plugins",
"repo-ref": "@backstage-community/plugin-your-plugin@1.2.3",
"repo-flat": false,
"repo-backstage-version": "1.45.0"
}For each file in metadata/*.yaml:
spec:
version: 1.2.3 # Match new plugin version
backstage:
supportedVersions: 1.45.0 # Match source Backstage version# Create PR and trigger build
git checkout -b update-your-plugin-version
git add .
git commit -m "chore: update your-plugin to 1.2.3 (Backstage 1.45.0)"
git push origin update-your-plugin-version
# Open PR, then comment:
# /publish
# /testWhen Backstage releases a major version (e.g., 1.x β 2.x):
- Review Backstage changelog for breaking changes
- Identify which breaking changes affect your plugin
- Check if upstream has released a compatible version
- Update all version references
- Create patches if source hasn't addressed breaking changes
- Update any overlays that depend on changed APIs
- Test thoroughly in a real Backstage instance
-
Run
/publishand/test - Perform manual testing if automated tests pass
- Document any migration notes in PR description
{
"backstage": "1.45.3", // Target Backstage version for all plugins
"node": "22.19.0", // Node.js version for builds
"cli": "1.9.1", // CLI tool version
"cliPackage": "@red-hat-developer-hub/cli" // CLI package name
}{
"repo": "https://github.com/backstage/community-plugins",
"repo-ref": "@backstage-community/plugin-x@1.2.3", // Exact version tag
"repo-flat": false,
"repo-backstage-version": "1.45.0" // Backstage version at this ref
}spec:
version: 1.2.3 # Plugin version (must match source)
backstage:
role: backend-plugin # Plugin role
supportedVersions: 1.45.0 # Backstage version compatibilityThe update-plugins-repo-refs.yaml workflow runs daily and:
- Scans for new plugin releases
- Checks compatibility with target Backstage version
- Creates/updates PRs with version bumps
gh workflow run update-plugins-repo-refs.yaml \
-f regexps="@backstage-community/plugin-your-plugin" \
-f single-branch="main"The repository displays a compatibility badge:
This badge shows whether mandatory plugins are compatible with the target version.
- Some mandatory plugins are incompatible
- Release branch creation is blocked
- Requires version updates or patches
Cause: Plugin requires newer Backstage than the target platform supports
Solutions:
- Find an older plugin version compatible with target
- Wait for the target platform to update its Backstage version
- Create a patch to backport compatibility (advanced)
Cause: Plugin hasn't released a version for target Backstage
Solutions:
- Request upstream release for target Backstage version
- Use commit SHA instead of tag (less preferred)
- Create a fork with backported changes (last resort)
Cause: Exact Backstage version match not available
Action:
- Review the version gap
- Test thoroughly for compatibility issues
- Document any known limitations
- PR will have a bot comment explaining risks
- Tracks the next platform release
- Can accept new workspaces
- Should use latest compatible plugin versions
- Track specific platform releases
- Only accept updates to existing workspaces
- Must maintain compatibility with that release's Backstage version
To update a plugin on a release branch:
# Checkout release branch
git checkout release-1.6
# Update plugin version (use version compatible with release-1.6's Backstage)
# Edit source.json and metadata files
# Create PR against release branch
git checkout -b backport-plugin-update-1.6
git commit -m "chore: backport plugin-x update to release-1.6"
git push origin backport-plugin-update-1.6## Version Update Checklist - [Plugin Name] - [Date]
### Pre-Update
- [ ] Identified target Backstage version from versions.json
- [ ] Found compatible plugin release
- [ ] Verified plugin's Backstage version is β€ target
### Updates
- [ ] Updated source.json:repo-ref
- [ ] Updated source.json:repo-backstage-version
- [ ] Updated all metadata/*.yaml:spec.version
- [ ] Updated all metadata/*.yaml:spec.backstage.supportedVersions
- [ ] Verified patches still apply (if any exist)
### Validation
- [ ] Created PR
- [ ] /publish completed successfully
- [ ] /test passed
- [ ] Manual testing completed (if best-effort match)
- [ ] PR approved and merged- 06 - Patch Management β When version updates require patches
- 03 - Plugin Owner Responsibilities β Full ownership guide
- 64 workspaces
- 10 with patches