v1.34.0
These are the release notes for the v1.34.0 release of Backstage.
A huge thanks to the whole team of maintainers and contributors as well as the amazing Backstage Community for the hard work in getting this release developed and done.
Highlights
BREAKING: New version of keyv
, Redis
Our builtin core cache service is based on keyv
, whose redis integration has been upgraded. This fixes issues that the old version had especially in relation to redis sets. If you were setting useRedisSets: false
, note that the layout of your key space may be slightly affected after this change.
Contributed by @eipc16 in #27716, and more information can be found within that changeset.
BREAKING: Route change for notifications
If you are interacting directly with the notifications
backend plugin API, it now no longer uses the /
root route but rather a /notifications
sub-route. This aligns it with our standards. The old routes are still available in the notifications backend, but the frontend will use the new routes.
BREAKING: Scaffolder Gitlab module
We’ve upgraded to the most recent version of the gitbeaker
library that speaks to Gitlab. In doing so, the scopes
parameter of the gitlab:projectDeployToken:create
action is no longer optional, so you will have to pass it a value (for example ['read_repository']
).
Catalog performance improvements
Since last month’s release, we have been putting a lot of focus on catalog performance, scouring through the metrics and improving several standout peaks. Among other things you may find that provider ’delta’
mutations as well as some API calls are significantly faster.
There is also a new experimental catalog.disableRelationsCompatibility
configuration option that, when set to true
, avoids JSON deserialization and serialization if possible when reading entities. This significantly reduces the memory usage of the catalog, and slightly increases performance, but it removes the backwards compatibility processing that ensures that both entity.relation[].target
and entity.relation[].targetRef
are present in returned entities. Do let us know if you find any problems in case you feel adventurous and enable this flag! Just be aware that the API response shape does change slightly if you do, as outlined above.
Direct Google CloudSQL Postgres support
You can now connect directly to your Google CloudSQL Postgres databases with IAM auth, without having to use sidecars or similar proxies. Update your backend.database.connection
:
connection:
type: cloudsql
instance: my-project:europe-west1:a-db-instance
# ... other settings
New integration: Azure blob storage
Azure blob storage is now better supported, both in terms of a low level integration package addition, as well as gaining a catalog entity provider that can read directly out of your storages. Head straight to the docs if this sounds interesting.
Contributed by @Nikunj0601 in #27850
Lifecycle and health
The default readiness endpoint now immediately starts returning HTTP 503 errors when the process is asked to shut down. Pairing this with the backend.lifecycle.serverShutdownDelay
configuration option allows you to let your ingress detect the impending shutdown and drain traffic gracefully before the service finally stops. This helps with zero-downtime deployments.
On the path to implementing that, the coreServices.rootLifecycle
service gained a new addBeforeShutdownHook
method whose registered hooks will run immediately when a termination signal is received. The backend will not proceed with the shutdown and run the regular Shutdown
hooks until all BeforeShutdown
hooks have completed.
If you were using the startupRequestPauseTimeout
setting of the lifecycle service in code, you should now instead set it in the backend.lifecycle.startupRequestPauseTimeout
config, next to the one mentioned above.
Bitbucket API throttling
The Bitbucket integration (URL reader and catalog provider) now apply throttling to outgoing requests, to avoid hitting rate limits. Let us know how it affected your service!
Contributed by @kjjuno in #27850
Support for custom service-to-service tokens
Do you have a pre-existing service-to-service auth scheme that you would like Backstage installations to leverage instead of only the native Backstage tokens? There’s now a plugin token handler decorator interface that allows for injecting yourself in just the right spot in the auth chain, without having to reimplement the whole auth
core service. It’s all covered in the docs!
Further improvements to the yarn plugin
The yarn plugin received a number of updates, making it more conformant with yarn semantics. It now works better behind corporate proxies and uses an improved way of persisting resolutions in the lockfile. On top of it all, its on-disk footprint was reduced massively.
If you use the classical yarn backstage-cli versions:bump
command, it now also ensures that the installed plugin itself stays updated with the latest and greatest without any further action on your part.
Contributed by @mtlewis over several pull requests.
Removing node-fetch
in the backend
ADR014 replaces its predecessor ADR to recommend using native undici
-based fetch
instead of node-fetch
in all backend packages. As a result we have almost entirely performed that shift in our core libraries and plugins, and recommend that plugin authors and adopters do the same when they can.
This change should not be noticeable for most adopters. If you see any ill effects of it, please report it to the maintainers.
Security Fixes
This release does not contain any security fixes.
Upgrade path
We recommend that you keep your Backstage project up to date with this latest release. For more guidance on how to upgrade, check out the documentation for keeping Backstage updated.
Links and References
Below you can find a list of links and references to help you learn about and start using this new release.
- Backstage official website, documentation, and getting started guide
- GitHub repository
- Backstage's versioning and support policy
- Community Discord for discussions and support
- Changelog
- Backstage Demos, Blog, Roadmap and Plugins
Sign up for our newsletter if you want to be informed about what is happening in the world of Backstage.