diff --git a/.github/vale/Vocab/Backstage/accept.txt b/.github/vale/Vocab/Backstage/accept.txt index 554c464259..901e890318 100644 --- a/.github/vale/Vocab/Backstage/accept.txt +++ b/.github/vale/Vocab/Backstage/accept.txt @@ -312,6 +312,8 @@ rsync ruleset runbook sam +sandbox +sandboxing sanitization scaffolded scaffolder diff --git a/docs/releases/v1.15.0.md b/docs/releases/v1.15.0.md new file mode 100644 index 0000000000..eeeec51a82 --- /dev/null +++ b/docs/releases/v1.15.0.md @@ -0,0 +1,202 @@ +--- +id: v1.15.0 +title: v1.15.0 +description: Backstage Release v1.15.0 +--- + +These are the release notes for the v1.15.0 release of +[Backstage](https://backstage.io/). + +A huge thanks to the whole team of maintainers and contributors as well as the +amazing Backstage Community for their hard work in getting this release +developed and done. + +## Highlights + +This release has a few important security fixes, along with a lot of squashed +bugs and exciting additions as usual! Enjoy. + +### **BREAKING**: Scaffolder build requirements + +The Scaffolder backend uses a sandboxing environment to run its `nunjucks` +templating in, for security reasons. This used to leverage the `vm2` library, +but in this release it has been replaced by `isolated-vm`. This significantly +improves the confidence level in the sandbox implementation since it builds upon +`v8` isolates directly. However, it comes with a cost to implementers: it is a +native dependency, and as such needs to be built during `yarn` installation, on +the exact architecture that it then executes on. For those who compile and run +Backstage on stripped-down environments, you will want to ensure that you have +the build basics present, e.g. `build-essential` or similar corresponding to +your operating system of choice. The `isolated-vm` repo has [some further +information](https://github.com/laverdet/isolated-vm#requirements) about the +build environment requirements. + +There is a [CVE-2022-39266](https://www.cve.org/CVERecord?id=CVE-2022-39266) +that has been reported for `isolated-vm`, which applies only when using +`CachedDataOptions`. We do not use that feature at all, since it is recommended +against in the [README](https://github.com/laverdet/isolated-vm#shared-options); +doing so can lead to breakouts and calling back to the main process. Some +security tools may report that this is a vulnerability but it is safe to ignore +this through your `.snyk` policy file or similar. + +### **BREAKING**: `@backstage/plugin-linguist-backend` + +There have been some significant updates to the Linguist plugin, in particular +the backend and its API. One breaking change is that `LinguistBackendApi` is now +an interface rather than a class, and you should create its implementation +`LinguistBackendClient` instead. + +Contributed by [@ahhhndre](https://github.com/ahhhndre) in +[#16954](https://github.com/backstage/backstage/pull/16954) + +### **BREAKING**: `@backstage/plugin-github-actions` + +In order to make this plugin support GitHub enterprise as well as cloud, its +`GithubActionsClient` is updated to take an `scmAuthApi` instead of the previous +`githubAuthApi`. + +Contributed by [@koalaty-code](https://github.com/koalaty-code) in +[#17781](https://github.com/backstage/backstage/pull/17781) + +### New module: Unprocessed Entities + +This frontend plugin and accompanying backend module lets you peek under the +covers of your catalog instance, finding those pesky unprocessed entities that +may be stuck in limbo because of an otherwise tricky-to-debug validation issue +or similar. + +Check out [the plugin’s +README](https://github.com/backstage/backstage/blob/master/plugins/catalog-unprocessed-entities/README.md) +for details and installation instructions. + +Contributed by [@alde](https://github.com/alde) in +[#17828](https://github.com/backstage/backstage/pull/17828) + +### More movement toward Material-UI v5 and React v18 compatibility + +There have been some tweaks here or there to types and the theme system to +ensure a smooth future migration toward Material-UI version 5. This should be +mostly transparent to adopters, but please let us know if you encounter any +oddities around the theme system after upgrading to this release. + +To ensure your future compatibility with v5 plugins, you may want to upgrade +your theme provider to use the new unified one: + +```diff + Provider: ({ children }) => ( +- +- {children} +- ++ + ), +``` + +We’ve also ensured to be more thorough with how we use `PropsWithChildren` to +ensure that there’s a smooth transition to the non-implicit children in the +React v18 types. + +### New Backend System lifecycle changes + +When using [the new Backend system](https://backstage.io/docs/backend-system/), +plugins are now started up concurrently instead of serially. This improves +startup times significantly in some cases. + +If you were relying on feature registration order to make sure that one plugin +was completely initialized before being consumed by other plugins, we at the +same time introduced a new `addStartupHook` method to the +`coreServices.lifecycle` that you can use instead to act after all plugin +initializations have completed. + +At the same time, the default HTTP server implementation adds a middleware to +the top of the chain, which stalls incoming requests for a short period of time +while waiting for service startup. If it takes longer than that predefined time, +it responds with a `503 Service Unavailable` error. The end result is that as +long as startup is typically fast, callers should only see slightly higher +turnaround times for requests to services that are starting up, instead of +getting 404 errors or similar which was often the case in the past. + +### Azure identity improvements + +On the Azure front, there’s been work toward ensuring support for service +principals, managed identities, and workload identities. + +Contributed by [@sanderaernouts](https://github.com/sanderaernouts) in +[#17780](https://github.com/backstage/backstage/pull/17780) and +[@afscrome](https://github.com/afscrome) in +[#18324](https://github.com/backstage/backstage/pull/18324) + +### Resource utilization and error display for k8s pods + +You can now see some resource utilization statistics and errors, where present, +for your Kubernetes pods. + +Contributed by [@mclarke47](https://github.com/mclarke47) in +[#17563](https://github.com/backstage/backstage/pull/17563) and +[#18169](https://github.com/backstage/backstage/pull/18169) + +### Printable TechDocs + +There have been some changes to the TechDocs styles, to properly handle `print` +media. This should make PDF exports and printing of documentation work better. +Let us know how it goes! + +Contributed by [@maapteh](https://github.com/maapteh) in +[#18007](https://github.com/backstage/backstage/pull/18007) + +### OpenAPI linting + +The `backstage-repo-tools` CLI’s OpenAPI features now have a new `lint` +subcommand. This lets you automatically lint the OpenAPI schemas of plugins for +correctness and best practices. + +Contributed by [@sennyeya](https://github.com/sennyeya) in +[#18185](https://github.com/backstage/backstage/pull/18185) + +### Catalog conflict events (experimental) + +If you pass in an event broker to the catalog backend, it now has the +experimental ability to emit events onto the event bus describing entity +conflicts as they happen internally. This can then be observed and acted upon by +external consumers. + +Contributed by [@sblausten](https://github.com/sblausten) in +[#16977](https://github.com/backstage/backstage/pull/16977) + +## Security Fixes + +- See the note above about the Scaffolder replacing `vm2` with `isolated-vm`. +- There were some cases where sensitive configuration settings could be seen by + the browser. The configuration schemas have been tightened up accordingly in a + few places to counter this. +- The TechDocs base Docker image has been upgraded to include a few security + fixes. This will get picked up automatically for future Docker based TechDocs + runs, after upgrading Backstage. + +## 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](https://backstage.io/docs/getting-started/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](https://backstage.io/), + [documentation](https://backstage.io/docs/), and [getting started + guide](https://backstage.io/docs/getting-started/) +- [GitHub repository](https://github.com/backstage/backstage) +- Backstage's [versioning and support + policy](https://backstage.io/docs/overview/versioning-policy) +- [Community Discord](https://discord.gg/backstage-687207715902193673) for + discussions and support +- [Changelog](https://github.com/backstage/backstage/tree/master/docs/releases/v1.15.0-changelog.md) +- Backstage [Demos](https://backstage.io/demos), + [Blog](https://backstage.io/blog), + [Roadmap](https://backstage.io/docs/overview/roadmap) and + [Plugins](https://backstage.io/plugins) + +Sign up for our [newsletter](https://mailchi.mp/spotify/backstage-community) if +you want to be informed about what is happening in the world of Backstage. diff --git a/microsite/docusaurus.config.js b/microsite/docusaurus.config.js index 9985796e3f..a13168472d 100644 --- a/microsite/docusaurus.config.js +++ b/microsite/docusaurus.config.js @@ -173,7 +173,7 @@ module.exports = { position: 'left', }, { - to: 'docs/releases/v1.14.0', + to: 'docs/releases/v1.15.0', label: 'Releases', position: 'left', },