Backstage - release-2022-01-27
@backstage/cli@0.13.0
Minor Changes
- 1ddf6d9d5a: Removes the previously deprecated
remove-plugin
command alongside the--lax
option toapp:build
.
Patch Changes
- c372a5032f: chore(deps): bump
jest-transform-yaml
from 0.1.1 to 1.0.0 - 1b4ab0d44c: Updated the dependency warning that is baked into
app:serve
to only warn about packages that are not allowed to have duplicates. - dc46efa2cc: Switched the
WebpackDevServer
configuration to use client-side detection of the WebSocket protocol. - 10086f5873: Upgraded
webpack
,webpack-dev-server
,fork-ts-checker-webpack-plugin
,react-dev-utils
, andreact-hot-loader
. SinceForkTsCheckerWebpackPlugin
no longer runs ESLint, we now include theESLintPlugin
fromeslint-webpack-plugin
if the--check
flag is passed.
## @backstage/plugin-auth-backend@0.8.0
Minor Changes
- 67349916ac: The
sub
claim in Backstage tokens generated by the default Google and OIDC sign-in resolvers are now full entity references of the format<kind>:<namespace>/<name>
.
Patch Changes
- 033493a8af: Running the
auth-backend
on multiple domains, perhaps different domains depending on theauth.environment
, was previously not possible as thedomain
name of the cookie was taken frombackend.baseUrl
. This prevented any cookies to be set in the start of the auth flow as the domain of the cookie would not match the domain of the callbackUrl configured in the OAuth app. This change checks if a provider supports customcallbackUrl
's to be configured in the application configuration and uses the domain from that, allowing thedomain
's to match and the cookie to be set. - Updated dependencies
- @backstage/backend-common@0.10.5
## @backstage/plugin-search@0.6.0
Minor Changes
-
2f0d3d3278: Forwarding classes to HomePageSearchBar instead of using className prop. For custom styles of the HomePageSearchBar, use classes prop instead:
diff <HomePageSearchBar - className={searchBar} + classes={{ root: classes.searchBar }} placeholder="Search" />
-
1dbe63ec39: The way labels are controlled on both the
<SearchFilter.Checkbox />
and
<SearchFilter.Select />
components has changed. Previously, the string passed
on thename
prop (which controls the field being filtered on) was also
rendered as the field label. Now, if you want a label rendered, it must be
passed on the newlabel
prop. If nolabel
is provided, no label will be
rendered.
Patch Changes
-
4aca2a5307: Introduces a
<SearchFilter.Autocomplete />
variant, which can be used as either a single- or multi-select autocomplete filter.This variant, as well as
<SearchFilter.Select />
, now also supports loading allowed values asynchronously by passing a function that resolves the list of values to thevalues
prop. (An optionalvaluesDebounceMs
prop may also be provided to control the debounce time).Check the search plugin storybook to see how to leverage these new additions.
-
Updated dependencies
- @backstage/core-components@0.8.6
- @backstage/search-common@0.2.2
## @backstage/plugin-search-backend@0.4.0
Minor Changes
-
bbfbc755aa: BREAKING Added three additional required properties to
createRouter
to support filtering search results based on permissions. To make this change to an existing app, add the required parameters to thecreateRouter
call inpackages/backend/src/plugins/search.ts
:```diff
export default async function createPlugin({
logger,
+ permissions,
discovery,
config,
tokenManager,
}: PluginEnvironment) {
/ ... /return await createRouter({
engine: indexBuilder.getSearchEngine(),
+ types: indexBuilder.getDocumentTypes(),
+ permissions,
+ config,
logger,
});
}
```
Patch Changes
- Updated dependencies
- @backstage/plugin-search-backend-node@0.4.5
- @backstage/plugin-auth-backend@0.8.0
- @backstage/search-common@0.2.2
- @backstage/backend-common@0.10.5
- @backstage/plugin-permission-node@0.4.1
## @backstage/backend-common@0.10.5
Patch Changes
- de9d7eba63: Fixed configuration schema incorrectly declaring
backend.listen.address
to exist, rather thanbackend.listen.host
, which is the correct key.
## @backstage/backend-test-utils@0.1.15
Patch Changes
- Updated dependencies
- @backstage/cli@0.13.0
- @backstage/backend-common@0.10.5
## @backstage/codemods@0.1.31
Patch Changes
- Updated dependencies
- @backstage/core-components@0.8.6
- @backstage/core-app-api@0.5.1
## @backstage/core-app-api@0.5.1
Patch Changes
-
f959c22787: Asynchronous methods on the identity API can now reliably be called at any time, including early in the bootstrap process or prior to successful sign-in.
Previously in such situations, a
Tried to access IdentityApi before app was loaded
error would be thrown. Now, those methods will wait and resolve eventually (as soon as a concrete identity API is provided).
## @backstage/core-components@0.8.6
Patch Changes
- b97a2460d5: Remove the
ignoreChildEvent
utility from the sidebar component to avoid conflicts with popovers - bdc53553eb: chore(deps): bump
react-text-truncate
from 0.16.0 to 0.17.0 - 05f0f44180: chore(deps): bump
remark-gfm
from 2.0.0 to 3.0.1 - 15bac1d738: chore(deps): bump
react-markdown
from 7.1.2 to 8.0.0 - 7346b5fb96: chore(deps): bump
rc-progress
from 3.1.4 to 3.2.4 - 9abb28bb22: Fix issue where component types are not recognized causing the
MobileSidebar
to not render as intended. - 1787694435: Updates styling of Header component by removing flex wrap and add max width of characters for subtitle
## @backstage/create-app@0.4.15
Patch Changes
-
01b27d547c: Added three additional required properties to the search-backend
createRouter
function to support filtering search results based on permissions. To make this change to an existing app, add the required parameters to thecreateRouter
call inpackages/backend/src/plugins/search.ts
:```diff
export default async function createPlugin({
logger,
+ permissions,
discovery,
config,
tokenManager,
}: PluginEnvironment) {
/ ... /return await createRouter({
engine: indexBuilder.getSearchEngine(),
+ types: indexBuilder.getDocumentTypes(),
+ permissions,
+ config,
logger,
});
}
``` -
a0d446c8ec: Replaced EntitySystemDiagramCard with EntityCatalogGraphCard
To make this change to an existing app:
Add
@backstage/catalog-graph-plugin
as adependency
inpackages/app/package.json
Apply the following changes to the
packages/app/src/components/catalog/EntityPage.tsx
file:diff + import { + Direction, + EntityCatalogGraphCard, + } from '@backstage/plugin-catalog-graph'; + import { + RELATION_API_CONSUMED_BY, + RELATION_API_PROVIDED_BY, + RELATION_CONSUMES_API, + RELATION_DEPENDENCY_OF, + RELATION_DEPENDS_ON, + RELATION_HAS_PART, + RELATION_PART_OF, + RELATION_PROVIDES_API, + } from '@backstage/catalog-model';
diff <EntityLayout.Route path="/diagram" title="Diagram"> - <EntitySystemDiagramCard /> + <EntityCatalogGraphCard + variant="gridItem" + direction={Direction.TOP_BOTTOM} + title="System Diagram" + height={700} + relations={[ + RELATION_PART_OF, + RELATION_HAS_PART, + RELATION_API_CONSUMED_BY, + RELATION_API_PROVIDED_BY, + RELATION_CONSUMES_API, + RELATION_PROVIDES_API, + RELATION_DEPENDENCY_OF, + RELATION_DEPENDS_ON, + ]} + unidirectional={false} + /> </EntityLayout.Route>
diff const cicdContent = ( <Grid item md={6}> <EntityAboutCard variant="gridItem" /> </Grid> + <Grid item md={6} xs={12}> + <EntityCatalogGraphCard variant="gridItem" height={400} /> + </Grid>
Add the above component in
overviewContent
,apiPage
,systemPage
and domainPage` as well. -
4aca2a5307: An example instance of a
<SearchFilter.Select />
with asynchronously loaded values was added to the composedSearchPage.tsx
, allowing searches bound to thetechdocs
type to be filtered by entity name.This is an entirely optional change; if you wish to adopt it, you can make the following (or similar) changes to your search page layout:
```diff
--- a/packages/app/src/components/search/SearchPage.tsx
+++ b/packages/app/src/components/search/SearchPage.tsx
@@ -2,6 +2,10 @@ import React from 'react';
import { makeStyles, Theme, Grid, List, Paper } from '@material-ui/core';import { CatalogResultListItem } from '@backstage/plugin-catalog';
+import {
+ catalogApiRef,
+ CATALOG_FILTER_EXISTS,
+} from '@backstage/plugin-catalog-react';
import { DocsResultListItem } from '@backstage/plugin-techdocs';import {
@@ -10,6 +14,7 @@ import {
SearchResult,
SearchType,
DefaultResultListItem,
+ useSearch,
} from '@backstage/plugin-search';
import {
CatalogIcon,
@@ -18,6 +23,7 @@ import {
Header,
Page,
} from '@backstage/core-components';
+import { useApi } from '@backstage/core-plugin-api';const useStyles = makeStyles((theme: Theme) => ({
bar: {
@@ -36,6 +42,8 @@ const useStyles = makeStyles((theme: Theme) => ({const SearchPage = () => {
const classes = useStyles();
+ const { types } = useSearch();
+ const catalogApi = useApi(catalogApiRef);return (
@@ -65,6 +73,27 @@ const SearchPage = () => {
]}
/>
+ {types.includes('techdocs') && (
+{
+ // Return a list of entities which are documented.
+ const { items } = await catalogApi.getEntities({
+ fields: ['metadata.name'],
+ filter: {
+ 'metadata.annotations.backstage.io/techdocs-ref':
+ CATALOG_FILTER_EXISTS,
+ },
+ });
+
+ const names = items.map(entity => entity.metadata.name);
+ names.sort();
+ return names;
+ }}
+ />
+ )}
<SearchFilter.Select
className={classes.filter}
name="kind"
``` -
1dbe63ec39: A
label
prop was added to<SearchFilter.* />
components in order to allow
user-friendly label strings (as well as the option to omit a label). In order
to maintain labels on your existing filters, add alabel
prop to them in your
SearchPage.tsx
.diff --- a/packages/app/src/components/search/SearchPage.tsx +++ b/packages/app/src/components/search/SearchPage.tsx @@ -96,11 +96,13 @@ const SearchPage = () => { )} <SearchFilter.Select className={classes.filter} + label="Kind" name="kind" values={['Component', 'Template']} /> <SearchFilter.Checkbox className={classes.filter} + label="Lifecycle" name="lifecycle" values={['experimental', 'production']} />
## @backstage/dev-utils@0.2.19
Patch Changes
- 10086f5873: Bumped
react-hot-loader
from^4.12.21
to^4.13.0
. - Updated dependencies
- @backstage/core-components@0.8.6
- @backstage/core-app-api@0.5.1
## @backstage/search-common@0.2.2
Patch Changes
- 9a511968b1: - Add optional visibilityPermission property to DocumentCollator type
- Add new DocumentTypeInfo type for housing information about the document types stored in a search engine.
- b2e918fa0b: Add optional resourceRef field to the IndexableDocument type for use when authorizing access to documents.
- 96cbebc629: Add optional query request options containing authorization token to SearchEngine#query.
## @techdocs/cli@0.8.11
Patch Changes
- 10086f5873: Bumped
react-dev-utils
from^12.0.0-next.47
to^12.0.0-next.60
. - Updated dependencies
- @backstage/techdocs-common@0.11.5
- @backstage/backend-common@0.10.5
## @backstage/techdocs-common@0.11.5
Patch Changes
- ff93fbeeec: Fix interpolated string for "Failed to generate docs from ..."
- Updated dependencies
- @backstage/search-common@0.2.2
- @backstage/backend-common@0.10.5
## @backstage/plugin-azure-devops@0.1.12
Patch Changes
- 0f104ecc4d: Updated to support cases where only Azure Pipelines to see Builds. You can use this new feature by adding the
dev.azure.com/project
anddev.azure.com/build-definition
annotations to yourcatalog-info.yaml
files. The Azure DevOps plugin README has more detailed instructions. - Updated dependencies
- @backstage/core-components@0.8.6
## @backstage/plugin-bazaar@0.1.11
Patch Changes
- Updated dependencies
- @backstage/core-components@0.8.6
- @backstage/cli@0.13.0
- @backstage/plugin-catalog@0.7.10
## @backstage/plugin-catalog@0.7.10
Patch Changes
- aac316279f: Deprecated
EntitySystemDiagramCard
EntitySystemDiagramCard
is replaced byEntityCatalogGraphCard
which is imported from@backstage/plugin-catalog-graph
. This component will be removed in an upcoming release - Updated dependencies
- @backstage/core-components@0.8.6
## @backstage/plugin-catalog-backend@0.21.1
Patch Changes
- 4f5bde47e9: Add support for permissions to the DefaultCatalogCollator.
- Updated dependencies
- @backstage/search-common@0.2.2
- @backstage/backend-common@0.10.5
- @backstage/plugin-permission-node@0.4.1
## @backstage/plugin-catalog-graph@0.2.8
Patch Changes
-
a3c4438abf: Deprecated the external
catalogEntity
route as this is now imported directly from@backstage/plugin-catalog-react
instead.This means you can remove the route binding from your
App.tsx
:diff - bind(catalogGraphPlugin.externalRoutes, { - catalogEntity: catalogPlugin.routes.catalogEntity, - });
-
Updated dependencies
- @backstage/core-components@0.8.6
## @backstage/plugin-explore@0.3.27
Patch Changes
-
a3c4438abf: Deprecated the external
catalogEntity
route as this is now imported directly from@backstage/plugin-catalog-react
instead.This means you can remove the route binding from your
App.tsx
:diff - bind(explorePlugin.externalRoutes, { - catalogEntity: catalogPlugin.routes.catalogEntity, - });
-
Updated dependencies
- @backstage/core-components@0.8.6
## @backstage/plugin-gcp-projects@0.3.15
Patch Changes
- 977c87a905: Pin the
react-router-dom
version to6.0.0-beta.0
. This avoids issues caused by newer versions of the package being installed. - Updated dependencies
- @backstage/core-components@0.8.6
## @backstage/plugin-github-actions@0.4.33
Patch Changes
- a9bede36e1: Update GitHub OAuth documentation to include it must be created as a GitHub Organization OAuth application.
- Updated dependencies
- @backstage/core-components@0.8.6
## @backstage/plugin-home@0.4.12
Patch Changes
- Updated dependencies
- @backstage/core-components@0.8.6
- @backstage/plugin-search@0.6.0
## @backstage/plugin-kubernetes-backend@0.4.5
Patch Changes
- 8fc0d122e8: If serviceAccountToken not provided, use default config file from cluster
- Updated dependencies
- @backstage/backend-common@0.10.5
## @backstage/plugin-permission-backend@0.4.1
Patch Changes
- Updated dependencies
- @backstage/plugin-auth-backend@0.8.0
- @backstage/backend-common@0.10.5
- @backstage/plugin-permission-node@0.4.1
## @backstage/plugin-permission-node@0.4.1
Patch Changes
- Updated dependencies
- @backstage/plugin-auth-backend@0.8.0
- @backstage/backend-common@0.10.5
## @backstage/plugin-scaffolder-backend@0.15.22
Patch Changes
- b09dd8f43b: chore(deps): bump
@gitbeaker/node
from 34.6.0 to 35.1.0 - ac2f1eeec0: This change is for adding the option of inputs on the
github:actions:dispatch
Backstage Action. This will allow users to pass data from Backstage to the GitHub Action. - 0d5e846a78: Expose a new option to provide additional template filters via
@backstage/scaffolder-backend
'screateRouter()
function. - Updated dependencies
- @backstage/plugin-catalog-backend@0.21.1
- @backstage/backend-common@0.10.5
## @backstage/plugin-search-backend-node@0.4.5
Patch Changes
- f6389e9e5d: Track visibility permissions by document type in IndexBuilder
- Updated dependencies
- @backstage/search-common@0.2.2
## @backstage/plugin-sonarqube@0.2.14
Patch Changes
- 7346b5fb96: chore(deps): bump
rc-progress
from 3.1.4 to 3.2.4 - Updated dependencies
- @backstage/core-components@0.8.6
## @backstage/plugin-tech-insights-backend@0.2.2
Patch Changes
- bbb6622752: Update README to match config options.
- Updated dependencies
- @backstage/backend-common@0.10.5
## @backstage/plugin-techdocs@0.13.1
Patch Changes
- bdc53553eb: chore(deps): bump
react-text-truncate
from 0.16.0 to 0.17.0 - a64f99f734: Code snippets now include a "copy to clipboard" button.
- Updated dependencies
- @backstage/core-components@0.8.6
- @backstage/plugin-search@0.6.0
- @backstage/plugin-catalog@0.7.10
## @backstage/plugin-techdocs-backend@0.13.1
Patch Changes
- 4682340457: Add support for permissions to the DefaultTechDocsCollator.
- Updated dependencies
- @backstage/search-common@0.2.2
- @backstage/techdocs-common@0.11.5
- @backstage/backend-common@0.10.5
## example-app@0.2.62
Patch Changes
- Updated dependencies
- @backstage/core-components@0.8.6
- @backstage/plugin-catalog-graph@0.2.8
- @backstage/cli@0.13.0
- @backstage/plugin-techdocs@0.13.1
- @backstage/plugin-search@0.6.0
- @backstage/plugin-explore@0.3.27
- @backstage/search-common@0.2.2
- @backstage/plugin-azure-devops@0.1.12
- @backstage/plugin-catalog@0.7.10
- @backstage/plugin-github-actions@0.4.33
- @backstage/plugin-gcp-projects@0.3.15
- @backstage/core-app-api@0.5.1
- @backstage/plugin-home@0.4.12
## example-backend@0.2.62
Patch Changes
- Updated dependencies
- @backstage/plugin-search-backend-node@0.4.5
- @backstage/plugin-catalog-backend@0.21.1
- @backstage/plugin-scaffolder-backend@0.15.22
- @backstage/plugin-kubernetes-backend@0.4.5
- @backstage/plugin-auth-backend@0.8.0
- @backstage/plugin-search-backend@0.4.0
- @backstage/plugin-tech-insights-backend@0.2.2
- @backstage/plugin-techdocs-backend@0.13.1
- @backstage/backend-common@0.10.5
- example-app@0.2.62
- @backstage/plugin-permission-backend@0.4.1
- @backstage/plugin-permission-node@0.4.1
## embedded-techdocs-app@0.2.61
Patch Changes
- Updated dependencies
- @backstage/core-components@0.8.6
- @backstage/cli@0.13.0
- @backstage/plugin-techdocs@0.13.1
- @backstage/plugin-catalog@0.7.10
- @backstage/core-app-api@0.5.1
Details
- 🔍View and search all Backstage releases.
- 🛠️Create and share lists to track your tools.
- 🚨Setup notifications for major, security, feature or patch updates.
- 🚀Much more coming soon!