diff --git a/.changeset/analyze-software-creation.md b/.changeset/analyze-software-creation.md deleted file mode 100644 index 312987d3d1..0000000000 --- a/.changeset/analyze-software-creation.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/plugin-scaffolder': patch ---- - -Basic analytics instrumentation is now in place: - -- As users make their way through template steps, a `click` event is fired, including the step number. -- After a user clicks "Create" a `create` event is fired, including the name of the software that was just created. The template used at creation is set on the `entityRef` context key. diff --git a/.changeset/analyze-software-exploration.md b/.changeset/analyze-software-exploration.md deleted file mode 100644 index f535f60127..0000000000 --- a/.changeset/analyze-software-exploration.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-react': patch ---- - -Both `EntityProvider` and `AsyncEntityProvider` contexts now wrap all children with an `AnalyticsContext` containing the corresponding `entityRef`; this opens up the possibility for all events underneath these contexts to be associated with and aggregated by the corresponding entity. diff --git a/.changeset/angry-dingos-lick.md b/.changeset/angry-dingos-lick.md new file mode 100644 index 0000000000..933f19a839 --- /dev/null +++ b/.changeset/angry-dingos-lick.md @@ -0,0 +1,9 @@ +--- +'@backstage/plugin-catalog-graph': patch +'@backstage/plugin-pagerduty': patch +'@backstage/plugin-scaffolder-backend': patch +'@backstage/plugin-splunk-on-call': patch +'@backstage/plugin-techdocs-react': patch +--- + +Internal refactor to improve tests diff --git a/.changeset/angry-trees-relax.md b/.changeset/angry-trees-relax.md new file mode 100644 index 0000000000..64dd50366c --- /dev/null +++ b/.changeset/angry-trees-relax.md @@ -0,0 +1,11 @@ +--- +'@backstage/plugin-scaffolder': patch +--- + +Enabling the customization of the last step in the scaffolder template. + +To override the content you have to do the next: + +```typescript jsx + +``` diff --git a/.changeset/beige-chairs-repair.md b/.changeset/beige-chairs-repair.md new file mode 100644 index 0000000000..20cad7be6e --- /dev/null +++ b/.changeset/beige-chairs-repair.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-bitbucket-cloud': patch +--- + +Refresh (potentially) updated catalog files on `repo:push` more efficiently. diff --git a/.changeset/beige-gorillas-sip.md b/.changeset/beige-gorillas-sip.md deleted file mode 100644 index b0dcaadfc6..0000000000 --- a/.changeset/beige-gorillas-sip.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs': patch ---- - -Fix logic bug that broke techdocs-cli-embedded-app diff --git a/.changeset/big-islands-add.md b/.changeset/big-islands-add.md deleted file mode 100644 index 4a6511562b..0000000000 --- a/.changeset/big-islands-add.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-components': patch ---- - -Set the `searchTooltip` to "Filter" to follow how the `searchPlaceholder` is set making this more consistent diff --git a/.changeset/blue-chefs-know.md b/.changeset/blue-chefs-know.md new file mode 100644 index 0000000000..fa06f52caa --- /dev/null +++ b/.changeset/blue-chefs-know.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-azure-devops-backend': patch +--- + +Updated installation documentation diff --git a/.changeset/brave-eels-allow.md b/.changeset/brave-eels-allow.md deleted file mode 100644 index 8fbe7ba8d2..0000000000 --- a/.changeset/brave-eels-allow.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-app-api': minor ---- - -Updated the React Router wiring to make use of the new `basename` property of the router components in React Router v6 stable. To implement this, a new optional `basename` property has been added to the `Router` app component, which can be forwarded to the concrete router implementation in order to support this new behavior. This is done by default in any app that does not have a `Router` component override. diff --git a/.changeset/brown-days-pretend.md b/.changeset/brown-days-pretend.md deleted file mode 100644 index 4b6a328724..0000000000 --- a/.changeset/brown-days-pretend.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-tech-insights': patch ---- - -Fixed bug when sending data by Post in `runChecks` and `runBulkChecks` functions of the `TechInsightsClient` class, the default `Content-Type` used was `plain/text` diff --git a/.changeset/calm-bottles-happen.md b/.changeset/calm-bottles-happen.md deleted file mode 100644 index e76db28065..0000000000 --- a/.changeset/calm-bottles-happen.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/backend-common': minor ---- - -**BREAKING CHANGE**: The `UrlReader` interface has been updated to require that `readUrl` is implemented. `readUrl` has previously been optional to implement but a warning has been logged when calling its predecessor `read`. -The `read` method is now deprecated and will be removed in a future release. diff --git a/.changeset/chatty-planets-flash.md b/.changeset/chatty-planets-flash.md deleted file mode 100644 index d6a5c6ad42..0000000000 --- a/.changeset/chatty-planets-flash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-gitlab': patch ---- - -Add `gitlabDiscoveryEntityProviderCatalogModule` (new backend-plugin-api, alpha). diff --git a/.changeset/chilly-ads-lay.md b/.changeset/chilly-ads-lay.md new file mode 100644 index 0000000000..844eaa8dc7 --- /dev/null +++ b/.changeset/chilly-ads-lay.md @@ -0,0 +1,5 @@ +--- +'@backstage/catalog-client': minor +--- + +**BREAKING PRODUCERS**: Added a new `getEntitiesByRefs` endpoint to `CatalogApi`, for efficient batch fetching of entities by ref. diff --git a/.changeset/clean-feet-remain.md b/.changeset/clean-feet-remain.md deleted file mode 100644 index c712ef9e1e..0000000000 --- a/.changeset/clean-feet-remain.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-github-issues': patch ---- - -Stripping specific issues URL already present to target base issues URL. diff --git a/.changeset/clean-paws-fry.md b/.changeset/clean-paws-fry.md new file mode 100644 index 0000000000..5e66a686c0 --- /dev/null +++ b/.changeset/clean-paws-fry.md @@ -0,0 +1,5 @@ +--- +'@backstage/repo-tools': minor +--- + +Introducing repo-tools package diff --git a/.changeset/clean-planets-rhyme.md b/.changeset/clean-planets-rhyme.md deleted file mode 100644 index a6878b491b..0000000000 --- a/.changeset/clean-planets-rhyme.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-azure': patch ---- - -`AzureDevOpsEntityProvider`: Add option to configure schedule via `app-config.yaml` instead of in code. - -Please find how to configure the schedule at the config at -https://backstage.io/docs/integrations/azure/discovery diff --git a/.changeset/clean-seals-whisper.md b/.changeset/clean-seals-whisper.md new file mode 100644 index 0000000000..8891d75f8f --- /dev/null +++ b/.changeset/clean-seals-whisper.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-search-react': minor +--- + +The `value` of a search analytics event is now set as the total number of search results (when available) diff --git a/.changeset/clever-pillows-drive.md b/.changeset/clever-pillows-drive.md new file mode 100644 index 0000000000..f4e60fb869 --- /dev/null +++ b/.changeset/clever-pillows-drive.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Do not use deprecated `LocationSpec` from the `@backstage/plugin-catalog-node` package diff --git a/.changeset/clever-rivers-obey.md b/.changeset/clever-rivers-obey.md new file mode 100644 index 0000000000..0fac8711e9 --- /dev/null +++ b/.changeset/clever-rivers-obey.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-github': patch +--- + +Fixes the assignment of group member references in `GithubMultiOrgProcessor` so membership relations are resolved correctly. diff --git a/.changeset/create-app-1669131574.md b/.changeset/create-app-1669131574.md new file mode 100644 index 0000000000..b50d431d4b --- /dev/null +++ b/.changeset/create-app-1669131574.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Bumped create-app version. diff --git a/.changeset/create-app-1669720399.md b/.changeset/create-app-1669720399.md new file mode 100644 index 0000000000..b50d431d4b --- /dev/null +++ b/.changeset/create-app-1669720399.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Bumped create-app version. diff --git a/.changeset/dirty-birds-burn.md b/.changeset/dirty-birds-burn.md deleted file mode 100644 index 98f2c5967d..0000000000 --- a/.changeset/dirty-birds-burn.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-msgraph': patch ---- - -`MicrosoftGraphOrgEntityProvider`: Add option to configure schedule via `app-config.yaml` instead of in code. - -Please find how to configure the schedule at the config at -https://github.com/backstage/backstage/tree/master/plugins/catalog-backend-module-msgraph#readme diff --git a/.changeset/dry-melons-listen.md b/.changeset/dry-melons-listen.md new file mode 100644 index 0000000000..07342fb88e --- /dev/null +++ b/.changeset/dry-melons-listen.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-search-backend': minor +'@backstage/plugin-search-backend-module-elasticsearch': minor +'@backstage/plugin-search-backend-node': minor +--- + +numberOfResults is now provided alongside the query result diff --git a/.changeset/dry-radios-live.md b/.changeset/dry-radios-live.md new file mode 100644 index 0000000000..057d3d0050 --- /dev/null +++ b/.changeset/dry-radios-live.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-explore': patch +--- + +Update search links to only have header as linkable text diff --git a/.changeset/dull-oranges-tap.md b/.changeset/dull-oranges-tap.md deleted file mode 100644 index 946656f610..0000000000 --- a/.changeset/dull-oranges-tap.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -'@backstage/plugin-techdocs': minor ---- - -Add ability to configure filters when using EntityListDocsGrid - -The following example will render two sections of cards grid: - -- One section for documentations tagged as `recommended` -- One section for documentations tagged as `runbook` - -```js - - entity?.metadata?.tags?.includes('recommended') ?? false, - }, - { - title: "RunBooks Documentation", - filterPredicate: entity => - entity?.metadata?.tags?.includes('runbook') ?? false, - } -]}} /> -``` diff --git a/.changeset/early-hairs-switch.md b/.changeset/early-hairs-switch.md new file mode 100644 index 0000000000..16f4298db5 --- /dev/null +++ b/.changeset/early-hairs-switch.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +changed tests created by create-plugin to follow eslint-rules best practices particularly testing-library/prefer-screen-queries and testing-library/render-result-naming-convention diff --git a/.changeset/early-parrots-guess.md b/.changeset/early-parrots-guess.md new file mode 100644 index 0000000000..4df8dcea95 --- /dev/null +++ b/.changeset/early-parrots-guess.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': patch +--- + +Initialize all `formData` in the `Stepper` in `/next` diff --git a/.changeset/eight-eels-compete.md b/.changeset/eight-eels-compete.md new file mode 100644 index 0000000000..5cd0cdf041 --- /dev/null +++ b/.changeset/eight-eels-compete.md @@ -0,0 +1,10 @@ +--- +'@backstage/plugin-bazaar-backend': patch +'@backstage/plugin-catalog-backend': patch +'@backstage/plugin-catalog-backend-module-incremental-ingestion': patch +'@backstage/plugin-playlist-backend': patch +'@backstage/plugin-search-backend-module-pg': patch +'@backstage/plugin-user-settings-backend': patch +--- + +Ensured typescript type checks in migration files. diff --git a/.changeset/eight-pears-attack.md b/.changeset/eight-pears-attack.md deleted file mode 100644 index ca18abb2db..0000000000 --- a/.changeset/eight-pears-attack.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-github': minor ---- - -BREAKING: Support authenticated backends by including a server token for catalog requests. The constructor of `GithubLocationAnalyzer` now requires an instance of `TokenManager` to be supplied: - -```diff -... - builder.addLocationAnalyzers( - new GitHubLocationAnalyzer({ - discovery: env.discovery, - config: env.config, -+ tokenManager: env.tokenManager, - }), - ); -... -``` diff --git a/.changeset/eight-spiders-know.md b/.changeset/eight-spiders-know.md new file mode 100644 index 0000000000..2e3e54dc0f --- /dev/null +++ b/.changeset/eight-spiders-know.md @@ -0,0 +1,15 @@ +--- +'@backstage/backend-common': patch +'@backstage/core-app-api': patch +'@backstage/core-components': patch +'@backstage/version-bridge': patch +'@backstage/plugin-analytics-module-ga': patch +'@backstage/plugin-catalog': patch +'@backstage/plugin-cloudbuild': patch +'@backstage/plugin-gcp-projects': patch +'@backstage/plugin-github-actions': patch +'@backstage/plugin-graphiql': patch +'@backstage/plugin-techdocs': patch +--- + +Internal fixes to avoid implicit usage of globals diff --git a/.changeset/eight-tables-hunt.md b/.changeset/eight-tables-hunt.md new file mode 100644 index 0000000000..bd1be0047f --- /dev/null +++ b/.changeset/eight-tables-hunt.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Optimize `Stitcher` process to be more memory efficient diff --git a/.changeset/eleven-pets-sneeze.md b/.changeset/eleven-pets-sneeze.md deleted file mode 100644 index 7c0d8147cc..0000000000 --- a/.changeset/eleven-pets-sneeze.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-plugin-api': minor ---- - -The app `Router` component now accepts an optional `basename` property. diff --git a/.changeset/empty-taxis-run.md b/.changeset/empty-taxis-run.md new file mode 100644 index 0000000000..d0360b4521 --- /dev/null +++ b/.changeset/empty-taxis-run.md @@ -0,0 +1,22 @@ +--- +'@backstage/backend-app-api': patch +'@backstage/plugin-app-backend': patch +'@backstage/plugin-catalog-backend': patch +'@backstage/plugin-catalog-backend-module-aws': patch +'@backstage/plugin-catalog-backend-module-azure': patch +'@backstage/plugin-catalog-backend-module-bitbucket-cloud': patch +'@backstage/plugin-catalog-backend-module-bitbucket-server': patch +'@backstage/plugin-catalog-backend-module-gerrit': patch +'@backstage/plugin-catalog-backend-module-github': patch +'@backstage/plugin-catalog-backend-module-gitlab': patch +'@backstage/plugin-catalog-backend-module-incremental-ingestion': patch +'@backstage/plugin-catalog-backend-module-msgraph': patch +'@backstage/plugin-catalog-node': patch +'@backstage/plugin-events-backend': patch +'@backstage/plugin-events-backend-module-aws-sqs': patch +'@backstage/plugin-events-backend-module-github': patch +'@backstage/plugin-events-backend-module-gitlab': patch +'@backstage/plugin-scaffolder-backend': patch +--- + +Refactored to use `coreServices` from `@backstage/backend-plugin-api`. diff --git a/.changeset/fair-walls-talk.md b/.changeset/fair-walls-talk.md new file mode 100644 index 0000000000..3e3ee26160 --- /dev/null +++ b/.changeset/fair-walls-talk.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-org-react': patch +--- + +Bug fixes and adding the possibility to add a default value for the `GroupListPicker`. Fixes: Vertical size jump on text entry, left align for text, selecting a value closes the popup, auto focus on the popup when opening diff --git a/.changeset/famous-cobras-suffer.md b/.changeset/famous-cobras-suffer.md new file mode 100644 index 0000000000..d09948f876 --- /dev/null +++ b/.changeset/famous-cobras-suffer.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-github': patch +--- + +Added the githubCredentialsProvider property to the GithubLocationAnalyzerOptions to be able to override the GithubCredentialsProvider. diff --git a/.changeset/fast-lies-remain.md b/.changeset/fast-lies-remain.md new file mode 100644 index 0000000000..74be117920 --- /dev/null +++ b/.changeset/fast-lies-remain.md @@ -0,0 +1,8 @@ +--- +'@backstage/plugin-catalog-backend': minor +--- + +Added new `POST /entities/by-refs` endpoint, which allows you to efficiently +batch-fetch entities by their entity ref. This can be useful e.g. in graphql +resolvers or similar contexts where you need to fetch many entities at the same +time. diff --git a/.changeset/few-books-remember.md b/.changeset/few-books-remember.md deleted file mode 100644 index 4607202ff6..0000000000 --- a/.changeset/few-books-remember.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': patch -'@backstage/plugin-techdocs-node': patch -'@backstage/plugin-techdocs-backend': patch ---- - -Replace usage of deprecataed `UrlReader.read` with `UrlReader.readUrl`. diff --git a/.changeset/fifty-news-stare.md b/.changeset/fifty-news-stare.md new file mode 100644 index 0000000000..24ad2e20e7 --- /dev/null +++ b/.changeset/fifty-news-stare.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-catalog-backend': patch +'@backstage/plugin-catalog-node': minor +--- + +Make it possible for entity providers to supply only entity refs, instead of full entities, in `delta` mutation deletions. diff --git a/.changeset/flat-items-perform.md b/.changeset/flat-items-perform.md deleted file mode 100644 index 4bc846ba7e..0000000000 --- a/.changeset/flat-items-perform.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': minor ---- - -Added a set of default Prometheus metrics around scaffolding. See below for a list of metrics and an explanation of their labels: - -- `scaffolder_task_count`: Tracks successful task runs. - - Labels: - - - `template`: The entity ref of the scaffolded template - - `user`: The entity ref of the user that invoked the template run - - `result`: A string describing whether the task ran successfully, failed, or was skipped - -- `scaffolder_task_duration`: a histogram which tracks the duration of a task run - - Labels: - - - `template`: The entity ref of the scaffolded template - - `result`: A boolean describing whether the task ran successfully - -- `scaffolder_step_count`: a count that tracks each step run - - Labels: - - - `template`: The entity ref of the scaffolded template - - `step`: The name of the step that was run - - `result`: A string describing whether the task ran successfully, failed, or was skipped - -- `scaffolder_step_duration`: a histogram which tracks the duration of each step run - - Labels: - - - `template`: The entity ref of the scaffolded template - - `step`: The name of the step that was run - - `result`: A string describing whether the task ran successfully, failed, or was skipped - -You can find a guide for running Prometheus metrics here: https://github.com/backstage/backstage/blob/master/contrib/docs/tutorials/prometheus-metrics.md diff --git a/.changeset/flat-kangaroos-kiss.md b/.changeset/flat-kangaroos-kiss.md deleted file mode 100644 index a79c8621b1..0000000000 --- a/.changeset/flat-kangaroos-kiss.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-gitlab': patch ---- - -`GitlabDiscoveryEntityProvider`: Add option to configure schedule via `app-config.yaml` instead of in code. - -Please find how to configure the schedule at the config at -https://backstage.io/docs/integrations/gitlab/discovery diff --git a/.changeset/fluffy-walls-approve.md b/.changeset/fluffy-walls-approve.md new file mode 100644 index 0000000000..968f5cc402 --- /dev/null +++ b/.changeset/fluffy-walls-approve.md @@ -0,0 +1,21 @@ +--- +'@backstage/plugin-events-backend': minor +--- + +**BREAKING:** Remove required field `router` at `HttpPostIngressEventPublisher.fromConfig` +and replace it with `bind(router: Router)`. +Additionally, the path prefix `/http` will be added inside `HttpPostIngressEventPublisher`. + +```diff +// at packages/backend/src/plugins/events.ts + const eventsRouter = Router(); +- const httpRouter = Router(); +- eventsRouter.use('/http', httpRouter); + + const http = HttpPostIngressEventPublisher.fromConfig({ + config: env.config, + logger: env.logger, +- router: httpRouter, + }); ++ http.bind(eventsRouter); +``` diff --git a/.changeset/forty-baboons-burn.md b/.changeset/forty-baboons-burn.md new file mode 100644 index 0000000000..f54b0871c4 --- /dev/null +++ b/.changeset/forty-baboons-burn.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs-node': patch +--- + +Bump dependency @azure/identity to next minor diff --git a/.changeset/forty-bags-trade.md b/.changeset/forty-bags-trade.md deleted file mode 100644 index 4908134498..0000000000 --- a/.changeset/forty-bags-trade.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-common': patch ---- - -Generated development HTTPS backend certificate is now checked for expiration date instead of file age. diff --git a/.changeset/forty-jokes-lie.md b/.changeset/forty-jokes-lie.md deleted file mode 100644 index bd44898004..0000000000 --- a/.changeset/forty-jokes-lie.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-openapi': patch ---- - -Added support to use the `UrlReaders` when `$ref` pointing to a URL. diff --git a/.changeset/four-adults-provide.md b/.changeset/four-adults-provide.md new file mode 100644 index 0000000000..0edb4807d9 --- /dev/null +++ b/.changeset/four-adults-provide.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-cost-insights': patch +--- + +Provide the ability to change the base currency from USD to any other currency in cost insights plugin diff --git a/.changeset/four-buttons-clean.md b/.changeset/four-buttons-clean.md new file mode 100644 index 0000000000..41af42b45e --- /dev/null +++ b/.changeset/four-buttons-clean.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': patch +--- + +Handle refresh entity error in `AboutCard`. diff --git a/.changeset/fresh-cooks-sing.md b/.changeset/fresh-cooks-sing.md deleted file mode 100644 index 31f5ff0f22..0000000000 --- a/.changeset/fresh-cooks-sing.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/integration': minor ---- - -This patch brings Gitea as a valid integration: target, via the ScmIntegration interface. It adds gitea to the relevant static properties (get integration by name, get integration by type) for plugins to be able to reference the same Gitea server. diff --git a/.changeset/fresh-news-push.md b/.changeset/fresh-news-push.md new file mode 100644 index 0000000000..a77b7a256b --- /dev/null +++ b/.changeset/fresh-news-push.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-bazaar': patch +--- + +`HomePageBazaarInfoCard` is now displaying `title` instead of `name`. Title is a string that doesn't have to be URL friendly. +The BazaarOverviewCard have the new property `fullHeight`. Link in `BazaarOverviewCard`is moved to header in card. diff --git a/.changeset/fresh-weeks-share.md b/.changeset/fresh-weeks-share.md deleted file mode 100644 index aced6e910c..0000000000 --- a/.changeset/fresh-weeks-share.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-common': patch ---- - -This patch adds GiteaURLReader to the available classes. It currently only reads single files via gitea's public repos api diff --git a/.changeset/funny-numbers-compete.md b/.changeset/funny-numbers-compete.md new file mode 100644 index 0000000000..604ffe7294 --- /dev/null +++ b/.changeset/funny-numbers-compete.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': patch +--- + +Use Json types from @backstage/types diff --git a/.changeset/gentle-ligers-help.md b/.changeset/gentle-ligers-help.md new file mode 100644 index 0000000000..f7f9c3b270 --- /dev/null +++ b/.changeset/gentle-ligers-help.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-app-api': patch +--- + +Tweak feature flag registration so that it happens immediately before the first rendering of the app, rather than just after. diff --git a/.changeset/gold-icons-cheat.md b/.changeset/gold-icons-cheat.md new file mode 100644 index 0000000000..3c5e796c05 --- /dev/null +++ b/.changeset/gold-icons-cheat.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Bump `msw` version in default plugin/app templates diff --git a/.changeset/gold-yaks-join.md b/.changeset/gold-yaks-join.md new file mode 100644 index 0000000000..29996d1f74 --- /dev/null +++ b/.changeset/gold-yaks-join.md @@ -0,0 +1,6 @@ +--- +'@backstage/test-utils': patch +--- + +The test utility for the plugin context called `MockPluginProvider` has been created. It will be handy in the cases when you use +`__experimentalConfigure` in your plugin. It is experimental and exported through `@backstage/test-utils/alpha`. diff --git a/.changeset/gorgeous-balloons-sit.md b/.changeset/gorgeous-balloons-sit.md deleted file mode 100644 index a83b12131b..0000000000 --- a/.changeset/gorgeous-balloons-sit.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@backstage/plugin-auth-backend': patch -'@backstage/plugin-cost-insights': patch -'@backstage/plugin-dynatrace': patch -'@backstage/plugin-stack-overflow-backend': patch -'@backstage/plugin-techdocs': patch ---- - -Tweak README diff --git a/.changeset/gorgeous-hairs-applaud.md b/.changeset/gorgeous-hairs-applaud.md new file mode 100644 index 0000000000..7793c6591e --- /dev/null +++ b/.changeset/gorgeous-hairs-applaud.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-search-backend-node': patch +--- + +Wait for indexer initialization before finalizing indexing. diff --git a/.changeset/gorgeous-onions-thank.md b/.changeset/gorgeous-onions-thank.md deleted file mode 100644 index 8b41bfa5a0..0000000000 --- a/.changeset/gorgeous-onions-thank.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-aws': patch ---- - -`AwsS3EntityProvider`: Add option to configure schedule via `app-config.yaml` instead of in code. - -Please find how to configure the schedule at the config at -https://backstage.io/docs/integrations/aws-s3/discovery diff --git a/.changeset/gorgeous-queens-pull.md b/.changeset/gorgeous-queens-pull.md deleted file mode 100644 index bb257e85f0..0000000000 --- a/.changeset/gorgeous-queens-pull.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -'@backstage/integration': minor ---- - -Replaces in-code uses of `GitHub` with `Github` and deprecates old versions. - -Deprecates: - -- `getGitHubFileFetchUrl` replaced by `getGithubFileFetchUrl` -- `GitHubIntegrationConfig` replaced by `GithubIntegrationConfig` -- `GitHubIntegration` replaced by `GithubIntegration` -- `readGitHubIntegrationConfig` replaced by `readGithubIntegrationConfig` -- `readGitHubIntegrationConfigs` replaced by `readGithubIntegrationConfigs` -- `replaceGitHubUrlType` replaced by `replaceGithubUrlType` diff --git a/.changeset/great-colts-invite.md b/.changeset/great-colts-invite.md deleted file mode 100644 index 1ca71580dc..0000000000 --- a/.changeset/great-colts-invite.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -'@backstage/cli': minor ---- - -Added a new ESLint rule that restricts imports of Link from @material-ui - -The rule can be can be overridden in the following way: - -```diff -module.exports = require('@backstage/cli/config/eslint-factory')(__dirname, { -+ restrictedImports: [ -+ { name: '@material-ui/core', importNames: [] }, -+ { name: '@material-ui/core/Link', importNames: [] }, -+ ], -}); -``` diff --git a/.changeset/grumpy-pigs-reflect.md b/.changeset/grumpy-pigs-reflect.md deleted file mode 100644 index 797aefcba0..0000000000 --- a/.changeset/grumpy-pigs-reflect.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-import': patch ---- - -Get rid of `this-is-undefined-in-esm` warning diff --git a/.changeset/happy-avocados-tan.md b/.changeset/happy-avocados-tan.md deleted file mode 100644 index 9f087930d5..0000000000 --- a/.changeset/happy-avocados-tan.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-react': patch ---- - -Removed forced capitalization for Entity types in the catalog sidebar. diff --git a/.changeset/healthy-crabs-collect.md b/.changeset/healthy-crabs-collect.md new file mode 100644 index 0000000000..5dc90f9b80 --- /dev/null +++ b/.changeset/healthy-crabs-collect.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kafka-backend': patch +--- + +Internal tweak to adapt to `kafkajs` 2.2.3 diff --git a/.changeset/heavy-elephants-nail.md b/.changeset/heavy-elephants-nail.md deleted file mode 100644 index 473e3eda9e..0000000000 --- a/.changeset/heavy-elephants-nail.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-app-api': minor ---- - -Deprecated the `homepage` config as the component that used it - `HomepageTimer` - has been removed and replaced by the `HeaderWorldClock` in the home plugin diff --git a/.changeset/hip-chairs-tap.md b/.changeset/hip-chairs-tap.md new file mode 100644 index 0000000000..8eca0a9292 --- /dev/null +++ b/.changeset/hip-chairs-tap.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-cost-insights': patch +--- + +Internal refactor to avoid usage of deprecated symbols diff --git a/.changeset/hip-stingrays-kneel.md b/.changeset/hip-stingrays-kneel.md new file mode 100644 index 0000000000..171e9257f2 --- /dev/null +++ b/.changeset/hip-stingrays-kneel.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-components': patch +--- + +Create a variable for minimum height and add a prop named 'fit' for determining if the graph height should grow or be contained. diff --git a/.changeset/hip-wasps-yell.md b/.changeset/hip-wasps-yell.md new file mode 100644 index 0000000000..1cdea4e84d --- /dev/null +++ b/.changeset/hip-wasps-yell.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-bazaar': patch +--- + +Add `title` as optional parameter to `BazaarOverviewCard` diff --git a/.changeset/itchy-paws-protect.md b/.changeset/itchy-paws-protect.md deleted file mode 100644 index a0c272e5e4..0000000000 --- a/.changeset/itchy-paws-protect.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-azure': patch ---- - -Add `azureDevOpsEntityProviderCatalogModule` (new backend-plugin-api, alpha). diff --git a/.changeset/itchy-walls-boil.md b/.changeset/itchy-walls-boil.md new file mode 100644 index 0000000000..2afd0287fe --- /dev/null +++ b/.changeset/itchy-walls-boil.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-user-settings': minor +--- + +Added the ability to fully customize settings page. Deprecated UserSettingsTab in favour of SettingsLayout.Route diff --git a/.changeset/kind-emus-juggle.md b/.changeset/kind-emus-juggle.md deleted file mode 100644 index 2a99deef81..0000000000 --- a/.changeset/kind-emus-juggle.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-aws': patch ---- - -Add `awsS3EntityProviderCatalogModule` (new backend-plugin-api, alpha). diff --git a/.changeset/kind-walls-share.md b/.changeset/kind-walls-share.md new file mode 100644 index 0000000000..5df03999b1 --- /dev/null +++ b/.changeset/kind-walls-share.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': patch +--- + +exported KubernetesContainerRunner, KubernetesContainerRunnerOptions, KubernetesContainerRunnerMountBase diff --git a/.changeset/lazy-planes-repair.md b/.changeset/lazy-planes-repair.md deleted file mode 100644 index 00ecfb095e..0000000000 --- a/.changeset/lazy-planes-repair.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-tasks': patch ---- - -Deprecated the `HumanDuration` type, which should now instead be imported from `@backstage/types`. diff --git a/.changeset/light-snakes-exercise.md b/.changeset/light-snakes-exercise.md new file mode 100644 index 0000000000..45bd37cf27 --- /dev/null +++ b/.changeset/light-snakes-exercise.md @@ -0,0 +1,16 @@ +--- +'@backstage/backend-common': minor +'@backstage/backend-tasks': minor +'@backstage/plugin-catalog-backend-module-incremental-ingestion': patch +'@backstage/plugin-search-backend-node': patch +--- + +Changed to use native `AbortController` and `AbortSignal` from Node.js, instead +of the one from `node-abort-controller`. This is possible now that the minimum +supported Node.js version of the project is 16. + +Note that their interfaces are very slightly different, but typically not in a +way that matters to consumers. If you see any typescript errors as a direct +result from this, they are compatible with each other in the ways that we +interact with them, and should be possible to type-cast across without ill +effects. diff --git a/.changeset/light-turtles-yawn.md b/.changeset/light-turtles-yawn.md new file mode 100644 index 0000000000..3f42fb0524 --- /dev/null +++ b/.changeset/light-turtles-yawn.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Fixed deprecated use of `substr` into `substring`. diff --git a/.changeset/little-bikes-eat.md b/.changeset/little-bikes-eat.md deleted file mode 100644 index 0992198146..0000000000 --- a/.changeset/little-bikes-eat.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-tech-radar': patch ---- - -Fixed bug in Tech Radar where, on hover, the tech list quadrant would rerender and scroll top diff --git a/.changeset/loud-rockets-reply.md b/.changeset/loud-rockets-reply.md new file mode 100644 index 0000000000..85ed77f51f --- /dev/null +++ b/.changeset/loud-rockets-reply.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-incremental-ingestion': minor +--- + +Introduces incremental entity providers, which are used for streaming very large data sources into the catalog. diff --git a/.changeset/loud-snails-sleep.md b/.changeset/loud-snails-sleep.md new file mode 100644 index 0000000000..d72c1a22b4 --- /dev/null +++ b/.changeset/loud-snails-sleep.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-vault-backend': patch +--- + +Added (optional) config `vault.publicUrl` as alternative to `vault.baseUrl` for `editUrl` and `showUrl` in case `vault.baseUrl` is internal diff --git a/.changeset/lucky-cats-peel.md b/.changeset/lucky-cats-peel.md deleted file mode 100644 index dfe1047b7c..0000000000 --- a/.changeset/lucky-cats-peel.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-common': patch ---- - -Small update to fix compatibility with newer versions of the `keyv` library diff --git a/.changeset/lucky-spoons-hide.md b/.changeset/lucky-spoons-hide.md deleted file mode 100644 index c481941f6a..0000000000 --- a/.changeset/lucky-spoons-hide.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -Updated `@swc/core` to version 1.3.9 which fixes a `.tsx` parser bug diff --git a/.changeset/many-bikes-press.md b/.changeset/many-bikes-press.md new file mode 100644 index 0000000000..68ddb68c05 --- /dev/null +++ b/.changeset/many-bikes-press.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-plugin-api': minor +--- + +**BREAKING**: All core service references are now exported via a single `coreServices` object. For example, the `loggerServiceRef` is now accessed via `coreServices.logger` instead. diff --git a/.changeset/mean-files-fly.md b/.changeset/mean-files-fly.md deleted file mode 100644 index a7a79bcf74..0000000000 --- a/.changeset/mean-files-fly.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-msgraph': patch ---- - -Add `microsoftGraphOrgEntityProviderCatalogModule` (new backend-plugin-api, alpha). diff --git a/.changeset/metal-dogs-swim.md b/.changeset/metal-dogs-swim.md deleted file mode 100644 index d97c7077f2..0000000000 --- a/.changeset/metal-dogs-swim.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-gerrit': patch ---- - -Add `gerritEntityProviderCatalogModule` (new backend-plugin-api, alpha). diff --git a/.changeset/modern-camels-cheat.md b/.changeset/modern-camels-cheat.md new file mode 100644 index 0000000000..c0a80934d5 --- /dev/null +++ b/.changeset/modern-camels-cheat.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': minor +--- + +Removed `CatalogKindHeader` from `DefaultCatalogPage`. Deprecated `CatalogKindHeader` in favour of `EntityKindPicker`. diff --git a/.changeset/modern-jokes-attack.md b/.changeset/modern-jokes-attack.md new file mode 100644 index 0000000000..3cb3143f05 --- /dev/null +++ b/.changeset/modern-jokes-attack.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-components': patch +--- + +Made AlertDisplay not crash on undefined messages diff --git a/.changeset/modern-mugs-shout.md b/.changeset/modern-mugs-shout.md new file mode 100644 index 0000000000..cb845b1fff --- /dev/null +++ b/.changeset/modern-mugs-shout.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-components': patch +--- + +Add items prop to SupportButton. This prop can be used to override the items that would otherwise be grabbed from the config. diff --git a/.changeset/nasty-crabs-share.md b/.changeset/nasty-crabs-share.md deleted file mode 100644 index d09eb09044..0000000000 --- a/.changeset/nasty-crabs-share.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/plugin-github-pull-requests-board': patch ---- - -Add a new "Team" Filter Options to the Github Pull Requests Dashboard. - -When toggling this option on, the dashboard will displays all of the PRs opened -by the members of that team on any repositories of the organization. diff --git a/.changeset/nasty-melons-build.md b/.changeset/nasty-melons-build.md new file mode 100644 index 0000000000..35fb520a5e --- /dev/null +++ b/.changeset/nasty-melons-build.md @@ -0,0 +1,12 @@ +--- +'@backstage/plugin-events-backend-module-github': patch +--- + +Add `createGithubSignatureValidator(config)` which can be used +to create a validator used at an ingress for topic `github`. + +On top, there is a new `githubWebhookEventsModule` for the new backend plugin API +which auto-registers the `HttpPostIngress` for topic `github` incl. the validator. + +Please find more information at +https://github.com/backstage/backstage/tree/master/plugins/events-backend-module-github/README.md. diff --git a/.changeset/nervous-mice-flow.md b/.changeset/nervous-mice-flow.md new file mode 100644 index 0000000000..c3a25b9f3d --- /dev/null +++ b/.changeset/nervous-mice-flow.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-jenkins-backend': patch +--- + +Remove unnecessary dependency promise-any-polyfill diff --git a/.changeset/new-bugs-march.md b/.changeset/new-bugs-march.md new file mode 100644 index 0000000000..346f5a151e --- /dev/null +++ b/.changeset/new-bugs-march.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-explore': patch +--- + +Adds styling to graph forcing it to always fill out the available space. diff --git a/.changeset/nice-apricots-love.md b/.changeset/nice-apricots-love.md new file mode 100644 index 0000000000..527b644d5f --- /dev/null +++ b/.changeset/nice-apricots-love.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-app-api': patch +--- + +Prevent duplicate feature flag components from rendering in the settings when using components diff --git a/.changeset/nice-pants-boil.md b/.changeset/nice-pants-boil.md new file mode 100644 index 0000000000..e8bdf0a00f --- /dev/null +++ b/.changeset/nice-pants-boil.md @@ -0,0 +1,6 @@ +--- +'@backstage/backend-common': patch +'@backstage/plugin-catalog-backend': patch +--- + +Adds MySQL support for the catalog-backend diff --git a/.changeset/nine-ears-whisper.md b/.changeset/nine-ears-whisper.md new file mode 100644 index 0000000000..a1427158af --- /dev/null +++ b/.changeset/nine-ears-whisper.md @@ -0,0 +1,9 @@ +--- +'@backstage/plugin-events-backend': patch +'@backstage/plugin-events-node': minor +--- + +Introduce a new interface `RequestDetails` to abstract `Request` +providing access to request body and headers. + +**BREAKING:** Replace `request: Request` with `request: RequestDetails` at `RequestValidator`. diff --git a/.changeset/old-bulldogs-fry.md b/.changeset/old-bulldogs-fry.md new file mode 100644 index 0000000000..9c8eef67ad --- /dev/null +++ b/.changeset/old-bulldogs-fry.md @@ -0,0 +1,14 @@ +--- +'@backstage/plugin-catalog-backend-module-github': patch +--- + +Handle GitHub `push` events at the `GithubEntityProvider` by subscribing to the topic `github.push.` + +Implements `EventSubscriber` to receive events for the topic `github.push`. + +On `github.push`, the affected repository will be refreshed. +This includes adding new Location entities, refreshing existing ones, +and removing obsolete ones. + +Please find more information at +https://backstage.io/docs/integrations/github/discovery#installation-with-events-support diff --git a/.changeset/old-keys-leave.md b/.changeset/old-keys-leave.md new file mode 100644 index 0000000000..d80574b2e4 --- /dev/null +++ b/.changeset/old-keys-leave.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-app-api': patch +--- + +Added `lifecycleFactory` implementation. diff --git a/.changeset/old-sloths-warn.md b/.changeset/old-sloths-warn.md new file mode 100644 index 0000000000..8eca0a9292 --- /dev/null +++ b/.changeset/old-sloths-warn.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-cost-insights': patch +--- + +Internal refactor to avoid usage of deprecated symbols diff --git a/.changeset/old-tips-cough.md b/.changeset/old-tips-cough.md new file mode 100644 index 0000000000..bcf6de6a53 --- /dev/null +++ b/.changeset/old-tips-cough.md @@ -0,0 +1,9 @@ +--- +'@backstage/plugin-adr': patch +'@backstage/plugin-catalog': patch +'@backstage/plugin-search-react': patch +'@backstage/plugin-stack-overflow': patch +'@backstage/plugin-techdocs': patch +--- + +Update search links to only have header as linkable text diff --git a/.changeset/orange-trees-peel.md b/.changeset/orange-trees-peel.md deleted file mode 100644 index 344dd88cb9..0000000000 --- a/.changeset/orange-trees-peel.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -'@backstage/catalog-model': patch -'@backstage/core-components': patch -'@backstage/integration': patch -'@backstage/plugin-auth-node': patch -'@backstage/plugin-gcalendar': patch -'@backstage/plugin-periskop': patch -'@backstage/plugin-permission-common': patch -'@backstage/plugin-scaffolder-backend': patch -'@backstage/plugin-techdocs': patch -'@backstage/plugin-xcmetrics': patch ---- - -Internal refactor of imports to avoid circular dependencies diff --git a/.changeset/popular-bulldogs-lie.md b/.changeset/popular-bulldogs-lie.md deleted file mode 100644 index 3bc83338c1..0000000000 --- a/.changeset/popular-bulldogs-lie.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-github': patch ---- - -Properly derive Github credentials when making requests in `GithubLocationAnalyzer` to support Github App authentication diff --git a/.changeset/popular-mails-wave.md b/.changeset/popular-mails-wave.md deleted file mode 100644 index 23517f0608..0000000000 --- a/.changeset/popular-mails-wave.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-ilert': minor ---- - -Added support for multiple responders in alert list, added new tab with list to support iLert resource 'service', added new tab with list to support iLert resource 'status page' diff --git a/.changeset/pre.json b/.changeset/pre.json index a2fd9eb458..8c78c0f0b3 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -2,246 +2,274 @@ "mode": "pre", "tag": "next", "initialVersions": { - "example-app": "0.2.76", - "@backstage/app-defaults": "1.0.7", - "example-backend": "0.2.76", - "@backstage/backend-app-api": "0.2.2", - "@backstage/backend-common": "0.15.2", - "@backstage/backend-defaults": "0.1.2", - "example-backend-next": "0.0.4", - "@backstage/backend-plugin-api": "0.1.3", - "@backstage/backend-tasks": "0.3.6", - "@backstage/backend-test-utils": "0.1.29", - "@backstage/catalog-client": "1.1.1", - "@backstage/catalog-model": "1.1.2", - "@backstage/cli": "0.20.0", + "example-app": "0.2.77", + "@backstage/app-defaults": "1.0.8", + "example-backend": "0.2.77", + "@backstage/backend-app-api": "0.2.3", + "@backstage/backend-common": "0.16.0", + "@backstage/backend-defaults": "0.1.3", + "example-backend-next": "0.0.5", + "@backstage/backend-plugin-api": "0.1.4", + "@backstage/backend-tasks": "0.3.7", + "@backstage/backend-test-utils": "0.1.30", + "@backstage/catalog-client": "1.1.2", + "@backstage/catalog-model": "1.1.3", + "@backstage/cli": "0.21.0", "@backstage/cli-common": "0.1.10", - "@backstage/codemods": "0.1.40", - "@backstage/config": "1.0.3", - "@backstage/config-loader": "1.1.5", - "@backstage/core-app-api": "1.1.1", - "@backstage/core-components": "0.11.2", - "@backstage/core-plugin-api": "1.0.7", - "@backstage/create-app": "0.4.32", - "@backstage/dev-utils": "1.0.7", + "@backstage/codemods": "0.1.41", + "@backstage/config": "1.0.4", + "@backstage/config-loader": "1.1.6", + "@backstage/core-app-api": "1.2.0", + "@backstage/core-components": "0.12.0", + "@backstage/core-plugin-api": "1.1.0", + "@backstage/create-app": "0.4.34", + "@backstage/dev-utils": "1.0.8", "e2e-test": "0.2.0", - "@backstage/errors": "1.1.2", - "@backstage/integration": "1.3.2", - "@backstage/integration-react": "1.1.5", - "@backstage/release-manifests": "0.0.6", - "@techdocs/cli": "1.2.2", - "techdocs-cli-embedded-app": "0.2.75", - "@backstage/test-utils": "1.2.1", + "@backstage/errors": "1.1.3", + "@backstage/integration": "1.4.0", + "@backstage/integration-react": "1.1.6", + "@backstage/release-manifests": "0.0.7", + "@backstage/repo-tools": "0.0.0", + "@techdocs/cli": "1.2.3", + "techdocs-cli-embedded-app": "0.2.76", + "@backstage/test-utils": "1.2.2", "@backstage/theme": "0.2.16", - "@backstage/types": "1.0.0", - "@backstage/version-bridge": "1.0.1", - "@backstage/plugin-adr": "0.2.2", - "@backstage/plugin-adr-backend": "0.2.2", - "@backstage/plugin-adr-common": "0.2.2", - "@backstage/plugin-airbrake": "0.3.10", - "@backstage/plugin-airbrake-backend": "0.2.10", - "@backstage/plugin-allure": "0.1.26", - "@backstage/plugin-analytics-module-ga": "0.1.21", - "@backstage/plugin-apache-airflow": "0.2.3", - "@backstage/plugin-api-docs": "0.8.10", + "@backstage/types": "1.0.1", + "@backstage/version-bridge": "1.0.2", + "@backstage/plugin-adr": "0.2.3", + "@backstage/plugin-adr-backend": "0.2.3", + "@backstage/plugin-adr-common": "0.2.3", + "@backstage/plugin-airbrake": "0.3.11", + "@backstage/plugin-airbrake-backend": "0.2.11", + "@backstage/plugin-allure": "0.1.27", + "@backstage/plugin-analytics-module-ga": "0.1.22", + "@backstage/plugin-apache-airflow": "0.2.4", + "@backstage/plugin-api-docs": "0.8.11", "@backstage/plugin-api-docs-module-protoc-gen-doc": "0.1.0", - "@backstage/plugin-apollo-explorer": "0.1.3", - "@backstage/plugin-app-backend": "0.3.37", - "@backstage/plugin-auth-backend": "0.17.0", - "@backstage/plugin-auth-node": "0.2.6", - "@backstage/plugin-azure-devops": "0.2.1", - "@backstage/plugin-azure-devops-backend": "0.3.16", + "@backstage/plugin-apollo-explorer": "0.1.4", + "@backstage/plugin-app-backend": "0.3.38", + "@backstage/plugin-auth-backend": "0.17.1", + "@backstage/plugin-auth-node": "0.2.7", + "@backstage/plugin-azure-devops": "0.2.2", + "@backstage/plugin-azure-devops-backend": "0.3.17", "@backstage/plugin-azure-devops-common": "0.3.0", - "@backstage/plugin-badges": "0.2.34", - "@backstage/plugin-badges-backend": "0.1.31", - "@backstage/plugin-bazaar": "0.1.25", - "@backstage/plugin-bazaar-backend": "0.2.0", - "@backstage/plugin-bitbucket-cloud-common": "0.2.0", - "@backstage/plugin-bitrise": "0.1.37", - "@backstage/plugin-catalog": "1.6.0", - "@backstage/plugin-catalog-backend": "1.5.0", - "@backstage/plugin-catalog-backend-module-aws": "0.1.10", - "@backstage/plugin-catalog-backend-module-azure": "0.1.8", - "@backstage/plugin-catalog-backend-module-bitbucket": "0.2.4", - "@backstage/plugin-catalog-backend-module-bitbucket-cloud": "0.1.4", - "@backstage/plugin-catalog-backend-module-bitbucket-server": "0.1.2", - "@backstage/plugin-catalog-backend-module-gerrit": "0.1.5", - "@backstage/plugin-catalog-backend-module-github": "0.1.8", - "@backstage/plugin-catalog-backend-module-gitlab": "0.1.8", - "@backstage/plugin-catalog-backend-module-ldap": "0.5.4", - "@backstage/plugin-catalog-backend-module-msgraph": "0.4.3", - "@backstage/plugin-catalog-backend-module-openapi": "0.1.3", - "@backstage/plugin-catalog-common": "1.0.7", - "@internal/plugin-catalog-customized": "0.0.3", - "@backstage/plugin-catalog-graph": "0.2.22", - "@backstage/plugin-catalog-graphql": "0.3.14", - "@backstage/plugin-catalog-import": "0.9.0", - "@backstage/plugin-catalog-node": "1.2.0", - "@backstage/plugin-catalog-react": "1.2.0", - "@backstage/plugin-cicd-statistics": "0.1.12", - "@backstage/plugin-cicd-statistics-module-gitlab": "0.1.6", - "@backstage/plugin-circleci": "0.3.10", - "@backstage/plugin-cloudbuild": "0.3.10", - "@backstage/plugin-code-climate": "0.1.10", - "@backstage/plugin-code-coverage": "0.2.3", - "@backstage/plugin-code-coverage-backend": "0.2.3", - "@backstage/plugin-codescene": "0.1.5", - "@backstage/plugin-config-schema": "0.1.33", - "@backstage/plugin-cost-insights": "0.11.32", + "@backstage/plugin-azure-sites": "0.1.0", + "@backstage/plugin-azure-sites-backend": "0.1.0", + "@backstage/plugin-azure-sites-common": "0.1.0", + "@backstage/plugin-badges": "0.2.35", + "@backstage/plugin-badges-backend": "0.1.32", + "@backstage/plugin-bazaar": "0.2.0", + "@backstage/plugin-bazaar-backend": "0.2.1", + "@backstage/plugin-bitbucket-cloud-common": "0.2.1", + "@backstage/plugin-bitrise": "0.1.38", + "@backstage/plugin-catalog": "1.6.1", + "@backstage/plugin-catalog-backend": "1.5.1", + "@backstage/plugin-catalog-backend-module-aws": "0.1.11", + "@backstage/plugin-catalog-backend-module-azure": "0.1.9", + "@backstage/plugin-catalog-backend-module-bitbucket": "0.2.5", + "@backstage/plugin-catalog-backend-module-bitbucket-cloud": "0.1.5", + "@backstage/plugin-catalog-backend-module-bitbucket-server": "0.1.3", + "@backstage/plugin-catalog-backend-module-gerrit": "0.1.6", + "@backstage/plugin-catalog-backend-module-github": "0.2.0", + "@backstage/plugin-catalog-backend-module-gitlab": "0.1.9", + "@backstage/plugin-catalog-backend-module-ldap": "0.5.5", + "@backstage/plugin-catalog-backend-module-msgraph": "0.4.4", + "@backstage/plugin-catalog-backend-module-openapi": "0.1.4", + "@backstage/plugin-catalog-common": "1.0.8", + "@internal/plugin-catalog-customized": "0.0.4", + "@backstage/plugin-catalog-graph": "0.2.23", + "@backstage/plugin-catalog-graphql": "0.3.15", + "@backstage/plugin-catalog-import": "0.9.1", + "@backstage/plugin-catalog-node": "1.2.1", + "@backstage/plugin-catalog-react": "1.2.1", + "@backstage/plugin-cicd-statistics": "0.1.13", + "@backstage/plugin-cicd-statistics-module-gitlab": "0.1.7", + "@backstage/plugin-circleci": "0.3.11", + "@backstage/plugin-cloudbuild": "0.3.11", + "@backstage/plugin-code-climate": "0.1.11", + "@backstage/plugin-code-coverage": "0.2.4", + "@backstage/plugin-code-coverage-backend": "0.2.4", + "@backstage/plugin-codescene": "0.1.6", + "@backstage/plugin-config-schema": "0.1.34", + "@backstage/plugin-cost-insights": "0.12.0", "@backstage/plugin-cost-insights-common": "0.1.1", - "@backstage/plugin-dynatrace": "1.0.0", - "@internal/plugin-todo-list": "1.0.6", - "@internal/plugin-todo-list-backend": "1.0.6", - "@internal/plugin-todo-list-common": "1.0.5", - "@backstage/plugin-explore": "0.3.41", - "@backstage/plugin-explore-react": "0.0.22", - "@backstage/plugin-firehydrant": "0.1.27", - "@backstage/plugin-fossa": "0.2.42", - "@backstage/plugin-gcalendar": "0.3.6", - "@backstage/plugin-gcp-projects": "0.3.29", - "@backstage/plugin-git-release-manager": "0.3.23", - "@backstage/plugin-github-actions": "0.5.10", - "@backstage/plugin-github-deployments": "0.1.41", - "@backstage/plugin-github-issues": "0.1.2", - "@backstage/plugin-github-pull-requests-board": "0.1.4", - "@backstage/plugin-gitops-profiles": "0.3.28", - "@backstage/plugin-gocd": "0.1.16", - "@backstage/plugin-graphiql": "0.2.42", - "@backstage/plugin-graphql-backend": "0.1.27", - "@backstage/plugin-home": "0.4.26", - "@backstage/plugin-ilert": "0.1.36", - "@backstage/plugin-jenkins": "0.7.9", - "@backstage/plugin-jenkins-backend": "0.1.27", - "@backstage/plugin-jenkins-common": "0.1.9", - "@backstage/plugin-kafka": "0.3.10", - "@backstage/plugin-kafka-backend": "0.2.30", - "@backstage/plugin-kubernetes": "0.7.3", - "@backstage/plugin-kubernetes-backend": "0.7.3", - "@backstage/plugin-kubernetes-common": "0.4.3", - "@backstage/plugin-lighthouse": "0.3.10", - "@backstage/plugin-newrelic": "0.3.28", - "@backstage/plugin-newrelic-dashboard": "0.2.3", - "@backstage/plugin-org": "0.5.10", - "@backstage/plugin-pagerduty": "0.5.3", - "@backstage/plugin-periskop": "0.1.8", - "@backstage/plugin-periskop-backend": "0.1.8", - "@backstage/plugin-permission-backend": "0.5.12", - "@backstage/plugin-permission-common": "0.7.0", - "@backstage/plugin-permission-node": "0.7.0", - "@backstage/plugin-permission-react": "0.4.6", - "@backstage/plugin-playlist": "0.1.1", - "@backstage/plugin-playlist-backend": "0.2.0", - "@backstage/plugin-playlist-common": "0.1.1", - "@backstage/plugin-proxy-backend": "0.2.31", - "@backstage/plugin-rollbar": "0.4.10", - "@backstage/plugin-rollbar-backend": "0.1.34", - "@backstage/plugin-scaffolder": "1.7.0", - "@backstage/plugin-scaffolder-backend": "1.7.0", - "@backstage/plugin-scaffolder-backend-module-cookiecutter": "0.2.12", - "@backstage/plugin-scaffolder-backend-module-rails": "0.4.5", - "@backstage/plugin-scaffolder-backend-module-yeoman": "0.2.10", - "@backstage/plugin-scaffolder-common": "1.2.1", - "@backstage/plugin-search": "1.0.3", - "@backstage/plugin-search-backend": "1.1.0", - "@backstage/plugin-search-backend-module-elasticsearch": "1.0.3", - "@backstage/plugin-search-backend-module-pg": "0.4.1", - "@backstage/plugin-search-backend-node": "1.0.3", - "@backstage/plugin-search-common": "1.1.0", - "@backstage/plugin-search-react": "1.2.0", - "@backstage/plugin-sentry": "0.4.3", - "@backstage/plugin-shortcuts": "0.3.2", - "@backstage/plugin-sonarqube": "0.4.2", - "@backstage/plugin-sonarqube-backend": "0.1.2", - "@backstage/plugin-splunk-on-call": "0.3.34", - "@backstage/plugin-stack-overflow": "0.1.6", - "@backstage/plugin-stack-overflow-backend": "0.1.6", - "@backstage/plugin-tech-insights": "0.3.1", - "@backstage/plugin-tech-insights-backend": "0.5.3", - "@backstage/plugin-tech-insights-backend-module-jsonfc": "0.1.21", - "@backstage/plugin-tech-insights-common": "0.2.7", - "@backstage/plugin-tech-insights-node": "0.3.5", - "@backstage/plugin-tech-radar": "0.5.17", - "@backstage/plugin-techdocs": "1.3.3", - "@backstage/plugin-techdocs-addons-test-utils": "1.0.5", - "@backstage/plugin-techdocs-backend": "1.4.0", - "@backstage/plugin-techdocs-module-addons-contrib": "1.0.5", - "@backstage/plugin-techdocs-node": "1.4.1", - "@backstage/plugin-techdocs-react": "1.0.5", - "@backstage/plugin-todo": "0.2.12", - "@backstage/plugin-todo-backend": "0.1.34", - "@backstage/plugin-user-settings": "0.5.0", - "@backstage/plugin-user-settings-backend": "0.1.1", - "@backstage/plugin-vault": "0.1.4", - "@backstage/plugin-vault-backend": "0.2.3", - "@backstage/plugin-xcmetrics": "0.2.30", - "@backstage/plugin-azure-sites": "0.0.0", - "@backstage/plugin-azure-sites-backend": "0.0.0", - "@backstage/plugin-azure-sites-common": "0.0.0" + "@backstage/plugin-dynatrace": "1.0.1", + "@backstage/plugin-events-backend": "0.1.0", + "@backstage/plugin-events-backend-module-aws-sqs": "0.1.0", + "@backstage/plugin-events-backend-module-azure": "0.1.0", + "@backstage/plugin-events-backend-module-bitbucket-cloud": "0.1.0", + "@backstage/plugin-events-backend-module-gerrit": "0.1.0", + "@backstage/plugin-events-backend-module-github": "0.1.0", + "@backstage/plugin-events-backend-module-gitlab": "0.1.0", + "@backstage/plugin-events-backend-test-utils": "0.1.0", + "@backstage/plugin-events-node": "0.1.0", + "@internal/plugin-todo-list": "1.0.7", + "@internal/plugin-todo-list-backend": "1.0.7", + "@internal/plugin-todo-list-common": "1.0.6", + "@backstage/plugin-explore": "0.3.42", + "@backstage/plugin-explore-react": "0.0.23", + "@backstage/plugin-firehydrant": "0.1.28", + "@backstage/plugin-fossa": "0.2.43", + "@backstage/plugin-gcalendar": "0.3.7", + "@backstage/plugin-gcp-projects": "0.3.30", + "@backstage/plugin-git-release-manager": "0.3.24", + "@backstage/plugin-github-actions": "0.5.11", + "@backstage/plugin-github-deployments": "0.1.42", + "@backstage/plugin-github-issues": "0.2.0", + "@backstage/plugin-github-pull-requests-board": "0.1.5", + "@backstage/plugin-gitops-profiles": "0.3.29", + "@backstage/plugin-gocd": "0.1.17", + "@backstage/plugin-graphiql": "0.2.43", + "@backstage/plugin-graphql-backend": "0.1.28", + "@backstage/plugin-home": "0.4.27", + "@backstage/plugin-ilert": "0.2.0", + "@backstage/plugin-jenkins": "0.7.10", + "@backstage/plugin-jenkins-backend": "0.1.28", + "@backstage/plugin-jenkins-common": "0.1.10", + "@backstage/plugin-kafka": "0.3.11", + "@backstage/plugin-kafka-backend": "0.2.31", + "@backstage/plugin-kubernetes": "0.7.4", + "@backstage/plugin-kubernetes-backend": "0.8.0", + "@backstage/plugin-kubernetes-common": "0.4.4", + "@backstage/plugin-lighthouse": "0.3.11", + "@backstage/plugin-newrelic": "0.3.29", + "@backstage/plugin-newrelic-dashboard": "0.2.4", + "@backstage/plugin-org": "0.6.0", + "@backstage/plugin-org-react": "0.1.0", + "@backstage/plugin-pagerduty": "0.5.4", + "@backstage/plugin-periskop": "0.1.9", + "@backstage/plugin-periskop-backend": "0.1.9", + "@backstage/plugin-permission-backend": "0.5.13", + "@backstage/plugin-permission-common": "0.7.1", + "@backstage/plugin-permission-node": "0.7.1", + "@backstage/plugin-permission-react": "0.4.7", + "@backstage/plugin-playlist": "0.1.2", + "@backstage/plugin-playlist-backend": "0.2.1", + "@backstage/plugin-playlist-common": "0.1.2", + "@backstage/plugin-proxy-backend": "0.2.32", + "@backstage/plugin-rollbar": "0.4.11", + "@backstage/plugin-rollbar-backend": "0.1.35", + "@backstage/plugin-scaffolder": "1.8.0", + "@backstage/plugin-scaffolder-backend": "1.8.0", + "@backstage/plugin-scaffolder-backend-module-cookiecutter": "0.2.13", + "@backstage/plugin-scaffolder-backend-module-rails": "0.4.6", + "@backstage/plugin-scaffolder-backend-module-yeoman": "0.2.11", + "@backstage/plugin-scaffolder-common": "1.2.2", + "@backstage/plugin-search": "1.0.4", + "@backstage/plugin-search-backend": "1.1.1", + "@backstage/plugin-search-backend-module-elasticsearch": "1.0.4", + "@backstage/plugin-search-backend-module-pg": "0.4.2", + "@backstage/plugin-search-backend-node": "1.0.4", + "@backstage/plugin-search-common": "1.1.1", + "@backstage/plugin-search-react": "1.2.1", + "@backstage/plugin-sentry": "0.4.4", + "@backstage/plugin-shortcuts": "0.3.3", + "@backstage/plugin-sonarqube": "0.5.0", + "@backstage/plugin-sonarqube-backend": "0.1.3", + "@backstage/plugin-splunk-on-call": "0.4.0", + "@backstage/plugin-stack-overflow": "0.1.7", + "@backstage/plugin-stack-overflow-backend": "0.1.7", + "@backstage/plugin-tech-insights": "0.3.3", + "@backstage/plugin-tech-insights-backend": "0.5.4", + "@backstage/plugin-tech-insights-backend-module-jsonfc": "0.1.22", + "@backstage/plugin-tech-insights-common": "0.2.8", + "@backstage/plugin-tech-insights-node": "0.3.6", + "@backstage/plugin-tech-radar": "0.5.18", + "@backstage/plugin-techdocs": "1.4.0", + "@backstage/plugin-techdocs-addons-test-utils": "1.0.6", + "@backstage/plugin-techdocs-backend": "1.4.1", + "@backstage/plugin-techdocs-module-addons-contrib": "1.0.6", + "@backstage/plugin-techdocs-node": "1.4.2", + "@backstage/plugin-techdocs-react": "1.0.6", + "@backstage/plugin-todo": "0.2.13", + "@backstage/plugin-todo-backend": "0.1.35", + "@backstage/plugin-user-settings": "0.5.1", + "@backstage/plugin-user-settings-backend": "0.1.2", + "@backstage/plugin-vault": "0.1.5", + "@backstage/plugin-vault-backend": "0.2.4", + "@backstage/plugin-xcmetrics": "0.2.31", + "@backstage/plugin-catalog-backend-module-incremental-ingestion": "0.0.0", + "@backstage/plugin-explore-backend": "0.0.0", + "@backstage/plugin-explore-common": "0.0.0" }, "changesets": [ - "analyze-software-creation", - "analyze-software-exploration", - "big-islands-add", - "brave-eels-allow", - "brown-days-pretend", - "calm-bottles-happen", - "chatty-planets-flash", - "clean-feet-remain", - "clean-planets-rhyme", - "dirty-birds-burn", - "dull-oranges-tap", - "eight-pears-attack", - "eleven-pets-sneeze", - "few-books-remember", - "flat-items-perform", - "flat-kangaroos-kiss", - "forty-bags-trade", - "forty-jokes-lie", - "fresh-cooks-sing", - "fresh-weeks-share", - "gorgeous-balloons-sit", - "gorgeous-onions-thank", - "gorgeous-queens-pull", - "great-colts-invite", - "grumpy-pigs-reflect", - "happy-avocados-tan", - "heavy-elephants-nail", - "itchy-paws-protect", - "kind-emus-juggle", - "lazy-planes-repair", - "little-bikes-eat", - "lucky-cats-peel", - "lucky-spoons-hide", - "mean-files-fly", - "metal-dogs-swim", - "nasty-crabs-share", - "orange-trees-peel", - "popular-bulldogs-lie", - "popular-mails-wave", - "real-swans-repair", - "renovate-6fb5f1b", - "selfish-kiwis-matter", - "shaggy-birds-happen", - "shaggy-colts-watch", - "sharp-goats-itch", - "shiny-beers-relax", - "short-balloons-work", - "sixty-islands-develop", - "sixty-pigs-shave", - "sixty-singers-push", - "spicy-parents-lick", - "spotty-dryers-explain", - "stupid-pens-occur", - "sweet-readers-compare", - "tame-ads-appear", - "tasty-colts-hug", - "tasty-scissors-tickle", - "ten-pens-draw", - "three-houses-agree", - "three-poems-think", - "two-oranges-joke", - "two-yaks-wave", - "unlucky-buttons-poke", - "wet-cameras-call" + "angry-dingos-lick", + "angry-trees-relax", + "chilly-ads-lay", + "clean-paws-fry", + "clever-pillows-drive", + "clever-rivers-obey", + "create-app-1669131574", + "create-app-1669720399", + "early-hairs-switch", + "early-parrots-guess", + "eight-spiders-know", + "eight-tables-hunt", + "fair-walls-talk", + "famous-cobras-suffer", + "fast-lies-remain", + "fluffy-walls-approve", + "forty-baboons-burn", + "four-adults-provide", + "four-buttons-clean", + "fresh-news-push", + "funny-numbers-compete", + "gold-icons-cheat", + "gold-yaks-join", + "gorgeous-hairs-applaud", + "healthy-crabs-collect", + "hip-chairs-tap", + "hip-stingrays-kneel", + "itchy-walls-boil", + "kind-walls-share", + "light-snakes-exercise", + "light-turtles-yawn", + "loud-rockets-reply", + "modern-mugs-shout", + "nasty-melons-build", + "nervous-mice-flow", + "new-bugs-march", + "nine-ears-whisper", + "old-bulldogs-fry", + "old-keys-leave", + "old-tips-cough", + "pretty-eagles-matter", + "pretty-melons-taste", + "quick-horses-cry", + "renovate-3fe8460", + "renovate-4bb70f3", + "renovate-50ee0c3", + "renovate-778b2fa", + "renovate-a5f7839", + "rich-balloons-leave", + "rich-garlics-play", + "rude-pugs-deny", + "rude-sloths-cross", + "search-heavy-frogs-confess", + "search-om-manniskan-ginge", + "search-tofu-panaeng", + "serious-windows-occur", + "silly-wolves-remember", + "slow-dragons-promise", + "slow-eggs-grab", + "slow-flies-marinate", + "slow-flies-marry", + "smart-radios-change", + "soft-nails-arrive", + "sour-flowers-care", + "sour-plums-grow", + "sour-queens-wait", + "stupid-clocks-return", + "stupid-gifts-serve", + "tender-colts-greet", + "tender-parrots-cover", + "thin-donuts-join", + "twelve-meals-smell", + "twenty-dodos-wash", + "warm-parents-notice", + "weak-ears-jam", + "wicked-games-search", + "yellow-forks-knock", + "young-turkeys-relax" ] } diff --git a/.changeset/pretty-eagles-matter.md b/.changeset/pretty-eagles-matter.md new file mode 100644 index 0000000000..64eabd9ce6 --- /dev/null +++ b/.changeset/pretty-eagles-matter.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-bazaar-backend': patch +--- + +Column `title` has replaced column `name` for `BazaarProject` in database diff --git a/.changeset/pretty-melons-taste.md b/.changeset/pretty-melons-taste.md new file mode 100644 index 0000000000..9c2a7a13da --- /dev/null +++ b/.changeset/pretty-melons-taste.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +JSX and React Fast Refresh transforms are no longer enabled when bundling backend code. diff --git a/.changeset/quick-horses-cry.md b/.changeset/quick-horses-cry.md new file mode 100644 index 0000000000..8b40c92b41 --- /dev/null +++ b/.changeset/quick-horses-cry.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-org': patch +--- + +Update `UserProfileCard` and `GroupProfileCard` to not render links unless the `showLinks` prop is set. The primary component for rendering links are the `EntityLinksCard` from plugin-catalog. diff --git a/.changeset/real-swans-repair.md b/.changeset/real-swans-repair.md deleted file mode 100644 index 67eafc9999..0000000000 --- a/.changeset/real-swans-repair.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-permission-common': patch ---- - -Properly handle rules that have no parameters in `PermissionClient` diff --git a/.changeset/renovate-1e2853d.md b/.changeset/renovate-1e2853d.md new file mode 100644 index 0000000000..9378786e80 --- /dev/null +++ b/.changeset/renovate-1e2853d.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Updated dependency `minimatch` to `5.1.1` and switch version range to `^`. diff --git a/.changeset/renovate-3fe8460.md b/.changeset/renovate-3fe8460.md new file mode 100644 index 0000000000..17dc8b8b97 --- /dev/null +++ b/.changeset/renovate-3fe8460.md @@ -0,0 +1,113 @@ +--- +'@backstage/backend-common': patch +'@backstage/backend-test-utils': patch +'@backstage/catalog-client': patch +'@backstage/cli': patch +'@backstage/config-loader': patch +'@backstage/core-app-api': patch +'@backstage/core-components': patch +'@backstage/core-plugin-api': patch +'@backstage/integration-react': patch +'@backstage/integration': patch +'@backstage/release-manifests': patch +'@backstage/test-utils': patch +'@backstage/plugin-adr-backend': patch +'@backstage/plugin-adr': patch +'@backstage/plugin-airbrake-backend': patch +'@backstage/plugin-airbrake': patch +'@backstage/plugin-allure': patch +'@backstage/plugin-analytics-module-ga': patch +'@backstage/plugin-apache-airflow': patch +'@backstage/plugin-api-docs': patch +'@backstage/plugin-apollo-explorer': patch +'@backstage/plugin-app-backend': patch +'@backstage/plugin-auth-backend': patch +'@backstage/plugin-auth-node': patch +'@backstage/plugin-azure-devops-backend': patch +'@backstage/plugin-azure-devops': patch +'@backstage/plugin-azure-sites-backend': patch +'@backstage/plugin-azure-sites': patch +'@backstage/plugin-badges': patch +'@backstage/plugin-bitbucket-cloud-common': patch +'@backstage/plugin-bitrise': patch +'@backstage/plugin-catalog-backend-module-azure': patch +'@backstage/plugin-catalog-backend-module-bitbucket-cloud': patch +'@backstage/plugin-catalog-backend-module-bitbucket-server': patch +'@backstage/plugin-catalog-backend-module-bitbucket': patch +'@backstage/plugin-catalog-backend-module-gerrit': patch +'@backstage/plugin-catalog-backend-module-github': patch +'@backstage/plugin-catalog-backend-module-gitlab': patch +'@backstage/plugin-catalog-backend-module-msgraph': patch +'@backstage/plugin-catalog-backend': patch +'@backstage/plugin-catalog-graphql': patch +'@backstage/plugin-catalog-import': patch +'@backstage/plugin-circleci': patch +'@backstage/plugin-cloudbuild': patch +'@backstage/plugin-code-climate': patch +'@backstage/plugin-code-coverage-backend': patch +'@backstage/plugin-code-coverage': patch +'@backstage/plugin-codescene': patch +'@backstage/plugin-config-schema': patch +'@backstage/plugin-cost-insights': patch +'@backstage/plugin-dynatrace': patch +'@backstage/plugin-explore-react': patch +'@backstage/plugin-explore': patch +'@backstage/plugin-firehydrant': patch +'@backstage/plugin-fossa': patch +'@backstage/plugin-gcalendar': patch +'@backstage/plugin-gcp-projects': patch +'@backstage/plugin-git-release-manager': patch +'@backstage/plugin-github-actions': patch +'@backstage/plugin-github-deployments': patch +'@backstage/plugin-github-issues': patch +'@backstage/plugin-github-pull-requests-board': patch +'@backstage/plugin-gitops-profiles': patch +'@backstage/plugin-gocd': patch +'@backstage/plugin-graphiql': patch +'@backstage/plugin-graphql-backend': patch +'@backstage/plugin-home': patch +'@backstage/plugin-ilert': patch +'@backstage/plugin-jenkins-backend': patch +'@backstage/plugin-jenkins': patch +'@backstage/plugin-kafka': patch +'@backstage/plugin-kubernetes': patch +'@backstage/plugin-lighthouse': patch +'@backstage/plugin-newrelic': patch +'@backstage/plugin-org-react': patch +'@backstage/plugin-org': patch +'@backstage/plugin-pagerduty': patch +'@backstage/plugin-periskop-backend': patch +'@backstage/plugin-periskop': patch +'@backstage/plugin-permission-backend': patch +'@backstage/plugin-permission-common': patch +'@backstage/plugin-permission-node': patch +'@backstage/plugin-playlist-backend': patch +'@backstage/plugin-playlist': patch +'@backstage/plugin-proxy-backend': patch +'@backstage/plugin-rollbar-backend': patch +'@backstage/plugin-rollbar': patch +'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch +'@backstage/plugin-scaffolder-backend': patch +'@backstage/plugin-scaffolder': patch +'@backstage/plugin-search': patch +'@backstage/plugin-sentry': patch +'@backstage/plugin-shortcuts': patch +'@backstage/plugin-sonarqube-backend': patch +'@backstage/plugin-sonarqube': patch +'@backstage/plugin-splunk-on-call': patch +'@backstage/plugin-stack-overflow': patch +'@backstage/plugin-tech-insights': patch +'@backstage/plugin-tech-radar': patch +'@backstage/plugin-techdocs-addons-test-utils': patch +'@backstage/plugin-techdocs-backend': patch +'@backstage/plugin-techdocs-module-addons-contrib': patch +'@backstage/plugin-techdocs': patch +'@backstage/plugin-todo-backend': patch +'@backstage/plugin-todo': patch +'@backstage/plugin-user-settings': patch +'@backstage/plugin-vault-backend': patch +'@backstage/plugin-vault': patch +'@backstage/plugin-xcmetrics': patch +--- + +Updated dependency `msw` to `^0.49.0`. diff --git a/.changeset/renovate-4bb70f3.md b/.changeset/renovate-4bb70f3.md new file mode 100644 index 0000000000..3a9054011f --- /dev/null +++ b/.changeset/renovate-4bb70f3.md @@ -0,0 +1,17 @@ +--- +'@backstage/core-app-api': patch +'@backstage/core-components': patch +'@backstage/core-plugin-api': patch +'@backstage/dev-utils': patch +'@backstage/test-utils': patch +'@backstage/types': patch +'@backstage/plugin-catalog-react': patch +'@backstage/plugin-catalog': patch +'@backstage/plugin-config-schema': patch +'@backstage/plugin-scaffolder-backend': patch +'@backstage/plugin-scaffolder': patch +'@backstage/plugin-shortcuts': patch +'@backstage/plugin-user-settings': patch +--- + +Updated dependency `zen-observable` to `^0.9.0`. diff --git a/.changeset/renovate-4cbe4f9.md b/.changeset/renovate-4cbe4f9.md new file mode 100644 index 0000000000..90d7faa801 --- /dev/null +++ b/.changeset/renovate-4cbe4f9.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Updated dependency `@rollup/plugin-commonjs` to `^23.0.0`. diff --git a/.changeset/renovate-50ee0c3.md b/.changeset/renovate-50ee0c3.md new file mode 100644 index 0000000000..3cdd142cf6 --- /dev/null +++ b/.changeset/renovate-50ee0c3.md @@ -0,0 +1,17 @@ +--- +'@backstage/core-app-api': patch +'@backstage/core-components': patch +'@backstage/core-plugin-api': patch +'@backstage/dev-utils': patch +'@backstage/test-utils': patch +'@backstage/types': patch +'@backstage/plugin-catalog-react': patch +'@backstage/plugin-catalog': patch +'@backstage/plugin-config-schema': patch +'@backstage/plugin-scaffolder-backend': patch +'@backstage/plugin-scaffolder': patch +'@backstage/plugin-shortcuts': patch +'@backstage/plugin-user-settings': patch +--- + +Updated dependency `zen-observable` to `^0.10.0`. diff --git a/.changeset/renovate-61ad428.md b/.changeset/renovate-61ad428.md new file mode 100644 index 0000000000..95e4e27baf --- /dev/null +++ b/.changeset/renovate-61ad428.md @@ -0,0 +1,8 @@ +--- +'@backstage/core-components': patch +'@backstage/plugin-gcp-projects': patch +'@backstage/plugin-scaffolder': patch +'@backstage/plugin-techdocs-module-addons-contrib': patch +--- + +Updated dependency `@react-hookz/web` to `^19.0.0`. diff --git a/.changeset/renovate-6fb5f1b.md b/.changeset/renovate-6fb5f1b.md deleted file mode 100644 index f98cc64ea4..0000000000 --- a/.changeset/renovate-6fb5f1b.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/cli': patch ---- - -Updated dependency `@svgr/plugin-jsx` to `6.5.x`. -Updated dependency `@svgr/plugin-svgo` to `6.5.x`. -Updated dependency `@svgr/rollup` to `6.5.x`. -Updated dependency `@svgr/webpack` to `6.5.x`. diff --git a/.changeset/renovate-778b2fa.md b/.changeset/renovate-778b2fa.md new file mode 100644 index 0000000000..f4f57e448b --- /dev/null +++ b/.changeset/renovate-778b2fa.md @@ -0,0 +1,7 @@ +--- +'@backstage/core-components': patch +'@backstage/plugin-codescene': patch +'@backstage/plugin-sonarqube': patch +--- + +Updated dependency `rc-progress` to `3.4.1`. diff --git a/.changeset/renovate-8c69aed.md b/.changeset/renovate-8c69aed.md new file mode 100644 index 0000000000..63a61d941a --- /dev/null +++ b/.changeset/renovate-8c69aed.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': patch +--- + +Updated dependency `@types/http-errors` to `^2.0.0`. diff --git a/.changeset/renovate-a5f7839.md b/.changeset/renovate-a5f7839.md new file mode 100644 index 0000000000..d1ab22e04a --- /dev/null +++ b/.changeset/renovate-a5f7839.md @@ -0,0 +1,5 @@ +--- +'@backstage/config-loader': patch +--- + +Updated dependency `typescript-json-schema` to `^0.55.0`. diff --git a/.changeset/renovate-bf8dfb3.md b/.changeset/renovate-bf8dfb3.md new file mode 100644 index 0000000000..57cabf075b --- /dev/null +++ b/.changeset/renovate-bf8dfb3.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Updated dependency `@rollup/plugin-yaml` to `^4.0.0`. diff --git a/.changeset/renovate-ceb9248.md b/.changeset/renovate-ceb9248.md new file mode 100644 index 0000000000..d1cfe1775e --- /dev/null +++ b/.changeset/renovate-ceb9248.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Updated dependency `@rollup/plugin-json` to `^5.0.0`. diff --git a/.changeset/renovate-ebb2ea1.md b/.changeset/renovate-ebb2ea1.md new file mode 100644 index 0000000000..010236c2f2 --- /dev/null +++ b/.changeset/renovate-ebb2ea1.md @@ -0,0 +1,8 @@ +--- +'@backstage/core-components': patch +'@backstage/plugin-gcp-projects': patch +'@backstage/plugin-scaffolder': patch +'@backstage/plugin-techdocs-module-addons-contrib': patch +--- + +Updated dependency `@react-hookz/web` to `^20.0.0`. diff --git a/.changeset/rich-balloons-leave.md b/.changeset/rich-balloons-leave.md new file mode 100644 index 0000000000..bb6832a681 --- /dev/null +++ b/.changeset/rich-balloons-leave.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': patch +--- + +Added the ability to understand Job Artifact URLs to the GitLab integration diff --git a/.changeset/rich-garlics-play.md b/.changeset/rich-garlics-play.md new file mode 100644 index 0000000000..5589a70e35 --- /dev/null +++ b/.changeset/rich-garlics-play.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +'@backstage/plugin-kubernetes-common': patch +--- + +Added Kubernetes proxy API route to backend Kubernetes plugin, allowing Backstage plugin developers to read/write new information from Kubernetes (if proper credentials are provided). diff --git a/.changeset/rude-pugs-deny.md b/.changeset/rude-pugs-deny.md new file mode 100644 index 0000000000..b877d96285 --- /dev/null +++ b/.changeset/rude-pugs-deny.md @@ -0,0 +1,27 @@ +--- +'@backstage/plugin-catalog-backend': minor +--- + +The catalog no longer stops after the first processor `validateEntityKind` +method returns `true` when validating entity kind shapes. Instead, it continues +through all registered processors that have this method, and requires that _at +least one_ of them returned true. + +The old behavior of stopping early made it harder to extend existing core kinds +with additional fields, since the `BuiltinKindsEntityProcessor` is always +present at the top of the processing chain and ensures that your additional +validation code would never be run. + +This is technically a breaking change, although it should not affect anybody +under normal circumstances, except if you had problematic validation code that +you were unaware that it was not being run. That code may now start to exhibit +those problems. + +If you need to disable this new behavior, `CatalogBuilder` as used in your +`packages/backend/src/plugins/catalog.ts` file now has a +`useLegacySingleProcessorValidation()` method to go back to the old behavior. + +```diff + const builder = await CatalogBuilder.create(env); ++builder.useLegacySingleProcessorValidation(); +``` diff --git a/.changeset/rude-sloths-cross.md b/.changeset/rude-sloths-cross.md new file mode 100644 index 0000000000..8d3fc486e8 --- /dev/null +++ b/.changeset/rude-sloths-cross.md @@ -0,0 +1,14 @@ +--- +'@backstage/plugin-explore': patch +'@backstage/plugin-explore-backend': patch +'@backstage/plugin-explore-common': patch +'@backstage/plugin-explore-react': patch +--- + +Added new `@backstage/plugin-explore-backend` & `@backstage/plugin-explore-common` packages. + +This deprecates the `ExploreToolsConfig` API (in `@backstage/plugin-explore-react`) which is replaced by the `ExploreApi` & `ExploreClient`. The list of `ExploreTool` data can now be provided on the backend by either using the supplied `StaticExploreToolProvider` or by implementing a custom `ExploreToolProvider`. See the [explore-backend README](https://github.com/backstage/backstage/blob/master/plugins/explore-backend/README.md) for full details. + +NOTE: Existing installations that have customized the `ExploreToolConfig` will continue to work through the new `ExploreClient`. However, existing data should be migrated over to new `explore-backend` plugin as `ExploreToolConfig` will be removed in the future. + +BREAKING CHANGE: If you have previously installed the `explore` plugin, but not yet customized the `ExploreToolConfig` API in your `packages/app`, this will result in an empty list of tools. diff --git a/.changeset/search-heavy-frogs-confess.md b/.changeset/search-heavy-frogs-confess.md new file mode 100644 index 0000000000..a37c28c60c --- /dev/null +++ b/.changeset/search-heavy-frogs-confess.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-search-backend-node': patch +--- + +Fixed a bug that could cause a `max listeners exceeded warning` to be logged when more than 10 collators were running simultaneously. diff --git a/.changeset/search-lieutenant-dangle.md b/.changeset/search-lieutenant-dangle.md new file mode 100644 index 0000000000..75f1bca915 --- /dev/null +++ b/.changeset/search-lieutenant-dangle.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-search-backend-module-elasticsearch': patch +--- + +Fixed a bug that prevented indices from being cleaned up under some circumstances, which could have led to shard exhaustion. diff --git a/.changeset/search-om-manniskan-ginge.md b/.changeset/search-om-manniskan-ginge.md new file mode 100644 index 0000000000..c36972f191 --- /dev/null +++ b/.changeset/search-om-manniskan-ginge.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-search-backend-node': patch +--- + +Updated indexer and decorator base classes to take advantage of features introduced in Node.js v16; be sure you are running a [supported version of Node.js](https://backstage.io/docs/releases/v1.8.0#node-16-and-18). diff --git a/.changeset/search-tofu-panaeng.md b/.changeset/search-tofu-panaeng.md new file mode 100644 index 0000000000..1f8bbf6a7b --- /dev/null +++ b/.changeset/search-tofu-panaeng.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-search-backend-node': patch +--- + +Use of `TestPipeline.withSubject()` is now deprecated. Instead, use the `fromCollator`, `fromDecorator`, or `fromIndexer` static methods to instantiate a test pipeline. You may also use the class' `withCollator`, `withDecorator`, and `withIndexer` instance methods to build test pipelines that consist of multiple test subjects. diff --git a/.changeset/selfish-kiwis-matter.md b/.changeset/selfish-kiwis-matter.md deleted file mode 100644 index e258af0e97..0000000000 --- a/.changeset/selfish-kiwis-matter.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/create-app': patch ---- - -Updated `@swc/core` to `v1.3.9` which fixes a `.tsx` parser bug. You may want to run `yarn backstage-cli versions:bump` to get on latest version including the CLI itself. diff --git a/.changeset/selfish-lizards-invent.md b/.changeset/selfish-lizards-invent.md new file mode 100644 index 0000000000..fd486416d8 --- /dev/null +++ b/.changeset/selfish-lizards-invent.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-analytics-module-ga': patch +--- + +Added support for sending virtual pageviews on `search` events in order to enable +Site Search functionality in GA. For more information consult [README](/plugins/analytics-module-ga/README.md#enabling-site-search) diff --git a/.changeset/serious-windows-occur.md b/.changeset/serious-windows-occur.md new file mode 100644 index 0000000000..37f778e846 --- /dev/null +++ b/.changeset/serious-windows-occur.md @@ -0,0 +1,6 @@ +--- +'@backstage/backend-common': patch +'@backstage/core-components': patch +--- + +Internal refactor to avoid usage of deprecated symbols. diff --git a/.changeset/shaggy-birds-happen.md b/.changeset/shaggy-birds-happen.md deleted file mode 100644 index 7f7a691c85..0000000000 --- a/.changeset/shaggy-birds-happen.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-github-issues': minor ---- - -**BREAKING**: Changed the casing of all exported types to have a lowercase "h" in "github". E.g. "GitHubIssuesPage" was renamed to "GithubIssuesPage". Please rename your imports where necessary. diff --git a/.changeset/shaggy-colts-watch.md b/.changeset/shaggy-colts-watch.md deleted file mode 100644 index 67003bd2d3..0000000000 --- a/.changeset/shaggy-colts-watch.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-components': patch ---- - -Disable base path workaround in `Link` component when React Router v6 stable is used. diff --git a/.changeset/sharp-goats-itch.md b/.changeset/sharp-goats-itch.md deleted file mode 100644 index 601d6a7e9d..0000000000 --- a/.changeset/sharp-goats-itch.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/types': patch ---- - -Added the `HumanDuration` type, moved here from `@backstage/backend-tasks`. This type matches the `Duration.fromObject` form of `luxon`. diff --git a/.changeset/sharp-shoes-bathe.md b/.changeset/sharp-shoes-bathe.md new file mode 100644 index 0000000000..8d3c0dfddb --- /dev/null +++ b/.changeset/sharp-shoes-bathe.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-incremental-ingestion': patch +--- + +Make incremental providers more resilient to failures diff --git a/.changeset/shiny-beers-relax.md b/.changeset/shiny-beers-relax.md deleted file mode 100644 index be8e9b6fb7..0000000000 --- a/.changeset/shiny-beers-relax.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/create-app': patch ---- - -Updated the create-app command to no longer require Git to be installed and configured. A git repository will only be initialized if possible and if not already in an git repository. diff --git a/.changeset/short-balloons-work.md b/.changeset/short-balloons-work.md deleted file mode 100644 index 5d0f66851d..0000000000 --- a/.changeset/short-balloons-work.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@backstage/plugin-bitrise': patch -'@backstage/plugin-code-coverage': patch -'@backstage/plugin-cost-insights': minor -'@backstage/plugin-git-release-manager': patch -'@backstage/plugin-xcmetrics': patch ---- - -Updated recharts to v2.0.0 and fixed typing issues diff --git a/.changeset/short-turtles-dream.md b/.changeset/short-turtles-dream.md new file mode 100644 index 0000000000..022ef35f58 --- /dev/null +++ b/.changeset/short-turtles-dream.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-stack-overflow-backend': patch +--- + +Added option to supply API Access Token. This is required in addition to an API key when trying to access the data for a private Stack Overflow Team. diff --git a/.changeset/shy-cycles-add.md b/.changeset/shy-cycles-add.md new file mode 100644 index 0000000000..2c70f2a8eb --- /dev/null +++ b/.changeset/shy-cycles-add.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-graph': patch +--- + +Set the default `maxDepth` prop for `EntityRelationsGraph` to a smaller value to provide better readability. diff --git a/.changeset/silly-wolves-remember.md b/.changeset/silly-wolves-remember.md new file mode 100644 index 0000000000..f39812db88 --- /dev/null +++ b/.changeset/silly-wolves-remember.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Registered shutdown hook in experimental catalog plugin. diff --git a/.changeset/silver-rats-rest.md b/.changeset/silver-rats-rest.md new file mode 100644 index 0000000000..52bb9acd6f --- /dev/null +++ b/.changeset/silver-rats-rest.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-search-common': minor +--- + +numberOfResults (total number of results for a given query) can now be provided by each search engine and consumed as part of the search results response diff --git a/.changeset/sixty-islands-develop.md b/.changeset/sixty-islands-develop.md deleted file mode 100644 index 9eb36cc1a9..0000000000 --- a/.changeset/sixty-islands-develop.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-scaffolder': minor ---- - -Added props to override default Scaffolder page title, subtitle and pageTitleOverride. -Routes like `rootRouteRef`, `selectedTemplateRouteRef`, `nextRouteRef`, `nextSelectedTemplateRouteRef` were made public and can be used in your app (e.g. in custom TemplateCard component). diff --git a/.changeset/sixty-pigs-shave.md b/.changeset/sixty-pigs-shave.md deleted file mode 100644 index e1f4443ad4..0000000000 --- a/.changeset/sixty-pigs-shave.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -'@backstage/backend-common': patch -'@backstage/plugin-catalog-backend-module-github': patch -'@backstage/plugin-catalog-import': patch -'@backstage/plugin-git-release-manager': patch -'@backstage/plugin-github-actions': patch -'@backstage/plugin-github-issues': patch -'@backstage/plugin-github-pull-requests-board': patch -'@backstage/plugin-techdocs': patch -'@backstage/plugin-techdocs-module-addons-contrib': patch ---- - -Replaces in-code uses of `GitHub` with `Github` and deprecates old versions. diff --git a/.changeset/sixty-singers-push.md b/.changeset/sixty-singers-push.md deleted file mode 100644 index b5b50ae077..0000000000 --- a/.changeset/sixty-singers-push.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-bazaar': minor ---- - -The limit prop of BazaarOverviewCard has been removed entirely, and instead replaced with a new optional boolean prop `fullWidth`. The BazaarOverviewCard now always use full height without fixed width. Also fixed problem with link to Bazaar. diff --git a/.changeset/slow-dragons-promise.md b/.changeset/slow-dragons-promise.md new file mode 100644 index 0000000000..045b4f34e3 --- /dev/null +++ b/.changeset/slow-dragons-promise.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-github': patch +--- + +Fix incorrectly exported GithubOrgEntityProvider as a type diff --git a/.changeset/slow-eggs-grab.md b/.changeset/slow-eggs-grab.md new file mode 100644 index 0000000000..e4c537687f --- /dev/null +++ b/.changeset/slow-eggs-grab.md @@ -0,0 +1,8 @@ +--- +'@backstage/repo-tools': minor +--- + +Api reference documentation improvements + +- breadcrumbs links semantics as code spans +- new `@config` annotation to describe related config keys diff --git a/.changeset/slow-flies-marinate.md b/.changeset/slow-flies-marinate.md new file mode 100644 index 0000000000..42d0de5f44 --- /dev/null +++ b/.changeset/slow-flies-marinate.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-events-backend-module-aws-sqs': patch +--- + +Upgrade to AWS SDK for Javascript v3 diff --git a/.changeset/slow-flies-marry.md b/.changeset/slow-flies-marry.md new file mode 100644 index 0000000000..7882707d32 --- /dev/null +++ b/.changeset/slow-flies-marry.md @@ -0,0 +1,8 @@ +--- +'@backstage/plugin-techdocs-node': patch +--- + +Upgrade to AWS SDK for Javascript v3 + +Techdocs support for AWS S3 now requires defining the AWS region to connect to. +If `techdocs.publisher.awsS3.region` is missing from the config, the AWS environment variable `AWS_REGION` will be used. diff --git a/.changeset/slow-lies-jam.md b/.changeset/slow-lies-jam.md new file mode 100644 index 0000000000..a9d7a90b95 --- /dev/null +++ b/.changeset/slow-lies-jam.md @@ -0,0 +1,11 @@ +--- +'@backstage/backend-common': patch +'@backstage/cli': patch +'@backstage/cli-common': patch +'@backstage/core-app-api': patch +'@backstage/core-components': patch +'@backstage/dev-utils': patch +'@techdocs/cli': patch +--- + +Tweaked wording to use inclusive terminology diff --git a/.changeset/smart-radios-change.md b/.changeset/smart-radios-change.md new file mode 100644 index 0000000000..1c7393829d --- /dev/null +++ b/.changeset/smart-radios-change.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': patch +--- + +Fixed `SingleHostDiscovery` so that it properly handles single-string `backend.listen` configurations such as `:80`. diff --git a/.changeset/soft-nails-arrive.md b/.changeset/soft-nails-arrive.md new file mode 100644 index 0000000000..e9c0a40a05 --- /dev/null +++ b/.changeset/soft-nails-arrive.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': minor +--- + +Implement Custom Field Explorer to view and play around with available installed custom field extensions diff --git a/.changeset/sour-flowers-care.md b/.changeset/sour-flowers-care.md new file mode 100644 index 0000000000..8524c4981c --- /dev/null +++ b/.changeset/sour-flowers-care.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': minor +--- + +Adds the ability to supply a `transformErrors` function to the `Stepper` for `/next` diff --git a/.changeset/sour-plums-grow.md b/.changeset/sour-plums-grow.md new file mode 100644 index 0000000000..4070dc5e50 --- /dev/null +++ b/.changeset/sour-plums-grow.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': patch +--- + +fixed `headerOptions` not passed to `TemplatePage` component diff --git a/.changeset/sour-queens-wait.md b/.changeset/sour-queens-wait.md new file mode 100644 index 0000000000..87231a1eb0 --- /dev/null +++ b/.changeset/sour-queens-wait.md @@ -0,0 +1,5 @@ +--- +'@backstage/repo-tools': patch +--- + +add the command type-deps to the repo tool package. diff --git a/.changeset/spicy-parents-lick.md b/.changeset/spicy-parents-lick.md deleted file mode 100644 index 692745ed12..0000000000 --- a/.changeset/spicy-parents-lick.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs': patch ---- - -Include query parameters when navigating to relative links in documents diff --git a/.changeset/spotty-dryers-explain.md b/.changeset/spotty-dryers-explain.md deleted file mode 100644 index 41bef3fbf7..0000000000 --- a/.changeset/spotty-dryers-explain.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-xcmetrics': patch ---- - -Removed an unused and hidden build details route. diff --git a/.changeset/strange-rocks-hide.md b/.changeset/strange-rocks-hide.md new file mode 100644 index 0000000000..e171a277fb --- /dev/null +++ b/.changeset/strange-rocks-hide.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': minor +--- + +The search table also holds the original entity value now and the facets endpoint fetches the filtered entity data from the search table. diff --git a/.changeset/strong-peaches-melt.md b/.changeset/strong-peaches-melt.md new file mode 100644 index 0000000000..43f819fd4d --- /dev/null +++ b/.changeset/strong-peaches-melt.md @@ -0,0 +1,6 @@ +--- +'@backstage/core-components': patch +'@backstage/test-utils': patch +--- + +Sync components in @backstage/core-components with the Component Design Guidelines diff --git a/.changeset/stupid-clocks-return.md b/.changeset/stupid-clocks-return.md new file mode 100644 index 0000000000..84b061334f --- /dev/null +++ b/.changeset/stupid-clocks-return.md @@ -0,0 +1,12 @@ +--- +'@backstage/plugin-events-backend-module-gitlab': patch +--- + +Add `createGitlabTokenValidator(config)` which can be used +to create a validator used at an ingress for topic `gitlab`. + +On top, there is a new `gitlabWebhookEventsModule` for the new backend plugin API +which auto-registers the `HttpPostIngress` for topic `gitlab` incl. the validator. + +Please find more information at +https://github.com/backstage/backstage/tree/master/plugins/events-backend-module-gitlab/README.md. diff --git a/.changeset/stupid-gifts-serve.md b/.changeset/stupid-gifts-serve.md new file mode 100644 index 0000000000..3110a1976c --- /dev/null +++ b/.changeset/stupid-gifts-serve.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-bitbucket-cloud': patch +--- + +Fix repo:push topic not matching `BitbucketCloudEventRouter`. diff --git a/.changeset/stupid-pens-occur.md b/.changeset/stupid-pens-occur.md deleted file mode 100644 index d8af9a447a..0000000000 --- a/.changeset/stupid-pens-occur.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-components': minor ---- - -**BREAKING**: Removed the `HomepageTimer` as it has been replaced by the `HeaderWorldClock` in the Home plugin and was deprecated over a year ago. diff --git a/.changeset/sweet-readers-compare.md b/.changeset/sweet-readers-compare.md deleted file mode 100644 index dd61b0afdc..0000000000 --- a/.changeset/sweet-readers-compare.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-circleci': patch ---- - -Update screenshots in documentation to match latest CircleCI plugin diff --git a/.changeset/tame-ads-appear.md b/.changeset/tame-ads-appear.md deleted file mode 100644 index 887cc73252..0000000000 --- a/.changeset/tame-ads-appear.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-tech-insights-backend': patch -'@backstage/plugin-tech-insights-node': patch ---- - -Add a default delay to the fact retrievers to prevent cold-start errors diff --git a/.changeset/tasty-colts-hug.md b/.changeset/tasty-colts-hug.md deleted file mode 100644 index e56d48a441..0000000000 --- a/.changeset/tasty-colts-hug.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-azure-sites': minor -'@backstage/plugin-azure-sites-backend': minor -'@backstage/plugin-azure-sites-common': minor ---- - -Azure Sites (Apps & Functions) support for a given entity. View the current status of the site, quickly jump to site's Overview page, or Log Stream page. diff --git a/.changeset/tasty-scissors-tickle.md b/.changeset/tasty-scissors-tickle.md deleted file mode 100644 index 745172df36..0000000000 --- a/.changeset/tasty-scissors-tickle.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-bitbucket-server': patch ---- - -`BitbucketServerEntityProvider`: Add option to configure schedule via `app-config.yaml` instead of in code. - -Please find how to configure the schedule at the config at -https://backstage.io/docs/integrations/bitbucketServer/discovery diff --git a/.changeset/ten-pens-draw.md b/.changeset/ten-pens-draw.md deleted file mode 100644 index be35a6f3b0..0000000000 --- a/.changeset/ten-pens-draw.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-gerrit': patch ---- - -`GerritEntityProvider`: Add option to configure schedule via `app-config.yaml` instead of in code. - -Please find how to configure the schedule at the config at -https://backstage.io/docs/integrations/gerrit/discovery diff --git a/.changeset/tender-colts-greet.md b/.changeset/tender-colts-greet.md new file mode 100644 index 0000000000..ff59bf0bea --- /dev/null +++ b/.changeset/tender-colts-greet.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-openapi': patch +--- + +Enabled support of resolving `$refs` in all kind of yaml documents, not only OpenAPI. This implicitly adds `$ref` resolving support for AsyncAPI specs. Thus, the `openApiPlaceholderResolver` has been renamed to `jsonSchemaRefPlaceholderResolver`. diff --git a/.changeset/tender-parrots-cover.md b/.changeset/tender-parrots-cover.md new file mode 100644 index 0000000000..5272fcbdce --- /dev/null +++ b/.changeset/tender-parrots-cover.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs-module-addons-contrib': patch +--- + +Use `app.title` from `app-config.yaml` when creating new Documentation Feedback issue. `Backstage` is the default value. diff --git a/.changeset/thin-donuts-join.md b/.changeset/thin-donuts-join.md new file mode 100644 index 0000000000..84705711d2 --- /dev/null +++ b/.changeset/thin-donuts-join.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': patch +--- + +Fixed Entity kind pluralisation in the `CatalogKindHeader` component. diff --git a/.changeset/thin-flies-wink.md b/.changeset/thin-flies-wink.md new file mode 100644 index 0000000000..a31db67a1c --- /dev/null +++ b/.changeset/thin-flies-wink.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': patch +--- + +Bump `json-schema-library` to version `^7.3.9` which does not pull in the `gson-pointer` library diff --git a/.changeset/three-houses-agree.md b/.changeset/three-houses-agree.md deleted file mode 100644 index 041cd471d3..0000000000 --- a/.changeset/three-houses-agree.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-tech-insights-backend': patch -'@backstage/plugin-tech-insights-node': patch ---- - -Use `HumanDuration` from `@backstage/types` diff --git a/.changeset/three-poems-think.md b/.changeset/three-poems-think.md deleted file mode 100644 index aad3cae117..0000000000 --- a/.changeset/three-poems-think.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-github': minor ---- - -Added the ability for the GitHub discovery provider to validate that catalog files exist before emitting them. - -Users can now set the `validateLocationsExist` property to `true` in their GitHub discovery configuration to opt in to this feature. -This feature only works with `catalogPath`s that do not contain wildcards. - -When `validateLocationsExist` is set to `true`, the GitHub discovery provider will retrieve the object from the -repository at the provided `catalogPath`. -If this file exists and is non-empty, then it will be emitted as a location for further processing. -If this file does not exist or is empty, then it will not be emitted. -Not emitting locations that do not exist allows for far fewer calls to the GitHub API to validate locations that do not exist. diff --git a/.changeset/twelve-meals-smell.md b/.changeset/twelve-meals-smell.md new file mode 100644 index 0000000000..a9d64823a3 --- /dev/null +++ b/.changeset/twelve-meals-smell.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-vault-backend': patch +--- + +Use `express-promise-router` to catch errors properly. +Add `403` error as a known one. It will now return a `NotAllowed` error. diff --git a/.changeset/twenty-dodos-wash.md b/.changeset/twenty-dodos-wash.md new file mode 100644 index 0000000000..d21088a953 --- /dev/null +++ b/.changeset/twenty-dodos-wash.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-defaults': patch +--- + +Added `lifecycleFactory` to default service factories. diff --git a/.changeset/two-oranges-joke.md b/.changeset/two-oranges-joke.md deleted file mode 100644 index 7f116e8ab0..0000000000 --- a/.changeset/two-oranges-joke.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-bitbucket-server': patch ---- - -Add `bitbucketServerEntityProviderCatalogModule` (new backend-plugin-api, alpha). diff --git a/.changeset/two-yaks-wave.md b/.changeset/two-yaks-wave.md deleted file mode 100644 index 97c2908928..0000000000 --- a/.changeset/two-yaks-wave.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -'@backstage/core-components': patch -'@backstage/create-app': patch -'@backstage/plugin-azure-sites': patch -'@backstage/plugin-catalog': patch -'@backstage/plugin-circleci': patch -'@backstage/plugin-cloudbuild': patch -'@backstage/plugin-dynatrace': patch -'@backstage/plugin-gcalendar': patch -'@backstage/plugin-github-actions': patch -'@backstage/plugin-github-issues': patch -'@backstage/plugin-gitops-profiles': patch -'@backstage/plugin-jenkins': patch -'@backstage/plugin-kafka': patch -'@backstage/plugin-pagerduty': patch -'@backstage/plugin-rollbar': patch -'@backstage/plugin-scaffolder': patch ---- - -Prefer using `Link` from `@backstage/core-components` rather than material-UI. diff --git a/.changeset/unlucky-buttons-poke.md b/.changeset/unlucky-buttons-poke.md deleted file mode 100644 index b0ccd2039a..0000000000 --- a/.changeset/unlucky-buttons-poke.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -'@backstage/integration': patch -'@backstage/plugin-catalog-backend-module-aws': patch -'@backstage/plugin-catalog-backend-module-gerrit': patch -'@backstage/plugin-stack-overflow-backend': patch -'@backstage/plugin-techdocs-backend': patch ---- - -Remove explicit default visibility at `config.d.ts` files. - -```ts -/** - * @visibility backend - */ -``` diff --git a/.changeset/warm-parents-notice.md b/.changeset/warm-parents-notice.md new file mode 100644 index 0000000000..0084a968a1 --- /dev/null +++ b/.changeset/warm-parents-notice.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-proxy-backend': patch +--- + +Documented the `createRouter` method. diff --git a/.changeset/weak-ears-jam.md b/.changeset/weak-ears-jam.md new file mode 100644 index 0000000000..8f20937998 --- /dev/null +++ b/.changeset/weak-ears-jam.md @@ -0,0 +1,5 @@ +--- +'@backstage/integration': patch +--- + +Added `integrations.github.apps.allowedInstallationOwners` to the configuration schema. diff --git a/.changeset/wet-cameras-call.md b/.changeset/wet-cameras-call.md deleted file mode 100644 index 3d58719269..0000000000 --- a/.changeset/wet-cameras-call.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': minor -'@backstage/plugin-kubernetes-common': patch ---- - -The Kubernetes errors when fetching pod metrics are now captured and returned to the frontend. - -- **BREAKING** The method `fetchPodMetricsByNamespace` in the interface `KubernetesFetcher` is changed to `fetchPodMetricsByNamespaces`. It now accepts a set of namespace strings and returns `Promise`. -- Add the `PodStatusFetchResponse` to the `FetchResponse` union type. -- Add `NOT_FOUND` to the `KubernetesErrorTypes` union type, the HTTP error with status code 404 will be mapped to this error. diff --git a/.changeset/wicked-games-search.md b/.changeset/wicked-games-search.md new file mode 100644 index 0000000000..5264995a2d --- /dev/null +++ b/.changeset/wicked-games-search.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-cost-insights': patch +--- + +added an optional config entry `costInsights.engineerThreshold` to allow users to control the threshold value for the 'negligible' change in costs. diff --git a/.changeset/yellow-forks-knock.md b/.changeset/yellow-forks-knock.md new file mode 100644 index 0000000000..98c4b5b675 --- /dev/null +++ b/.changeset/yellow-forks-knock.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-cost-insights': patch +--- + +Making a possibility to hide a trending line in a cost insights plugin diff --git a/.changeset/young-turkeys-relax.md b/.changeset/young-turkeys-relax.md new file mode 100644 index 0000000000..c53cd984a6 --- /dev/null +++ b/.changeset/young-turkeys-relax.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-plugin-api': patch +--- + +Added initial support for registering shutdown hooks via `lifecycleServiceRef`. diff --git a/.eslintrc.js b/.eslintrc.js index 47a47daee6..675a834efb 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -18,7 +18,7 @@ var path = require('path'); module.exports = { root: true, - plugins: ['notice'], + plugins: ['notice', 'testing-library'], rules: { 'notice/notice': [ 'error', @@ -45,5 +45,196 @@ module.exports = { "CallExpression[arguments.length=0] > MemberExpression[property.name='toUpperCase']", }, ], + 'testing-library/await-async-query': 'error', + 'testing-library/await-async-utils': 'error', + 'testing-library/no-await-sync-query': 'error', + 'testing-library/prefer-wait-for': 'error', + 'testing-library/no-dom-import': 'error', + 'testing-library/no-wait-for-side-effects': 'error', + 'testing-library/no-wait-for-empty-callback': 'error', + 'no-restricted-globals': [ + 'error', + [ + 'blur', + 'captureEvents', + 'chrome', + 'clientInformation', + 'close', + 'closed', + 'createImageBitmap', + 'crypto', + 'customElements', + 'defaultstatus', + 'defaultStatus', + 'devicePixelRatio', + 'external', + 'find', + 'focus', + 'frameElement', + 'frames', + 'getComputedStyle', + 'getSelection', + 'indexedDB', + 'innerHeight', + 'innerWidth', + 'isSecureContext', + 'length', + 'location', + 'locationbar', + 'matchMedia', + 'menubar', + 'moveBy', + 'moveTo', + 'name', + 'navigator', + 'onabort', + 'onafterprint', + 'onanimationend', + 'onanimationiteration', + 'onanimationstart', + 'onappinstalled', + 'onauxclick', + 'onbeforeinstallprompt', + 'onbeforeprint', + 'onbeforeunload', + 'onblur', + 'oncancel', + 'oncanplay', + 'oncanplaythrough', + 'onchange', + 'onclick', + 'onclose', + 'oncontextmenu', + 'oncuechange', + 'ondblclick', + 'ondevicemotion', + 'ondeviceorientation', + 'ondeviceorientationabsolute', + 'ondrag', + 'ondragend', + 'ondragenter', + 'ondragleave', + 'ondragover', + 'ondragstart', + 'ondrop', + 'ondurationchange', + 'onemptied', + 'onended', + 'onerror', + 'onfocus', + 'ongotpointercapture', + 'onhashchange', + 'oninput', + 'oninvalid', + 'onkeydown', + 'onkeypress', + 'onkeyup', + 'onlanguagechange', + 'onload', + 'onloadeddata', + 'onloadedmetadata', + 'onloadstart', + 'onlostpointercapture', + 'onmessage', + 'onmessageerror', + 'onmousedown', + 'onmouseenter', + 'onmouseleave', + 'onmousemove', + 'onmouseout', + 'onmouseover', + 'onmouseup', + 'onmousewheel', + 'onoffline', + 'ononline', + 'onpagehide', + 'onpageshow', + 'onpause', + 'onplay', + 'onplaying', + 'onpointercancel', + 'onpointerdown', + 'onpointerenter', + 'onpointerleave', + 'onpointermove', + 'onpointerout', + 'onpointerover', + 'onpointerup', + 'onpopstate', + 'onprogress', + 'onratechange', + 'onrejectionhandled', + 'onreset', + 'onresize', + 'onscroll', + 'onsearch', + 'onseeked', + 'onseeking', + 'onselect', + 'onstalled', + 'onstorage', + 'onsubmit', + 'onsuspend', + 'ontimeupdate', + 'ontoggle', + 'ontransitionend', + 'onunhandledrejection', + 'onunload', + 'onvolumechange', + 'onwaiting', + 'onwebkitanimationend', + 'onwebkitanimationiteration', + 'onwebkitanimationstart', + 'onwebkittransitionend', + 'onwheel', + 'open', + 'openDatabase', + 'opener', + 'origin', + 'outerHeight', + 'outerWidth', + 'pageXOffset', + 'pageYOffset', + 'parent', + 'performance', + 'personalbar', + 'postMessage', + 'print', + 'releaseEvents', + 'resizeBy', + 'resizeTo', + 'screen', + 'screenLeft', + 'screenTop', + 'screenX', + 'screenY', + 'scroll', + 'scrollbars', + 'scrollBy', + 'scrollTo', + 'scrollX', + 'scrollY', + 'self', + 'speechSynthesis', + 'status', + 'statusbar', + 'stop', + 'styleMedia', + 'toolbar', + 'top', + 'visualViewport', + 'webkitRequestFileSystem', + 'webkitResolveLocalFileSystemURL', + 'webkitStorageInfo', + ].map(function f(name) { + return { + name: name, + message: + 'Avoid using implicitly global variables. Use e.g. window.' + + name + + ' instead if this was your intent.', + }; + }), + ].flat(), }, }; diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 2dd8f4b55b..3f17c9591f 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -36,6 +36,15 @@ yarn.lock @backstage/reviewers @backst /plugins/code-coverage-backend @backstage/reviewers @alde @nissayeva /plugins/cost-insights @backstage/reviewers @backstage/silver-lining /plugins/cost-insights-* @backstage/reviewers @backstage/silver-lining +/plugins/events-backend @backstage/reviewers @pjungermann +/plugins/events-backend-module-aws-sqs @backstage/reviewers @pjungermann +/plugins/events-backend-module-azure @backstage/reviewers @pjungermann +/plugins/events-backend-module-bitbucket-cloud @backstage/reviewers @pjungermann +/plugins/events-backend-module-gerrit @backstage/reviewers @pjungermann +/plugins/events-backend-module-github @backstage/reviewers @pjungermann +/plugins/events-backend-module-gitlab @backstage/reviewers @pjungermann +/plugins/events-backend-test-utils @backstage/reviewers @pjungermann +/plugins/events-node @backstage/reviewers @pjungermann /plugins/explore @backstage/reviewers @backstage/sda-se-reviewers /plugins/explore-react @backstage/reviewers @backstage/sda-se-reviewers /plugins/fossa @backstage/reviewers @backstage/sda-se-reviewers diff --git a/.github/ISSUE_TEMPLATE/bug.yaml b/.github/ISSUE_TEMPLATE/bug.yaml new file mode 100644 index 0000000000..782b5fdfa0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug.yaml @@ -0,0 +1,84 @@ +name: '🐛 Bug Report' +description: 'Submit a bug report to help us improve' +title: '🐛 Bug Report: ' +labels: + - bug +body: + - type: markdown + attributes: + value: We value your time and effort to submit this bug report. 🙏 + - type: textarea + id: description + validations: + required: true + attributes: + label: '📜 Description' + description: 'A clear and concise description of what the bug is.' + placeholder: 'It bugs out when ...' + - type: textarea + id: expected-behavior + validations: + required: true + attributes: + label: '👍 Expected behavior' + description: 'What did you think should happen?' + placeholder: 'It should ...' + - type: textarea + id: actual-behavior + validations: + required: true + attributes: + label: '👎 Actual Behavior with Screenshots' + description: 'What did actually happen? Add screenshots, if applicable.' + placeholder: 'It actually ...' + - type: textarea + id: steps-to-reproduce + validations: + required: true + attributes: + label: '👟 Reproduction steps' + description: 'How do you trigger this bug? Please walk us through it step by step.' + placeholder: + "Provide a link to a live example, or an unambiguous set of steps to reproduce this bug. Include code or configuration to reproduce, if relevant.\n + 1. Go to '...'\n + 2. Click on '....'\n + 3. Scroll down to '....'" + - type: textarea + id: context + validations: + required: false + attributes: + label: '📃 Provide the context for the Bug.' + description: 'How has this issue affected you? What are you trying to accomplish?' + placeholder: 'Providing context (e.g. links to configuration settings, stack trace or log data) helps us come up with a solution that is most useful in the real world.' + - type: textarea + id: environment + validations: + required: false + attributes: + label: '🖥️ Your Environment' + description: 'Provide Browser Information + Provide Output of `yarn backstage-cli info`' + placeholder: 'Include as many relevant details about the environment you experienced the bug in.' + - type: checkboxes + id: no-duplicate-issues + attributes: + label: '👀 Have you spent some time to check if this bug has been raised before?' + options: + - label: "I checked and didn't find similar issue" + required: true + - type: checkboxes + id: read-code-of-conduct + attributes: + label: '🏢 Have you read the Code of Conduct?' + options: + - label: 'I have read the [Code of Conduct](https://github.com/backstage/backstage/blob/master/CODE_OF_CONDUCT.md)' + required: true + - type: dropdown + attributes: + label: Are you willing to submit PR? + description: This is absolutely not required, but we are happy to guide you in the contribution process. + options: + - Yes I am willing to submit a PR! + - No, but I'm happy to collaborate on a PR with someone else + - No, I don't have time to work on this right now diff --git a/.github/ISSUE_TEMPLATE/bug_template.md b/.github/ISSUE_TEMPLATE/bug_template.md deleted file mode 100644 index 04f8fd68d0..0000000000 --- a/.github/ISSUE_TEMPLATE/bug_template.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -name: 'Bug Report' -about: 'Create Bug Report' -labels: bug ---- - - - -## Expected Behavior - - - -## Actual Behavior - - - -## Steps to Reproduce - - - - -1. Step 1 -2. Step 2 -3. ... - -## Context - - - - - -## Your Environment - - - -- Browser Information: - -- Output of `yarn backstage-cli info`: - -```text - -``` diff --git a/.github/ISSUE_TEMPLATE/feature.yaml b/.github/ISSUE_TEMPLATE/feature.yaml new file mode 100644 index 0000000000..b5e06d48cf --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature.yaml @@ -0,0 +1,54 @@ +name: 🚀 Feature +description: 'Submit a proposal for a new feature' +title: '🚀 Feature: ' +labels: [enhancement] +body: + - type: markdown + attributes: + value: | + We value your time and efforts to submit this Feature request form. 🙏 + - type: textarea + id: feature-description + validations: + required: true + attributes: + label: '🔖 Feature description' + description: 'A clear and concise description of what the feature is.' + placeholder: 'You should add ...' + - type: textarea + id: context + validations: + required: true + attributes: + label: '🎤 Context' + description: 'Please explain why this feature should be implemented and how it would be used. Add examples, if applicable.' + placeholder: 'In my use-case, ...' + - type: textarea + id: implementation + attributes: + label: '✌️ Possible Implementation' + description: 'A clear and concise description of what you want to happen.' + placeholder: 'Not obligatory, but ideas as to the implementation of the addition or change' + - type: checkboxes + id: no-duplicate-issues + attributes: + label: '👀 Have you spent some time to check if this feature request has been raised before?' + options: + - label: "I checked and didn't find similar issue" + required: true + - type: checkboxes + id: read-code-of-conduct + attributes: + label: '🏢 Have you read the Code of Conduct?' + options: + - label: 'I have read the [Code of Conduct](https://github.com/backstage/backstage/blob/master/CODE_OF_CONDUCT.md)' + required: true + - type: dropdown + id: willing-to-submit-pr + attributes: + label: Are you willing to submit PR? + description: This is absolutely not required, but we are happy to guide you in the contribution process. + options: + - Yes I am willing to submit a PR! + - No, but I'm happy to collaborate on a PR with someone else + - No, I don't have time to work on this right now diff --git a/.github/ISSUE_TEMPLATE/feature_template.md b/.github/ISSUE_TEMPLATE/feature_template.md deleted file mode 100644 index d70622bf52..0000000000 --- a/.github/ISSUE_TEMPLATE/feature_template.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -name: 'Feature Request' -about: 'Suggest new features and changes' -labels: enhancement ---- - - - -## Feature Suggestion - - - - -## Possible Implementation - - - -## Context - - - - diff --git a/.github/ISSUE_TEMPLATE/plugin.yaml b/.github/ISSUE_TEMPLATE/plugin.yaml new file mode 100644 index 0000000000..a36c427981 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/plugin.yaml @@ -0,0 +1,52 @@ +name: 🔌 Plugin +description: 'Submit a proposal for a new Plugin' +title: '🔌 Plugin: ' +labels: [plugin] +body: + - type: markdown + attributes: + value: | + We value your time and efforts to submit this Plugin request form. 🙏 + - type: textarea + id: plugin-summary + validations: + required: true + attributes: + label: '🔖 Summary' + description: 'Provide a general summary of the plugin and how it should work' + placeholder: 'You should add ...' + - type: textarea + id: website + attributes: + label: '🌐 Project website (if applicable)' + description: 'Add a link to the open source project or product this plugin will integrate with, if existing' + placeholder: 'Website Link is ...' + - type: textarea + id: context + attributes: + label: '✌️ Context' + description: 'A clear and concise description about the Plugin.' + placeholder: 'Providing additional context' + - type: checkboxes + id: no-duplicate-issues + attributes: + label: '👀 Have you spent some time to check if this plugin request has been raised before?' + options: + - label: "I checked and didn't find similar issue" + required: true + - type: checkboxes + id: read-code-of-conduct + attributes: + label: '🏢 Have you read the Code of Conduct?' + options: + - label: 'I have read the [Code of Conduct](https://github.com/backstage/backstage/blob/master/CODE_OF_CONDUCT.md)' + required: true + - type: dropdown + id: willing-to-submit-pr + attributes: + label: Are you willing to submit PR? + description: This is absolutely not required, but we are happy to guide you in the contribution process. + options: + - Yes I am willing to submit a PR! + - No, but I'm happy to collaborate on a PR with someone else + - No, I don't have time to work on this right now diff --git a/.github/ISSUE_TEMPLATE/plugin_template.md b/.github/ISSUE_TEMPLATE/plugin_template.md deleted file mode 100644 index 75f0828848..0000000000 --- a/.github/ISSUE_TEMPLATE/plugin_template.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -name: 'Plugin suggestion' -about: 'Suggest a new Backstage plugin' -title: '[Plugin] THE PLUGIN NAME' -labels: plugin ---- - - - - -## Summary - - - -## Project website (if applicable) - - - -## Context - - diff --git a/.github/ISSUE_TEMPLATE/rfc.yaml b/.github/ISSUE_TEMPLATE/rfc.yaml new file mode 100644 index 0000000000..775c64e674 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/rfc.yaml @@ -0,0 +1,51 @@ +name: 💬 RFC +description: 'Request For Comments (RFC) from the community' +title: '💬 RFC: ' +labels: [rfc] +body: + - type: markdown + attributes: + value: | + We value your time and efforts to submit this RFC form. 🙏 + - type: textarea + id: rfc-need + validations: + required: true + attributes: + label: '🔖 Need' + description: 'Let us know why are you proposing this change' + placeholder: 'The problem we’re trying to address and the benefits/impact we expect to get from this are ...' + - type: textarea + id: proposal + validations: + required: true + attributes: + label: '🎉 Proposal' + description: 'Describe the proposal in as much detail as needed for reviewers to give concrete feedback.' + placeholder: 'Take special care in this section to describe any implications on data privacy or security.' + - type: textarea + id: alternatives + attributes: + label: '〽️ Alternatives' + description: 'What alternatives to the proposed solution were considered?' + placeholder: 'What criteria/data was used to discard these?' + - type: textarea + id: risk + attributes: + label: '❌ Risks' + description: 'What other things happening could conflict or compete (for example for resources) with the proposal?' + placeholder: 'What risk are there and how do we plan to handle them?' + - type: checkboxes + id: no-duplicate-issues + attributes: + label: '👀 Have you spent some time to check if this RFC has been raised before?' + options: + - label: "I checked and didn't find similar issue" + required: true + - type: checkboxes + id: read-code-of-conduct + attributes: + label: '🏢 Have you read the Code of Conduct?' + options: + - label: 'I have read the [Code of Conduct](https://github.com/backstage/backstage/blob/master/CODE_OF_CONDUCT.md)' + required: true diff --git a/.github/ISSUE_TEMPLATE/rfc_template.md b/.github/ISSUE_TEMPLATE/rfc_template.md deleted file mode 100644 index c4990ee5d6..0000000000 --- a/.github/ISSUE_TEMPLATE/rfc_template.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -name: 'RFC' -about: 'Request For Comments (RFC) from the community' -labels: rfc -title: '[RFC] ' ---- - -**Status:** Open for comments - - - -## Need - - - -## Proposal - - - -## Alternatives - - - -## Risks - - diff --git a/.github/ISSUE_TEMPLATE/ux-component_template.md b/.github/ISSUE_TEMPLATE/ux-component_template.md deleted file mode 100644 index 95b8f47615..0000000000 --- a/.github/ISSUE_TEMPLATE/ux-component_template.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -name: 'UX Component' -about: 'For designers to request UX components to be added to the Backstage Storybook' -labels: design ---- - -## 🗒 General - - - - -## 💻 Usage - - - -## 📐 Specs - - - - -## 🔮 Future - - diff --git a/.github/ISSUE_TEMPLATE/ux_component.yaml b/.github/ISSUE_TEMPLATE/ux_component.yaml new file mode 100644 index 0000000000..453f1e8278 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/ux_component.yaml @@ -0,0 +1,53 @@ +name: 🦄 UX Component +description: 'For designers to request UX components to be added to the Backstage Storybook' +title: '🦄 UX Component: ' +labels: [design] +body: + - type: markdown + attributes: + value: | + We value your time and efforts to submit this RFC form. 🙏 + - type: textarea + id: ux-general + validations: + required: true + attributes: + label: '🔖 General' + description: 'Write a nice note to the community requesting the creation of a new component.' + placeholder: 'Include an image of your component. Bonus points for a GIF!' + - type: textarea + id: usage + validations: + required: true + attributes: + label: '💻 Usage' + description: "Tell us what's the point of this component/pattern is." + placeholder: 'How does it help? How should it work? Any rules?' + - type: textarea + id: specs + validations: + required: true + attributes: + label: '📐 Specs' + description: 'Include images that detail the redlines for your component.' + placeholder: "Once we get our Figma workspace set up, we'll be posting the Figma files rather than doing specs by hand." + - type: textarea + id: future + attributes: + label: '🔮 Future' + description: 'List out any upcoming, exciting functionality for this component.' + placeholder: 'The component will have ...' + - type: checkboxes + id: no-duplicate-issues + attributes: + label: '👀 Have you spent some time to check if this UX Component request has been raised before?' + options: + - label: "I checked and didn't find similar issue" + required: true + - type: checkboxes + id: read-code-of-conduct + attributes: + label: '🏢 Have you read the Code of Conduct?' + options: + - label: 'I have read the [Code of Conduct](https://github.com/backstage/backstage/blob/master/CODE_OF_CONDUCT.md)' + required: true diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 5c4745c70c..b58c0beb05 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -1,6 +1,7 @@ { labels: ['dependencies'], extends: ['config:base', ':disableDependencyDashboard', ':gitSignOff'], + postUpdateOptions: ['yarnDedupeHighest'], rangeStrategy: 'update-lockfile', // @elastic/elasticsearch is ignored due to licensing issues. See #10992 ignoreDeps: ['@elastic/elasticsearch', 'event-source-polyfill'], @@ -20,5 +21,10 @@ groupName: 'SVGR monorepo packages', rangeStrategy: 'replace', }, + // We update yarn packages manually as it's gzip'd and we don't want to pollute the repository too much. + { + matchSourceUrls: ['https://github.com/yarnpkg/berry'], + enabled: false, + }, ], } diff --git a/.github/vale/Vocab/Backstage/accept.txt b/.github/vale/Vocab/Backstage/accept.txt index d21d0f9f25..bba59094e3 100644 --- a/.github/vale/Vocab/Backstage/accept.txt +++ b/.github/vale/Vocab/Backstage/accept.txt @@ -4,9 +4,11 @@ ACLs addon addons ADRs +airbrake Airbrake Airbrakes -airbrake +Alaria +Alef Anddddd Apdex api @@ -26,9 +28,9 @@ Billett bitbucket Bitrise Blackbox -Brex bool boolean +Brex builtins callout CDNs @@ -42,6 +44,7 @@ CI/CD classname cli cloudbuild +Cloudflare Cloudformation cncf Cobertura @@ -49,11 +52,11 @@ codeblocks Codecov codehilite Codehilite -codescene -CodeScene codemod codemods codeowners +codescene +CodeScene composability composable config @@ -75,8 +78,8 @@ Debounce debuggability declaratively deduplicated -deps dependabot +deps destructured destructuring dev @@ -95,9 +98,9 @@ don'ts dynatrace Dynatrace ecco +elasticsearch env Env -elasticsearch esbuild eslint ESModule @@ -117,12 +120,13 @@ Francesco gerrit Gerrit gitbeaker +gitea +Gitea github Gitiles gitlab GitLab -gitea -Gitea +globals Gource Grafana graphql @@ -140,6 +144,7 @@ hotspots http https Iain +Iglesias iLert img incentivised @@ -153,12 +158,12 @@ JaCoCo JavaScript jenkins Jira -JWTs jq js json jsonnet jsx +JWTs Kaewkasi Keyv Knex @@ -230,11 +235,14 @@ onboarding Onboarding OpenShift orgs +padding +paddings pagerduty pageview parallelization parseable Patrik +pattison Peloton performant Performant @@ -268,14 +276,13 @@ rebase Recharts Redash replicasets -statefulsets repo Repo repos rerender rerenders -Reusability reusability +Reusability roadmaps rollbar Rollbar @@ -298,9 +305,9 @@ semver serializable Serverless shoutout -siloed SIG SIGs +siloed Sinon Snyk Sonarqube @@ -311,11 +318,14 @@ Spotifiers spotify Spotify sqlite +sqs squidfunk src +statefulsets stdout -stringify +storable stringified +stringify subcomponent subcomponents subfolder @@ -329,10 +339,10 @@ superfences Superfences superset supertype -storable SVGs talkdesk Talkdesk +Tanzu tasklist techdocs Telenor @@ -347,6 +357,7 @@ theia thumbsup todo todos +togglable tolerations Tolerations toolchain @@ -374,9 +385,11 @@ upvote URIs URLs utils +Valentina validator validators varchar +VMware VPCs VSCode Wayfair @@ -393,7 +406,8 @@ yaml Zalando Zhou zod +Zolotusky zoomable zsh -Alef -Cloudflare +Lainfiesta +allowlisted diff --git a/.github/workflows/automate_merge_message.yml b/.github/workflows/automate_merge_message.yml new file mode 100644 index 0000000000..9fed796aa5 --- /dev/null +++ b/.github/workflows/automate_merge_message.yml @@ -0,0 +1,63 @@ +name: Automate merge message +on: + pull_request_target: + branches: ['master'] + types: ['closed'] + +permissions: + pull-requests: write + actions: none + checks: none + contents: none + deployments: none + issues: none + packages: none + pages: none + repository-projects: none + security-events: none + statuses: none + +jobs: + message: + # prevent running towards forks, and only run on merged PRs + if: github.repository == 'backstage/backstage' && github.event.pull_request.merged == true + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + ref: '${{ github.event.pull_request.merge_commit_sha }}' + + - name: fetch head & base + run: git fetch --depth 1 origin ${{ github.event.pull_request.head.sha }} ${{ github.event.pull_request.base.sha }} + + # We avoid using the in-source script since this workflow has elevated permissions that we don't want to expose + - name: Generate Message + id: generate-message + run: | + rm -f generate.js + wget -O generate.js https://raw.githubusercontent.com/backstage/backstage/master/scripts/generate-merge-message.js 1>&2 + node generate.js ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} > message.txt + + - name: Post Message + uses: actions/github-script@v6 + env: + ISSUE_NUMBER: ${{ github.event.pull_request.number }} + with: + script: | + const owner = "backstage"; + const repo = "backstage"; + const body = require('fs').readFileSync('message.txt', 'utf8').trim(); + const issue_number = Number(process.env.ISSUE_NUMBER); + + if (!body) { + console.log(`skipping comment for #${issue_number}`); + return; + } + + console.log(`creating comment for #${issue_number}`); + await github.rest.issues.createComment({ + owner, + repo, + issue_number, + body, + }); diff --git a/.github/workflows/automate_stale.yml b/.github/workflows/automate_stale.yml index 51bf41d61a..1d8aa525a9 100644 --- a/.github/workflows/automate_stale.yml +++ b/.github/workflows/automate_stale.yml @@ -8,7 +8,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@v5 + - uses: actions/stale@v6 id: stale with: stale-issue-message: > @@ -17,7 +17,7 @@ jobs: for your contributions. days-before-issue-stale: 60 days-before-issue-close: 7 - exempt-issue-labels: pinned,security,plugin,after-vacations,rfc,will-fix + exempt-issue-labels: plugin,after-vacations,will-fix stale-issue-label: stale stale-pr-message: > This PR has been automatically marked as stale because it has not had diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 64067188bb..7cc5874184 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,7 +17,7 @@ jobs: strategy: fail-fast: false matrix: - node-version: [14.x, 16.x] + node-version: [16.x, 18.x] env: CI: true @@ -33,7 +33,7 @@ jobs: registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.5.6 + uses: backstage/actions/yarn-install@v0.5.8 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} @@ -47,7 +47,7 @@ jobs: strategy: fail-fast: false matrix: - node-version: [14.x, 16.x] + node-version: [16.x, 18.x] env: CI: true @@ -63,10 +63,13 @@ jobs: registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.5.6 + uses: backstage/actions/yarn-install@v0.5.8 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} + - name: verify yarn dependency duplicates + run: node scripts/verify-lockfile-duplicates.js + - name: verify changesets run: node scripts/verify-changesets.js @@ -121,7 +124,7 @@ jobs: strategy: fail-fast: false matrix: - node-version: [14.x, 16.x] + node-version: [16.x, 18.x] services: postgres13: @@ -178,7 +181,7 @@ jobs: registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.5.6 + uses: backstage/actions/yarn-install@v0.5.8 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} @@ -208,7 +211,7 @@ jobs: - name: test all packages (and upload coverage) if: ${{ steps.yarn-lock.outcome == 'failure' }} run: | - yarn backstage-cli repo test --maxWorkers=2 --workerIdleMemoryLimit=1300M --coverage + yarn backstage-cli repo test --maxWorkers=2 --workerIdleMemoryLimit=800M --coverage bash <(curl -s https://codecov.io/bash) -N $(git rev-parse FETCH_HEAD) env: BACKSTAGE_NEXT_TESTS: 1 diff --git a/.github/workflows/cron.yml b/.github/workflows/cron.yml index 467c817baf..2d28c242ee 100644 --- a/.github/workflows/cron.yml +++ b/.github/workflows/cron.yml @@ -8,7 +8,7 @@ jobs: cron: runs-on: ubuntu-latest steps: - - uses: backstage/actions/cron@v0.5.6 + - uses: backstage/actions/cron@v0.5.8 with: app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }} private-key: ${{ secrets.BACKSTAGE_GOALIE_PRIVATE_KEY }} diff --git a/.github/workflows/deploy_docker-image.yml b/.github/workflows/deploy_docker-image.yml index 90ea8e13f1..f5dc164737 100644 --- a/.github/workflows/deploy_docker-image.yml +++ b/.github/workflows/deploy_docker-image.yml @@ -9,13 +9,13 @@ jobs: steps: - name: checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: path: backstage ref: v${{ github.event.client_payload.version }} - name: setup-node - uses: actions/setup-node@v1 + uses: actions/setup-node@v3 with: node-version: 16.x registry-url: https://registry.npmjs.org/ @@ -23,7 +23,7 @@ jobs: # Beginning of yarn setup, keep in sync between all workflows. # TODO(Rugvip): move this to composite action once all features we use are supported - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 + uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth @@ -31,7 +31,7 @@ jobs: # Cache every node_modules folder inside the monorepo - name: cache all node_modules id: cache-modules - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: '**/node_modules' # We use both yarn.lock and package.json as cache keys to ensure that @@ -44,10 +44,10 @@ jobs: - name: find location of global yarn cache id: yarn-cache if: steps.cache-modules.outputs.cache-hit != 'true' - run: echo "::set-output name=dir::$(yarn cache dir)" + run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT - name: cache global yarn cache - uses: actions/cache@v2 + uses: actions/cache@v3 if: steps.cache-modules.outputs.cache-hit != 'true' with: path: ${{ steps.yarn-cache.outputs.dir }} diff --git a/.github/workflows/deploy_microsite.yml b/.github/workflows/deploy_microsite.yml index af6f222377..1f87c30af2 100644 --- a/.github/workflows/deploy_microsite.yml +++ b/.github/workflows/deploy_microsite.yml @@ -10,7 +10,7 @@ jobs: strategy: matrix: - node-version: [14.x] + node-version: [16.x] env: CI: true diff --git a/.github/workflows/deploy_nightly.yml b/.github/workflows/deploy_nightly.yml index 476e5dd10b..053f3db621 100644 --- a/.github/workflows/deploy_nightly.yml +++ b/.github/workflows/deploy_nightly.yml @@ -11,7 +11,7 @@ jobs: strategy: matrix: - node-version: [14.x] + node-version: [16.x] env: CI: true @@ -26,7 +26,7 @@ jobs: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.5.6 + uses: backstage/actions/yarn-install@v0.5.8 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} diff --git a/.github/workflows/deploy_packages.yml b/.github/workflows/deploy_packages.yml index f3736d93a2..bebe24d0f6 100644 --- a/.github/workflows/deploy_packages.yml +++ b/.github/workflows/deploy_packages.yml @@ -12,8 +12,9 @@ jobs: needs_release: ${{ steps.release_check.outputs.needs_release }} strategy: + fail-fast: false matrix: - node-version: [14.x, 16.x] + node-version: [16.x, 18.x] services: postgres13: @@ -67,7 +68,7 @@ jobs: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.5.6 + uses: backstage/actions/yarn-install@v0.5.8 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} @@ -130,7 +131,7 @@ jobs: strategy: matrix: - node-version: [14.x] + node-version: [16.x] env: CI: 'true' @@ -145,7 +146,7 @@ jobs: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.5.6 + uses: backstage/actions/yarn-install@v0.5.8 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} diff --git a/.github/workflows/issue.yaml b/.github/workflows/issue.yaml index 95e91dda30..e7582bd788 100644 --- a/.github/workflows/issue.yaml +++ b/.github/workflows/issue.yaml @@ -10,4 +10,4 @@ jobs: if: github.repository == 'backstage/backstage' steps: - name: Issue sync - uses: backstage/actions/issue-sync@v0.5.6 + uses: backstage/actions/issue-sync@v0.5.8 diff --git a/.github/workflows/pr-review-comment.yaml b/.github/workflows/pr-review-comment.yaml index e822209e03..e3988a898d 100644 --- a/.github/workflows/pr-review-comment.yaml +++ b/.github/workflows/pr-review-comment.yaml @@ -33,9 +33,9 @@ jobs: } const prNumber = artifact.name.slice('pr_number-'.length) - console.log(`::set-output name=pr-number::${prNumber}`); + core.setOutput('pr-number', prNumber); - - uses: backstage/actions/re-review@v0.5.6 + - uses: backstage/actions/re-review@v0.5.8 with: app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }} private-key: ${{ secrets.BACKSTAGE_GOALIE_PRIVATE_KEY }} diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index e13928ccee..54fcf2e74b 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -18,7 +18,7 @@ jobs: if: github.repository == 'backstage/backstage' && ( github.event.pull_request || github.event.issue.pull_request ) steps: - name: PR sync - uses: backstage/actions/pr-sync@v0.5.6 + uses: backstage/actions/pr-sync@v0.5.8 with: github-token: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }} app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }} diff --git a/.github/workflows/sync_code-formatting.yml b/.github/workflows/sync_code-formatting.yml index 779284818f..45c84e298a 100644 --- a/.github/workflows/sync_code-formatting.yml +++ b/.github/workflows/sync_code-formatting.yml @@ -20,7 +20,7 @@ jobs: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.5.6 + uses: backstage/actions/yarn-install@v0.5.8 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} diff --git a/.github/workflows/sync_snyk-github-issues.yml b/.github/workflows/sync_snyk-github-issues.yml index dd35ba26f3..7b01757ba7 100644 --- a/.github/workflows/sync_snyk-github-issues.yml +++ b/.github/workflows/sync_snyk-github-issues.yml @@ -12,7 +12,7 @@ jobs: strategy: matrix: - node-version: [14.x] + node-version: [16.x] steps: - uses: actions/checkout@v3 @@ -23,7 +23,7 @@ jobs: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.5.6 + uses: backstage/actions/yarn-install@v0.5.8 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} diff --git a/.github/workflows/verify_docs-quality.yml b/.github/workflows/verify_docs-quality.yml index 736f09571f..dc1d942e32 100644 --- a/.github/workflows/verify_docs-quality.yml +++ b/.github/workflows/verify_docs-quality.yml @@ -18,7 +18,7 @@ jobs: # also contains an "--config=.github/vale/config.ini" option - name: generate vale args id: generate - run: echo "::set-output name=args::$(node scripts/check-docs-quality.js --ci-args)" + run: echo "args=$(node scripts/check-docs-quality.js --ci-args)" >> $GITHUB_OUTPUT - name: documentation quality check uses: errata-ai/vale-action@v2.0.1 diff --git a/.github/workflows/verify_e2e-linux.yml b/.github/workflows/verify_e2e-linux.yml index 3353a84f3b..8d296041b7 100644 --- a/.github/workflows/verify_e2e-linux.yml +++ b/.github/workflows/verify_e2e-linux.yml @@ -31,7 +31,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - node-version: [14.x, 16.x] + node-version: [16.x, 18.x] env: CI: true @@ -52,7 +52,7 @@ jobs: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.5.6 + uses: backstage/actions/yarn-install@v0.5.8 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} diff --git a/.github/workflows/verify_e2e-techdocs.yml b/.github/workflows/verify_e2e-techdocs.yml index e1bb2246dc..59c8d9f7cc 100644 --- a/.github/workflows/verify_e2e-techdocs.yml +++ b/.github/workflows/verify_e2e-techdocs.yml @@ -18,7 +18,7 @@ jobs: strategy: matrix: - node-version: [14.x, 16.x] + node-version: [16.x, 18.x] env: CI: true @@ -26,7 +26,9 @@ jobs: steps: - uses: actions/checkout@v3 - - uses: actions/setup-python@v3 + - uses: actions/setup-python@v4 + with: + python-version: '3.9' - name: install dependencies run: yarn install --immutable diff --git a/.github/workflows/verify_e2e-tugboat.yml b/.github/workflows/verify_e2e-tugboat.yml index 04d9e686e2..cb3a463a0d 100644 --- a/.github/workflows/verify_e2e-tugboat.yml +++ b/.github/workflows/verify_e2e-tugboat.yml @@ -52,7 +52,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: '14' + node-version: '16.x' - name: yarn install run: yarn --cwd cypress install diff --git a/.github/workflows/verify_e2e-windows.yml b/.github/workflows/verify_e2e-windows.yml index 4e8025f7d5..8a49b8fe31 100644 --- a/.github/workflows/verify_e2e-windows.yml +++ b/.github/workflows/verify_e2e-windows.yml @@ -22,7 +22,7 @@ jobs: strategy: matrix: os: [windows-2019] - node-version: [14.x, 16.x] + node-version: [16.x, 18.x] env: CI: true @@ -49,7 +49,7 @@ jobs: with: node-version: ${{ matrix.node-version }} - name: Add msbuild to PATH - uses: microsoft/setup-msbuild@v1.0.3 + uses: microsoft/setup-msbuild@v1.1.3 - name: setup chrome uses: browser-actions/setup-chrome@latest - name: yarn install diff --git a/.github/workflows/verify_kubernetes.yml b/.github/workflows/verify_kubernetes.yml index e64ddec586..a50f817020 100644 --- a/.github/workflows/verify_kubernetes.yml +++ b/.github/workflows/verify_kubernetes.yml @@ -12,7 +12,7 @@ jobs: strategy: matrix: - node-version: [14.x, 16.x] + node-version: [16.x, 18.x] env: CI: true @@ -28,12 +28,12 @@ jobs: registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.5.6 + uses: backstage/actions/yarn-install@v0.5.8 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} - name: bootstrap kind - uses: helm/kind-action@v1.3.0 + uses: helm/kind-action@v1.4.0 - name: kubernetes test working-directory: packages/backend-common diff --git a/.github/workflows/verify_microsite.yml b/.github/workflows/verify_microsite.yml index 50c2116090..4085f334f3 100644 --- a/.github/workflows/verify_microsite.yml +++ b/.github/workflows/verify_microsite.yml @@ -12,7 +12,7 @@ jobs: strategy: matrix: - node-version: [14.x] + node-version: [16.x] env: CI: true @@ -32,6 +32,9 @@ jobs: run: yarn install --immutable working-directory: microsite + - name: verify yarn dependency duplicates + run: node scripts/verify-lockfile-duplicates.js + - name: prettier run: yarn prettier:check working-directory: microsite diff --git a/.github/workflows/verify_storybook.yml b/.github/workflows/verify_storybook.yml index cac94ff682..b3bd850937 100644 --- a/.github/workflows/verify_storybook.yml +++ b/.github/workflows/verify_storybook.yml @@ -35,7 +35,7 @@ jobs: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.5.6 + uses: backstage/actions/yarn-install@v0.5.8 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} - name: storybook yarn install diff --git a/.github/workflows/verify_windows.yml b/.github/workflows/verify_windows.yml index 8bbaa645bf..75a0633cbe 100644 --- a/.github/workflows/verify_windows.yml +++ b/.github/workflows/verify_windows.yml @@ -13,7 +13,7 @@ jobs: strategy: matrix: - node-version: [14.x, 16.x] + node-version: [16.x, 18.x] env: CI: true diff --git a/ADOPTERS.md b/ADOPTERS.md index cc5db5dea7..90aaa5c69b 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -141,7 +141,7 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/ | [Kambi AB](https://www.kambi.com) | [Martin Norum](mailto:martin.norum@kambi.com) | We want to kick ass at speed, so we're currently building up a catalog of our existing software, and looking into how Backstage can support us in our journey towards autonomous product teams. Both to improve speed to market and operational awareness. | | [ANZ](https://www.anz.com.au/personal/) | [Elliot Jackson](mailto:elliot.jackson@anz.com) | Catalog, tech docs and automation | | [Genie Solutions](https://www.geniesolutionssoftware.com.au) | [Zainab Bagasrawala](mailto:zainabbagasrawala@geniesolutions.com.au) | Developer Portal to track our projects, documentation, observability tools and more | -| [MadeiraMadeira](https://www.madeiramadeira.com.br) | [Paulo Eduardo Peixoto](mailto:paulo.peixoto@madeiramadeira.com.br) | As a support tool for developers, following the principles of "Developer Experience". In order to make the developer's day to day more practical, efficient and, why not, happy. | +| [MadeiraMadeira](https://www.madeiramadeira.com.br) | [DX Team](mailto:dxteam@madeiramadeira.com.br) | As a support tool for developers, following the principles of "Developer Experience". In order to make the developer's day to day more practical, efficient and, why not, happy. | | [Sonatype](https://www.sonatype.com) | [Srikar Ananthula](mailto:sananthula@sonatype.com) | Centralize services used internally with many plugins | | [CVS Health](https://www.cvshealth.com) | [Ari Ben-Elazar](mailto:abenelazar@gmail.com) | Cataloging and documenting our service offerings to offer our internal developers a better operational journey | | [Yatra.com](https://www.yatra.com) | [Matiur Rahman Maitur](mailto:arifrahman4u@gmail.com) | Easy to find out Project details, ownership, dependent services, Documentation, it is very useful for developer. | @@ -215,4 +215,10 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/ | [Ferrovial](https://ferrovial.com) | [Jose Luis Rosado](mailto:jlrosado@ferrovial.com) | Backstage is helping us to improve and acelerate dev experience helping teams to quickly find technical documentation, infrastructure templates, pipelines, software components and quickstarters that have been developed by our squads in a inner source friendly environment. | | [Inter&Co](https://bancointer.com.br) | [Arnaud Lanna](https://github.com/arnaudlanna), [Adriano Silva](https://github.com/adrianovss), [Bruno Grossi](https://github.com/begrossi) | We're using Backstage as our internal Developer Portal to catalog and collect repositories and microservices pieces of information like ownership, deployment time, and documentation. | | [StatusNeo](https://statusneo.com/) | [Karan Nangru](mailto:nangru@statusneo.com), [@NishkarshRaj](https://github.com/NishkarshRaj), and [Gaurav Sarien](mailto:gaurav.sarien@statusneo.com) | Harnessing the power of central catalog inventory and self-serving software templates | -| [Alaska Airlines](https://alaskaair.com) | [@swerdick](https://github.com/swerdick) | Backstage is the developer portal for our 'software delivery platform'. Consolidating developer tools to one place, and providing automation to make it easy for developers to create and deploy applications to Kubernetes | +| [Alaska Airlines](https://alaskaair.com) | [@swerdick](https://github.com/swerdick) | Backstage is the developer portal for our 'software delivery platform'. Consolidating developer tools to one place, and providing automation to make it easy for developers to create and deploy applications to Kubernetes +| [Loft](https://loft.com.br) | [Squad DevTools](mailto:squad_devtools@loft.com.br) | We're using Backstage to give visibility and promote ownership of all our applications, resources and tools. Now moving to use it as a Developer Portal to create applications, AWS resources etc. | +| [Raízen](https://www.raizen.com) | [Melquisedque Bernardes Pereira](https://github.com/rayleshh) and [Paulo Eduardo Peixoto](https://github.com/padupe) | Backstage helps us to organize and make available, in a simple and direct way, all the infrastructure for new projects. In addition, it has become a great support tool for our developers. | +| [Trifork](https://trifork.com) | [Casper Thygesen](https://github.com/cthtrifork) | We're using Backstage as part of our dataplatform product. It integrates with the infrastructure components and is the developer portal for all the platform users. | +| [MSCI](http://msci.com) | [Stephen Burrows](mailto:stephen.burrows@msci.com) | Developer portal, service catalog, documentation and tooling +| [ESW](https://esw.com) | [Alisson Fabiano](https://github.com/afabianoo), [Bruno Quintella](https://github.com/quintelab) and [Guilherme Oenning](https://github.com/goenning) | Backstage is our one stop shop to find everything related to all our services, such as ownership, dependencies, production status, tech health and much more. +| [FanDuel](https://fanduel.com) | [Diego Herrera](https://github.com/diegoh), [Christy Campbell](https://github.com/FD-ChristopherCampbell) | We use backstage as our developer portal to provide visibility of our software, ownership, strategy, and the state of maturity across disciplines. diff --git a/README.md b/README.md index 9a3c4cdb5a..8a2bd338d9 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ [](https://discord.gg/EBHEGzX)  [](https://codecov.io/gh/backstage/backstage) -[](https://github.com/backstage/backstage/releases) +[](https://github.com/backstage/backstage/releases) ## What is Backstage? @@ -52,7 +52,7 @@ Check out [the documentation](https://backstage.io/docs/getting-started) on how - [Code of Conduct](CODE_OF_CONDUCT.md) - This is how we roll - [Adopters](ADOPTERS.md) - Companies already using Backstage - [Blog](https://backstage.io/blog/) - Announcements and updates -- [Newsletter](https://mailchi.mp/spotify/backstage-community) - Subscribe to our email newsletter +- [Newsletter](https://spoti.fi/backstagenewsletter) - Subscribe to our email newsletter - [Backstage Community Sessions](https://github.com/backstage/community) - Join monthly meetups and explore Backstage community - Give us a star ⭐️ - If you are using Backstage or think it is an interesting project, we would love a star ❤️ diff --git a/REVIEWING.md b/REVIEWING.md index 469ac249f7..500e15701d 100644 --- a/REVIEWING.md +++ b/REVIEWING.md @@ -171,6 +171,37 @@ Exported types can be marked with either `@public`, `@alpha` or `@beta` release If a package does not have this configuration, then all exported types are considered stable, even if they are marked as `@alpha` or `@beta`. +#### Changes that are Not Considered Breaking + +There are a few exceptions that are not considered breaking in the [versioning policy](https://backstage.io/docs/overview/versioning-policy#changes-that-are-not-considered-breaking), +primarily regarding Utility APIs and Backend Service interfaces (referred to "contracts" below) that are supplied by the +Backstage core packages. + +Example of a non-breaking change to a contract which has a default +implementation, since consumers typically only interact with that contract as +callers of existing methods: + +```diff + export interface MyService { + oldMethod(): void; ++ newMethod(): void; + } +``` + +Changes such as these must still be marked with `**BREAKING PRODUCERS**:` in the +changelog, to highlight them for those who might be implementing custom +implementations of those contracts or putting mocks of the contract in tests. + +Example of a breaking change to a contract, which affects existing consumers and +therefore makes it NOT fall under these exceptions: + +```diff + export interface MyService { +- oldMethod(): void; ++ oldMethod(): Promise; + } +``` + #### Type Contract Direction An important distinction to make when looking at changes to an API Report is the direction of the contract of a changed type, that is, whether it's used as input or output from the user's point of view. In the next two sections we'll dive into the different directions of a type contract, and how it affects whether a change is breaking or not. diff --git a/app-config.yaml b/app-config.yaml index 69a1207365..dd72051189 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -1,7 +1,6 @@ app: title: Backstage Example App baseUrl: http://localhost:3000 - googleAnalyticsTrackingId: # UA-000000-0 #datadogRum: # clientToken: '123456789' # applicationId: qwerty @@ -374,6 +373,7 @@ auth: development: {} costInsights: engineerCost: 200000 + engineerThreshold: 0.5 products: computeEngine: name: Compute Engine diff --git a/contrib/chart/backstage/templates/backstage-app-config.yaml b/contrib/chart/backstage/templates/backstage-app-config.yaml index f06e47feab..061fc3285b 100644 --- a/contrib/chart/backstage/templates/backstage-app-config.yaml +++ b/contrib/chart/backstage/templates/backstage-app-config.yaml @@ -13,7 +13,6 @@ metadata: data: APP_CONFIG_app_baseUrl: {{ .Values.appConfig.app.baseUrl | quote | quote }} APP_CONFIG_app_title: {{ .Values.appConfig.app.title | quote | quote }} - APP_CONFIG_app_googleAnalyticsTrackingId: {{ .Values.appConfig.app.googleAnalyticsTrackingId | quote | quote }} APP_CONFIG_backend_baseUrl: {{ .Values.appConfig.backend.baseUrl | quote | quote }} APP_CONFIG_backend_cors_origin: {{ .Values.appConfig.backend.cors.origin | quote | quote }} APP_CONFIG_techdocs_storageUrl: {{ .Values.appConfig.techdocs.storageUrl | quote | quote }} diff --git a/contrib/chart/backstage/values.yaml b/contrib/chart/backstage/values.yaml index 6ffe076e57..cd80fd954b 100644 --- a/contrib/chart/backstage/values.yaml +++ b/contrib/chart/backstage/values.yaml @@ -92,7 +92,6 @@ appConfig: app: baseUrl: https://demo.example.com title: Backstage - googleAnalyticsTrackingId: backend: baseUrl: https://demo.example.com listen: diff --git a/contrib/docker/devops/Dockerfile b/contrib/docker/devops/Dockerfile index a7c194618a..8703b2ab48 100644 --- a/contrib/docker/devops/Dockerfile +++ b/contrib/docker/devops/Dockerfile @@ -1,4 +1,4 @@ -ARG IMAGE_TAG=14-alpine +ARG IMAGE_TAG=16-alpine FROM node:${IMAGE_TAG} diff --git a/contrib/docker/frontend-with-nginx/Dockerfile.dockerbuild b/contrib/docker/frontend-with-nginx/Dockerfile.dockerbuild index 41f931544f..053b4fb492 100644 --- a/contrib/docker/frontend-with-nginx/Dockerfile.dockerbuild +++ b/contrib/docker/frontend-with-nginx/Dockerfile.dockerbuild @@ -35,7 +35,7 @@ -FROM node:14-buster AS build +FROM node:16-buster AS build RUN mkdir /app COPY . /app diff --git a/contrib/docs/tutorials/authenticate-api-requests.md b/contrib/docs/tutorials/authenticate-api-requests.md index 6c5fabd709..49b6ae0a4d 100644 --- a/contrib/docs/tutorials/authenticate-api-requests.md +++ b/contrib/docs/tutorials/authenticate-api-requests.md @@ -4,19 +4,15 @@ The Backstage backend APIs are by default available without authentication. To a API requests from frontend plugins include an authorization header with a Backstage identity token acquired when the user logs in. By adding a middleware that verifies said token to be valid and signed by Backstage, non-authenticated requests can be blocked with a 401 Unauthorized response. -**NOTE**: Enabling this means that Backstage will stop working for guests, as no token is issued for them. +**NOTE**: Enabling this means that Backstage will stop working for guests, as no token is issued for them. If you have not done so already, you will also need to implement [service-to-service auth](https://backstage.io/docs/auth/service-to-service-auth). As techdocs HTML pages load assets without an Authorization header the code below also sets a token cookie when the user logs in (and when the token is about to expire). Create `packages/backend/src/authMiddleware.ts`: ```typescript -import { SingleHostDiscovery } from '@backstage/backend-common'; import type { Config } from '@backstage/config'; -import { - getBearerTokenFromAuthorizationHeader, - IdentityClient, -} from '@backstage/plugin-auth-node'; +import { getBearerTokenFromAuthorizationHeader } from '@backstage/plugin-auth-node'; import { NextFunction, Request, Response, RequestHandler } from 'express'; import { decodeJwt } from 'jose'; import { URL } from 'url'; @@ -45,11 +41,6 @@ export const createAuthMiddleware = async ( config: Config, appEnv: PluginEnvironment, ) => { - const discovery = SingleHostDiscovery.fromConfig(config); - const identity = IdentityClient.create({ - discovery, - issuer: await discovery.getExternalBaseUrl('auth'), - }); const baseUrl = config.getString('backend.baseUrl'); const secure = baseUrl.startsWith('https://'); const cookieDomain = new URL(baseUrl).hostname; @@ -61,13 +52,13 @@ export const createAuthMiddleware = async ( try { const token = getBearerTokenFromAuthorizationHeader(req.headers.authorization) || - (req.cookies.token as string | undefined); + (req.cookies?.token as string | undefined); if (!token) { res.status(401).send('Unauthorized'); return; } try { - req.user = await identity.authenticate(token); + req.user = await appEnv.identity.getIdentity({ request: req }); } catch { await appEnv.tokenManager.authenticate(token); } @@ -180,7 +171,12 @@ export async function setTokenCookie(url: string, identityApi: IdentityApi) { ``` ```typescript -// packages/app/src/App.tsx from a create-app deployment +// required types and packages for example below + +import type { IdentityApi } from '@backstage/core-plugin-api'; +import { discoveryApiRef, useApi } from '@backstage/core-plugin-api'; + +// additional packages/app/src/App.tsx from a create-app deployment import { setTokenCookie } from './cookieAuth'; diff --git a/contrib/docs/tutorials/aws-alb-aad-oidc-auth.md b/contrib/docs/tutorials/aws-alb-aad-oidc-auth.md index 3cedf5634b..1bdf9cc367 100644 --- a/contrib/docs/tutorials/aws-alb-aad-oidc-auth.md +++ b/contrib/docs/tutorials/aws-alb-aad-oidc-auth.md @@ -48,7 +48,7 @@ Once you've saved the action, you should see an authentication flow be triggered ### Frontend The Backstage App needs a SignInPage when authentication is required. -When using ALB authentication Backstage will only be loaded once the user has successfully authenticated; we won't need to display a SignIn page, however we will need to create a dummy SignIn component that can refresh the token. +When using ALB authentication Backstage will only be loaded once the user has successfully authenticated; we won't need to display a SignIn page, however we will need to create a placeholder SignIn component that can refresh the token. - edit `packages/app/src/App.tsx` - import the following two additional definitions from `@backstage/core-plugin-api`: `useApi`, `configApiRef`; these will be used to check whether Backstage is running locally or behind an ALB @@ -59,7 +59,7 @@ import React from 'react'; import { UserIdentity } from '@backstage/core-components'; import { SignInPageProps } from '@backstage/core-app-api'; -const DummySignInComponent: any = (props: SignInPageProps) => { +const SampleSignInComponent: any = (props: SignInPageProps) => { const [error, setError] = React.useState(); const config = useApi(configApiRef); React.useEffect(() => { @@ -102,13 +102,13 @@ const DummySignInComponent: any = (props: SignInPageProps) => { }; ``` -- add `DummySignInComponent` as `SignInPage`: +- add `SampleSignInComponent` as `SignInPage`: ```ts const app = createApp({ ... components: { - SignInPage: DummySignInComponent, + SignInPage: SampleSignInComponent, ... }, ... diff --git a/contrib/docs/tutorials/aws-deployment.md b/contrib/docs/tutorials/aws-deployment.md index 3a76da2ed3..a767d292bf 100644 --- a/contrib/docs/tutorials/aws-deployment.md +++ b/contrib/docs/tutorials/aws-deployment.md @@ -40,7 +40,7 @@ image](https://backstage.io/docs/getting-started/deployment-docker) documentation to build a new Backstage Docker image: ```shell -$ yarn build +$ yarn build:backend $ yarn build-image --tag backstage ``` diff --git a/contrib/scaffolder/README.md b/contrib/scaffolder/README.md new file mode 100644 index 0000000000..e22c4b391f --- /dev/null +++ b/contrib/scaffolder/README.md @@ -0,0 +1,15 @@ +# Scaffolder contrib tools + +## Testing Templates with Dry-run + +Scaffolder templates support anything that backstage.io and custom actions can do, so testing them is hard without actually running the instance of Backstage that they're designed for. + +Please leave [feedback on the RFC](https://github.com/backstage/backstage/issues/14280) on your experience with this approach. + +The [command line script](template-testing-dry-run.md) might offer a way for you to do so using the dry-run API used for the Template Editor. Run it against a running instance, either locally or remote, and use it like + +```sh +scaffolder-dry http://localhost:7007/ template-directory values.yml output-directory +``` + +If you're using backend permissions, pass a front-end auth token from a current browser session via `--token $FRONTEND_TOKEN`. diff --git a/contrib/scaffolder/template-testing-dry-run.md b/contrib/scaffolder/template-testing-dry-run.md new file mode 100644 index 0000000000..70e0c572ab --- /dev/null +++ b/contrib/scaffolder/template-testing-dry-run.md @@ -0,0 +1,150 @@ +```js +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * A CLI that helps you test Backstage software templates + * + * @packageDocumentation + */ + +import { dirname, join, relative } from 'node:path'; +import { readFile, writeFile } from 'node:fs/promises'; +import { gzipSync } from 'node:zlib'; +import { ensureDir } from 'fs-extra'; +import { program } from 'commander'; +import fetch from 'node-fetch'; +import ora from 'ora'; +import readdir from 'recursive-readdir'; +import { parse } from 'yaml'; +import { version } from '../../../package.json'; +import type { ScaffolderDryRunResponse } from '@backstage/plugin-scaffolder'; + +const loadDirectoryContents = async (template_path: string) => { + const spinner = ora('Loading template').start(); + const files = await await readdir(template_path, ['.git']); + const contents = await Promise.all( + files.map(async p => { + return { + path: relative(template_path, p), + base64Content: (await readFile(p)).toString('base64'), + }; + }), + ); + spinner.succeed(); + return contents; +}; + +const writeResultContents = async ( + root: string, + directoryContents: ScaffolderDryRunResponse['directoryContents'], +) => { + const directories = new Set( + directoryContents.map(({ path }) => dirname(join(root, path))), + ); + await Promise.all(Array.from(directories).map(d => ensureDir(d))); + await Promise.all( + directoryContents.map(async ({ path, base64Content, executable }) => + writeFile(join(root, path), Buffer.from(base64Content, 'base64'), { + mode: executable ? 0o755 : 0o644, + }), + ), + ); +}; + +const api = async ( + bodyObj: Record, + { baseURL, token }: { baseURL: string; token: string | false }, +) => { + const body = gzipSync(JSON.stringify(bodyObj)); + return fetch(new URL('/api/scaffolder/v2/dry-run', baseURL), { + method: 'POST', + headers: { + Authorization: `Bearer ${token || ''}`, + 'Content-Type': 'application/json', + 'Content-Encoding': 'gzip', + }, + body, + }); +}; + +const handle = async ( + baseURL: string, + template_path: string, + data: string, + target: string, + { token }: { token: string | false }, +) => { + const directoryContents = await loadDirectoryContents(template_path); + const values = parse(await readFile(data, 'utf-8')); + const secrets = {}; + const template = parse( + await readFile(`${template_path}/template.yaml`, 'utf-8'), + ); + const response = await api( + { + directoryContents, + values, + secrets, + template, + }, + { baseURL, token }, + ); + if (!response.ok) { + const contentType = response.headers.get('content-type'); + if (contentType?.startsWith('application/json')) { + const responseData = await response.json(); + if (responseData.error) { + throw responseData.error; + } + if (responseData.errors) { + throw responseData.errors; + } + throw responseData; + } + throw await response.text(); + } + const { log, directoryContents: resultContents } = + (await response.json()) as ScaffolderDryRunResponse; + for (const logEntry of log) { + console.log(logEntry.body.message); + } + await writeResultContents(target, resultContents); +}; + +const main = async (argv: string[]) => { + program + .name('backstage-scaffolder') + .version(version) + .description('Creates a dry-run output of a given template') + .option('-t, --token ', 'JWT to use for auth') + .argument('url', 'URL of your Backstage instance') + .argument('template-path', 'Source directory of template') + .argument('data-path', 'YAML file with input to render') + .argument('target', 'Output directory') + .action(handle); + + await program.parseAsync(argv); + process.exit(); +}; + +process.on('unhandledRejection', rejection => { + console.error(rejection); + process.exit(1); +}); + +main(process.argv); +``` diff --git a/contrib/scripts/upgrade-backstage-app/upgrade-backstage-app.sh b/contrib/scripts/upgrade-backstage-app/upgrade-backstage-app.sh index d68d9e31c4..5c87d16d29 100755 --- a/contrib/scripts/upgrade-backstage-app/upgrade-backstage-app.sh +++ b/contrib/scripts/upgrade-backstage-app/upgrade-backstage-app.sh @@ -9,6 +9,7 @@ if [ "$CURRENT_VERSION" == "$TARGET_VERSION" ]; then else echo "Attempting upgrade from Backstage $CURRENT_VERSION (create-app $CREATE_APP_CURRENT_VERSION) to $TARGET_VERSION ($CREATE_APP_TARGET_VERSION)" rm -rf .upgrade && mkdir .upgrade + git fetch https://github.com/backstage/upgrade-helper-diff.git '+refs/heads/*:refs/remotes/upgrade-helper/*' curl -s https://raw.githubusercontent.com/backstage/upgrade-helper-diff/master/diffs/$CREATE_APP_CURRENT_VERSION..$CREATE_APP_TARGET_VERSION.diff > .upgrade/upgrade.diff git apply -3 .upgrade/upgrade.diff git mergetool diff --git a/cypress/README.md b/cypress/README.md index 15338fe371..4212af398c 100644 --- a/cypress/README.md +++ b/cypress/README.md @@ -24,7 +24,7 @@ necessary environment variables: ```sh yarn tsc -yarn build +yarn build:backend yarn workspace example-backend build-image docker run -p 7007:7007 example-backend ``` diff --git a/cypress/tsconfig.json b/cypress/tsconfig.json index d9b4869ecd..9c4a63b76c 100644 --- a/cypress/tsconfig.json +++ b/cypress/tsconfig.json @@ -10,7 +10,7 @@ "incremental": true, "isolatedModules": true, "jsx": "react", - "lib": ["DOM", "DOM.Iterable", "ScriptHost", "ES2020", "ESNext.Promise"], + "lib": ["DOM", "DOM.Iterable", "ScriptHost", "ES2021", "ESNext.Promise"], "module": "ESNext", "moduleResolution": "node", "noEmit": true, @@ -31,7 +31,7 @@ "strictNullChecks": true, "strictPropertyInitialization": true, "stripInternal": true, - "target": "ES2019", + "target": "ES2021", "types": ["node", "cypress"] } } diff --git a/cypress/yarn.lock b/cypress/yarn.lock index 3b1358156e..49c85adb2b 100644 --- a/cypress/yarn.lock +++ b/cypress/yarn.lock @@ -414,8 +414,8 @@ __metadata: linkType: hard "cypress@npm:^10.0.0": - version: 10.10.0 - resolution: "cypress@npm:10.10.0" + version: 10.11.0 + resolution: "cypress@npm:10.11.0" dependencies: "@cypress/request": ^2.88.10 "@cypress/xvfb": ^1.2.4 @@ -461,7 +461,7 @@ __metadata: yauzl: ^2.10.0 bin: cypress: bin/cypress - checksum: 668a32534a527dba79754abbf98af176b80c539a12ec00058932ba2a19c794c7888323e59e738c30f726ad740c5451c31d02548a0cb7c1b1c8ad01c55a984ca2 + checksum: 938cc6a20f7eeace5c8e850d234904ee1651cbb36d94666fe600cf17ce964e73d4f7d8d944aab677491702a57364e6aceeb4fe8bcbd96147ff5e2b575a956fb2 languageName: node linkType: hard @@ -1415,22 +1415,22 @@ __metadata: linkType: hard "typescript@npm:^4.1.3": - version: 4.8.4 - resolution: "typescript@npm:4.8.4" + version: 4.9.3 + resolution: "typescript@npm:4.9.3" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 3e4f061658e0c8f36c820802fa809e0fd812b85687a9a2f5430bc3d0368e37d1c9605c3ce9b39df9a05af2ece67b1d844f9f6ea8ff42819f13bcb80f85629af0 + checksum: 17b8f816050b412403e38d48eef0e893deb6be522d6dc7caf105e54a72e34daf6835c447735fd2b28b66784e72bfbf87f627abb4818a8e43d1fa8106396128dc languageName: node linkType: hard "typescript@patch:typescript@^4.1.3#~builtin": - version: 4.8.4 - resolution: "typescript@patch:typescript@npm%3A4.8.4#~builtin::version=4.8.4&hash=a1c5e5" + version: 4.9.3 + resolution: "typescript@patch:typescript@npm%3A4.9.3#~builtin::version=4.9.3&hash=a1c5e5" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 563a0ef47abae6df27a9a3ab38f75fc681f633ccf1a3502b1108e252e187787893de689220f4544aaf95a371a4eb3141e4a337deb9895de5ac3c1ca76430e5f0 + checksum: ef65c22622d864497d0a0c5db693523329b3284c15fe632e93ad9aa059e8dc38ef3bd767d6f26b1e5ecf9446f49bd0f6c4e5714a2eeaf352805dc002479843d1 languageName: node linkType: hard diff --git a/docs/FAQ.md b/docs/FAQ.md index f695a59410..fcd5542f74 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -54,7 +54,7 @@ begun work on various aspects of all three phases. Looking at the [milestones for active issues](https://github.com/backstage/backstage/milestones) will also give you a sense of our progress. -### My company doesn't have thousands of developers or services. Is Backstage overkill? +### My company doesn't have thousands of developers or services. Is using Backstage excessive for our needs? Not at all! A core reason to adopt Backstage is to standardize how software is built at your company. It's easier to decide on those standards as a small diff --git a/docs/architecture-decisions/adr010-luxon-date-library.md b/docs/architecture-decisions/adr010-luxon-date-library.md index 65cabd256c..a7b287ae0d 100644 --- a/docs/architecture-decisions/adr010-luxon-date-library.md +++ b/docs/architecture-decisions/adr010-luxon-date-library.md @@ -10,7 +10,7 @@ description: Architecture Decision Record (ADR) for Luxon Date Library Date formatting (e.g. `a day ago`) and calculations are common within Backstage. Some of these useful features are not supported by the standard JavaScript `Date` object. The popular [Moment.js](https://momentjs.com/) library has been -commonly used to fill this gap but suffers from large bundle sizes and mutable +commonly used to fill this gap but is affected by large bundle sizes and mutable state issues. On top of this, `momentjs` is [being sunset](https://momentjs.com/docs/#/-project-status/) and the project recommends using one of the more modern alternative libraries. diff --git a/docs/assets/getting-started/sidebar-submenu-example.png b/docs/assets/getting-started/sidebar-submenu-example.png new file mode 100644 index 0000000000..0b30f0ca6a Binary files /dev/null and b/docs/assets/getting-started/sidebar-submenu-example.png differ diff --git a/docs/assets/software-templates/custom-field-explorer.png b/docs/assets/software-templates/custom-field-explorer.png new file mode 100644 index 0000000000..1af897ac8c Binary files /dev/null and b/docs/assets/software-templates/custom-field-explorer.png differ diff --git a/docs/auth/add-auth-provider.md b/docs/auth/add-auth-provider.md index 01c18f04cd..a43e2307e6 100644 --- a/docs/auth/add-auth-provider.md +++ b/docs/auth/add-auth-provider.md @@ -49,7 +49,7 @@ the user to initiate a login. This login request is done to the `/start` endpoint which is handled by the `start` method. The `start` method re-directs to the external auth provider who authenticates -the request and re-directs the request to the `/frame/handler` endpoint, which +the request and re-directs the request to the `/handler/frame` endpoint, which is handled by the `frameHandler` method. The `frameHandler` returns an HTML response, containing a script that does a diff --git a/docs/auth/cloudflare/access.md b/docs/auth/cloudflare/access.md index c7db308438..d47495180a 100644 --- a/docs/auth/cloudflare/access.md +++ b/docs/auth/cloudflare/access.md @@ -63,7 +63,7 @@ export default async function createPlugin( // and the access token and produces the Backstage token with the // relevant user info. async resolver({ profile, result }, ctx) { - // Somehow compute the Backstage token claims. Just some dummy code + // Somehow compute the Backstage token claims. Just some sample code // shown here, but you may want to query your LDAP server, or // https://.cloudflareaccess.com/cdn-cgi/access/get-identity // https://developers.cloudflare.com/cloudflare-one/identity/users/validating-json/#groups-within-a-jwt diff --git a/docs/auth/github/provider.md b/docs/auth/github/provider.md index a8c6020cae..353b8ebe08 100644 --- a/docs/auth/github/provider.md +++ b/docs/auth/github/provider.md @@ -24,7 +24,7 @@ Settings for local development: - Application name: Backstage (or your custom app name) - Homepage URL: `http://localhost:3000` -- Authorization callback URL: `http://localhost:7007/api/auth/github` +- Authorization callback URL: `http://localhost:7007/api/auth/github/handler/frame` ## Configuration diff --git a/docs/auth/google/gcp-iap-auth.md b/docs/auth/google/gcp-iap-auth.md index 1ebfcaf15b..d6303ced6f 100644 --- a/docs/auth/google/gcp-iap-auth.md +++ b/docs/auth/google/gcp-iap-auth.md @@ -26,6 +26,7 @@ auth: providers: gcp-iap: audience: '/projects//global/backendServices/' + jwtHeader: x-custom-header # Optional: Only if you are using a custom header for the IAP JWT ``` You can find the project number and service ID in the Google Cloud Console. @@ -69,7 +70,7 @@ export default async function createPlugin( // and the IAP token and produces the Backstage token with the // relevant user info. async resolver({ profile, result: { iapToken } }, ctx) { - // Somehow compute the Backstage token claims. Just some dummy code + // Somehow compute the Backstage token claims. Just some sample code // shown here, but you may want to query your LDAP server, or // GSuite or similar, based on the IAP token sub/email claims const id = iapToken.email.split('@')[0]; diff --git a/docs/auth/identity-resolver.md b/docs/auth/identity-resolver.md index d96c9fc45a..a65f3d7899 100644 --- a/docs/auth/identity-resolver.md +++ b/docs/auth/identity-resolver.md @@ -49,7 +49,7 @@ A user identity within Backstage is built up from two pieces of information, a user [entity reference](../features/software-catalog/references.md), and a set of ownership entity references. When a user signs in, a Backstage token is generated with these two pieces of information, -which is then used to identity the user within the Backstage ecosystem. +which is then used to identify the user within the Backstage ecosystem. The user entity reference should uniquely identify the logged in user in Backstage. It is encouraged that a matching user entity also exists within the Software Catalog, diff --git a/docs/auth/index.md b/docs/auth/index.md index ab04d3ed87..5702e96cee 100644 --- a/docs/auth/index.md +++ b/docs/auth/index.md @@ -258,9 +258,58 @@ Passport-supported authentication method. ## Custom ScmAuthApi Implementation -If you are using any custom authentication providers, like for example one for GitHub Enterprise, then you are likely to need a custom implementation of the [`ScmAuthApi`](https://backstage.io/docs/reference/integration-react.scmauthapi). It is an API used to authenticate towards different SCM systems in a generic way, based on what resource is being accessed, and is used for example by the Scaffolder (Software Templates) and Catalog Import plugins. +The default `ScmAuthAPi` provides integrations for `github`, `gitlab`, `azure` and `bitbucket` and is created by the following code in `packages/app/src/apis.ts`: -To set up a custom `ScmAuthApi` implementation, you'll need to add an API factory entry to `packages/app/src/apis.ts`. The following example shows an implementation that supports both public GitHub via `githubAuthApi` as well as a GitHub Enterprise installation hosted at `ghe.example.com` via `gheAuthApi`: +```ts +ScmAuth.createDefaultApiFactory(); +``` + +If you require only a subset of these integrations, then you will need a custom implementation of the [`ScmAuthApi`](https://backstage.io/docs/reference/integration-react.scmauthapi). It is an API used to authenticate different SCM systems generically, based on what resource is being accessed, and is used for example, by the Scaffolder (Software Templates) and Catalog Import plugins. + +The first step is to remove the code that creates the default providers. + +```diff + import { + ScmIntegrationsApi, + scmIntegrationsApiRef, ++ ScmAuth, + } from '@backstage/integration-react'; + + export const apis: AnyApiFactory[] = [ +... ++ ScmAuth.createDefaultApiFactory(), +... + ]; +``` + +Then replace it with something like this, which will create an `ApiFactory` with only a github provider. + +```ts +export const apis: AnyApiFactory[] = [ + createApiFactory({ + api: scmAuthApiRef, + deps: { + githubAuthApi: githubAuthApiRef, + }, + factory: ({ githubAuthApi }) => + ScmAuth.merge( + ScmAuth.forGithub(githubAuthApi), + ), + }); +``` + +If you use any custom authentication integrations, a new provider can be added to the `ApiFactory`. + +The first step is to create a new authentication ref, which follows the naming convention of `xxxAuthApiRef`. The example below is for a new GitHub enterprise integration which can be defined either inside the app itself if it's only used for this purpose or inside a common internal package for APIs, such as `@internal/apis`: + +```ts +const gheAuthApiRef: ApiRef = + createApiRef({ + id: 'internal.auth.ghe', + }); +``` + +The new ref is then used to add a new provider to the ApiFactory: ```ts createApiFactory({ @@ -278,3 +327,14 @@ createApiFactory({ ), }); ``` + +Finally, you also need to add and configure another provider to the `auth-backend` using the provider ID, which in this example is `ghe`: + +```ts +import { providers } from '@backstage/plugin-auth-backend'; + +// Add the following options to `createRouter` in packages/backend/src/plugins/auth.ts +providerFactories: { + ghe: providers.github.create(), +}, +``` diff --git a/docs/auth/microsoft/provider.md b/docs/auth/microsoft/provider.md index cbd24867b7..583139cff1 100644 --- a/docs/auth/microsoft/provider.md +++ b/docs/auth/microsoft/provider.md @@ -46,11 +46,18 @@ The Microsoft provider is a structure with three configuration keys: - `clientSecret`: Secret, found on App Registration > Certificates & secrets - `tenantId`: Directory (tenant) ID, found on App Registration > Overview -In order to finish signing a user in from Azure, the Backstage backend must -fetch their information from graph.microsoft.com (as seen in [this source -code](https://github.com/seanfisher/passport-microsoft/blob/0456aa9bce05579c18e77f51330176eb26373658/lib/strategy.js#L93-L95)), -so ensure that your Backstage backend has connectivity to this host. -Otherwise users may see an `Authentication failed, failed to fetch user profile` error when they attempt to log in. +## Outbound Network Access + +If your environment has restrictions on outgoing access (e.g. through +firewall rules), make sure your Backstage backend has access to the following +hosts: + +- `login.microsoftonline.com`, to get and exchange authorization codes and access + tokens +- `graph.microsoft.com`, to fetch user profile information (as seen + in [this source + code](https://github.com/seanfisher/passport-microsoft/blob/0456aa9bce05579c18e77f51330176eb26373658/lib/strategy.js#L93-L95)). + If this host is unreachable, users may see an `Authentication failed, failed to fetch user profile` error when they attempt to log in. ## Adding the provider to the Backstage frontend diff --git a/docs/deployment/docker.md b/docs/deployment/docker.md index 04a509d316..88c22afb9b 100644 --- a/docs/deployment/docker.md +++ b/docs/deployment/docker.md @@ -34,8 +34,8 @@ more efficient caching of dependencies on the host, where a single change won't bust the entire cache. The required steps in the host build are to install dependencies with -`yarn install`, generate type definitions using `yarn tsc`, and build all -packages with `yarn build`. +`yarn install`, generate type definitions using `yarn tsc`, and build the backend +package with `yarn build:backend`. > NOTE: If you created your app prior to 2021-02-18, follow the > [migration step](https://github.com/backstage/backstage/releases/tag/release-2021-02-18) @@ -49,8 +49,8 @@ yarn install --frozen-lockfile # tsc outputs type definitions to dist-types/ in the repo root, which are then consumed by the build yarn tsc -# Build all packages and in the end bundle them all up into the packages/backend/dist folder. -yarn build +# Build the backend, which bundles it all up into the packages/backend/dist folder. +yarn build:backend ``` Once the host build is complete, we are ready to build our image. The following @@ -108,10 +108,13 @@ root of the repo to speed up the build by reducing build context size: ```text .git +.yarn/cache +.yarn/install-state.gz node_modules packages/*/src packages/*/node_modules plugins +*.local.yaml ``` With the project built and the `.dockerignore` and `Dockerfile` in place, we are @@ -272,6 +275,11 @@ browser at `http://localhost:7007` ## Separate Frontend +> NOTE: This is an optional step, and you will lose out on the features of the +> `@backstage/plugin-app-backend` plugin. Most notably the frontend configuration +> will no longer be injected by the backend, you will instead need to use the +> correct configuration when building the frontend bundle. + It is sometimes desirable to serve the frontend separately from the backend, either from a separate image or for example a static file serving provider. The first step in doing so is to remove the `app-backend` plugin from the backend diff --git a/docs/deployment/k8s.md b/docs/deployment/k8s.md index a80ba1816e..b0218c8657 100644 --- a/docs/deployment/k8s.md +++ b/docs/deployment/k8s.md @@ -256,7 +256,7 @@ bash-5.1# exit The database pod is running, but how does another pod connect to it? -Kubernetes pods are transient - they can be killed, restarted, or created +Kubernetes pods are transient - they can be stopped, restarted, or created dynamically. Therefore we don't want to try to connect to pods directly, but rather create a Kubernetes Service. Services keep track of pods and direct traffic to the right place. diff --git a/docs/dls/component-design-guidelines.md b/docs/dls/component-design-guidelines.md new file mode 100644 index 0000000000..65eef4c057 --- /dev/null +++ b/docs/dls/component-design-guidelines.md @@ -0,0 +1,108 @@ +--- +id: component-design-guidelines +title: Component Design Guidelines +description: Documentation on Design +--- + +Be it a new component contribution, or plugin specific components, you'll want +to follow these guidelines. We'll cover the three main subjects that define the +general look and feel of your components, all of which build on top of the +Material-UI theme features: + +- Layout +- Color palette +- Typography + +## 🏗️ Layout + +Layout refers to how you organize or stack content. Whenever possible, we want +to use Backstage's components (check the [Storybook][1] for a list and demo) +first, and otherwise fall back to Material-UI components (check the [MUI docs][2]). + +If none of these fit your layout needs, then you can build your own components. +However, using HTML+CSS directly is not recommended; it's better to use MUI +layout components to make your layout theme aware, meaning if someone changes +the theme, your layout would react to those changes without requiring updates +to your code. + +Specifically you want to look at these components that make use of the +`theme.spacing()` function for margins, paddings and positions, as well as +color palette and typography: + +- [Container][3] mostly at page level +- [Box][4] like a div that can be customized a lot +- [Grid][5] for flexible grid layouts +- [Paper][6] The base of a card, like it's background & padding on the borders +- [Card][7] Card with support for title, description, buttons, images... + +## Color palette + +If you're using an existing component and want to tweak the colors it uses in +general in the whole application, you can use a [Custom Theme][10] to override +specific styles for that component, that includes paddings, margins and colors. + +However when making a component from scratch you'll need to reference the theme +as much as possible, make sure to use the theme's color palette. Most Backstage +components and all MUI components should use the theme's color palette by default, +so unless you need explicit control on the color of a component (say when the +component was designed to use the primary color but you want to use the +secondary color instead), then the easiest way to access the color palette is +to [Override the Component Styles][11] as suggested by Backstage. + +It's not a very common use case to override a theme color in a MUI component +but let's say you have a custom Sidebar component with a Paper component that +highlights its content with a different color for a side menu or something +(usually you use the elevation, but maybe the designer wanted a colorful app). +You can use the theme like this: + +```tsx +import { makeStyles, Paper } from '@material-ui/core'; + +const useStyles = makeStyles((theme: Theme) => ({ + sidebarPaper: { + backgroundColor: theme.palette.primary.main, + color: theme.palette.primary.contrastText, + }, +})); + +export function Sidebar({ children }) { + const { sidebarPaper } = useStyles(); + return {children}; +} +``` + +Here is a link to the [Default Palette values][8] you can use, the tokens will +be the same, what changes are the colors associated with those depending on your +app theme color palette, there's also a [Default Theme Explorer][12] to look +which tokens you can use as reference from the compiled theme. + +## Typography + +Most of the time the components from MUI will use the `` component +which will use the theme's typography properties like font family, size, weight +and appropriate color from the palette for the context of that component. This applies for example to +buttons that use white font color for contained buttons, or the respective color +passed on via props when not outlined for proper contrast (buttons in dark +theme adapt properly by using a dark font instead of white). + +However for those cases where the parent component of the content doesn't handle +the text, like when the parent component is a layout one, you use typography +component instead of the HTML counterparts, usually used for titles and +paragraphs but it is valid for any type of text. + +Check the [Typography docs][9] for information on how to install, use, +customize semantic elements and specially the recommendations about +accessibility. + +[1]: http://backstage.io/storybook +[2]: https://v4.mui.com/getting-started/supported-components/ +[3]: https://v4.mui.com/components/container/ +[4]: https://v4.mui.com/components/box/ +[5]: https://v4.mui.com/components/grid/ +[6]: https://v4.mui.com/components/paper/ +[7]: https://v4.mui.com/components/cards/ +[8]: https://v4.mui.com/customization/palette/#default-values +[9]: https://v4.mui.com/customization/typography/ +[10]: https://backstage.io/docs/getting-started/app-custom-theme +[11]: https://backstage.io/docs/getting-started/app-custom-theme#overriding-backstage-and-material-ui-components-styles +[12]: https://v4.mui.com/customization/default-theme/#explore diff --git a/docs/features/kubernetes/installation.md b/docs/features/kubernetes/installation.md index 5b4e2fa716..616991123d 100644 --- a/docs/features/kubernetes/installation.md +++ b/docs/features/kubernetes/installation.md @@ -102,7 +102,7 @@ If either existing don't work for your use-case, it is possible to implement a custom [KubernetesClustersSupplier](https://backstage.io/docs/reference/plugin-kubernetes-backend.kubernetesclusterssupplier). -Change the following in `packages/backend/src/plugin/kubernetes.ts`: +Change the following in `packages/backend/src/plugins/kubernetes.ts`: ```diff -import { KubernetesBuilder } from '@backstage/plugin-kubernetes-backend'; diff --git a/docs/features/search/getting-started.md b/docs/features/search/getting-started.md index 71b9c276d9..e13401a8e3 100644 --- a/docs/features/search/getting-started.md +++ b/docs/features/search/getting-started.md @@ -68,7 +68,7 @@ export const searchPage = ( switch (result.type) { case 'software-catalog': return ( - { It's good practice for search results to highlight information that was used to return it in the first place! The code below highlights how you might specify a -custom result item component, using the `` component as +custom result item component, using the `` component as an example: ```tsx {7-13} @@ -265,7 +265,7 @@ an example: switch (result.type) { case 'software-catalog': return ( - ``` +> For more advanced customization of the Search frontend, also see how to guides such as [How to implement your own Search API](./how-to-guides.md#how-to-implement-your-own-search-api) and [How to customize search results highlighting styling](./how-to-guides.md#how-to-customize-search-results-highlighting-styling) + ### Backend Backstage Search isn't a search engine itself, rather, it provides an interface @@ -380,3 +382,5 @@ indexBuilder.addCollator({ }), }); ``` + +> For more advanced customization of the Search backend, also see how to guides such as [How to index TechDocs documents](./how-to-guides.md#how-to-index-techdocs-documents) and [How to limit what can be searched in the Software Catalog](./how-to-guides.md#how-to-limit-what-can-be-searched-in-the-software-catalog) diff --git a/docs/features/search/how-to-guides.md b/docs/features/search/how-to-guides.md index 01d85b8aa2..5cc2ab5f06 100644 --- a/docs/features/search/how-to-guides.md +++ b/docs/features/search/how-to-guides.md @@ -171,6 +171,6 @@ const highlightOverride = { }; ``` -[obj-mode]: https://nodejs.org/docs/latest-v14.x/api/stream.html#stream_object_mode -[read-stream]: https://nodejs.org/docs/latest-v14.x/api/stream.html#stream_readable_streams +[obj-mode]: https://nodejs.org/dist/latest-v16.x/docs/api/stream.html#stream_object_mode +[read-stream]: https://nodejs.org/dist/latest-v16.x/docs/api/stream.html#readable-streams [async-gen]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of#iterating_over_async_generators diff --git a/docs/features/software-catalog/descriptor-format.md b/docs/features/software-catalog/descriptor-format.md index 81e3604ffe..27b26659cf 100644 --- a/docs/features/software-catalog/descriptor-format.md +++ b/docs/features/software-catalog/descriptor-format.md @@ -360,7 +360,7 @@ Fields of a link are: _NOTE_: The `icon` field value is meant to be a semantic key that will map to a specific icon that may be provided by an icon library (e.g. `material-ui` icons). These keys should be a sequence of `[a-z0-9A-Z]`, possibly separated by -one of `[-_.]`. Backstage may support some basic icons out of the box, but the +one of `[-_.]`. Backstage may support some basic icons out of the box such as those [defined in app-defaults](https://github.com/backstage/backstage/blob/master/packages/app-defaults/src/defaults/icons.tsx), but the Backstage integrator will ultimately be left to provide the appropriate icon component mappings. A generic fallback icon would be provided if a mapping cannot be resolved. diff --git a/docs/features/software-catalog/external-integrations.md b/docs/features/software-catalog/external-integrations.md index 40f917e2f3..66813cc4d2 100644 --- a/docs/features/software-catalog/external-integrations.md +++ b/docs/features/software-catalog/external-integrations.md @@ -159,7 +159,12 @@ Check out the numbered markings - let's go through them one by one. the outcome of that. This example issues a `fetch` to the right service and issues a full refresh of its entity bucket based on that. 5. The method translates the foreign data model to the native `Entity` form, as - expected by the catalog. + expected by the catalog. The `Entity` must include the + `backstage.io/managed-by-location` and + `backstage.io/managed-by-origin-location annotations`; otherwise, it will not + appear in the Catalog and will generate warning logs. The + [Well-known Annotations](./well-known-annotations.md#backstageiomanaged-by-location) + documentation has guidance on what values to use for these. 6. Finally, we issue a "mutation" to the catalog. This persists the entities in our own bucket, along with an optional `locationKey` that's used for conflict checks. But this is a bigger topic - mutations warrant their own explanatory @@ -261,6 +266,129 @@ the `connect` call has been made to the provider. Start up the backend - it should now start reading from the previously registered location and you'll see your entities start to appear in Backstage. +### Example User Entity Provider + +If you have a 3rd party entity provider such as an internal HR system that you wish to use you are not limited to using our entity providers, (or simply wish to add to existing entity providers with your own data). + +We can create an entity provider to read entities that are based off that provider. + +We create a basic entity provider as shown above. In the example below we might want to extract our users from an HR system, I am assuming the HR system already has the slackUserId to get that information please see the [Slack Api](https://api.slack.com/methods). + +```typescript +import { + ANNOTATION_LOCATION, + ANNOTATION_ORIGIN_LOCATION, +} from '@backstage/catalog-model' +import { + EntityProvider, + EntityProviderConnection, +} from '@backstage/plugin-catalog-backend' +import { WebClient } from '@slack/web-api' +import {kebabCase} from 'lodash' + +interface Staff { + displayName: string + slackUserId: string + jobTitle: string + photoUrl: string + address: string + email:string +} + +export class UserEntityProvider implements EntityProvider { + private readonly getStaffUrl: string + protected readonly slackTeam: string + protected readonly slackToken: string + protected connection?: EntityProviderConnection + + static fromConfig(config: Config, options: { logger: Logger }) { + const getStaffUrl = config.getString('staff.url') + const slackToken = config.getString('slack.token') + const slackTeam = config.getString('slack.team') + return new UserEntityProvider({ + ...options, + getStaffUrl, + slackToken, + slackTeam, + }) + } + + private constructor(options: { + getStaffUrl: string + slackToken: string + slackTeam: string + }) { + this.getStaffUrl = options.getStaffUrl + this.slackToken = options.slackToken + this.slackTeam = options.slackTeam + } + + async getAllStaff(): Promise{ + await return axios.get(this.getStaffUrl) + } + + public async connect(connection: EntityProviderConnection): Promise { + this.connection = connection + } + + async run(): Promise { + if (!this.connection) { + throw new Error('User Connection Not initialized') + } + + const userResources: UserEntity[] = [] + const staff = await this.getAllStaff() + + for (const user of staff) { + // we can add any links here in this case it would be adding a slack link to the users so you can directly slack them. + const links = + user.slackUserId != null && user.slackUserId.length > 0 + ? [ + { + url: `slack://user?team=${this.slackTeam}&id=${user.slackUserId}`, + title: 'Slack', + icon: 'message', + }, + ] + : undefined + const userEntity: UserEntity = { + kind: 'User', + apiVersion: 'backstage.io/v1alpha1', + metadata: { + annotations: { + [ANNOTATION_LOCATION]: 'hr-user-https://www.hrurl.com/', + [ANNOTATION_ORIGIN_LOCATION]: 'hr-user-https://www.hrurl.com/', + }, + links, + // name of the entity + name: kebabCase(user.displayName), + // name for display purposes could be anything including email + title: user.displayName, + }, + spec: { + profile: { + displayName: user.displayName, + email: user.email, + picture: user.photoUrl, + }, + memberOf: [], + }, + } + + userResources.push(userEntity) + } + + await this.connection.applyMutation({ + type: 'full', + entities: userResources.map((entity) => ({ + entity, + locationKey: 'hr-user-https://www.hrurl.com/', + })), + }) +} + +``` + ## Custom Processors The other possible way of ingesting data into the catalog is through the use of diff --git a/docs/features/software-catalog/system-model.md b/docs/features/software-catalog/system-model.md index 8a7e0cd30a..409f3e8450 100644 --- a/docs/features/software-catalog/system-model.md +++ b/docs/features/software-catalog/system-model.md @@ -50,7 +50,7 @@ components need to be in a known machine-readable format so we can build further tooling and analysis on top. APIs have a visibility: they are either public (making them available for any -other component to consume), restricted (only available to a whitelisted set of +other component to consume), restricted (only available to an allowlisted set of consumers), or private (only available within their system). As public APIs are going to be the primary way interaction between components, Backstage supports documenting, indexing and searching all APIs so we can browse them as diff --git a/docs/features/software-catalog/well-known-relations.md b/docs/features/software-catalog/well-known-relations.md index 6fb7ae2fea..bfcbcb780a 100644 --- a/docs/features/software-catalog/well-known-relations.md +++ b/docs/features/software-catalog/well-known-relations.md @@ -76,6 +76,9 @@ an entity to function. It can for example be used to express that a website component needs a library component as part of its build, or that a service component uses a persistent storage resource. +This relation is commonly generated based on `spec.dependsOn` of the component +or resource in question. + ### `parentOf` and `childOf` A parent/child relation to build up a tree, used for example to describe the diff --git a/docs/features/software-templates/input-examples.md b/docs/features/software-templates/input-examples.md new file mode 100644 index 0000000000..c44ee39269 --- /dev/null +++ b/docs/features/software-templates/input-examples.md @@ -0,0 +1,195 @@ +--- +id: input-examples +title: Input Examples +description: Some examples to use in your template +--- + +All the examples on this page you can test using _create/edit_ from your Backstage installation. + +It is important to remember that all examples are based on [react-jsonschema-form](https://rjsf-team.github.io/react-jsonschema-form/). + +## Simple text input + +### Simple input with basic validations + +```yaml +parameters: + - title: Fill in some steps + properties: + name: + title: Simple text input + type: string + description: Description about input + maxLength: 8 + pattern: '^([a-zA-Z][a-zA-Z0-9]*)(-[a-zA-Z0-9]+)*$' + ui:autofocus: true + ui:help: 'Hint: additional description...' +``` + +### Multi line text input + +```yaml +parameters: + - title: Fill in some steps + properties: + multiline: + title: Text area input + type: string + description: Insert your multi line string + ui:widget: textarea + ui:options: + rows: 10 + ui:help: 'Hint: Make it strong!' + ui:placeholder: | + apiVersion: backstage.io/v1alpha1 + kind: Component + metadata: + name: backstage + spec: + type: library + owner: CNCF + lifecycle: experimental +``` + +## Arrays options + +### Array with custom titles + +```yaml +parameters: + - title: Fill in some steps + properties: + volume_type: + title: Volume Type + type: string + description: The volume type to be used + default: gp2 + enum: + - gp2 + - gp3 + - io1 + - io2 + - sc1 + - st1 + - standard + enumNames: + - 'General Purpose SSD (gp2)' + - 'General Purpose SSD (gp3)' + - 'Provisioned IOPS (io1)' + - 'Provisioned IOPS (io2)' + - 'Cold HDD (sc1)' + - 'Throughput Optimized HDD (st1)' + - 'Magnetic (standard)' +``` + +### A multiple choices list + +```yaml +parameters: + - title: Fill in some steps + properties: + name: + title: Select environments + type: array + items: + type: string + enum: + - production + - staging + - development + uniqueItems: true + ui:widget: checkboxes +``` + +### Array with another types + +```yaml +parameters: + - title: Fill in some steps + properties: + arrayObjects: + title: Array with custom objects + type: array + ui:options: + addable: false + orderable: false + removable: false + items: + type: object + properties: + array: + title: Array string with default value + type: string + default: value3 + enum: + - value1 + - value2 + - value3 + flag: + title: Boolean flag + type: boolean + ui:widget: radio + someInput: + title: Simple text input + type: string +``` + +## Boolean options + +### Boolean + +```yaml +parameters: + - title: Fill in some steps + properties: + name: + title: Checkbox boolean + type: boolean +``` + +### Boolean Yes or No options + +```yaml +parameters: + - title: Fill in some steps + properties: + name: + title: Yes or No options + type: boolean + ui:widget: radio +``` + +### Boolean multiple options + +```yaml +parameters: + - title: Fill in some steps + properties: + name: + title: Select features + type: array + items: + type: boolean + enum: + - 'Enable scraping' + - 'Enable HPA' + - 'Enable cache' + uniqueItems: true + ui:widget: checkboxes +``` + +## Use parameters as condition in steps + +```yaml +- name: Only development environments + if: ${{ parameters.environment === "staging" and parameters.environment === "development" }} + action: debug:log + input: + message: 'development step' + +- name: Only production environments + if: ${{ parameters.environment === "prod" or parameters.environment === "production" }} + action: debug:log + input: + message: 'production step' +``` diff --git a/docs/features/software-templates/writing-custom-field-extensions.md b/docs/features/software-templates/writing-custom-field-extensions.md index b4c4d2d4ce..1d28bd5db9 100644 --- a/docs/features/software-templates/writing-custom-field-extensions.md +++ b/docs/features/software-templates/writing-custom-field-extensions.md @@ -181,3 +181,102 @@ const CustomFieldExtension = scaffolderPlugin.provide( }) ); ``` + +## Previewing Custom Field Extensions + +You can preview custom field extensions you write in the Backstage UI using the Custom Field Explorer +(accessible via the `/create/edit` route by default): + + + +In order to make your new custom field extension available in the explorer you will have to define a +JSON schema that describes the input/output types on your field like in the following example: + +```tsx +//packages/app/src/scaffolder/MyCustomExtensionWithOptions/MyCustomExtensionWithOptions.tsx +export const MyCustomExtensionWithOptionsSchema = { + uiOptions: { + type: 'object', + properties: { + focused: { + description: 'Whether to focus this field', + type: 'boolean', + }, + }, + }, + returnValue: { type: 'string' }, +}; + +export const MyCustomExtensionWithOptions = ({ + onChange, + rawErrors, + required, + formData, +}: FieldExtensionComponentProps) => { + return ( + 0 && !formData} + onChange={onChange} + focused={focused} + /> + ); +}; +``` + +```tsx +// packages/app/src/scaffolder/MyCustomExtensionWithOptions/extensions.ts +... +import { MyCustomExtensionWithOptions, MyCustomExtensionWithOptionsSchema } from './MyCustomExtensionWithOptions'; + +export const MyCustomFieldWithOptionsExtension = scaffolderPlugin.provide( + createScaffolderFieldExtension({ + name: 'MyCustomExtensionWithOptions', + component: MyCustomExtensionWithOptions, + schema: MyCustomExtensionWithOptionsSchema, + }), +); +``` + +We recommend using a library like [zod](https://github.com/colinhacks/zod) to define your schema +and the provided `makeFieldSchemaFromZod` helper utility function to generate both the JSON schema +and type for your field props to preventing having to duplicate the definitions: + +```tsx +//packages/app/src/scaffolder/MyCustomExtensionWithOptions/MyCustomExtensionWithOptions.tsx +... +import { z } from 'zod'; +import { makeFieldSchemaFromZod } from '@backstage/plugin-scaffolder'; + +const MyCustomExtensionWithOptionsFieldSchema = makeFieldSchemaFromZod( + z.string(), + z.object({ + focused: z + .boolean() + .optional() + .describe('Whether to focus this field'), + }), +); + +export const MyCustomExtensionWithOptionsSchema = MyCustomExtensionWithOptionsFieldSchema.schema; + +type MyCustomExtensionWithOptionsProps = typeof MyCustomExtensionWithOptionsFieldSchema.type; + +export const MyCustomExtensionWithOptions = ({ + onChange, + rawErrors, + required, + formData, +}: MyCustomExtensionWithOptionsProps) => { + return ( + 0 && !formData} + onChange={onChange} + focused={focused} + /> + ); +}; +``` diff --git a/docs/features/techdocs/cli.md b/docs/features/techdocs/cli.md index dc89f1718b..06eb83dfca 100644 --- a/docs/features/techdocs/cli.md +++ b/docs/features/techdocs/cli.md @@ -235,7 +235,7 @@ details. You need to make sure that your environment is able to authenticate with the target cloud provider. `techdocs-cli` uses the official Node.js clients provided -by AWS (v2), Google Cloud and Azure. You can authenticate using environment +by AWS (v3), Google Cloud and Azure. You can authenticate using environment variables and/or by other means (`~/.aws/credentials`, `~/.config/gcloud` etc.) Refer to the Authentication section of the following documentation depending diff --git a/docs/features/techdocs/configuration.md b/docs/features/techdocs/configuration.md index 8a54d76ed0..4e806296e5 100644 --- a/docs/features/techdocs/configuration.md +++ b/docs/features/techdocs/configuration.md @@ -108,8 +108,8 @@ techdocs: # (Optional) An API key is required to write to a storage bucket. # If not set, environment variables or aws config file will be used to authenticate. - # https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/loading-node-credentials-environment.html - # https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/loading-node-credentials-shared.html + # https://www.npmjs.com/package/@aws-sdk/credential-provider-node + # https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-credentials-node.html credentials: accessKeyId: ${TECHDOCS_AWSS3_ACCESS_KEY_ID_CREDENTIAL} secretAccessKey: ${TECHDOCS_AWSS3_SECRET_ACCESS_KEY_CREDENTIAL} @@ -121,7 +121,7 @@ techdocs: # (Optional) Endpoint URI to send requests to. # If not set, the default endpoint is built from the configured region. - # https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#constructor-property + # https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-s3/interfaces/s3clientconfig.html#endpoint endpoint: ${AWS_ENDPOINT} # (Optional) Whether to use path style URLs when communicating with S3. diff --git a/docs/features/techdocs/configuring-ci-cd.md b/docs/features/techdocs/configuring-ci-cd.md index 0f8044e9c9..75800c48ca 100644 --- a/docs/features/techdocs/configuring-ci-cd.md +++ b/docs/features/techdocs/configuring-ci-cd.md @@ -141,14 +141,16 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - - uses: actions/setup-node@v2 - - uses: actions/setup-python@v2 + - uses: actions/setup-node@v3 + - uses: actions/setup-python@v4 + with: + python-version: '3.9' # the 2 steps below can be removed if you aren't using plantuml in your documentation - name: setup java - uses: actions/setup-java@v2 + uses: actions/setup-java@v3 with: distribution: 'zulu' java-version: '11' diff --git a/docs/features/techdocs/using-cloud-storage.md b/docs/features/techdocs/using-cloud-storage.md index 66b4f09596..3ea57edc6b 100644 --- a/docs/features/techdocs/using-cloud-storage.md +++ b/docs/features/techdocs/using-cloud-storage.md @@ -219,22 +219,19 @@ If the environment variables - `AWS_REGION` are set and can be used to access the bucket you created in step 2, they will be -used by the AWS SDK V2 Node.js client for authentication. -[Refer to the official documentation for loading credentials in Node.js from environment variables](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/loading-node-credentials-environment.html). +used by the AWS SDK V3 Node.js client for authentication. +[Refer to the official documentation for loading credentials in Node.js from environment variables](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/loading-node-credentials-environment.html). If the environment variables are missing, the AWS SDK tries to read the `~/.aws/credentials` file for credentials. -[Refer to the official documentation.](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/loading-node-credentials-shared.html) +[Refer to the official documentation.](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/loading-node-credentials-shared.html) -If you are using Amazon EC2 instance to deploy Backstage, you do not need to -obtain the access keys separately. They can be made available in the environment -automatically by defining appropriate IAM role with access to the bucket. Read -more in +If you are deploying Backstage to Amazon EC2, Amazon ECS, or Amazon EKS, you do +not need to obtain the access keys separately. They can be made available in the +environment automatically by defining appropriate IAM role with access to the +bucket. Read more in the [official AWS documentation for using IAM roles.](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html#use-roles). -The AWS Region of the bucket is optional since TechDocs uses AWS SDK V2 and not -V3. - **4b. Authentication using app-config.yaml** AWS credentials and region can be provided to the AWS SDK via `app-config.yaml`. @@ -254,7 +251,7 @@ techdocs: ``` Refer to the -[official AWS documentation for obtaining the credentials](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/getting-your-credentials.html). +[official AWS documentation for obtaining the credentials](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-credentials-node.html). **4c. Authentication using an assumed role** Users with multiple AWS accounts may want to use a role for S3 storage that is in a different AWS account. Using diff --git a/docs/getting-started/app-custom-theme.md b/docs/getting-started/app-custom-theme.md index 146f160d71..5ec0d6eeab 100644 --- a/docs/getting-started/app-custom-theme.md +++ b/docs/getting-started/app-custom-theme.md @@ -393,6 +393,98 @@ You can add more icons, if the [default icons](https://github.com/backstage/back Note: If the icon is not available as one of the default icons or one you've added then it will fall back to Material UI's `LanguageIcon` +## Custom Sidebar + +As you've seen there are many ways that you can customize your Backstage app. The following section will show you how you can customize the sidebar. + +### Sidebar Sub-menu + +For this example we'll show you how you can expand the sidebar with a sub-menu: + +1. Open the `Root.tsx` file located in `packages/app/src/components/Root` as this is where the sidebar code lives +2. Then we want to add the following imports for the icons: + + ```ts + import ApiIcon from '@material-ui/icons/Extension'; + import ComponentIcon from '@material-ui/icons/Memory'; + import DomainIcon from '@material-ui/icons/Apartment'; + import ResourceIcon from '@material-ui/icons/Work'; + import SystemIcon from '@material-ui/icons/Category'; + import UserIcon from '@material-ui/icons/Person'; + ``` + +3. Then update the `@backstage/core-components` import like this: + + ```diff + import { + Sidebar, + sidebarConfig, + SidebarDivider, + SidebarGroup, + SidebarItem, + SidebarPage, + SidebarScrollWrapper, + SidebarSpace, + useSidebarOpenState, + Link, + + GroupIcon, + + SidebarSubmenu, + + SidebarSubmenuItem, + } from '@backstage/core-components'; + ``` + +4. Finally replace `` with this: + + ```ts + + + + + + + + + + + + + + ``` + +When you startup your Backstage app and hover over the Home option on the sidebar you'll now see a nice sub-menu appear with links to the various Kinds in your Catalog. It would look like this: + + + +You can see more ways to use this in the [Storybook Sidebar examples](https://backstage.io/storybook/?path=/story/layout-sidebar--sample-scalable-sidebar) + ## Custom Homepage In addition to a custom theme, a custom logo, you can also customize the diff --git a/docs/getting-started/contributors.md b/docs/getting-started/contributors.md index 9154eae4d1..cda53f8a54 100644 --- a/docs/getting-started/contributors.md +++ b/docs/getting-started/contributors.md @@ -29,8 +29,9 @@ After you have cloned the Backstage repository, you should run the following commands once to set things up for development: ```bash -$ yarn install # fetch dependency packages - may take a while +$ cd backstage # change to root directory of project +$ yarn install # fetch dependency packages - may take a while $ yarn tsc # does a first run of type generation and checks ``` @@ -101,7 +102,8 @@ yarn workspace @backstage/plugin-api-docs start # Serve api-docs plugin only, al yarn tsc # Run typecheck, use --watch for watch mode yarn tsc:full # Run full type checking, for example without skipLibCheck, use in CI -yarn build # Build published versions of packages, depends on tsc +yarn build:backend # Build the backend package, depends on tsc +yarn build:all # Build published versions of packages, depends on tsc yarn lint # lint packages that have changed since later commit on origin/master yarn lint:all # lint all packages diff --git a/docs/getting-started/homepage.md b/docs/getting-started/homepage.md index eac76b5fdc..2d34998013 100644 --- a/docs/getting-started/homepage.md +++ b/docs/getting-started/homepage.md @@ -78,7 +78,7 @@ const routes = ( ) ``` -### 4. Update sidebar items +#### 4. Update sidebar items Let's update the route for "Home" in the Backstage sidebar to point to the new homepage. We'll also add a Sidebar item to quickly open Catalog. diff --git a/docs/getting-started/index.md b/docs/getting-started/index.md index 477467bb88..16e361a19f 100644 --- a/docs/getting-started/index.md +++ b/docs/getting-started/index.md @@ -34,6 +34,7 @@ guide to do a repository-based installation. - [Package manager](https://nodejs.org/en/download/package-manager/) - [Using NodeSource packages](https://github.com/nodesource/distributions/blob/master/README.md) - `yarn` [Installation](https://classic.yarnpkg.com/en/docs/install) + - You will need to use Yarn classic to create a new project, but it can then be [migrated to Yarn 3](../tutorials/yarn-migration.md) - `docker` [installation](https://docs.docker.com/engine/install/) - `git` [installation](https://github.com/git-guides/install-git) - If the system is not directly accessible over your network the following ports diff --git a/docs/getting-started/running-backstage-locally.md b/docs/getting-started/running-backstage-locally.md index 7cc6f6be6a..e7e96316f4 100644 --- a/docs/getting-started/running-backstage-locally.md +++ b/docs/getting-started/running-backstage-locally.md @@ -21,12 +21,12 @@ This is made easy with a version manager such as # Installing current LTS release nvm install --lts > Installing latest LTS version. -> Downloading and installing node v14.15.1... -> Now using node v14.15.1 (npm v6.14.8) +> Downloading and installing node v16.16.0... +> Now using node v16.16.0 (npm v8.11.0) # Checking your version node --version -> v14.15.1 +> v16.16.0 ``` - Yarn @@ -41,47 +41,38 @@ locally to use features like Software Templates and TechDocs. Please refer to the [installation instructions for Docker](https://docs.docker.com/engine/install/). -## Clone and Build +## Clone and Install To get up and running with a local Backstage to evaluate it, let's clone it off -of GitHub and run an initial build. +of GitHub and run an initial install. ```bash # Start from your local development folder -git clone --depth 1 git@github.com:backstage/backstage.git +git clone --depth 1 https://github.com/backstage/backstage.git cd backstage -# Fetch our dependencies and run an initial build +# Install our dependencies yarn install -yarn tsc -yarn build ``` Phew! Now you have a local repository that's ready to run and to add any open source contributions into. We are now going to launch two things: an example Backstage frontend app, and an -example Backstage backend that the frontend talks to. You are going to need two -terminal windows, both starting from the Backstage project root. - -In the first window, run +example Backstage backend that the frontend talks to. These can both be launched +through the following command: ```bash -# From your Backstage root directory -yarn --cwd packages/backend start +# From your Backstage root directory, launches both the frontend and backend +yarn dev ``` -That starts up a backend instance on port 7007. +If you prefer to run the frontend and backend separately, you can instead use `yarn start` +and `yarn start-backend` in two separate terminal windows. -In the other window, we will then launch the frontend. This command is run from -the project root, not inside the backend directory. - -```bash -yarn start -``` - -That starts up the frontend on port 3000, and should automatically open a -browser window showing it. +Which ever way you choose, you will now have a backend instance running on port 7007, +and the frontend running on port 3000. A browser window should also automatically open, +showing the frontend. ## Authentication diff --git a/docs/integrations/azure/org.md b/docs/integrations/azure/org.md index 99c517b568..acb43db182 100644 --- a/docs/integrations/azure/org.md +++ b/docs/integrations/azure/org.md @@ -101,7 +101,7 @@ To grant the managed identity the same permissions as mentioned in _App Registra ## Filtering imported Users and Groups By default, the plugin will import all users and groups from your directory. -This can be customized through filters and search queries. +This can be customized through [filters](https://learn.microsoft.com/en-us/graph/filter-query-parameter) and [search](https://learn.microsoft.com/en-us/graph/search-query-parameter) queries. ### Groups @@ -228,6 +228,17 @@ export async function myOrganizationTransformer( ## Troubleshooting +### No data + +First check your logs for the message `Reading msgraph users and groups`. +If you don't see this, check you've registered the provider, and that the schedule is valid + +If you see a log entry `Read 0 msgraph users and 0 msgraph groups`, check your search and filter arguments. + +If you see the start message (`Reading msgraph users and groups`) but no end message (`Read X msgraph users and Y msgraph groups`), then it is likely the job is taking a long time due to a large volume of data. +The default behavior is to import all users and groups, which is often more data than needed. +Try importing a smaller set of data (e.g. `filter: displayName eq 'John Smith'`). + ### Authentication / Token Errors See [Troubleshooting Azure Identity Authentication Issues](https://aka.ms/azsdk/js/identity/troubleshoot) diff --git a/docs/integrations/bitbucketCloud/discovery.md b/docs/integrations/bitbucketCloud/discovery.md index 9b9bc4ecde..f6ceab9ff7 100644 --- a/docs/integrations/bitbucketCloud/discovery.md +++ b/docs/integrations/bitbucketCloud/discovery.md @@ -24,10 +24,12 @@ package. yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-bitbucket-cloud ``` +### Installation without Events Support + And then add the entity provider to your catalog builder: ```diff - // In packages/backend/src/plugins/catalog.ts +// packages/backend/src/plugins/catalog.ts + import { BitbucketCloudEntityProvider } from '@backstage/plugin-catalog-backend-module-bitbucket-cloud'; export default async function createPlugin( @@ -37,11 +39,7 @@ And then add the entity provider to your catalog builder: + builder.addEntityProvider( + BitbucketCloudEntityProvider.fromConfig(env.config, { + logger: env.logger, -+ // optional: alternatively, configure via app-config.yaml -+ schedule: env.scheduler.createScheduledTaskRunner({ -+ frequency: { minutes: 30 }, -+ timeout: { minutes: 3 }, -+ }), ++ scheduler: env.scheduler, + }), + ); @@ -49,6 +47,62 @@ And then add the entity provider to your catalog builder: } ``` +Alternatively to the config-based schedule, you can use + +```diff +- scheduler: env.scheduler, ++ schedule: env.scheduler.createScheduledTaskRunner({ ++ frequency: { minutes: 30 }, ++ timeout: { minutes: 3 }, ++ }), +``` + +### Installation with Events Support + +Please follow the installation instructions at + +- https://github.com/backstage/backstage/tree/master/plugins/events-backend/README.md +- https://github.com/backstage/backstage/tree/master/plugins/events-backend-module-bitbucket-cloud/README.md + +Additionally, you need to decide how you want to receive events from external sources like + +- [via HTTP endpoint](https://github.com/backstage/backstage/tree/master/plugins/events-backend/README.md) +- [via an AWS SQS queue](https://github.com/backstage/backstage/tree/master/plugins/events-backend-module-aws-sqs/README.md) + +Set up your provider + +```diff +// packages/backend/src/plugins/catalogEventBasedProviders.ts ++import { CatalogClient } from '@backstage/catalog-client'; ++import { BitbucketCloudEntityProvider } from '@backstage/plugin-catalog-backend-module-bitbucket-cloud'; + import { EntityProvider } from '@backstage/plugin-catalog-node'; + import { EventSubscriber } from '@backstage/plugin-events-node'; + import { PluginEnvironment } from '../types'; + + export default async function createCatalogEventBasedProviders( +- _: PluginEnvironment, ++ env: PluginEnvironment, + ): Promise> { + const providers: Array< + (EntityProvider & EventSubscriber) | Array + > = []; +- // add your event-based entity providers here ++ providers.push( ++ BitbucketCloudEntityProvider.fromConfig(env.config, { ++ catalogApi: new CatalogClient({ discoveryApi: env.discovery }), ++ logger: env.logger, ++ scheduler: env.scheduler, ++ tokenManager: env.tokenManager, ++ }), ++ ); + return providers.flat(); + } +``` + +**Attention:** +`catalogApi` and `tokenManager` are required at this variant +compared to the one without events support. + ## Configuration To use the entity provider, you'll need a [Bitbucket Cloud integration set up](locations.md). diff --git a/docs/integrations/github/discovery.md b/docs/integrations/github/discovery.md index 4f032901a9..bbbe86a834 100644 --- a/docs/integrations/github/discovery.md +++ b/docs/integrations/github/discovery.md @@ -14,7 +14,7 @@ organization and register entities matching the configured path. This can be useful as an alternative to static locations or manually adding things to the catalog. This is the preferred method for ingesting entities into the catalog. -## Installation +## Installation without Events Support You will have to add the provider in the catalog initialization code of your backend. They are not installed by default, therefore you have to add a @@ -53,6 +53,52 @@ And then add the entity provider to your catalog builder: } ``` +## Installation with Events Support + +Please follow the installation instructions at + +- https://github.com/backstage/backstage/tree/master/plugins/events-backend/README.md +- https://github.com/backstage/backstage/tree/master/plugins/events-backend-module-github/README.md + +Additionally, you need to decide how you want to receive events from external sources like + +- [via HTTP endpoint](https://github.com/backstage/backstage/tree/master/plugins/events-backend/README.md) +- [via an AWS SQS queue](https://github.com/backstage/backstage/tree/master/plugins/events-backend-module-aws-sqs/README.md) + +Set up your provider + +```diff +// packages/backend/src/plugins/catalogEventBasedProviders.ts ++import { GithubEntityProvider } from '@backstage/plugin-catalog-backend-module-github'; + import { EntityProvider } from '@backstage/plugin-catalog-node'; + import { EventSubscriber } from '@backstage/plugin-events-node'; + import { PluginEnvironment } from '../types'; + export default async function createCatalogEventBasedProviders( +- _: PluginEnvironment, ++ env: PluginEnvironment, + ): Promise> { + const providers: Array< + (EntityProvider & EventSubscriber) | Array + > = []; +- // add your event-based entity providers here ++ providers.push( ++ GithubEntityProvider.fromConfig(env.config, { ++ logger: env.logger, ++ // optional: alternatively, use scheduler with schedule defined in app-config.yaml ++ schedule: env.scheduler.createScheduledTaskRunner({ ++ frequency: { minutes: 30 }, ++ timeout: { minutes: 3 }, ++ }), ++ // optional: alternatively, use schedule ++ scheduler: env.scheduler, ++ }), ++ ); + return providers.flat(); + } +``` + +You can check the official docs to [configure your webhook](https://docs.github.com/en/developers/webhooks-and-events/webhooks/creating-webhooks) and to [secure your request](https://docs.github.com/en/developers/webhooks-and-events/webhooks/securing-your-webhooks). The webhook will need to be configured to forward `push` events. + ## Configuration To use the discovery provider, you'll need a GitHub integration diff --git a/docs/integrations/github/org.md b/docs/integrations/github/org.md index 5482733a58..9e3c450adc 100644 --- a/docs/integrations/github/org.md +++ b/docs/integrations/github/org.md @@ -38,7 +38,7 @@ schedule it: ```diff // packages/backend/src/plugins/catalog.ts -+import { GitHubOrgEntityProvider } from '@backstage/plugin-catalog-backend-module-github'; ++import { GithubOrgEntityProvider } from '@backstage/plugin-catalog-backend-module-github'; export default async function createPlugin( env: PluginEnvironment, @@ -48,7 +48,7 @@ schedule it: + // The org URL below needs to match a configured integrations.github entry + // specified in your app-config. + builder.addEntityProvider( -+ GitHubOrgEntityProvider.fromConfig(env.config, { ++ GithubOrgEntityProvider.fromConfig(env.config, { + id: 'production', + orgUrl: 'https://github.com/backstage', + logger: env.logger, @@ -97,6 +97,66 @@ that must be approved first before the changes are applied.**  +### Custom Transformers + +You can inject your own transformation logic to help map from GH API responses +into backstage entities. You can do this on the user and team requests to +enable you to do further processing or updates to the entities. + +To enable this you pass a function into the `GitHubOrgEntityProvider`. You can +pass a `UserTransformer`, `TeamTransformer` or both. The function is invoked +for each item (user or team) that is returned from the API. You can either +return an Entity (User or Group) or `undefined` if you do not want to import +that item. + +There is also a `defaultUserTransformer` and `defaultOrganizationTeamTransformer`. +You could use these and simply decorate the response from the default +transformation if you only need to change a few properties. + +### Resolving GitHub users via organization email + +When you authenticate users you should resolve them to an entity within the +catalog. Often the authentication you use could be a corporate SSO system that +provides you with email as a key. To enable you to find and resolve GitHub users +it's useful to also import the private domain verified emails into the User +entity in backstage. + +The integration attempts to return `organizationVerifiedDomainEmails` from the +GitHub API and makes this available as part of the object passed to +`UserTransformer`. The GitHub API will only return emails that use a domain +that's a verified domain for your GitHub Org. It also relies on the user having +configured such an email in their own account. The API will only return these +values when using GitHub App authentication and with the correct app permission +allowing access to emails. + +You can decorate the `defaultUserTransformer` to replace the org email in the +returned identity. + +```typescript +async (user, ctx): Promise => { + const entity = await defaultUserTransformer(user, ctx); + + if (entity && user.organizationVerifiedDomainEmails) { + entity.spec.profile!.email = user.organizationVerifiedDomainEmails[0] || ''; + } + + return entity; +}, +``` + +Once you have imported the emails you can resolve users in your sign-in in +resolver using the catalog entity search via email + +```typescript +// packages/backend/src/plugins/auth.ts +ctx.signInWithCatalogUser({ + filter: { + kind: ['User'], + 'spec.profile.email': email as string, + }, +}); +``` + ## Using a Processor instead of a Provider An alternative to using the Provider for ingesting organizational entities is to diff --git a/docs/overview/architecture-overview.md b/docs/overview/architecture-overview.md index 3c9417268b..3ba3f4ba0b 100644 --- a/docs/overview/architecture-overview.md +++ b/docs/overview/architecture-overview.md @@ -205,7 +205,7 @@ A typical plugin consists of up to five packages, two frontend ones, two backend, and one isomorphic package. All packages within the plugin must share a common prefix, typically of the form `@/plugin-`, but alternatives like `backstage-plugin-` or -`@scope/backstage-plugin-` are also valid. Along with this prefix, +`@/backstage-plugin-` are also valid. Along with this prefix, each of the packages have their own unique suffix that denotes their role. In addition to these five plugin packages it's also possible for a plugin to have additional frontend and backend modules that can be installed to enable optional @@ -249,7 +249,7 @@ however likely to change in the future. The common packages are the packages effectively depended on by all other pages. This is a much smaller set of packages but they are also very pervasive. Because the common packages are isomorphic and must execute both in the frontend and -backend, they are never allowed to depend on any of the frontend of backend +backend, they are never allowed to depend on any of the frontend or backend packages. The Backstage CLI is in a category of its own and is depended on by virtually @@ -260,7 +260,7 @@ development dependency only. It can sometimes be difficult to decide where to place your plugin code. For example should it go directly in the `-backend` plugin package or in the `-node` package? -As a rule of thumb you should try to keep the exposure of your code as low +As a general guideline you should try to keep the exposure of your code as low as possible. If it doesn't need to be public API, it's best to avoid. If you don't need it to be used by other plugins, then keep it directly in the plugin packages. diff --git a/docs/overview/versioning-policy.md b/docs/overview/versioning-policy.md index 885a599ed8..10ffc82188 100644 --- a/docs/overview/versioning-policy.md +++ b/docs/overview/versioning-policy.md @@ -99,7 +99,7 @@ This versioning is completely decoupled from the Backstage release versioning, meaning you might for example have `@backstage/core-plugin-api` version `3.1.4` be part of the `1.12` Backstage release. -Following versioning policy applies to all packages: +The following versioning policy applies to all packages: - Breaking changes are noted in the changelog, and documentation is updated. - Breaking changes are prefixed with `**BREAKING**: ` in the changelog. @@ -120,6 +120,25 @@ For packages at version `1.0.0` or above, the following policy also applies: changes without a deprecation period, but the changes must still adhere to semver. +### Changes that are Not Considered Breaking + +There are a few changes that would typically be considered breaking changes, but +that we make exceptions for. This is both to be able to evolve the project more +rapidly, also because the alternative ends up having a bigger impact on users. + +For all Utility APIs and Backend Services that _have_ a built-in implementation, +we only consider the API stability for consumers of those interfaces. This means +that it is not considered a breaking change to break the contract for producers +of the interface. + +Changes that fall under the above rule, must be marked with +`**BREAKING PRODUCERS**:` in the changelog. + +For any case of dependency injection, it is not considered a breaking change to +add a dependency on a Utility API or Backend Service that is provided by the +framework. This includes any dependency that is provided by the +`@backstage/app-defaults` and `@backstage/backend-defaults` packages. + ### Release Stages The release stages(`@alpha`, `@beta` `@public`) refers to the @@ -144,9 +163,10 @@ following schedule for determining the [Node.js releases](https://nodejs.org/en/ - At any given point in time we support exactly two adjacent even-numbered releases of Node.js, for example v12 and v14. -- Three months before a Node.js release becomes _Active LTS_ we switch support - to that release and the previous one. This is halfway through the _Current LTS_ - cycle for that release and occurs at the end of July every year. +- Once a new Node.js release becomes _Active LTS_ we switch to support that + release and the previous one. The switch is not immediate but done as soon + as possible. You can find the Node.js version supported by each release + in the `engines` field in the root `package.json` of a new app. When we say _Supporting_ a Node.js release, that means the following: diff --git a/docs/plugins/analytics.md b/docs/plugins/analytics.md index 46e1d354df..e04cb9c5c6 100644 --- a/docs/plugins/analytics.md +++ b/docs/plugins/analytics.md @@ -52,13 +52,13 @@ learn how to contribute the integration yourself! The following table summarizes events that, depending on the plugins you have installed, may be captured. -| Action | Subject | Other Notes | -| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------- | -| `navigate` | The URL of the page that was navigated to | | -| `click` | The text of the link that was clicked on | The `to` attribute represents the URL clicked to | -| `create` | The `name` of the software being created; if no `name` property is requested by the given Software Template, then the string `new {templateName}` is used instead. | The context holds an `entityRef`, set to the template's ref (e.g. `template:default/template-name`) | -| `search` | The search term entered in any search bar component | The context holds `searchTypes`, representing `types` constraining the search | -| `discover` | The title of the search result that was clicked on | The `value` is the result rank. A `to` attribute is also provided | +| Action | Subject | Other Notes | +| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `navigate` | The URL of the page that was navigated to | | +| `click` | The text of the link that was clicked on | The `to` attribute represents the URL clicked to | +| `create` | The `name` of the software being created; if no `name` property is requested by the given Software Template, then the string `new {templateName}` is used instead. | The context holds an `entityRef`, set to the template's ref (e.g. `template:default/template-name`) | +| `search` | The search term entered in any search bar component | - The context holds `searchTypes`, representing `types` constraining the search. The `value` represents the total number of search results for the query. This may not be visible if the permission framework is being used. | +| `discover` | The title of the search result that was clicked on | The `value` is the result rank. A `to` attribute is also provided | If there is an event you'd like to see captured, please [open an issue][add-event] describing the event you want to see and the questions it diff --git a/docs/plugins/backend-plugin.md b/docs/plugins/backend-plugin.md index 3eddb9e1c2..65a668d391 100644 --- a/docs/plugins/backend-plugin.md +++ b/docs/plugins/backend-plugin.md @@ -51,7 +51,7 @@ terminal window, now run curl localhost:7007/carmen/health ``` -This should return `{"status":"ok"}`. Success! Press `Ctrl + c` to kill it +This should return `{"status":"ok"}`. Success! Press `Ctrl + c` to stop it again. ## Developing your Backend Plugin diff --git a/docs/plugins/testing.md b/docs/plugins/testing.md index aa7815728c..baee47c695 100644 --- a/docs/plugins/testing.md +++ b/docs/plugins/testing.md @@ -123,7 +123,7 @@ than simply letting them know they had an invalid input. > input change. This piggybacks the Scalability Principle and applies primarily to frontend -development. As a general rule of thumb, frontends should be flexible enough so +development. As a general guideline, frontends should be flexible enough so that the UX or design can change while touching the least amount of code possible. So for example, a poor unit test would verify the color of a button when it is hovered. This would be a poor unit test, because if you decide to @@ -353,7 +353,7 @@ For more information: ### Accessing `store`, `theme`, routing, browser history, etc. The Backstage application has several core providers at its root. To run your -test wrapped in a "dummy" Backstage application, you can use our utility +test wrapped in a "sample" Backstage application, you can use our utility functions: **`wrapInTestApp`** diff --git a/docs/plugins/url-reader.md b/docs/plugins/url-reader.md index 8788737f17..815674091b 100644 --- a/docs/plugins/url-reader.md +++ b/docs/plugins/url-reader.md @@ -268,7 +268,7 @@ async function main() { ``` This will be run every time you restart the backend. Note that after any change -in the URL Reader code, you need to kill the backend and restart, since the +in the URL Reader code, you need to stop the backend and restart, since the `reader` instance is memoized and does not update on hot module reloading. Also, there are a lot of unit tests written for the URL Readers, which you can make use of. diff --git a/docs/releases/v1.8.0-changelog.md b/docs/releases/v1.8.0-changelog.md new file mode 100644 index 0000000000..4b36b01abf --- /dev/null +++ b/docs/releases/v1.8.0-changelog.md @@ -0,0 +1,2837 @@ +# Release v1.8.0 + +## @backstage/backend-common@0.16.0 + +### Minor Changes + +- a7607b5413: **BREAKING CHANGE**: The `UrlReader` interface has been updated to require that `readUrl` is implemented. `readUrl` has previously been optional to implement but a warning has been logged when calling its predecessor `read`. + The `read` method is now deprecated and will be removed in a future release. + +### Patch Changes + +- 88f99b8b13: Bumped `tar` dependency to `^6.1.12` in order to ensure Node.js v18 compatibility. +- 55227712dd: Generated development HTTPS backend certificate is now checked for expiration date instead of file age. +- d05e1841ce: This patch adds GiteaURLReader to the available classes. It currently only reads single files via gitea's public repos api +- e6ced2446a: Change to using `@keyv/memcache` now that `keyv-memcache` is deprecated +- 210a3b5668: Small update to fix compatibility with newer versions of the `keyv` library +- cfb30b700c: Pin `@kubernetes/client-node` version to `0.17.0`. +- c1784a4980: Replaces in-code uses of `GitHub` with `Github` and deprecates old versions. +- Updated dependencies + - @backstage/integration@1.4.0 + - @backstage/types@1.0.1 + - @backstage/cli-common@0.1.10 + - @backstage/config@1.0.4 + - @backstage/config-loader@1.1.6 + - @backstage/errors@1.1.3 + +## @backstage/cli@0.21.0 + +### Minor Changes + +- 7539b36748: Added a new ESLint rule that restricts imports of Link from @material-ui + + The rule can be can be overridden in the following way: + + ```diff + module.exports = require('@backstage/cli/config/eslint-factory')(__dirname, { + + restrictedImports: [ + + { name: '@material-ui/core', importNames: [] }, + + { name: '@material-ui/core/Link', importNames: [] }, + + ], + }); + ``` + +- 384eaa2307: Switched `tsconfig.json` to target and support `ES2021`, in line with the bump to Node.js 16 & 18. + +### Patch Changes + +- e52d6ad861: Updated the `backstage-cli` so that the `list-deprecations` command is visible and also removed the "[EXPERIMENTAL]" tag. +- 88f99b8b13: Bumped `tar` dependency to `^6.1.12` in order to ensure Node.js v18 compatibility. +- df21bbd4ad: Removed googleAnalyticsTrackingId configSchema. +- 286d474675: Minor update to the `index.html` template that updates the comment at the end to be more accurate. +- 4c16213e7d: The built-in Jest configuration now always uses the Jest environments that are bundled with the CLI by default. This avoids a situation where Jest potentially picks up an incompatible version of the environment package from a different dependency in the project. +- 4091c73e68: Updated `@swc/core` to version 1.3.9 which fixes a `.tsx` parser bug +- 969a8444ea: Updated dependency `esbuild` to `^0.15.0`. +- 9c767e8f45: Updated dependency `@svgr/plugin-jsx` to `6.5.x`. + Updated dependency `@svgr/plugin-svgo` to `6.5.x`. + Updated dependency `@svgr/rollup` to `6.5.x`. + Updated dependency `@svgr/webpack` to `6.5.x`. +- Updated dependencies + - @backstage/release-manifests@0.0.7 + - @backstage/types@1.0.1 + - @backstage/cli-common@0.1.10 + - @backstage/config@1.0.4 + - @backstage/config-loader@1.1.6 + - @backstage/errors@1.1.3 + +## @backstage/core-app-api@1.2.0 + +### Minor Changes + +- 9b737e5f2e: Updated the React Router wiring to make use of the new `basename` property of the router components in React Router v6 stable. To implement this, a new optional `basename` property has been added to the `Router` app component, which can be forwarded to the concrete router implementation in order to support this new behavior. This is done by default in any app that does not have a `Router` component override. +- 127fcad26d: Deprecated the `homepage` config as the component that used it - `HomepageTimer` - has been removed and replaced by the `HeaderWorldClock` in the home plugin + +### Patch Changes + +- Updated dependencies + - @backstage/version-bridge@1.0.2 + - @backstage/core-plugin-api@1.1.0 + - @backstage/types@1.0.1 + - @backstage/config@1.0.4 + +## @backstage/core-components@0.12.0 + +### Minor Changes + +- fb3733e446: **BREAKING**: Removed the `HomepageTimer` as it has been replaced by the `HeaderWorldClock` in the Home plugin and was deprecated over a year ago. + +### Patch Changes + +- 5f695c219a: Set the `searchTooltip` to "Filter" to follow how the `searchPlaceholder` is set making this more consistent +- f36127f5fe: Add optional step to SimpleStepper +- b4fb5c8ecc: MissingAnnotationEmptyState now accepts either a string or an array of strings to support multiple missing annotations. +- 7573b65232: Internal refactor of imports to avoid circular dependencies +- 858986f6b6: Disable base path workaround in `Link` component when React Router v6 stable is used. +- f905853ad6: Prefer using `Link` from `@backstage/core-components` rather than material-UI. +- Updated dependencies + - @backstage/version-bridge@1.0.2 + - @backstage/core-plugin-api@1.1.0 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/core-plugin-api@1.1.0 + +### Minor Changes + +- a228f113d0: The app `Router` component now accepts an optional `basename` property. + +### Patch Changes + +- Updated dependencies + - @backstage/version-bridge@1.0.2 + - @backstage/types@1.0.1 + - @backstage/config@1.0.4 + +## @backstage/integration@1.4.0 + +### Minor Changes + +- d05e1841ce: This patch brings Gitea as a valid integration: target, via the ScmIntegration interface. It adds gitea to the relevant static properties (get integration by name, get integration by type) for plugins to be able to reference the same Gitea server. +- c1784a4980: Replaces in-code uses of `GitHub` with `Github` and deprecates old versions. + + Deprecates: + + - `getGitHubFileFetchUrl` replaced by `getGithubFileFetchUrl` + - `GitHubIntegrationConfig` replaced by `GithubIntegrationConfig` + - `GitHubIntegration` replaced by `GithubIntegration` + - `readGitHubIntegrationConfig` replaced by `readGithubIntegrationConfig` + - `readGitHubIntegrationConfigs` replaced by `readGithubIntegrationConfigs` + - `replaceGitHubUrlType` replaced by `replaceGithubUrlType` + +### Patch Changes + +- 7573b65232: Internal refactor of imports to avoid circular dependencies + +- a6d779d58a: Remove explicit default visibility at `config.d.ts` files. + + ```ts + /** + * @visibility backend + */ + ``` + +- Updated dependencies + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## @backstage/plugin-azure-sites@0.1.0 + +### Minor Changes + +- 4a75ce761c: Azure Sites (Apps & Functions) support for a given entity. View the current status of the site, quickly jump to site's Overview page, or Log Stream page. + +### Patch Changes + +- f905853ad6: Prefer using `Link` from `@backstage/core-components` rather than material-UI. +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/plugin-azure-sites-common@0.1.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-azure-sites-backend@0.1.0 + +### Minor Changes + +- 4a75ce761c: Azure Sites (Apps & Functions) support for a given entity. View the current status of the site, quickly jump to site's Overview page, or Log Stream page. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/plugin-azure-sites-common@0.1.0 + - @backstage/config@1.0.4 + +## @backstage/plugin-azure-sites-common@0.1.0 + +### Minor Changes + +- 4a75ce761c: Azure Sites (Apps & Functions) support for a given entity. View the current status of the site, quickly jump to site's Overview page, or Log Stream page. + +## @backstage/plugin-bazaar@0.2.0 + +### Minor Changes + +- 28b39e0e0e: The limit prop of BazaarOverviewCard has been removed entirely, and instead replaced with a new optional boolean prop `fullWidth`. The BazaarOverviewCard now always use full height without fixed width. Also fixed problem with link to Bazaar. + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/cli@0.21.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/plugin-catalog@1.6.1 + - @backstage/catalog-client@1.1.2 + - @backstage/errors@1.1.3 + +## @backstage/plugin-catalog-backend-module-github@0.2.0 + +### Minor Changes + +- 67fe5bc9a9: BREAKING: Support authenticated backends by including a server token for catalog requests. The constructor of `GithubLocationAnalyzer` now requires an instance of `TokenManager` to be supplied: + + ```diff + ... + builder.addLocationAnalyzers( + new GitHubLocationAnalyzer({ + discovery: env.discovery, + config: env.config, + + tokenManager: env.tokenManager, + }), + ); + ... + ``` + +- f64d66a45c: Added the ability for the GitHub discovery provider to validate that catalog files exist before emitting them. + + Users can now set the `validateLocationsExist` property to `true` in their GitHub discovery configuration to opt in to this feature. + This feature only works with `catalogPath`s that do not contain wildcards. + + When `validateLocationsExist` is set to `true`, the GitHub discovery provider will retrieve the object from the + repository at the provided `catalogPath`. + If this file exists and is non-empty, then it will be emitted as a location for further processing. + If this file does not exist or is empty, then it will not be emitted. + Not emitting locations that do not exist allows for far fewer calls to the GitHub API to validate locations that do not exist. + +### Patch Changes + +- 67fe5bc9a9: Properly derive Github credentials when making requests in `GithubLocationAnalyzer` to support Github App authentication +- bef063dc8d: - Make it possible to inject custom user and team transformers when configuring the `GithubOrgEntityProvider` +- 4c9f7847e4: Updated dependency `msw` to `^0.48.0` while moving it to be a dev dependency. +- c1784a4980: Replaces in-code uses of `GitHub` with `Github` and deprecates old versions. +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/plugin-catalog-backend@1.5.1 + - @backstage/integration@1.4.0 + - @backstage/backend-tasks@0.3.7 + - @backstage/catalog-model@1.1.3 + - @backstage/types@1.0.1 + - @backstage/backend-plugin-api@0.1.4 + - @backstage/plugin-catalog-node@1.2.1 + - @backstage/catalog-client@1.1.2 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## @backstage/plugin-cost-insights@0.12.0 + +### Minor Changes + +- 43afded227: Updated recharts to v2.0.0 and fixed typing issues + +### Patch Changes + +- e92aa15f01: Bumped `canvas` dependency to the latest version, which has better Node.js v18 support. +- cbe11d1e23: Tweak README +- 745e0e2228: Added support for displaying entity cost insights by implementing the new `getCatalogEntityDailyCost` that's part of the `CostInsightsApi`. +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/config@1.0.4 + - @backstage/theme@0.2.16 + - @backstage/plugin-cost-insights-common@0.1.1 + +## @backstage/plugin-events-backend@0.1.0 + +### Minor Changes + +- dc9da28abd: Support events received via HTTP endpoints at plugin-events-backend. + + The plugin provides an event publisher `HttpPostIngressEventPublisher` + which will allow you to receive events via + HTTP endpoints `POST /api/events/http/{topic}` + and will publish these to the used event broker. + + Using a provided custom validator, you can participate in the decision + which events are accepted, e.g. by verifying the source of the request. + + Please find more information at + . + +- 7bbd2403a1: Adds a new backend plugin plugin-events-backend for managing events. + + plugin-events-node exposes interfaces which can be used by modules. + + plugin-events-backend-test-utils provides utilities which can be used while writing tests e.g. for modules. + + Please find more information at + . + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/plugin-events-node@0.1.0 + - @backstage/backend-plugin-api@0.1.4 + - @backstage/config@1.0.4 + +## @backstage/plugin-events-backend-module-aws-sqs@0.1.0 + +### Minor Changes + +- d3ecb2382d: Adds a new module `aws-sqs` for plugin-events-backend. + + The module provides an event publisher `AwsSqsConsumingEventPublisher` + which will allow you to receive events from + an AWS SQS queue and will publish these to the used event broker. + + Please find more information at + . + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.3.7 + - @backstage/plugin-events-node@0.1.0 + - @backstage/types@1.0.1 + - @backstage/backend-plugin-api@0.1.4 + - @backstage/config@1.0.4 + +## @backstage/plugin-events-backend-module-azure@0.1.0 + +### Minor Changes + +- 12cd94b7e9: Adds a new module `azure` to plugin-events-backend. + + The module adds a new event router `AzureDevOpsEventRouter`. + + The event router will re-publish events received at topic `azureDevOps` + under a more specific topic depending on their `$.eventType` value + (e.g., `azureDevOps.git.push`). + + Please find more information at + . + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.1.0 + - @backstage/backend-plugin-api@0.1.4 + +## @backstage/plugin-events-backend-module-bitbucket-cloud@0.1.0 + +### Minor Changes + +- 6bc121bf0d: Adds a new module `bitbucket-cloud` to plugin-events-backend. + + The module adds a new event router `BitbucketCloudEventRouter`. + + The event router will re-publish events received at topic `bitbucketCloud` + under a more specific topic depending on their `x-event-key` value + (e.g., `bitbucketCloud.repo:push`). + + Please find more information at + . + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.1.0 + - @backstage/backend-plugin-api@0.1.4 + +## @backstage/plugin-events-backend-module-gerrit@0.1.0 + +### Minor Changes + +- 25f6d7bddb: Adds a new module `gerrit` to plugin-events-backend. + + The module adds a new event router `GerritEventRouter`. + + The event router will re-publish events received at topic `gerrit` + under a more specific topic depending on their `$.type` value + (e.g., `gerrit.change-merged`). + + Please find more information at + . + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.1.0 + - @backstage/backend-plugin-api@0.1.4 + +## @backstage/plugin-events-backend-module-github@0.1.0 + +### Minor Changes + +- b3a4edb885: Adds a new module `github` to plugin-events-backend. + + The module adds a new event router `GithubEventRouter`. + + The event router will re-publish events received at topic `github` + under a more specific topic depending on their `x-github-event` value + (e.g., `github.push`). + + Please find more information at + . + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.1.0 + - @backstage/backend-plugin-api@0.1.4 + +## @backstage/plugin-events-backend-module-gitlab@0.1.0 + +### Minor Changes + +- 63f7983398: Adds a new module `gitlab` to plugin-events-backend. + + The module adds a new event router `GitlabEventRouter`. + + The event router will re-publish events received at topic `gitlab` + under a more specific topic depending on their `$.event_name` value + (e.g., `gitlab.push`). + + Please find more information at + . + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.1.0 + - @backstage/backend-plugin-api@0.1.4 + +## @backstage/plugin-events-backend-test-utils@0.1.0 + +### Minor Changes + +- 7bbd2403a1: Adds a new backend plugin plugin-events-backend for managing events. + + plugin-events-node exposes interfaces which can be used by modules. + + plugin-events-backend-test-utils provides utilities which can be used while writing tests e.g. for modules. + + Please find more information at + . + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.1.0 + +## @backstage/plugin-events-node@0.1.0 + +### Minor Changes + +- dc9da28abd: Support events received via HTTP endpoints at plugin-events-backend. + + The plugin provides an event publisher `HttpPostIngressEventPublisher` + which will allow you to receive events via + HTTP endpoints `POST /api/events/http/{topic}` + and will publish these to the used event broker. + + Using a provided custom validator, you can participate in the decision + which events are accepted, e.g. by verifying the source of the request. + + Please find more information at + . + +- 7bbd2403a1: Adds a new backend plugin plugin-events-backend for managing events. + + plugin-events-node exposes interfaces which can be used by modules. + + plugin-events-backend-test-utils provides utilities which can be used while writing tests e.g. for modules. + + Please find more information at + . + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.1.4 + +## @backstage/plugin-github-issues@0.2.0 + +### Minor Changes + +- ead285b9e4: **BREAKING**: Changed the casing of all exported types to have a lowercase "h" in "github". E.g. "GitHubIssuesPage" was renamed to "GithubIssuesPage". Please rename your imports where necessary. + +### Patch Changes + +- c8dd2a8c87: Stripping specific issues URL already present to target base issues URL. +- c1784a4980: Replaces in-code uses of `GitHub` with `Github` and deprecates old versions. +- f905853ad6: Prefer using `Link` from `@backstage/core-components` rather than material-UI. +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/integration@1.4.0 + - @backstage/catalog-model@1.1.3 + - @backstage/errors@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/plugin-ilert@0.2.0 + +### Minor Changes + +- 0697af30da: Added support for multiple responders in alert list, added new tab with list to support iLert resource 'service', added new tab with list to support iLert resource 'status page' + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/errors@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/plugin-kubernetes-backend@0.8.0 + +### Minor Changes + +- cbf5d11fdf: The Kubernetes errors when fetching pod metrics are now captured and returned to the frontend. + + - **BREAKING** The method `fetchPodMetricsByNamespace` in the interface `KubernetesFetcher` is changed to `fetchPodMetricsByNamespaces`. It now accepts a set of namespace strings and returns `Promise`. + - Add the `PodStatusFetchResponse` to the `FetchResponse` union type. + - Add `NOT_FOUND` to the `KubernetesErrorTypes` union type, the HTTP error with status code 404 will be mapped to this error. + +### Patch Changes + +- cfb30b700c: Pin `@kubernetes/client-node` version to `0.17.0`. +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/catalog-model@1.1.3 + - @backstage/plugin-auth-node@0.2.7 + - @backstage/plugin-kubernetes-common@0.4.4 + - @backstage/catalog-client@1.1.2 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## @backstage/plugin-org@0.6.0 + +### Minor Changes + +- 0b11500151: Updates the User and Group Profile cards to add the links from the UserEntity or the GroupEntity + +### Patch Changes + +- 38dd29ea95: Add entity kind to the Ownership Cards. Fix the query parameters for the links of the Ownership Cards so that the catalog page actually selects the right entity kind. +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/plugin-org-react@0.1.0 + +### Minor Changes + +- e96274f1fe: Implemented the org-react plugin, with it's first component being: a `GroupListPicker` component that will give the user the ability to choose a group + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/catalog-client@1.1.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-scaffolder@1.8.0 + +### Minor Changes + +- edae17309e: Added props to override default Scaffolder page title, subtitle and pageTitleOverride. + Routes like `rootRouteRef`, `selectedTemplateRouteRef`, `nextRouteRef`, `nextSelectedTemplateRouteRef` were made public and can be used in your app (e.g. in custom TemplateCard component). + +### Patch Changes + +- 580285787d: The `create` and `click` analytics events are now also captured on the "next" version of the component creation page. + +- 4830a3569f: Basic analytics instrumentation is now in place: + + - As users make their way through template steps, a `click` event is fired, including the step number. + - After a user clicks "Create" a `create` event is fired, including the name of the software that was just created. The template used at creation is set on the `entityRef` context key. + +- 94b7ca9c6d: Updated to use `@rjsf` packages of version `^5.0.0-beta.12` + +- 87840c8c6c: Fixed tiny grammar error in EntityNamePicker. The first letter of the description is now capitalized. + +- 3b3fc3cc3c: Fix `formData` not being present in the `next` version + +- b2bb48a6f4: Fix the return type for the `createNextScaffodlerFieldExtension` type as before it wasn't a component type for the extension + +- f905853ad6: Prefer using `Link` from `@backstage/core-components` rather than material-UI. + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/integration@1.4.0 + - @backstage/catalog-model@1.1.3 + - @backstage/types@1.0.1 + - @backstage/integration-react@1.1.6 + - @backstage/catalog-client@1.1.2 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-common@1.0.8 + - @backstage/plugin-permission-react@0.4.7 + - @backstage/plugin-scaffolder-common@1.2.2 + +## @backstage/plugin-scaffolder-backend@1.8.0 + +### Minor Changes + +- ea14eb62a2: Added a set of default Prometheus metrics around scaffolding. See below for a list of metrics and an explanation of their labels: + + - `scaffolder_task_count`: Tracks successful task runs. + + Labels: + + - `template`: The entity ref of the scaffolded template + - `user`: The entity ref of the user that invoked the template run + - `result`: A string describing whether the task ran successfully, failed, or was skipped + + - `scaffolder_task_duration`: a histogram which tracks the duration of a task run + + Labels: + + - `template`: The entity ref of the scaffolded template + - `result`: A boolean describing whether the task ran successfully + + - `scaffolder_step_count`: a count that tracks each step run + + Labels: + + - `template`: The entity ref of the scaffolded template + - `step`: The name of the step that was run + - `result`: A string describing whether the task ran successfully, failed, or was skipped + + - `scaffolder_step_duration`: a histogram which tracks the duration of each step run + + Labels: + + - `template`: The entity ref of the scaffolded template + - `step`: The name of the step that was run + - `result`: A string describing whether the task ran successfully, failed, or was skipped + + You can find a guide for running Prometheus metrics here: + +- 5921b5ce49: - The GitLab Project ID for the `publish:gitlab:merge-request` action is now passed through the query parameter `project` in the `repoUrl`. It still allows people to not use the `projectid` and use the `repoUrl` with the `owner` and `repo` query parameters instead. This makes it easier to publish to repositories instead of writing the full path to the project. + +- 5025d2e8b6: Adds the ability to pass (an optional) array of strings that will be applied to the newly scaffolded repository as topic labels. + +### Patch Changes + +- 7573b65232: Internal refactor of imports to avoid circular dependencies +- 969a8444ea: Updated dependency `esbuild` to `^0.15.0`. +- 9ff4ff3745: Implement "Branch protection rules" support for "publish:github" action +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/plugin-catalog-backend@1.5.1 + - @backstage/integration@1.4.0 + - @backstage/backend-tasks@0.3.7 + - @backstage/catalog-model@1.1.3 + - @backstage/plugin-auth-node@0.2.7 + - @backstage/types@1.0.1 + - @backstage/backend-plugin-api@0.1.4 + - @backstage/plugin-catalog-node@1.2.1 + - @backstage/catalog-client@1.1.2 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + - @backstage/plugin-scaffolder-common@1.2.2 + +## @backstage/plugin-sonarqube@0.5.0 + +### Minor Changes + +- 786117e98a: Fix sonarqube annotation parsing. Add content page for Sonarqube. + Removed the deprecated `plugin` export; please use `sonarQubePlugin` instead. + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/plugin-splunk-on-call@0.4.0 + +### Minor Changes + +- 34b772ef31: Use the routing key if it's available instead of team name when triggering incidents. + + BREAKING CHANGE: + Before, the team name was used even if the routing key (with or without team) was used. + Now, the routing key defined for the component will be used instead of the team name. + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/plugin-techdocs@1.4.0 + +### Minor Changes + +- 5691baea69: Add ability to configure filters when using EntityListDocsGrid + + The following example will render two sections of cards grid: + + - One section for documentations tagged as `recommended` + - One section for documentations tagged as `runbook` + + ```js + + entity?.metadata?.tags?.includes('recommended') ?? false, + }, + { + title: "RunBooks Documentation", + filterPredicate: entity => + entity?.metadata?.tags?.includes('runbook') ?? false, + } + ]}} /> + ``` + +- 63705e73d9: Hide document description if not provided + +- 847fc588a6: Updated TechDocs header to include label for source code icon and updated label to reflect Kind name + +### Patch Changes + +- 9e4d8e6198: Fix logic bug that broke techdocs-cli-embedded-app +- e92aa15f01: Bumped `canvas` dependency to the latest version, which has better Node.js v18 support. +- cbe11d1e23: Tweak README +- 7573b65232: Internal refactor of imports to avoid circular dependencies +- c1784a4980: Replaces in-code uses of `GitHub` with `Github` and deprecates old versions. +- 3a1a999b7b: Include query parameters when navigating to relative links in documents +- bd2aab4726: An analytics event matching the semantics of the `click` action is now captured when users click links within a TechDocs document. +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/integration@1.4.0 + - @backstage/catalog-model@1.1.3 + - @backstage/plugin-techdocs-react@1.0.6 + - @backstage/integration-react@1.1.6 + - @backstage/plugin-search-react@1.2.1 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + - @backstage/theme@0.2.16 + - @backstage/plugin-search-common@1.1.1 + +## @backstage/app-defaults@1.0.8 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0 + - @backstage/core-app-api@1.2.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-permission-react@0.4.7 + +## @backstage/backend-app-api@0.2.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/backend-tasks@0.3.7 + - @backstage/backend-plugin-api@0.1.4 + - @backstage/plugin-permission-node@0.7.1 + - @backstage/errors@1.1.3 + +## @backstage/backend-defaults@0.1.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-app-api@0.2.3 + - @backstage/backend-plugin-api@0.1.4 + +## @backstage/backend-plugin-api@0.1.4 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/backend-tasks@0.3.7 + - @backstage/plugin-permission-common@0.7.1 + - @backstage/config@1.0.4 + +## @backstage/backend-tasks@0.3.7 + +### Patch Changes + +- 30e43717c7: Deprecated the `HumanDuration` type, which should now instead be imported from `@backstage/types`. +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/types@1.0.1 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## @backstage/backend-test-utils@0.1.30 + +### Patch Changes + +- e13cd3feaf: Updated dependency `msw` to `^0.48.0`. +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/cli@0.21.0 + - @backstage/backend-app-api@0.2.3 + - @backstage/backend-plugin-api@0.1.4 + - @backstage/config@1.0.4 + +## @backstage/catalog-client@1.1.2 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.1.3 + - @backstage/errors@1.1.3 + +## @backstage/catalog-model@1.1.3 + +### Patch Changes + +- 7573b65232: Internal refactor of imports to avoid circular dependencies +- Updated dependencies + - @backstage/types@1.0.1 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## @backstage/codemods@0.1.41 + +### Patch Changes + +- 58502ec285: Updated dependency `jscodeshift` to `^0.14.0`. +- Updated dependencies + - @backstage/cli-common@0.1.10 + +## @backstage/config@1.0.4 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.0.1 + +## @backstage/config-loader@1.1.6 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.0.1 + - @backstage/cli-common@0.1.10 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## @backstage/create-app@0.4.34 + +### Patch Changes + +- f1c3cdfb2d: Bumped create-app version. + +- df21bbd4ad: The [Analytics API](https://backstage.io/docs/plugins/analytics) is the recommended way to track usage in Backstage; an optionally installable [Google Analytics module](https://github.com/backstage/backstage/tree/master/plugins/analytics-module-ga#installation) has superseded the old app.googleAnalyticsTrackingId config and its corresponding script tags in packages/app/public/index.html. + + For an existing installation where you want to remove the redundant app.googleAnalyticsTrackingId, you should make the following adjustment to `packages/app/public/index.html`: + + ```diff + <%= config.getString('app.title') %> + - <% if (config.has('app.googleAnalyticsTrackingId')) { %> + - + - + - <% } %> + + ``` + + Additionally, you should make the following adjustment to `app-config.yaml`: + + ```diff + app: + title: Backstage Example App + baseUrl: http://localhost:3000 + - googleAnalyticsTrackingId: # UA-000000-0 + ``` + +- 4091c73e68: Updated `@swc/core` to `v1.3.9` which fixes a `.tsx` parser bug. You may want to run `yarn backstage-cli versions:bump` to get on latest version including the CLI itself. + +- 80bfac5266: Updated the create-app command to no longer require Git to be installed and configured. A git repository will only be initialized if possible and if not already in an git repository. + +- 286d474675: The `build` script in the root `package.json` has been split into two separate scripts, `build:backend` and `build:all`. This is to more accurately reflect what is being built, to avoid confusion. + + If you want to build the project for a production deployment, you will want to use `build:backend`, as this builds both the frontend and backend package. If you are not using the `app-backend` plugin you will want to add your own `build:frontend` script, to which you can pass additional configuration parameters if needed. + + The `build:all` script is useful if you simply want to check that it is possible to build all packages in the project. This might be useful as a CI check, but is generally unnecessary. + + If you want to publish the packages in your repository you can add a `build:packages` script that calls `backstage-cli repo build`. This will skip the frontend and backend packages builds, as those are quite time consuming. + + To apply these changes to an existing project, make the following change to the root `package.json` file: + + ```diff + - "build": "backstage-cli repo build --all", + + "build:backend": "yarn workspace backend build", + + "build:all": "backstage-cli repo build --all", + ``` + + There are also a couple of places where documentation has been updated, see the [upgrade helper](https://backstage.github.io/upgrade-helper/?to=1.8.0) for a full list of changes. + +- 384eaa2307: Switched Node.js version to support version 16 & 18, rather than 14 & 16. To switch the Node.js version in your own project, apply the following change to the root `package.json`: + + ```diff + "engines": { + - "node": "14 || 16" + + "node": "16 || 18" + }, + ``` + + As well as the following change to `packages/app/package.json`: + + ```diff + - "@types/node": "^14.14.32", + + "@types/node": "^16.11.26", + ``` + +- f905853ad6: Prefer using `Link` from `@backstage/core-components` rather than material-UI. + +- 864c876e57: Fixed incorrect comments in the templated `app-config.yaml` and `app-config.production.yaml`. The `backend.listen` directive is not in fact needed to override the `backend.baseUrl`, the backend listens to all interfaces by default. The configuration has also been updated to listen to all interfaces, rather than just IPv4 ones, as this is required for Node.js v18. The production configuration now also shows the option to specify `backend.listen` as a single string. + + To apply this changes to an existing app, make the following change to `app-config.yaml`: + + ```diff + - # Uncomment the following host directive to bind to all IPv4 interfaces and + - # not just the baseUrl hostname. + - # host: 0.0.0.0 + + # Uncomment the following host directive to bind to specific interfaces + + # host: 127.0.0.1 + ``` + + And the following change to `app-config.production.yaml`: + + ```diff + - listen: + - port: 7007 + - # The following host directive binds to all IPv4 interfaces when its value + - # is "0.0.0.0". This is the most permissive setting. The right value depends + - # on your specific deployment. If you remove the host line entirely, the + - # backend will bind on the interface that corresponds to the backend.baseUrl + - # hostname. + - host: 0.0.0.0 + + # The listener can also be expressed as a single : string. In this case we bind to + + # all interfaces, the most permissive setting. The right value depends on your specific deployment. + + listen: ':7007' + ``` + +- Updated dependencies + - @backstage/cli-common@0.1.10 + +## @backstage/dev-utils@1.0.8 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-app-api@1.2.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/app-defaults@1.0.8 + - @backstage/integration-react@1.1.6 + - @backstage/test-utils@1.2.2 + - @backstage/theme@0.2.16 + +## @backstage/errors@1.1.3 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.0.1 + +## @backstage/integration-react@1.1.6 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/integration@1.4.0 + - @backstage/config@1.0.4 + - @backstage/theme@0.2.16 + +## @backstage/release-manifests@0.0.7 + +### Patch Changes + +- a4496131fa: Added a fallback that fetches manifests from `https://raw.githubusercontent.com` if `https://versions.backstage.io` is unavailable. + +## @techdocs/cli@1.2.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/plugin-techdocs-node@1.4.2 + - @backstage/catalog-model@1.1.3 + - @backstage/cli-common@0.1.10 + - @backstage/config@1.0.4 + +## @backstage/test-utils@1.2.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-app-api@1.2.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/plugin-permission-common@0.7.1 + - @backstage/types@1.0.1 + - @backstage/config@1.0.4 + - @backstage/theme@0.2.16 + - @backstage/plugin-permission-react@0.4.7 + +## @backstage/types@1.0.1 + +### Patch Changes + +- 30e43717c7: Added the `HumanDuration` type, moved here from `@backstage/backend-tasks`. This type matches the `Duration.fromObject` form of `luxon`. + +## @backstage/version-bridge@1.0.2 + +### Patch Changes + +- e70984325d: Updated the value created by `createVersionedValueMap` to give it an extra hidden property that makes it easier to inspect during debugging. + +## @backstage/plugin-adr@0.2.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/integration-react@1.1.6 + - @backstage/plugin-search-react@1.2.1 + - @backstage/theme@0.2.16 + - @backstage/plugin-adr-common@0.2.3 + - @backstage/plugin-search-common@1.1.1 + +## @backstage/plugin-adr-backend@0.2.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/integration@1.4.0 + - @backstage/catalog-model@1.1.3 + - @backstage/catalog-client@1.1.2 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + - @backstage/plugin-adr-common@0.2.3 + - @backstage/plugin-search-common@1.1.1 + +## @backstage/plugin-adr-common@0.2.3 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.4.0 + - @backstage/catalog-model@1.1.3 + - @backstage/plugin-search-common@1.1.1 + +## @backstage/plugin-airbrake@0.3.11 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/dev-utils@1.0.8 + - @backstage/test-utils@1.2.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-airbrake-backend@0.2.11 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/config@1.0.4 + +## @backstage/plugin-allure@0.1.27 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/plugin-analytics-module-ga@0.1.22 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/config@1.0.4 + - @backstage/theme@0.2.16 + +## @backstage/plugin-apache-airflow@0.2.4 + +### Patch Changes + +- 989731cabf: 1. Added a new column in the table to quickly view the latest DAG runs, plus a link to it if you want to have a deeper look. 2. Table columns are togglable 3. Set hidden columns 4. Fixed bug with turning on/off the DAGs +- Updated dependencies + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + +## @backstage/plugin-api-docs@0.8.11 + +### Patch Changes + +- 4db78c2296: Updated dependency `@asyncapi/react-component` to `1.0.0-next.44`. +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/plugin-catalog@1.6.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-apollo-explorer@0.1.4 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-app-backend@0.3.38 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/types@1.0.1 + - @backstage/backend-plugin-api@0.1.4 + - @backstage/config@1.0.4 + - @backstage/config-loader@1.1.6 + +## @backstage/plugin-auth-backend@0.17.1 + +### Patch Changes + +- 0d6837ca4e: Fix wrong GitHub callback URL documentation +- cbe11d1e23: Tweak README +- 89d705e806: Add support for custom JWT header name in GCP IAP auth. +- abaed9770e: Improve logging +- d80833fe0c: Inject optional `CatalogApi` into auth-backend `createRouter` function. This will enable developers to use customized `CatalogApi` when creating the router. +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/catalog-model@1.1.3 + - @backstage/plugin-auth-node@0.2.7 + - @backstage/types@1.0.1 + - @backstage/catalog-client@1.1.2 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## @backstage/plugin-auth-node@0.2.7 + +### Patch Changes + +- 7573b65232: Internal refactor of imports to avoid circular dependencies +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## @backstage/plugin-azure-devops@0.2.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/errors@1.1.3 + - @backstage/theme@0.2.16 + - @backstage/plugin-azure-devops-common@0.3.0 + +## @backstage/plugin-azure-devops-backend@0.3.17 + +### Patch Changes + +- 62f284e394: - Adjusted the asset parser to accept case sensitive + - Fixed fetching data that was using the deprecated function +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/config@1.0.4 + - @backstage/plugin-azure-devops-common@0.3.0 + +## @backstage/plugin-badges@0.2.35 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/errors@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/plugin-badges-backend@0.1.32 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/catalog-model@1.1.3 + - @backstage/catalog-client@1.1.2 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## @backstage/plugin-bazaar-backend@0.2.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/plugin-auth-node@0.2.7 + - @backstage/backend-test-utils@0.1.30 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## @backstage/plugin-bitbucket-cloud-common@0.2.1 + +### Patch Changes + +- d089fbe7dc: Add interfaces for Bitbucket Cloud (webhook) events. +- Updated dependencies + - @backstage/integration@1.4.0 + +## @backstage/plugin-bitrise@0.1.38 + +### Patch Changes + +- 43afded227: Updated recharts to v2.0.0 and fixed typing issues +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/plugin-catalog@1.6.1 + +### Patch Changes + +- f905853ad6: Prefer using `Link` from `@backstage/core-components` rather than material-UI. +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/types@1.0.1 + - @backstage/integration-react@1.1.6 + - @backstage/plugin-search-react@1.2.1 + - @backstage/catalog-client@1.1.2 + - @backstage/errors@1.1.3 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-common@1.0.8 + - @backstage/plugin-search-common@1.1.1 + +## @backstage/plugin-catalog-backend@1.5.1 + +### Patch Changes + +- c1a4addda3: Improve processing error logging. + + Adds `location` and `owner` to the logging meta if they are available. + +- a7607b5413: Replace usage of deprecataed `UrlReader.read` with `UrlReader.readUrl`. + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/integration@1.4.0 + - @backstage/catalog-model@1.1.3 + - @backstage/plugin-permission-common@0.7.1 + - @backstage/types@1.0.1 + - @backstage/backend-plugin-api@0.1.4 + - @backstage/plugin-catalog-node@1.2.1 + - @backstage/plugin-permission-node@0.7.1 + - @backstage/catalog-client@1.1.2 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + - @backstage/plugin-catalog-common@1.0.8 + - @backstage/plugin-scaffolder-common@1.2.2 + - @backstage/plugin-search-common@1.1.1 + +## @backstage/plugin-catalog-backend-module-aws@0.1.11 + +### Patch Changes + +- bae3617be5: `AwsS3EntityProvider`: Add option to configure schedule via `app-config.yaml` instead of in code. + + Please find how to configure the schedule at the config at + + +- defb389ecd: Add `awsS3EntityProviderCatalogModule` (new backend-plugin-api, alpha). + +- a6d779d58a: Remove explicit default visibility at `config.d.ts` files. + + ```ts + /** + * @visibility backend + */ + ``` + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/plugin-catalog-backend@1.5.1 + - @backstage/integration@1.4.0 + - @backstage/backend-tasks@0.3.7 + - @backstage/catalog-model@1.1.3 + - @backstage/types@1.0.1 + - @backstage/backend-plugin-api@0.1.4 + - @backstage/plugin-catalog-node@1.2.1 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## @backstage/plugin-catalog-backend-module-azure@0.1.9 + +### Patch Changes + +- 87ff05892d: `AzureDevOpsEntityProvider`: Add option to configure schedule via `app-config.yaml` instead of in code. + + Please find how to configure the schedule at the config at + + +- 0ca399b31b: Add `azureDevOpsEntityProviderCatalogModule` (new backend-plugin-api, alpha). + +- 4c9f7847e4: Updated dependency `msw` to `^0.48.0` while moving it to be a dev dependency. + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/plugin-catalog-backend@1.5.1 + - @backstage/integration@1.4.0 + - @backstage/backend-tasks@0.3.7 + - @backstage/catalog-model@1.1.3 + - @backstage/types@1.0.1 + - @backstage/backend-plugin-api@0.1.4 + - @backstage/plugin-catalog-node@1.2.1 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## @backstage/plugin-catalog-backend-module-bitbucket@0.2.5 + +### Patch Changes + +- 4c9f7847e4: Updated dependency `msw` to `^0.48.0` while moving it to be a dev dependency. +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/plugin-catalog-backend@1.5.1 + - @backstage/integration@1.4.0 + - @backstage/catalog-model@1.1.3 + - @backstage/types@1.0.1 + - @backstage/plugin-bitbucket-cloud-common@0.2.1 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.1.5 + +### Patch Changes + +- d089fbe7dc: Handle Bitbucket Cloud `repo:push` events at the `BitbucketCloudEntityProvider` + by subscribing to the topic `bitbucketCloud.repo:push.` + + Implements `EventSubscriber` to receive events for the topic `bitbucketCloud.repo:push`. + + On `repo:push`, the affected repository will be refreshed. + This includes adding new Location entities, refreshing existing ones, + and removing obsolete ones. + + To support this, a new annotation `bitbucket.org/repo-url` was added + to Location entities. + + A full refresh will require 1 API call to Bitbucket Cloud to discover all catalog files. + When we handle one `repo:push` event, we also need 1 API call in order to know + which catalog files exist. + This may lead to more discovery-related API calls (code search). + The main cause for hitting the rate limits are Locations refresh-related operations. + + A reduction of total API calls to reduce the rate limit issues can only be achieved in + combination with + + 1. reducing the full refresh frequency (e.g., to monthly) + 2. reducing the frequency of general Location refresh operations by the processing loop + + For (2.), it is not possible to reduce the frequency only for Bitbucket Cloud-related + Locations though. + + Further optimizations might be required to resolve the rate limit issue. + + **Installation and Migration** + + Please find more information at + , + in particular the section about "_Installation with Events Support_". + + In case of the new backend-plugin-api _(alpha)_ the module will take care of + registering itself at both. + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/plugin-catalog-backend@1.5.1 + - @backstage/integration@1.4.0 + - @backstage/backend-tasks@0.3.7 + - @backstage/catalog-model@1.1.3 + - @backstage/plugin-events-node@0.1.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.1 + - @backstage/backend-plugin-api@0.1.4 + - @backstage/plugin-catalog-node@1.2.1 + - @backstage/catalog-client@1.1.2 + - @backstage/config@1.0.4 + - @backstage/plugin-catalog-common@1.0.8 + +## @backstage/plugin-catalog-backend-module-bitbucket-server@0.1.3 + +### Patch Changes + +- 68f7f5a857: `BitbucketServerEntityProvider`: Add option to configure schedule via `app-config.yaml` instead of in code. + + Please find how to configure the schedule at the config at + + +- cd48ed8370: Add `bitbucketServerEntityProviderCatalogModule` (new backend-plugin-api, alpha). + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/plugin-catalog-backend@1.5.1 + - @backstage/integration@1.4.0 + - @backstage/backend-tasks@0.3.7 + - @backstage/catalog-model@1.1.3 + - @backstage/backend-plugin-api@0.1.4 + - @backstage/plugin-catalog-node@1.2.1 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## @backstage/plugin-catalog-backend-module-gerrit@0.1.6 + +### Patch Changes + +- 4fba50f5d4: Add `gerritEntityProviderCatalogModule` (new backend-plugin-api, alpha). + +- 4c9f7847e4: Updated dependency `msw` to `^0.48.0` while moving it to be a dev dependency. + +- 134b69f478: `GerritEntityProvider`: Add option to configure schedule via `app-config.yaml` instead of in code. + + Please find how to configure the schedule at the config at + + +- a6d779d58a: Remove explicit default visibility at `config.d.ts` files. + + ```ts + /** + * @visibility backend + */ + ``` + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/plugin-catalog-backend@1.5.1 + - @backstage/integration@1.4.0 + - @backstage/backend-tasks@0.3.7 + - @backstage/catalog-model@1.1.3 + - @backstage/backend-plugin-api@0.1.4 + - @backstage/plugin-catalog-node@1.2.1 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## @backstage/plugin-catalog-backend-module-gitlab@0.1.9 + +### Patch Changes + +- 6bb046bcbe: Add `gitlabDiscoveryEntityProviderCatalogModule` (new backend-plugin-api, alpha). + +- 81cedb5033: `GitlabDiscoveryEntityProvider`: Add option to configure schedule via `app-config.yaml` instead of in code. + + Please find how to configure the schedule at the config at + + +- 4c9f7847e4: Updated dependency `msw` to `^0.48.0` while moving it to be a dev dependency. + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/plugin-catalog-backend@1.5.1 + - @backstage/integration@1.4.0 + - @backstage/backend-tasks@0.3.7 + - @backstage/catalog-model@1.1.3 + - @backstage/types@1.0.1 + - @backstage/backend-plugin-api@0.1.4 + - @backstage/plugin-catalog-node@1.2.1 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## @backstage/plugin-catalog-backend-module-ldap@0.5.5 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.5.1 + - @backstage/backend-tasks@0.3.7 + - @backstage/catalog-model@1.1.3 + - @backstage/types@1.0.1 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## @backstage/plugin-catalog-backend-module-msgraph@0.4.4 + +### Patch Changes + +- 0e37858f22: Added cause information to logged warnings + +- 8d1a5e08ca: `MicrosoftGraphOrgEntityProvider`: Add option to configure schedule via `app-config.yaml` instead of in code. + + Please find how to configure the schedule at the config at + + +- 384f99c276: Add `microsoftGraphOrgEntityProviderCatalogModule` (new backend-plugin-api, alpha). + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.5.1 + - @backstage/backend-tasks@0.3.7 + - @backstage/catalog-model@1.1.3 + - @backstage/backend-plugin-api@0.1.4 + - @backstage/plugin-catalog-node@1.2.1 + - @backstage/config@1.0.4 + +## @backstage/plugin-catalog-backend-module-openapi@0.1.4 + +### Patch Changes + +- 4ce887400d: Added support to use the `UrlReaders` when `$ref` pointing to a URL. +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/plugin-catalog-backend@1.5.1 + - @backstage/integration@1.4.0 + - @backstage/catalog-model@1.1.3 + - @backstage/types@1.0.1 + - @backstage/plugin-catalog-node@1.2.1 + - @backstage/config@1.0.4 + +## @backstage/plugin-catalog-common@1.0.8 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.1.3 + - @backstage/plugin-permission-common@0.7.1 + - @backstage/plugin-search-common@1.1.1 + +## @backstage/plugin-catalog-graph@0.2.23 + +### Patch Changes + +- da0bf25d1a: Preserve graph options and increment `maxDepth` by 1. + + The change will preserve options used at the `CatalogGraphCard` + (displayed at the entity page) and additionally, increments the + `maxDepth` option by 1 to increase the scope slightly compared to + the graph already seen by the users. + + The default for `maxDepth` at `CatalogGraphCard` is 1. + +- 21d84ef332: feat: Enable theme overrides for components in catalog-graph plugin + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/catalog-client@1.1.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-catalog-graphql@0.3.15 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.1.3 + - @backstage/types@1.0.1 + - @backstage/config@1.0.4 + +## @backstage/plugin-catalog-import@0.9.1 + +### Patch Changes + +- 1e7b640518: Get rid of `this-is-undefined-in-esm` warning +- c1784a4980: Replaces in-code uses of `GitHub` with `Github` and deprecates old versions. +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/integration@1.4.0 + - @backstage/catalog-model@1.1.3 + - @backstage/integration-react@1.1.6 + - @backstage/catalog-client@1.1.2 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + - @backstage/plugin-catalog-common@1.0.8 + +## @backstage/plugin-catalog-node@1.2.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.1.3 + - @backstage/types@1.0.1 + - @backstage/backend-plugin-api@0.1.4 + - @backstage/catalog-client@1.1.2 + - @backstage/errors@1.1.3 + - @backstage/plugin-catalog-common@1.0.8 + +## @backstage/plugin-catalog-react@1.2.1 + +### Patch Changes + +- a889314692: Both `EntityProvider` and `AsyncEntityProvider` contexts now wrap all children with an `AnalyticsContext` containing the corresponding `entityRef`; this opens up the possibility for all events underneath these contexts to be associated with and aggregated by the corresponding entity. +- e47f466f80: Removed forced capitalization for Entity types in the catalog sidebar. +- Updated dependencies + - @backstage/core-components@0.12.0 + - @backstage/version-bridge@1.0.2 + - @backstage/core-plugin-api@1.1.0 + - @backstage/integration@1.4.0 + - @backstage/catalog-model@1.1.3 + - @backstage/plugin-permission-common@0.7.1 + - @backstage/types@1.0.1 + - @backstage/catalog-client@1.1.2 + - @backstage/errors@1.1.3 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-common@1.0.8 + - @backstage/plugin-permission-react@0.4.7 + +## @backstage/plugin-cicd-statistics@0.1.13 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + +## @backstage/plugin-cicd-statistics-module-gitlab@0.1.7 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/plugin-cicd-statistics@0.1.13 + +## @backstage/plugin-circleci@0.3.11 + +### Patch Changes + +- 383574c49b: Update screenshots in documentation to match latest CircleCI plugin +- f905853ad6: Prefer using `Link` from `@backstage/core-components` rather than material-UI. +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/plugin-cloudbuild@0.3.11 + +### Patch Changes + +- f905853ad6: Prefer using `Link` from `@backstage/core-components` rather than material-UI. +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/plugin-code-climate@0.1.11 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/plugin-code-coverage@0.2.4 + +### Patch Changes + +- fcab2579a0: Adds installation instructions +- 43afded227: Updated recharts to v2.0.0 and fixed typing issues +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/plugin-code-coverage-backend@0.2.4 + +### Patch Changes + +- fcab2579a0: Adds installation instructions +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/integration@1.4.0 + - @backstage/catalog-model@1.1.3 + - @backstage/catalog-client@1.1.2 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## @backstage/plugin-codescene@0.1.6 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/plugin-config-schema@0.1.34 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/types@1.0.1 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/plugin-dynatrace@1.0.1 + +### Patch Changes + +- cbe11d1e23: Tweak README +- f905853ad6: Prefer using `Link` from `@backstage/core-components` rather than material-UI. +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/plugin-explore@0.3.42 + +### Patch Changes + +- 5c25ce6d9e: Added a section to explore plugin README that describes the customization of explore tools content. +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/theme@0.2.16 + - @backstage/plugin-explore-react@0.0.23 + +## @backstage/plugin-explore-react@0.0.23 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.1.0 + +## @backstage/plugin-firehydrant@0.1.28 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-fossa@0.2.43 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/errors@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/plugin-gcalendar@0.3.7 + +### Patch Changes + +- 7573b65232: Internal refactor of imports to avoid circular dependencies +- f905853ad6: Prefer using `Link` from `@backstage/core-components` rather than material-UI. +- Updated dependencies + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/errors@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/plugin-gcp-projects@0.3.30 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-git-release-manager@0.3.24 + +### Patch Changes + +- 43afded227: Updated recharts to v2.0.0 and fixed typing issues +- c1784a4980: Replaces in-code uses of `GitHub` with `Github` and deprecates old versions. +- Updated dependencies + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/integration@1.4.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-github-actions@0.5.11 + +### Patch Changes + +- ed438a3ba5: Add error panel when the plugin fails. +- 0d6837ca4e: Fix wrong GitHub callback URL documentation +- c1784a4980: Replaces in-code uses of `GitHub` with `Github` and deprecates old versions. +- f905853ad6: Prefer using `Link` from `@backstage/core-components` rather than material-UI. +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/integration@1.4.0 + - @backstage/catalog-model@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/plugin-github-deployments@0.1.42 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/integration@1.4.0 + - @backstage/catalog-model@1.1.3 + - @backstage/integration-react@1.1.6 + - @backstage/errors@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/plugin-github-pull-requests-board@0.1.5 + +### Patch Changes + +- cc8bfc56c3: Add a new "Team" Filter Options to the Github Pull Requests Dashboard. + + When toggling this option on, the dashboard will displays all of the PRs opened + by the members of that team on any repositories of the organization. + +- c1784a4980: Replaces in-code uses of `GitHub` with `Github` and deprecates old versions. + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/integration@1.4.0 + - @backstage/catalog-model@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/plugin-gitops-profiles@0.3.29 + +### Patch Changes + +- f905853ad6: Prefer using `Link` from `@backstage/core-components` rather than material-UI. +- Updated dependencies + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-gocd@0.1.17 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/errors@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/plugin-graphiql@0.2.43 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-graphql-backend@0.1.28 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/config@1.0.4 + - @backstage/plugin-catalog-graphql@0.3.15 + +## @backstage/plugin-home@0.4.27 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/plugin-stack-overflow@0.1.7 + - @backstage/catalog-model@1.1.3 + - @backstage/config@1.0.4 + - @backstage/theme@0.2.16 + +## @backstage/plugin-jenkins@0.7.10 + +### Patch Changes + +- f905853ad6: Prefer using `Link` from `@backstage/core-components` rather than material-UI. +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/errors@1.1.3 + - @backstage/theme@0.2.16 + - @backstage/plugin-jenkins-common@0.1.10 + +## @backstage/plugin-jenkins-backend@0.1.28 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/catalog-model@1.1.3 + - @backstage/plugin-auth-node@0.2.7 + - @backstage/plugin-permission-common@0.7.1 + - @backstage/catalog-client@1.1.2 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + - @backstage/plugin-jenkins-common@0.1.10 + +## @backstage/plugin-jenkins-common@0.1.10 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.7.1 + - @backstage/plugin-catalog-common@1.0.8 + +## @backstage/plugin-kafka@0.3.11 + +### Patch Changes + +- f905853ad6: Prefer using `Link` from `@backstage/core-components` rather than material-UI. +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/config@1.0.4 + - @backstage/theme@0.2.16 + +## @backstage/plugin-kafka-backend@0.2.31 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/catalog-model@1.1.3 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## @backstage/plugin-kubernetes@0.7.4 + +### Patch Changes + +- cfb30b700c: Pin `@kubernetes/client-node` version to `0.17.0`. +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/plugin-kubernetes-common@0.4.4 + - @backstage/config@1.0.4 + - @backstage/theme@0.2.16 + +## @backstage/plugin-kubernetes-common@0.4.4 + +### Patch Changes + +- cfb30b700c: Pin `@kubernetes/client-node` version to `0.17.0`. + +- cbf5d11fdf: The Kubernetes errors when fetching pod metrics are now captured and returned to the frontend. + + - **BREAKING** The method `fetchPodMetricsByNamespace` in the interface `KubernetesFetcher` is changed to `fetchPodMetricsByNamespaces`. It now accepts a set of namespace strings and returns `Promise`. + - Add the `PodStatusFetchResponse` to the `FetchResponse` union type. + - Add `NOT_FOUND` to the `KubernetesErrorTypes` union type, the HTTP error with status code 404 will be mapped to this error. + +- Updated dependencies + - @backstage/catalog-model@1.1.3 + +## @backstage/plugin-lighthouse@0.3.11 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/config@1.0.4 + - @backstage/theme@0.2.16 + +## @backstage/plugin-newrelic@0.3.29 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-newrelic-dashboard@0.2.4 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/errors@1.1.3 + +## @backstage/plugin-pagerduty@0.5.4 + +### Patch Changes + +- f905853ad6: Prefer using `Link` from `@backstage/core-components` rather than material-UI. +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/errors@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/plugin-periskop@0.1.9 + +### Patch Changes + +- 7573b65232: Internal refactor of imports to avoid circular dependencies +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/errors@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/plugin-periskop-backend@0.1.9 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/config@1.0.4 + +## @backstage/plugin-permission-backend@0.5.13 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/plugin-auth-node@0.2.7 + - @backstage/plugin-permission-common@0.7.1 + - @backstage/plugin-permission-node@0.7.1 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## @backstage/plugin-permission-common@0.7.1 + +### Patch Changes + +- 7573b65232: Internal refactor of imports to avoid circular dependencies +- 64848c963c: Properly handle rules that have no parameters in `PermissionClient` +- Updated dependencies + - @backstage/types@1.0.1 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## @backstage/plugin-permission-node@0.7.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/plugin-auth-node@0.2.7 + - @backstage/plugin-permission-common@0.7.1 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## @backstage/plugin-permission-react@0.4.7 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.1.0 + - @backstage/plugin-permission-common@0.7.1 + - @backstage/config@1.0.4 + +## @backstage/plugin-playlist@0.1.2 + +### Patch Changes + +- 605f269f0d: Updated Playlist plugin docs: + + - Updated `playlist` plugin README to include note about installing backend plugin and added images for the various features + - Updated `playlist-backend` plugin README to remove `IdentityClient` import in example as it is not used and made minor change to headings + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/plugin-permission-common@0.7.1 + - @backstage/plugin-search-react@1.2.1 + - @backstage/errors@1.1.3 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-common@1.0.8 + - @backstage/plugin-permission-react@0.4.7 + - @backstage/plugin-playlist-common@0.1.2 + +## @backstage/plugin-playlist-backend@0.2.1 + +### Patch Changes + +- 605f269f0d: Updated Playlist plugin docs: + + - Updated `playlist` plugin README to include note about installing backend plugin and added images for the various features + - Updated `playlist-backend` plugin README to remove `IdentityClient` import in example as it is not used and made minor change to headings + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/catalog-model@1.1.3 + - @backstage/plugin-auth-node@0.2.7 + - @backstage/plugin-permission-common@0.7.1 + - @backstage/backend-test-utils@0.1.30 + - @backstage/plugin-permission-node@0.7.1 + - @backstage/catalog-client@1.1.2 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + - @backstage/plugin-playlist-common@0.1.2 + +## @backstage/plugin-playlist-common@0.1.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.7.1 + +## @backstage/plugin-proxy-backend@0.2.32 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/config@1.0.4 + +## @backstage/plugin-rollbar@0.4.11 + +### Patch Changes + +- f905853ad6: Prefer using `Link` from `@backstage/core-components` rather than material-UI. +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/plugin-rollbar-backend@0.1.35 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/config@1.0.4 + +## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.2.13 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/plugin-scaffolder-backend@1.8.0 + - @backstage/integration@1.4.0 + - @backstage/types@1.0.1 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## @backstage/plugin-scaffolder-backend-module-rails@0.4.6 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/plugin-scaffolder-backend@1.8.0 + - @backstage/integration@1.4.0 + - @backstage/types@1.0.1 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## @backstage/plugin-scaffolder-backend-module-yeoman@0.2.11 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.8.0 + - @backstage/types@1.0.1 + - @backstage/config@1.0.4 + +## @backstage/plugin-scaffolder-common@1.2.2 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.1.3 + - @backstage/types@1.0.1 + +## @backstage/plugin-search@1.0.4 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/version-bridge@1.0.2 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/types@1.0.1 + - @backstage/plugin-search-react@1.2.1 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + - @backstage/theme@0.2.16 + - @backstage/plugin-search-common@1.1.1 + +## @backstage/plugin-search-backend@1.1.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/plugin-auth-node@0.2.7 + - @backstage/plugin-permission-common@0.7.1 + - @backstage/types@1.0.1 + - @backstage/plugin-permission-node@0.7.1 + - @backstage/plugin-search-backend-node@1.0.4 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + - @backstage/plugin-search-common@1.1.1 + +## @backstage/plugin-search-backend-module-elasticsearch@1.0.4 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-node@1.0.4 + - @backstage/config@1.0.4 + - @backstage/plugin-search-common@1.1.1 + +## @backstage/plugin-search-backend-module-pg@0.4.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/plugin-search-backend-node@1.0.4 + - @backstage/config@1.0.4 + - @backstage/plugin-search-common@1.1.1 + +## @backstage/plugin-search-backend-node@1.0.4 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/backend-tasks@0.3.7 + - @backstage/plugin-permission-common@0.7.1 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + - @backstage/plugin-search-common@1.1.1 + +## @backstage/plugin-search-common@1.1.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.7.1 + - @backstage/types@1.0.1 + +## @backstage/plugin-search-react@1.2.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0 + - @backstage/version-bridge@1.0.2 + - @backstage/core-plugin-api@1.1.0 + - @backstage/types@1.0.1 + - @backstage/theme@0.2.16 + - @backstage/plugin-search-common@1.1.1 + +## @backstage/plugin-sentry@0.4.4 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/plugin-shortcuts@0.3.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/types@1.0.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-sonarqube-backend@0.1.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## @backstage/plugin-stack-overflow@0.1.7 + +### Patch Changes + +- e32d5643e3: `StackOverflowSearchResultListItem` now accept optional rank property to be able to capture rank analytics data. +- Updated dependencies + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/plugin-home@0.4.27 + - @backstage/config@1.0.4 + - @backstage/theme@0.2.16 + - @backstage/plugin-search-common@1.1.1 + +## @backstage/plugin-stack-overflow-backend@0.1.7 + +### Patch Changes + +- cbe11d1e23: Tweak README + +- a6d779d58a: Remove explicit default visibility at `config.d.ts` files. + + ```ts + /** + * @visibility backend + */ + ``` + +- Updated dependencies + - @backstage/cli@0.21.0 + - @backstage/config@1.0.4 + - @backstage/plugin-search-common@1.1.1 + +## @backstage/plugin-tech-insights@0.3.3 + +### Patch Changes + +- 7095e8bc03: Fixed bug when sending data by Post in `runChecks` and `runBulkChecks` functions of the `TechInsightsClient` class, the default `Content-Type` used was `plain/text` +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/types@1.0.1 + - @backstage/errors@1.1.3 + - @backstage/theme@0.2.16 + - @backstage/plugin-tech-insights-common@0.2.8 + +## @backstage/plugin-tech-insights-backend@0.5.4 + +### Patch Changes + +- f12e9e5b8c: Add Documentation on 404 Errors +- 06cf8f1cf2: Add a default delay to the fact retrievers to prevent cold-start errors +- 30e43717c7: Use `HumanDuration` from `@backstage/types` +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/backend-tasks@0.3.7 + - @backstage/catalog-model@1.1.3 + - @backstage/types@1.0.1 + - @backstage/plugin-tech-insights-node@0.3.6 + - @backstage/catalog-client@1.1.2 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + - @backstage/plugin-tech-insights-common@0.2.8 + +## @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.22 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/plugin-tech-insights-node@0.3.6 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + - @backstage/plugin-tech-insights-common@0.2.8 + +## @backstage/plugin-tech-insights-common@0.2.8 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.0.1 + +## @backstage/plugin-tech-insights-node@0.3.6 + +### Patch Changes + +- 06cf8f1cf2: Add a default delay to the fact retrievers to prevent cold-start errors +- 30e43717c7: Use `HumanDuration` from `@backstage/types` +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/backend-tasks@0.3.7 + - @backstage/types@1.0.1 + - @backstage/config@1.0.4 + - @backstage/plugin-tech-insights-common@0.2.8 + +## @backstage/plugin-tech-radar@0.5.18 + +### Patch Changes + +- 1f888af5f6: Fixed bug in Tech Radar where, on hover, the tech list quadrant would rerender and scroll top +- Updated dependencies + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-techdocs-addons-test-utils@1.0.6 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-techdocs@1.4.0 + - @backstage/core-components@0.12.0 + - @backstage/core-app-api@1.2.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/plugin-techdocs-react@1.0.6 + - @backstage/plugin-catalog@1.6.1 + - @backstage/integration-react@1.1.6 + - @backstage/plugin-search-react@1.2.1 + - @backstage/test-utils@1.2.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-techdocs-backend@1.4.1 + +### Patch Changes + +- a7607b5413: Replace usage of deprecataed `UrlReader.read` with `UrlReader.readUrl`. + +- a6d779d58a: Remove explicit default visibility at `config.d.ts` files. + + ```ts + /** + * @visibility backend + */ + ``` + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/plugin-techdocs-node@1.4.2 + - @backstage/integration@1.4.0 + - @backstage/catalog-model@1.1.3 + - @backstage/plugin-permission-common@0.7.1 + - @backstage/catalog-client@1.1.2 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + - @backstage/plugin-catalog-common@1.0.8 + - @backstage/plugin-search-common@1.1.1 + +## @backstage/plugin-techdocs-module-addons-contrib@1.0.6 + +### Patch Changes + +- c1784a4980: Replaces in-code uses of `GitHub` with `Github` and deprecates old versions. +- Updated dependencies + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/integration@1.4.0 + - @backstage/plugin-techdocs-react@1.0.6 + - @backstage/integration-react@1.1.6 + - @backstage/theme@0.2.16 + +## @backstage/plugin-techdocs-node@1.4.2 + +### Patch Changes + +- a7607b5413: Replace usage of deprecataed `UrlReader.read` with `UrlReader.readUrl`. +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/integration@1.4.0 + - @backstage/catalog-model@1.1.3 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + - @backstage/plugin-search-common@1.1.1 + +## @backstage/plugin-techdocs-react@1.0.6 + +### Patch Changes + +- 7d1352d459: Analytics events captured within the `` now include the conventional `entityRef` context value, associating those events with their corresponding entity. +- Updated dependencies + - @backstage/core-components@0.12.0 + - @backstage/version-bridge@1.0.2 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/config@1.0.4 + +## @backstage/plugin-todo@0.2.13 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/errors@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/plugin-todo-backend@0.1.35 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/integration@1.4.0 + - @backstage/catalog-model@1.1.3 + - @backstage/catalog-client@1.1.2 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## @backstage/plugin-user-settings@0.5.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0 + - @backstage/core-app-api@1.2.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/types@1.0.1 + - @backstage/errors@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/plugin-user-settings-backend@0.1.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/catalog-model@1.1.3 + - @backstage/plugin-auth-node@0.2.7 + - @backstage/types@1.0.1 + - @backstage/errors@1.1.3 + +## @backstage/plugin-vault@0.1.5 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/errors@1.1.3 + - @backstage/theme@0.2.16 + +## @backstage/plugin-vault-backend@0.2.4 + +### Patch Changes + +- 687237da4c: Added `errorHandler()` middleware to `router` to prevent crashes caused by fatal errors in plugin backend +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/backend-tasks@0.3.7 + - @backstage/backend-test-utils@0.1.30 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## @backstage/plugin-xcmetrics@0.2.31 + +### Patch Changes + +- 7573b65232: Internal refactor of imports to avoid circular dependencies +- 43afded227: Updated recharts to v2.0.0 and fixed typing issues +- dcf9e728de: Removed an unused and hidden build details route. +- Updated dependencies + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/errors@1.1.3 + - @backstage/theme@0.2.16 + +## example-app@0.2.77 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder@1.8.0 + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/plugin-techdocs@1.4.0 + - @backstage/core-components@0.12.0 + - @backstage/plugin-cost-insights@0.12.0 + - @backstage/plugin-apache-airflow@0.2.4 + - @backstage/core-app-api@1.2.0 + - @backstage/plugin-explore@0.3.42 + - @backstage/plugin-tech-insights@0.3.3 + - @backstage/plugin-github-actions@0.5.11 + - @backstage/cli@0.21.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/plugin-dynatrace@1.0.1 + - @backstage/plugin-catalog-import@0.9.1 + - @backstage/plugin-catalog-graph@0.2.23 + - @backstage/plugin-tech-radar@0.5.18 + - @backstage/plugin-playlist@0.1.2 + - @backstage/plugin-stack-overflow@0.1.7 + - @backstage/catalog-model@1.1.3 + - @backstage/plugin-gcalendar@0.3.7 + - @backstage/plugin-code-coverage@0.2.4 + - @backstage/plugin-org@0.6.0 + - @backstage/plugin-api-docs@0.8.11 + - @backstage/plugin-kubernetes@0.7.4 + - @backstage/plugin-techdocs-module-addons-contrib@1.0.6 + - @backstage/plugin-circleci@0.3.11 + - @backstage/plugin-azure-sites@0.1.0 + - @backstage/plugin-techdocs-react@1.0.6 + - @backstage/plugin-cloudbuild@0.3.11 + - @backstage/plugin-jenkins@0.7.10 + - @backstage/plugin-kafka@0.3.11 + - @backstage/plugin-pagerduty@0.5.4 + - @backstage/plugin-rollbar@0.4.11 + - @backstage/plugin-airbrake@0.3.11 + - @backstage/plugin-azure-devops@0.2.2 + - @backstage/plugin-badges@0.2.35 + - @internal/plugin-catalog-customized@0.0.4 + - @backstage/plugin-gocd@0.1.17 + - @backstage/plugin-home@0.4.27 + - @backstage/plugin-lighthouse@0.3.11 + - @backstage/plugin-newrelic-dashboard@0.2.4 + - @backstage/plugin-search@1.0.4 + - @backstage/plugin-sentry@0.4.4 + - @backstage/plugin-todo@0.2.13 + - @backstage/app-defaults@1.0.8 + - @backstage/integration-react@1.1.6 + - @backstage/plugin-gcp-projects@0.3.30 + - @backstage/plugin-graphiql@0.2.43 + - @backstage/plugin-newrelic@0.3.29 + - @backstage/plugin-search-react@1.2.1 + - @backstage/plugin-shortcuts@0.3.3 + - @backstage/plugin-user-settings@0.5.1 + - @backstage/config@1.0.4 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-common@1.0.8 + - @backstage/plugin-permission-react@0.4.7 + - @backstage/plugin-search-common@1.1.1 + +## example-backend@0.2.77 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/plugin-auth-backend@0.17.1 + - @backstage/plugin-catalog-backend@1.5.1 + - @backstage/plugin-techdocs-backend@1.4.1 + - @backstage/plugin-scaffolder-backend@1.8.0 + - @backstage/integration@1.4.0 + - @backstage/backend-tasks@0.3.7 + - @backstage/plugin-playlist-backend@0.2.1 + - @backstage/plugin-azure-devops-backend@0.3.17 + - @backstage/catalog-model@1.1.3 + - @backstage/plugin-auth-node@0.2.7 + - @backstage/plugin-permission-common@0.7.1 + - @backstage/plugin-code-coverage-backend@0.2.4 + - @backstage/plugin-events-backend@0.1.0 + - @backstage/plugin-events-node@0.1.0 + - @backstage/plugin-kubernetes-backend@0.8.0 + - @backstage/plugin-tech-insights-backend@0.5.4 + - @backstage/plugin-tech-insights-node@0.3.6 + - @backstage/plugin-azure-sites-backend@0.1.0 + - example-app@0.2.77 + - @backstage/plugin-app-backend@0.3.38 + - @backstage/plugin-badges-backend@0.1.32 + - @backstage/plugin-catalog-node@1.2.1 + - @backstage/plugin-graphql-backend@0.1.28 + - @backstage/plugin-jenkins-backend@0.1.28 + - @backstage/plugin-kafka-backend@0.2.31 + - @backstage/plugin-permission-backend@0.5.13 + - @backstage/plugin-permission-node@0.7.1 + - @backstage/plugin-proxy-backend@0.2.32 + - @backstage/plugin-rollbar-backend@0.1.35 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.6 + - @backstage/plugin-search-backend@1.1.1 + - @backstage/plugin-search-backend-module-elasticsearch@1.0.4 + - @backstage/plugin-search-backend-module-pg@0.4.2 + - @backstage/plugin-search-backend-node@1.0.4 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.22 + - @backstage/plugin-todo-backend@0.1.35 + - @backstage/catalog-client@1.1.2 + - @backstage/config@1.0.4 + - @backstage/plugin-search-common@1.1.1 + +## example-backend-next@0.0.5 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.5.1 + - @backstage/plugin-scaffolder-backend@1.8.0 + - @backstage/plugin-app-backend@0.3.38 + - @backstage/backend-defaults@0.1.3 + +## techdocs-cli-embedded-app@0.2.76 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-techdocs@1.4.0 + - @backstage/core-components@0.12.0 + - @backstage/core-app-api@1.2.0 + - @backstage/cli@0.21.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/plugin-techdocs-react@1.0.6 + - @backstage/plugin-catalog@1.6.1 + - @backstage/app-defaults@1.0.8 + - @backstage/integration-react@1.1.6 + - @backstage/test-utils@1.2.2 + - @backstage/config@1.0.4 + - @backstage/theme@0.2.16 + +## @internal/plugin-catalog-customized@0.0.4 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/plugin-catalog@1.6.1 + +## @internal/plugin-todo-list@1.0.7 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/theme@0.2.16 + +## @internal/plugin-todo-list-backend@1.0.7 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/plugin-auth-node@0.2.7 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## @internal/plugin-todo-list-common@1.0.6 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.7.1 diff --git a/docs/releases/v1.8.0-next.1-changelog.md b/docs/releases/v1.8.0-next.1-changelog.md new file mode 100644 index 0000000000..1f65dfdc9c --- /dev/null +++ b/docs/releases/v1.8.0-next.1-changelog.md @@ -0,0 +1,106 @@ +# Release v1.8.0-next.1 + +## @backstage/plugin-scaffolder-backend@1.8.0-next.1 + +### Minor Changes + +- 5921b5ce49: - The GitLab Project ID for the `publish:gitlab:merge-request` action is now passed through the query parameter `project` in the `repoUrl`. It still allows people to not use the `projectid` and use the `repoUrl` with the `owner` and `repo` query parameters instead. This makes it easier to publish to repositories instead of writing the full path to the project. + +## @backstage/create-app@0.4.33-next.1 + +### Patch Changes + +- Bumped create-app version. + +## @backstage/plugin-azure-devops-backend@0.3.17-next.1 + +### Patch Changes + +- 62f284e394: - Adjusted the asset parser to accept case sensitive + - Fixed fetching data that was using the deprecated function + +## @backstage/plugin-playlist@0.1.2-next.1 + +### Patch Changes + +- 605f269f0d: Updated Playlist plugin docs: + + - Updated `playlist` plugin README to include note about installing backend plugin and added images for the various features + - Updated `playlist-backend` plugin README to remove `IdentityClient` import in example as it is not used and made minor change to headings + +## @backstage/plugin-playlist-backend@0.2.1-next.1 + +### Patch Changes + +- 605f269f0d: Updated Playlist plugin docs: + + - Updated `playlist` plugin README to include note about installing backend plugin and added images for the various features + - Updated `playlist-backend` plugin README to remove `IdentityClient` import in example as it is not used and made minor change to headings + +## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.2.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.8.0-next.1 + +## @backstage/plugin-scaffolder-backend-module-rails@0.4.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.8.0-next.1 + +## @backstage/plugin-scaffolder-backend-module-yeoman@0.2.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.8.0-next.1 + +## @backstage/plugin-techdocs@1.4.0-next.1 + +### Patch Changes + +- 9e4d8e6198: Fix logic bug that broke techdocs-cli-embedded-app + +## @backstage/plugin-techdocs-addons-test-utils@1.0.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-techdocs@1.4.0-next.1 + +## example-app@0.2.77-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-techdocs@1.4.0-next.1 + - @backstage/plugin-playlist@0.1.2-next.1 + - @backstage/plugin-techdocs-module-addons-contrib@1.0.6-next.0 + +## example-backend@0.2.77-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.8.0-next.1 + - @backstage/plugin-playlist-backend@0.2.1-next.1 + - @backstage/plugin-azure-devops-backend@0.3.17-next.1 + - example-app@0.2.77-next.1 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.6-next.1 + +## example-backend-next@0.0.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.8.0-next.1 + +## techdocs-cli-embedded-app@0.2.76-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-techdocs@1.4.0-next.1 diff --git a/docs/releases/v1.8.0-next.2-changelog.md b/docs/releases/v1.8.0-next.2-changelog.md new file mode 100644 index 0000000000..d6c55998f6 --- /dev/null +++ b/docs/releases/v1.8.0-next.2-changelog.md @@ -0,0 +1,1903 @@ +# Release v1.8.0-next.2 + +## @backstage/cli@0.21.0-next.1 + +### Minor Changes + +- 384eaa2307: Switched `tsconfig.json` to target and support `ES2021`, in line with the bump to Node.js 16 & 18. + +### Patch Changes + +- 88f99b8b13: Bumped `tar` dependency to `^6.1.12` in order to ensure Node.js v18 compatibility. +- 969a8444ea: Updated dependency `esbuild` to `^0.15.0`. +- Updated dependencies + - @backstage/release-manifests@0.0.7-next.0 + - @backstage/cli-common@0.1.10 + - @backstage/config@1.0.4-next.0 + - @backstage/config-loader@1.1.6-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/types@1.0.1-next.0 + +## @backstage/plugin-org@0.6.0-next.1 + +### Minor Changes + +- 0b11500151: Updates the User and Group Profile cards to add the links from the UserEntity or the GroupEntity + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-org-react@0.1.0-next.0 + +### Minor Changes + +- e96274f1fe: Implemented the org-react plugin, with it's first component being: a `GroupListPicker` component that will give the user the ability to choose a group + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-client@1.1.2-next.0 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-scaffolder-backend@1.8.0-next.2 + +### Minor Changes + +- 5025d2e8b6: Adds the ability to pass (an optional) array of strings that will be applied to the newly scaffolded repository as topic labels. + +### Patch Changes + +- 969a8444ea: Updated dependency `esbuild` to `^0.15.0`. +- 9ff4ff3745: Implement "Branch protection rules" support for "publish:github" action +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/backend-plugin-api@0.1.4-next.1 + - @backstage/backend-tasks@0.3.7-next.1 + - @backstage/plugin-auth-node@0.2.7-next.1 + - @backstage/plugin-catalog-backend@1.5.1-next.1 + - @backstage/plugin-catalog-node@1.2.1-next.1 + - @backstage/catalog-client@1.1.2-next.0 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/types@1.0.1-next.0 + - @backstage/plugin-scaffolder-common@1.2.2-next.0 + +## @backstage/plugin-splunk-on-call@0.4.0-next.1 + +### Minor Changes + +- 34b772ef31: Use the routing key if it's available instead of team name when triggering incidents. + + BREAKING CHANGE: + Before, the team name was used even if the routing key (with or without team) was used. + Now, the routing key defined for the component will be used instead of the team name. + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/app-defaults@1.0.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/core-app-api@1.2.0-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-permission-react@0.4.7-next.0 + +## @backstage/backend-app-api@0.2.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/backend-plugin-api@0.1.4-next.1 + - @backstage/backend-tasks@0.3.7-next.1 + - @backstage/plugin-permission-node@0.7.1-next.1 + - @backstage/errors@1.1.3-next.0 + +## @backstage/backend-common@0.16.0-next.1 + +### Patch Changes + +- 88f99b8b13: Bumped `tar` dependency to `^6.1.12` in order to ensure Node.js v18 compatibility. +- cfb30b700c: Pin `@kubernetes/client-node` version to `0.17.0`. +- Updated dependencies + - @backstage/cli-common@0.1.10 + - @backstage/config@1.0.4-next.0 + - @backstage/config-loader@1.1.6-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/types@1.0.1-next.0 + +## @backstage/backend-defaults@0.1.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-app-api@0.2.3-next.1 + - @backstage/backend-plugin-api@0.1.4-next.1 + +## @backstage/backend-plugin-api@0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/backend-tasks@0.3.7-next.1 + - @backstage/config@1.0.4-next.0 + - @backstage/plugin-permission-common@0.7.1-next.0 + +## @backstage/backend-tasks@0.3.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/types@1.0.1-next.0 + +## @backstage/backend-test-utils@0.1.30-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/cli@0.21.0-next.1 + - @backstage/backend-app-api@0.2.3-next.1 + - @backstage/backend-plugin-api@0.1.4-next.1 + - @backstage/config@1.0.4-next.0 + +## @backstage/codemods@0.1.41-next.0 + +### Patch Changes + +- 58502ec285: Updated dependency `jscodeshift` to `^0.14.0`. +- Updated dependencies + - @backstage/cli-common@0.1.10 + +## @backstage/core-components@0.12.0-next.1 + +### Patch Changes + +- b4fb5c8ecc: MissingAnnotationEmptyState now accepts either a string or an array of strings to support multiple missing annotations. +- Updated dependencies + - @backstage/config@1.0.4-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/theme@0.2.16 + - @backstage/version-bridge@1.0.1 + +## @backstage/create-app@0.4.34-next.2 + +### Patch Changes + +- 384eaa2307: Switched Node.js version to support version 16 & 18, rather than 14 & 16. To switch the Node.js version in your own project, apply the following change to the root `package.json`: + + ```diff + "engines": { + - "node": "14 || 16" + + "node": "16 || 18" + }, + ``` + + As well as the following change to `packages/app/package.json`: + + ```diff + - "@types/node": "^14.14.32", + + "@types/node": "^16.11.26", + ``` + +- 864c876e57: Fixed incorrect comments in the templated `app-config.yaml` and `app-config.production.yaml`. The `backend.listen` directive is not in fact needed to override the `backend.baseUrl`, the backend listens to all interfaces by default. The configuration has also been updated to listen to all interfaces, rather than just IPv4 ones, as this is required for Node.js v18. The production configuration now also shows the option to specify `backend.listen` as a single string. + + To apply this changes to an existing app, make the following change to `app-config.yaml`: + + ```diff + - # Uncomment the following host directive to bind to all IPv4 interfaces and + - # not just the baseUrl hostname. + - # host: 0.0.0.0 + + # Uncomment the following host directive to bind to specific interfaces + + # host: 127.0.0.1 + ``` + + And the following change to `app-config.production.yaml`: + + ```diff + - listen: + - port: 7007 + - # The following host directive binds to all IPv4 interfaces when its value + - # is "0.0.0.0". This is the most permissive setting. The right value depends + - # on your specific deployment. If you remove the host line entirely, the + - # backend will bind on the interface that corresponds to the backend.baseUrl + - # hostname. + - host: 0.0.0.0 + + # The listener can also be expressed as a single : string. In this case we bind to + + # all interfaces, the most permissive setting. The right value depends on your specific deployment. + + listen: ':7007' + ``` + +- Updated dependencies + - @backstage/cli-common@0.1.10 + +## @backstage/dev-utils@1.0.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/app-defaults@1.0.8-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-app-api@1.2.0-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/integration-react@1.1.6-next.1 + - @backstage/test-utils@1.2.2-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/integration-react@1.1.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/config@1.0.4-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/theme@0.2.16 + +## @backstage/release-manifests@0.0.7-next.0 + +### Patch Changes + +- a4496131fa: Added a fallback that fetches manifests from `https://raw.githubusercontent.com` if `https://versions.backstage.io` is unavailable. + +## @techdocs/cli@1.2.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/plugin-techdocs-node@1.4.2-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/cli-common@0.1.10 + - @backstage/config@1.0.4-next.0 + +## @backstage/plugin-adr@0.2.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/integration-react@1.1.6-next.1 + - @backstage/theme@0.2.16 + - @backstage/plugin-adr-common@0.2.3-next.0 + - @backstage/plugin-catalog-react@1.2.1-next.1 + - @backstage/plugin-search-common@1.1.1-next.0 + - @backstage/plugin-search-react@1.2.1-next.1 + +## @backstage/plugin-adr-backend@0.2.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/catalog-client@1.1.2-next.0 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/plugin-adr-common@0.2.3-next.0 + - @backstage/plugin-search-common@1.1.1-next.0 + +## @backstage/plugin-airbrake@0.3.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/dev-utils@1.0.8-next.1 + - @backstage/test-utils@1.2.2-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-airbrake-backend@0.2.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/config@1.0.4-next.0 + +## @backstage/plugin-allure@0.1.27-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-analytics-module-ga@0.1.22-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/config@1.0.4-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-apache-airflow@0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/core-plugin-api@1.1.0-next.0 + +## @backstage/plugin-api-docs@0.8.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog@1.6.1-next.1 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-apollo-explorer@0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-app-backend@0.3.38-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/backend-plugin-api@0.1.4-next.1 + - @backstage/config@1.0.4-next.0 + - @backstage/config-loader@1.1.6-next.0 + - @backstage/types@1.0.1-next.0 + +## @backstage/plugin-auth-backend@0.17.1-next.1 + +### Patch Changes + +- 0d6837ca4e: Fix wrong GitHub callback URL documentation +- abaed9770e: Improve logging +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/plugin-auth-node@0.2.7-next.1 + - @backstage/catalog-client@1.1.2-next.0 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/types@1.0.1-next.0 + +## @backstage/plugin-auth-node@0.2.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + +## @backstage/plugin-azure-devops@0.2.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-azure-devops-common@0.3.0 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-azure-devops-backend@0.3.17-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/config@1.0.4-next.0 + - @backstage/plugin-azure-devops-common@0.3.0 + +## @backstage/plugin-azure-sites@0.1.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-azure-sites-common@0.1.0-next.0 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-azure-sites-backend@0.1.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/config@1.0.4-next.0 + - @backstage/plugin-azure-sites-common@0.1.0-next.0 + +## @backstage/plugin-badges@0.2.35-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-badges-backend@0.1.32-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/catalog-client@1.1.2-next.0 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + +## @backstage/plugin-bazaar@0.2.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.21.0-next.1 + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-client@1.1.2-next.0 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/plugin-catalog@1.6.1-next.1 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-bazaar-backend@0.2.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/backend-test-utils@0.1.30-next.1 + - @backstage/plugin-auth-node@0.2.7-next.1 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + +## @backstage/plugin-bitrise@0.1.38-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-catalog@1.6.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-client@1.1.2-next.0 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/integration-react@1.1.6-next.1 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.1-next.0 + - @backstage/plugin-catalog-common@1.0.8-next.0 + - @backstage/plugin-catalog-react@1.2.1-next.1 + - @backstage/plugin-search-common@1.1.1-next.0 + - @backstage/plugin-search-react@1.2.1-next.1 + +## @backstage/plugin-catalog-backend@1.5.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/backend-plugin-api@0.1.4-next.1 + - @backstage/plugin-catalog-node@1.2.1-next.1 + - @backstage/plugin-permission-node@0.7.1-next.1 + - @backstage/catalog-client@1.1.2-next.0 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/types@1.0.1-next.0 + - @backstage/plugin-catalog-common@1.0.8-next.0 + - @backstage/plugin-permission-common@0.7.1-next.0 + - @backstage/plugin-scaffolder-common@1.2.2-next.0 + - @backstage/plugin-search-common@1.1.1-next.0 + +## @backstage/plugin-catalog-backend-module-aws@0.1.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/backend-plugin-api@0.1.4-next.1 + - @backstage/backend-tasks@0.3.7-next.1 + - @backstage/plugin-catalog-backend@1.5.1-next.1 + - @backstage/plugin-catalog-node@1.2.1-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/types@1.0.1-next.0 + +## @backstage/plugin-catalog-backend-module-azure@0.1.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/backend-plugin-api@0.1.4-next.1 + - @backstage/backend-tasks@0.3.7-next.1 + - @backstage/plugin-catalog-backend@1.5.1-next.1 + - @backstage/plugin-catalog-node@1.2.1-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/types@1.0.1-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket@0.2.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/plugin-catalog-backend@1.5.1-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/types@1.0.1-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.1-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.1.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.1.4-next.1 + - @backstage/backend-tasks@0.3.7-next.1 + - @backstage/plugin-catalog-backend@1.5.1-next.1 + - @backstage/plugin-catalog-node@1.2.1-next.1 + - @backstage/config@1.0.4-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.1-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket-server@0.1.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/backend-plugin-api@0.1.4-next.1 + - @backstage/backend-tasks@0.3.7-next.1 + - @backstage/plugin-catalog-backend@1.5.1-next.1 + - @backstage/plugin-catalog-node@1.2.1-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/integration@1.4.0-next.0 + +## @backstage/plugin-catalog-backend-module-gerrit@0.1.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/backend-plugin-api@0.1.4-next.1 + - @backstage/backend-tasks@0.3.7-next.1 + - @backstage/plugin-catalog-backend@1.5.1-next.1 + - @backstage/plugin-catalog-node@1.2.1-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/integration@1.4.0-next.0 + +## @backstage/plugin-catalog-backend-module-github@0.2.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/backend-plugin-api@0.1.4-next.1 + - @backstage/backend-tasks@0.3.7-next.1 + - @backstage/plugin-catalog-backend@1.5.1-next.1 + - @backstage/plugin-catalog-node@1.2.1-next.1 + - @backstage/catalog-client@1.1.2-next.0 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/types@1.0.1-next.0 + +## @backstage/plugin-catalog-backend-module-gitlab@0.1.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/backend-plugin-api@0.1.4-next.1 + - @backstage/backend-tasks@0.3.7-next.1 + - @backstage/plugin-catalog-backend@1.5.1-next.1 + - @backstage/plugin-catalog-node@1.2.1-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/types@1.0.1-next.0 + +## @backstage/plugin-catalog-backend-module-ldap@0.5.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.3.7-next.1 + - @backstage/plugin-catalog-backend@1.5.1-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/types@1.0.1-next.0 + +## @backstage/plugin-catalog-backend-module-msgraph@0.4.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.1.4-next.1 + - @backstage/backend-tasks@0.3.7-next.1 + - @backstage/plugin-catalog-backend@1.5.1-next.1 + - @backstage/plugin-catalog-node@1.2.1-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + +## @backstage/plugin-catalog-backend-module-openapi@0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/plugin-catalog-backend@1.5.1-next.1 + - @backstage/plugin-catalog-node@1.2.1-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/types@1.0.1-next.0 + +## @backstage/plugin-catalog-graph@0.2.23-next.1 + +### Patch Changes + +- da0bf25d1a: Preserve graph options and increment `maxDepth` by 1. + + The change will preserve options used at the `CatalogGraphCard` + (displayed at the entity page) and additionally, increments the + `maxDepth` option by 1 to increase the scope slightly compared to + the graph already seen by the users. + + The default for `maxDepth` at `CatalogGraphCard` is 1. + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-client@1.1.2-next.0 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-catalog-import@0.9.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-client@1.1.2-next.0 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/integration-react@1.1.6-next.1 + - @backstage/plugin-catalog-common@1.0.8-next.0 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-catalog-node@1.2.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.1.4-next.1 + - @backstage/catalog-client@1.1.2-next.0 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/types@1.0.1-next.0 + - @backstage/plugin-catalog-common@1.0.8-next.0 + +## @backstage/plugin-catalog-react@1.2.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-client@1.1.2-next.0 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.1-next.0 + - @backstage/version-bridge@1.0.1 + - @backstage/plugin-catalog-common@1.0.8-next.0 + - @backstage/plugin-permission-common@0.7.1-next.0 + - @backstage/plugin-permission-react@0.4.7-next.0 + +## @backstage/plugin-cicd-statistics@0.1.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-cicd-statistics-module-gitlab@0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/plugin-cicd-statistics@0.1.13-next.1 + +## @backstage/plugin-circleci@0.3.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-cloudbuild@0.3.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-code-climate@0.1.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-code-coverage@0.2.4-next.1 + +### Patch Changes + +- fcab2579a0: Adds installation instructions +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-code-coverage-backend@0.2.4-next.1 + +### Patch Changes + +- fcab2579a0: Adds installation instructions +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/catalog-client@1.1.2-next.0 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/integration@1.4.0-next.0 + +## @backstage/plugin-codescene@0.1.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/config@1.0.4-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-config-schema@0.1.34-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/config@1.0.4-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.1-next.0 + +## @backstage/plugin-cost-insights@0.12.0-next.1 + +### Patch Changes + +- e92aa15f01: Bumped `canvas` dependency to the latest version, which has better Node.js v18 support. +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-cost-insights-common@0.1.1 + +## @backstage/plugin-dynatrace@1.0.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-explore@0.3.42-next.1 + +### Patch Changes + +- 5c25ce6d9e: Added a section to explore plugin README that describes the customization of explore tools content. +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + - @backstage/plugin-explore-react@0.0.23-next.0 + +## @backstage/plugin-firehydrant@0.1.28-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-fossa@0.2.43-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-gcalendar@0.3.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-gcp-projects@0.3.30-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-git-release-manager@0.3.24-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-github-actions@0.5.11-next.1 + +### Patch Changes + +- ed438a3ba5: Add error panel when the plugin fails. +- 0d6837ca4e: Fix wrong GitHub callback URL documentation +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-github-deployments@0.1.42-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/integration-react@1.1.6-next.1 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-github-issues@0.2.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-github-pull-requests-board@0.1.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-gitops-profiles@0.3.29-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-gocd@0.1.17-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-graphiql@0.2.43-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-graphql-backend@0.1.28-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/config@1.0.4-next.0 + - @backstage/plugin-catalog-graphql@0.3.15-next.0 + +## @backstage/plugin-home@0.4.27-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + - @backstage/plugin-stack-overflow@0.1.7-next.1 + +## @backstage/plugin-ilert@0.2.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-jenkins@0.7.10-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + - @backstage/plugin-jenkins-common@0.1.10-next.0 + +## @backstage/plugin-jenkins-backend@0.1.28-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/plugin-auth-node@0.2.7-next.1 + - @backstage/catalog-client@1.1.2-next.0 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/plugin-jenkins-common@0.1.10-next.0 + - @backstage/plugin-permission-common@0.7.1-next.0 + +## @backstage/plugin-kafka@0.3.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-kafka-backend@0.2.31-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + +## @backstage/plugin-kubernetes@0.7.4-next.1 + +### Patch Changes + +- cfb30b700c: Pin `@kubernetes/client-node` version to `0.17.0`. +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/plugin-kubernetes-common@0.4.4-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-kubernetes-backend@0.8.0-next.1 + +### Patch Changes + +- cfb30b700c: Pin `@kubernetes/client-node` version to `0.17.0`. +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/plugin-kubernetes-common@0.4.4-next.1 + - @backstage/plugin-auth-node@0.2.7-next.1 + - @backstage/catalog-client@1.1.2-next.0 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + +## @backstage/plugin-kubernetes-common@0.4.4-next.1 + +### Patch Changes + +- cfb30b700c: Pin `@kubernetes/client-node` version to `0.17.0`. +- Updated dependencies + - @backstage/catalog-model@1.1.3-next.0 + +## @backstage/plugin-lighthouse@0.3.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-newrelic@0.3.29-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-newrelic-dashboard@0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-pagerduty@0.5.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-periskop@0.1.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-periskop-backend@0.1.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/config@1.0.4-next.0 + +## @backstage/plugin-permission-backend@0.5.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/plugin-auth-node@0.2.7-next.1 + - @backstage/plugin-permission-node@0.7.1-next.1 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/plugin-permission-common@0.7.1-next.0 + +## @backstage/plugin-permission-node@0.7.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/plugin-auth-node@0.2.7-next.1 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/plugin-permission-common@0.7.1-next.0 + +## @backstage/plugin-playlist@0.1.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-common@1.0.8-next.0 + - @backstage/plugin-catalog-react@1.2.1-next.1 + - @backstage/plugin-permission-common@0.7.1-next.0 + - @backstage/plugin-permission-react@0.4.7-next.0 + - @backstage/plugin-playlist-common@0.1.2-next.0 + - @backstage/plugin-search-react@1.2.1-next.1 + +## @backstage/plugin-playlist-backend@0.2.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/backend-test-utils@0.1.30-next.1 + - @backstage/plugin-auth-node@0.2.7-next.1 + - @backstage/plugin-permission-node@0.7.1-next.1 + - @backstage/catalog-client@1.1.2-next.0 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/plugin-permission-common@0.7.1-next.0 + - @backstage/plugin-playlist-common@0.1.2-next.0 + +## @backstage/plugin-proxy-backend@0.2.32-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/config@1.0.4-next.0 + +## @backstage/plugin-rollbar@0.4.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-rollbar-backend@0.1.35-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/config@1.0.4-next.0 + +## @backstage/plugin-scaffolder@1.8.0-next.1 + +### Patch Changes + +- 580285787d: The `create` and `click` analytics events are now also captured on the "next" version of the component creation page. +- 3b3fc3cc3c: Fix `formData` not being present in the `next` version +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-client@1.1.2-next.0 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/integration-react@1.1.6-next.1 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.1-next.0 + - @backstage/plugin-catalog-common@1.0.8-next.0 + - @backstage/plugin-catalog-react@1.2.1-next.1 + - @backstage/plugin-permission-react@0.4.7-next.0 + - @backstage/plugin-scaffolder-common@1.2.2-next.0 + +## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.2.13-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/plugin-scaffolder-backend@1.8.0-next.2 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/types@1.0.1-next.0 + +## @backstage/plugin-scaffolder-backend-module-rails@0.4.6-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/plugin-scaffolder-backend@1.8.0-next.2 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/types@1.0.1-next.0 + +## @backstage/plugin-scaffolder-backend-module-yeoman@0.2.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.8.0-next.2 + - @backstage/config@1.0.4-next.0 + - @backstage/types@1.0.1-next.0 + +## @backstage/plugin-search@1.0.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.1-next.0 + - @backstage/version-bridge@1.0.1 + - @backstage/plugin-catalog-react@1.2.1-next.1 + - @backstage/plugin-search-common@1.1.1-next.0 + - @backstage/plugin-search-react@1.2.1-next.1 + +## @backstage/plugin-search-backend@1.1.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/plugin-auth-node@0.2.7-next.1 + - @backstage/plugin-permission-node@0.7.1-next.1 + - @backstage/plugin-search-backend-node@1.0.4-next.1 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/types@1.0.1-next.0 + - @backstage/plugin-permission-common@0.7.1-next.0 + - @backstage/plugin-search-common@1.1.1-next.0 + +## @backstage/plugin-search-backend-module-elasticsearch@1.0.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-node@1.0.4-next.1 + - @backstage/config@1.0.4-next.0 + - @backstage/plugin-search-common@1.1.1-next.0 + +## @backstage/plugin-search-backend-module-pg@0.4.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/plugin-search-backend-node@1.0.4-next.1 + - @backstage/config@1.0.4-next.0 + - @backstage/plugin-search-common@1.1.1-next.0 + +## @backstage/plugin-search-backend-node@1.0.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/backend-tasks@0.3.7-next.1 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/plugin-permission-common@0.7.1-next.0 + - @backstage/plugin-search-common@1.1.1-next.0 + +## @backstage/plugin-search-react@1.2.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.1-next.0 + - @backstage/version-bridge@1.0.1 + - @backstage/plugin-search-common@1.1.1-next.0 + +## @backstage/plugin-sentry@0.4.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-shortcuts@0.3.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.1-next.0 + +## @backstage/plugin-sonarqube@0.4.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-sonarqube-backend@0.1.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + +## @backstage/plugin-stack-overflow@0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/config@1.0.4-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-home@0.4.27-next.1 + - @backstage/plugin-search-common@1.1.1-next.0 + +## @backstage/plugin-stack-overflow-backend@0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.21.0-next.1 + - @backstage/config@1.0.4-next.0 + - @backstage/plugin-search-common@1.1.1-next.0 + +## @backstage/plugin-tech-insights@0.3.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.1-next.0 + - @backstage/plugin-catalog-react@1.2.1-next.1 + - @backstage/plugin-tech-insights-common@0.2.8-next.0 + +## @backstage/plugin-tech-insights-backend@0.5.4-next.1 + +### Patch Changes + +- f12e9e5b8c: Add Documentation on 404 Errors +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/backend-tasks@0.3.7-next.1 + - @backstage/plugin-tech-insights-node@0.3.6-next.1 + - @backstage/catalog-client@1.1.2-next.0 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/types@1.0.1-next.0 + - @backstage/plugin-tech-insights-common@0.2.8-next.0 + +## @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.22-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/plugin-tech-insights-node@0.3.6-next.1 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/plugin-tech-insights-common@0.2.8-next.0 + +## @backstage/plugin-tech-insights-node@0.3.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/backend-tasks@0.3.7-next.1 + - @backstage/config@1.0.4-next.0 + - @backstage/types@1.0.1-next.0 + - @backstage/plugin-tech-insights-common@0.2.8-next.0 + +## @backstage/plugin-tech-radar@0.5.18-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-techdocs@1.4.0-next.2 + +### Patch Changes + +- e92aa15f01: Bumped `canvas` dependency to the latest version, which has better Node.js v18 support. +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/integration-react@1.1.6-next.1 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + - @backstage/plugin-search-common@1.1.1-next.0 + - @backstage/plugin-search-react@1.2.1-next.1 + - @backstage/plugin-techdocs-react@1.0.6-next.1 + +## @backstage/plugin-techdocs-addons-test-utils@1.0.6-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-techdocs@1.4.0-next.2 + - @backstage/core-components@0.12.0-next.1 + - @backstage/core-app-api@1.2.0-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/integration-react@1.1.6-next.1 + - @backstage/test-utils@1.2.2-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog@1.6.1-next.1 + - @backstage/plugin-search-react@1.2.1-next.1 + - @backstage/plugin-techdocs-react@1.0.6-next.1 + +## @backstage/plugin-techdocs-backend@1.4.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/plugin-techdocs-node@1.4.2-next.1 + - @backstage/catalog-client@1.1.2-next.0 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/plugin-catalog-common@1.0.8-next.0 + - @backstage/plugin-permission-common@0.7.1-next.0 + - @backstage/plugin-search-common@1.1.1-next.0 + +## @backstage/plugin-techdocs-module-addons-contrib@1.0.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/integration-react@1.1.6-next.1 + - @backstage/theme@0.2.16 + - @backstage/plugin-techdocs-react@1.0.6-next.1 + +## @backstage/plugin-techdocs-node@1.4.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/plugin-search-common@1.1.1-next.0 + +## @backstage/plugin-techdocs-react@1.0.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/version-bridge@1.0.1 + +## @backstage/plugin-todo@0.2.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-todo-backend@0.1.35-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/catalog-client@1.1.2-next.0 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/integration@1.4.0-next.0 + +## @backstage/plugin-user-settings@0.5.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/core-app-api@1.2.0-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.1-next.0 + +## @backstage/plugin-user-settings-backend@0.1.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/plugin-auth-node@0.2.7-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/types@1.0.1-next.0 + +## @backstage/plugin-vault@0.1.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @backstage/plugin-vault-backend@0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/backend-tasks@0.3.7-next.1 + - @backstage/backend-test-utils@0.1.30-next.1 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + +## @backstage/plugin-xcmetrics@0.2.31-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/theme@0.2.16 + +## example-app@0.2.77-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder@1.8.0-next.1 + - @backstage/plugin-cost-insights@0.12.0-next.1 + - @backstage/plugin-techdocs@1.4.0-next.2 + - @backstage/plugin-explore@0.3.42-next.1 + - @backstage/plugin-github-actions@0.5.11-next.1 + - @backstage/cli@0.21.0-next.1 + - @backstage/plugin-catalog-graph@0.2.23-next.1 + - @backstage/core-components@0.12.0-next.1 + - @backstage/plugin-code-coverage@0.2.4-next.1 + - @backstage/plugin-org@0.6.0-next.1 + - @backstage/plugin-kubernetes@0.7.4-next.1 + - @backstage/app-defaults@1.0.8-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/core-app-api@1.2.0-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/integration-react@1.1.6-next.1 + - @backstage/theme@0.2.16 + - @backstage/plugin-airbrake@0.3.11-next.1 + - @backstage/plugin-apache-airflow@0.2.4-next.1 + - @backstage/plugin-api-docs@0.8.11-next.1 + - @backstage/plugin-azure-devops@0.2.2-next.1 + - @backstage/plugin-azure-sites@0.1.0-next.1 + - @backstage/plugin-badges@0.2.35-next.1 + - @backstage/plugin-catalog-common@1.0.8-next.0 + - @backstage/plugin-catalog-import@0.9.1-next.1 + - @backstage/plugin-catalog-react@1.2.1-next.1 + - @backstage/plugin-circleci@0.3.11-next.1 + - @backstage/plugin-cloudbuild@0.3.11-next.1 + - @backstage/plugin-dynatrace@1.0.1-next.1 + - @backstage/plugin-gcalendar@0.3.7-next.1 + - @backstage/plugin-gcp-projects@0.3.30-next.1 + - @backstage/plugin-gocd@0.1.17-next.1 + - @backstage/plugin-graphiql@0.2.43-next.1 + - @backstage/plugin-home@0.4.27-next.1 + - @backstage/plugin-jenkins@0.7.10-next.1 + - @backstage/plugin-kafka@0.3.11-next.1 + - @backstage/plugin-lighthouse@0.3.11-next.1 + - @backstage/plugin-newrelic@0.3.29-next.1 + - @backstage/plugin-newrelic-dashboard@0.2.4-next.1 + - @backstage/plugin-pagerduty@0.5.4-next.1 + - @backstage/plugin-permission-react@0.4.7-next.0 + - @backstage/plugin-playlist@0.1.2-next.2 + - @backstage/plugin-rollbar@0.4.11-next.1 + - @backstage/plugin-search@1.0.4-next.1 + - @backstage/plugin-search-common@1.1.1-next.0 + - @backstage/plugin-search-react@1.2.1-next.1 + - @backstage/plugin-sentry@0.4.4-next.1 + - @backstage/plugin-shortcuts@0.3.3-next.1 + - @backstage/plugin-stack-overflow@0.1.7-next.1 + - @backstage/plugin-tech-insights@0.3.3-next.1 + - @backstage/plugin-tech-radar@0.5.18-next.1 + - @backstage/plugin-techdocs-module-addons-contrib@1.0.6-next.1 + - @backstage/plugin-techdocs-react@1.0.6-next.1 + - @backstage/plugin-todo@0.2.13-next.1 + - @backstage/plugin-user-settings@0.5.1-next.1 + - @internal/plugin-catalog-customized@0.0.4-next.1 + +## example-backend@0.2.77-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-backend@0.17.1-next.1 + - @backstage/backend-common@0.16.0-next.1 + - @backstage/plugin-scaffolder-backend@1.8.0-next.2 + - @backstage/plugin-code-coverage-backend@0.2.4-next.1 + - @backstage/plugin-kubernetes-backend@0.8.0-next.1 + - @backstage/plugin-tech-insights-backend@0.5.4-next.1 + - example-app@0.2.77-next.2 + - @backstage/backend-tasks@0.3.7-next.1 + - @backstage/plugin-app-backend@0.3.38-next.1 + - @backstage/plugin-auth-node@0.2.7-next.1 + - @backstage/plugin-azure-devops-backend@0.3.17-next.2 + - @backstage/plugin-azure-sites-backend@0.1.0-next.1 + - @backstage/plugin-badges-backend@0.1.32-next.1 + - @backstage/plugin-catalog-backend@1.5.1-next.1 + - @backstage/plugin-graphql-backend@0.1.28-next.1 + - @backstage/plugin-jenkins-backend@0.1.28-next.1 + - @backstage/plugin-kafka-backend@0.2.31-next.1 + - @backstage/plugin-permission-backend@0.5.13-next.1 + - @backstage/plugin-permission-node@0.7.1-next.1 + - @backstage/plugin-playlist-backend@0.2.1-next.2 + - @backstage/plugin-proxy-backend@0.2.32-next.1 + - @backstage/plugin-rollbar-backend@0.1.35-next.1 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.6-next.2 + - @backstage/plugin-search-backend@1.1.1-next.1 + - @backstage/plugin-search-backend-module-elasticsearch@1.0.4-next.1 + - @backstage/plugin-search-backend-module-pg@0.4.2-next.1 + - @backstage/plugin-search-backend-node@1.0.4-next.1 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.22-next.1 + - @backstage/plugin-tech-insights-node@0.3.6-next.1 + - @backstage/plugin-techdocs-backend@1.4.1-next.1 + - @backstage/plugin-todo-backend@0.1.35-next.1 + - @backstage/catalog-client@1.1.2-next.0 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/plugin-permission-common@0.7.1-next.0 + - @backstage/plugin-search-common@1.1.1-next.0 + +## example-backend-next@0.0.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.8.0-next.2 + - @backstage/plugin-app-backend@0.3.38-next.1 + - @backstage/plugin-catalog-backend@1.5.1-next.1 + - @backstage/backend-defaults@0.1.3-next.1 + +## techdocs-cli-embedded-app@0.2.76-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-techdocs@1.4.0-next.2 + - @backstage/cli@0.21.0-next.1 + - @backstage/core-components@0.12.0-next.1 + - @backstage/app-defaults@1.0.8-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/core-app-api@1.2.0-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/integration-react@1.1.6-next.1 + - @backstage/test-utils@1.2.2-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog@1.6.1-next.1 + - @backstage/plugin-techdocs-react@1.0.6-next.1 + +## @internal/plugin-catalog-customized@0.0.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog@1.6.1-next.1 + - @backstage/plugin-catalog-react@1.2.1-next.1 + +## @internal/plugin-todo-list@1.0.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + +## @internal/plugin-todo-list-backend@1.0.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/plugin-auth-node@0.2.7-next.1 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 diff --git a/docs/releases/v1.8.0.md b/docs/releases/v1.8.0.md new file mode 100644 index 0000000000..cbe16a0cba --- /dev/null +++ b/docs/releases/v1.8.0.md @@ -0,0 +1,78 @@ +--- +id: v1.8.0 +title: v1.8.0 +description: Backstage Release v1.8.0 +--- + +These are the release notes for the v1.8.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 the hard work in getting this release developed and done. + +## Highlights + +### Node 16 and 18 + +The project was updated to support and build against Node versions 16 and 18, after 18 had been elevated to [active LTS](https://github.com/nodejs/release#release-schedule). This means that support for Node 14 has been dropped in accordance with [our versioning policy](https://backstage.io/docs/overview/versioning-policy#nodejs-releases). + +We would like to call out one particular change in Node 18 that may affect adopters. The way that it binds interfaces internally when listening for incoming connections has changed such that it may prefer e.g. an IPv6 interface that you did not intend to use. This might make it seem like the backend is unreachable from the outside in some circumstances. Because of this, you may want to change your configuration to say something along the lines of `listen: ':7007'` under the `backend` section to ensure that it listens on all interfaces. + +### Events + +An early version of the `events` plugin ecosystem has been added. This allows events such as webhooks and similar to be received and propagated by a Backstage backend, and plugins can then react to those events. One early use case for this plugin is to start powering catalog updates. + +This is early days, so bear in mind that interfaces and implementations may still be subject to change. But do check it out, and let us know what you think! + +Contributed by [@pjungermann](https://github.com/pjungermann) in [#13931](https://github.com/backstage/backstage/pull/13931) + +### Gitea + +There is now support for [Gitea](https://gitea.io) as a general SCM integration. Please check out [the docs](https://backstage.io/docs/integrations/gitea/locations) for how to get started. + +Contributed by [@atoko](https://github.com/atoko) in [#14056](https://github.com/backstage/backstage/pull/14056) + +### Azure Sites + +There's a new Azure Sites (Apps & Functions) plugin. It lets you view the current status of the site, and quickly jump to the site's Overview or Log Stream pages. Please check out [the plugin README](https://github.com/backstage/backstage/tree/master/plugins/azure-sites) for more information. + +Contributed by [@wesley-pattison](https://github.com/wesley-pattison) in [#13634](https://github.com/backstage/backstage/pull/13634) + +### Scaffolder Metrics + +The scaffolder backend now emits default Prometheus metrics that track job execution. + +Contributed by [@spencerrichardhenry](https://github.com/spencerrichardhenry) in [#13815](https://github.com/backstage/backstage/pull/13815) + +### `@backstage/backend-common` + +The `UrlReader` interface has been updated to require that `readUrl` is implemented. The `readUrl` method has previously been optional to implement, but a warning used to be logged when calling its predecessor `read`. + +The `read` method is now deprecated and will be removed in a future release, and if you made custom URL readers you will have to implement a `readUrl` method on them. + +### Recharts + +The `recharts` library that powers the graphing functionality in some plugins was upgraded across the repository to version 2. Please let us know if you run into any new issues with graphing in plugins such as Bitrise, CICD statistics, code coverage, cost insights, GIT release manager, or XCmetrics. + +### `GitHub` to `Github` + +We are pursuing an effort to standardize the naming of exported GitHub related symbols. After an upgrade of Backstage, you may therefore see errors related to not finding components and types whose names start with “GitHub”. As an example, if you are using `GitHubIssuesPage` from the GitHub Issues plugin, you now need to import and use it as `GithubIssuesPage` instead. + +## 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](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/bFESRKVt) for discussions and support +- [Changelog](https://github.com/backstage/backstage/tree/master/docs/releases/v1.8.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/docs/releases/v1.9.0-next.0-changelog.md b/docs/releases/v1.9.0-next.0-changelog.md new file mode 100644 index 0000000000..690bf60ceb --- /dev/null +++ b/docs/releases/v1.9.0-next.0-changelog.md @@ -0,0 +1,2305 @@ +# Release v1.9.0-next.0 + +## @backstage/catalog-client@1.2.0-next.0 + +### Minor Changes + +- 00d90b520a: **BREAKING PRODUCERS**: Added a new `getEntitiesByRefs` endpoint to `CatalogApi`, for efficient batch fetching of entities by ref. + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/repo-tools@0.1.0-next.0 + +### Minor Changes + +- 99713fd671: Introducing repo-tools package + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.1.4-next.0 + +## @backstage/plugin-catalog-backend@1.6.0-next.0 + +### Minor Changes + +- 16891a212c: Added new `POST /entities/by-refs` endpoint, which allows you to efficiently + batch-fetch entities by their entity ref. This can be useful e.g. in graphql + resolvers or similar contexts where you need to fetch many entities at the same + time. + +### Patch Changes + +- d8593ce0e6: Do not use deprecated `LocationSpec` from the `@backstage/plugin-catalog-node` package +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- e982f77fe3: Registered shutdown hook in experimental catalog plugin. +- Updated dependencies + - @backstage/catalog-client@1.2.0-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/plugin-permission-common@0.7.2-next.0 + - @backstage/plugin-permission-node@0.7.2-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/backend-plugin-api@0.1.5-next.0 + - @backstage/plugin-catalog-node@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/plugin-catalog-common@1.0.9-next.0 + - @backstage/plugin-scaffolder-common@1.2.3-next.0 + - @backstage/plugin-search-common@1.1.2-next.0 + +## @backstage/plugin-events-backend@0.2.0-next.0 + +### Minor Changes + +- cf41eedf43: **BREAKING:** Remove required field `router` at `HttpPostIngressEventPublisher.fromConfig` + and replace it with `bind(router: Router)`. + Additionally, the path prefix `/http` will be added inside `HttpPostIngressEventPublisher`. + + ```diff + // at packages/backend/src/plugins/events.ts + const eventsRouter = Router(); + - const httpRouter = Router(); + - eventsRouter.use('/http', httpRouter); + + const http = HttpPostIngressEventPublisher.fromConfig({ + config: env.config, + logger: env.logger, + - router: httpRouter, + }); + + http.bind(eventsRouter); + ``` + +### Patch Changes + +- cf41eedf43: Introduce a new interface `RequestDetails` to abstract `Request` + providing access to request body and headers. + + **BREAKING:** Replace `request: Request` with `request: RequestDetails` at `RequestValidator`. + +- Updated dependencies + - @backstage/plugin-events-node@0.2.0-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/backend-plugin-api@0.1.5-next.0 + - @backstage/config@1.0.5-next.0 + +## @backstage/plugin-events-node@0.2.0-next.0 + +### Minor Changes + +- cf41eedf43: Introduce a new interface `RequestDetails` to abstract `Request` + providing access to request body and headers. + + **BREAKING:** Replace `request: Request` with `request: RequestDetails` at `RequestValidator`. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.1.5-next.0 + +## @backstage/plugin-scaffolder@1.9.0-next.0 + +### Minor Changes + +- ddd1c3308d: Implement Custom Field Explorer to view and play around with available installed custom field extensions +- adb1b01e32: Adds the ability to supply a `transformErrors` function to the `Stepper` for `/next` + +### Patch Changes + +- d4d07cf55e: Enabling the customization of the last step in the scaffolder template. + + To override the content you have to do the next: + + ```typescript jsx + + ``` + +- ef803022f1: Initialize all `formData` in the `Stepper` in `/next` + +- 3280711113: Updated dependency `msw` to `^0.49.0`. + +- 19356df560: Updated dependency `zen-observable` to `^0.9.0`. + +- a63e2df559: fixed `headerOptions` not passed to `TemplatePage` component + +- Updated dependencies + - @backstage/catalog-client@1.2.0-next.0 + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/integration-react@1.1.7-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-common@1.0.9-next.0 + - @backstage/plugin-permission-react@0.4.8-next.0 + - @backstage/plugin-scaffolder-common@1.2.3-next.0 + +## @backstage/plugin-user-settings@0.6.0-next.0 + +### Minor Changes + +- 29bdda5442: Added the ability to fully customize settings page. Deprecated UserSettingsTab in favour of SettingsLayout.Route + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- 19356df560: Updated dependency `zen-observable` to `^0.9.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-app-api@1.2.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/app-defaults@1.0.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-app-api@1.2.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-permission-react@0.4.8-next.0 + +## @backstage/backend-app-api@0.2.4-next.0 + +### Patch Changes + +- d6dbf1792b: Added `lifecycleFactory` implementation. +- Updated dependencies + - @backstage/backend-common@0.16.1-next.0 + - @backstage/plugin-permission-node@0.7.2-next.0 + - @backstage/backend-plugin-api@0.1.5-next.0 + - @backstage/backend-tasks@0.3.8-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/backend-common@0.16.1-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- dfc8edf9c5: Internal refactor to avoid usage of deprecated symbols. +- Updated dependencies + - @backstage/config-loader@1.1.7-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/cli-common@0.1.10 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/backend-defaults@0.1.4-next.0 + +### Patch Changes + +- d6dbf1792b: Added `lifecycleFactory` to default service factories. +- Updated dependencies + - @backstage/backend-app-api@0.2.4-next.0 + - @backstage/backend-plugin-api@0.1.5-next.0 + +## @backstage/backend-plugin-api@0.1.5-next.0 + +### Patch Changes + +- d6dbf1792b: Added initial support for registering shutdown hooks via `lifecycleServiceRef`. +- Updated dependencies + - @backstage/backend-common@0.16.1-next.0 + - @backstage/plugin-permission-common@0.7.2-next.0 + - @backstage/backend-tasks@0.3.8-next.0 + - @backstage/config@1.0.5-next.0 + +## @backstage/backend-tasks@0.3.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.1-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/backend-test-utils@0.1.31-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/cli@0.21.2-next.0 + - @backstage/backend-app-api@0.2.4-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/backend-plugin-api@0.1.5-next.0 + - @backstage/config@1.0.5-next.0 + +## @backstage/catalog-model@1.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.0.2-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/cli@0.21.2-next.0 + +### Patch Changes + +- 91d050c140: changed tests created by create-plugin to follow eslint-rules best practices particularly testing-library/prefer-screen-queries and testing-library/render-result-naming-convention +- 459a3457e1: Bump `msw` version in default plugin/app templates +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/config-loader@1.1.7-next.0 + - @backstage/release-manifests@0.0.8-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/cli-common@0.1.10 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/config@1.0.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.0.2-next.0 + +## @backstage/config-loader@1.1.7-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/types@1.0.2-next.0 + - @backstage/cli-common@0.1.10 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/core-app-api@1.2.1-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- 19356df560: Updated dependency `zen-observable` to `^0.9.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/version-bridge@1.0.2 + +## @backstage/core-components@0.12.1-next.0 + +### Patch Changes + +- ea4a5be8f3: Create a variable for minimum height and add a prop named 'fit' for determining if the graph height should grow or be contained. +- 64a579a998: Add items prop to SupportButton. This prop can be used to override the items that would otherwise be grabbed from the config. +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- 19356df560: Updated dependency `zen-observable` to `^0.9.0`. +- 17a8e32f39: Updated dependency `rc-progress` to `3.4.1`. +- dfc8edf9c5: Internal refactor to avoid usage of deprecated symbols. +- Updated dependencies + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/theme@0.2.16 + - @backstage/version-bridge@1.0.2 + +## @backstage/core-plugin-api@1.1.1-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- 19356df560: Updated dependency `zen-observable` to `^0.9.0`. +- Updated dependencies + - @backstage/types@1.0.2-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/version-bridge@1.0.2 + +## @backstage/create-app@0.4.35-next.0 + +### Patch Changes + +- Bumped create-app version. +- Updated dependencies + - @backstage/cli-common@0.1.10 + +## @backstage/dev-utils@1.0.9-next.0 + +### Patch Changes + +- 19356df560: Updated dependency `zen-observable` to `^0.9.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-app-api@1.2.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/integration-react@1.1.7-next.0 + - @backstage/test-utils@1.2.3-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/app-defaults@1.0.9-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/errors@1.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.0.2-next.0 + +## @backstage/integration@1.4.1-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- 34b039ca9f: Added `integrations.github.apps.allowedInstallationOwners` to the configuration schema. +- Updated dependencies + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/integration-react@1.1.7-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/theme@0.2.16 + +## @backstage/release-manifests@0.0.8-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. + +## @techdocs/cli@1.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.1-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/cli-common@0.1.10 + - @backstage/config@1.0.5-next.0 + - @backstage/plugin-techdocs-node@1.4.3-next.0 + +## @backstage/test-utils@1.2.3-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- 19356df560: Updated dependency `zen-observable` to `^0.9.0`. +- Updated dependencies + - @backstage/core-app-api@1.2.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-permission-common@0.7.2-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-permission-react@0.4.8-next.0 + +## @backstage/types@1.0.2-next.0 + +### Patch Changes + +- 19356df560: Updated dependency `zen-observable` to `^0.9.0`. + +## @backstage/plugin-adr@0.2.4-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/integration-react@1.1.7-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-adr-common@0.2.4-next.0 + - @backstage/plugin-search-common@1.1.2-next.0 + - @backstage/plugin-search-react@1.2.2-next.0 + +## @backstage/plugin-adr-backend@0.2.4-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/catalog-client@1.2.0-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/plugin-adr-common@0.2.4-next.0 + - @backstage/plugin-search-common@1.1.2-next.0 + +## @backstage/plugin-adr-common@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.4.1-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/plugin-search-common@1.1.2-next.0 + +## @backstage/plugin-airbrake@0.3.12-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/test-utils@1.2.3-next.0 + - @backstage/dev-utils@1.0.9-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-airbrake-backend@0.2.12-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/backend-common@0.16.1-next.0 + - @backstage/config@1.0.5-next.0 + +## @backstage/plugin-allure@0.1.28-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-analytics-module-ga@0.1.23-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-apache-airflow@0.2.5-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + +## @backstage/plugin-api-docs@0.8.12-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/plugin-catalog@1.6.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-apollo-explorer@0.1.5-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-app-backend@0.3.39-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/backend-common@0.16.1-next.0 + - @backstage/config-loader@1.1.7-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/backend-plugin-api@0.1.5-next.0 + - @backstage/config@1.0.5-next.0 + +## @backstage/plugin-auth-backend@0.17.2-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/catalog-client@1.2.0-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/plugin-auth-node@0.2.8-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/plugin-auth-node@0.2.8-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/backend-common@0.16.1-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/plugin-azure-devops@0.2.3-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-azure-devops-common@0.3.0 + +## @backstage/plugin-azure-devops-backend@0.3.18-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/backend-common@0.16.1-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/plugin-azure-devops-common@0.3.0 + +## @backstage/plugin-azure-sites@0.1.1-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-azure-sites-common@0.1.0 + +## @backstage/plugin-azure-sites-backend@0.1.1-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/backend-common@0.16.1-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/plugin-azure-sites-common@0.1.0 + +## @backstage/plugin-badges@0.2.36-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-badges-backend@0.1.33-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-client@1.2.0-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/plugin-bazaar@0.2.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-client@1.2.0-next.0 + - @backstage/cli@0.21.2-next.0 + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/plugin-catalog@1.6.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/plugin-bazaar-backend@0.2.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.1-next.0 + - @backstage/backend-test-utils@0.1.31-next.0 + - @backstage/plugin-auth-node@0.2.8-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/plugin-bitbucket-cloud-common@0.2.2-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/integration@1.4.1-next.0 + +## @backstage/plugin-bitrise@0.1.39-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-catalog@1.6.2-next.0 + +### Patch Changes + +- 19356df560: Updated dependency `zen-observable` to `^0.9.0`. +- 387d1d5218: Fixed Entity kind pluralisation in the `CatalogKindHeader` component. +- Updated dependencies + - @backstage/catalog-client@1.2.0-next.0 + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/integration-react@1.1.7-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-common@1.0.9-next.0 + - @backstage/plugin-search-common@1.1.2-next.0 + - @backstage/plugin-search-react@1.2.2-next.0 + +## @backstage/plugin-catalog-backend-module-aws@0.1.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.6.0-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/backend-plugin-api@0.1.5-next.0 + - @backstage/plugin-catalog-node@1.2.2-next.0 + - @backstage/backend-tasks@0.3.8-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/plugin-catalog-backend-module-azure@0.1.10-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.6.0-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/backend-plugin-api@0.1.5-next.0 + - @backstage/plugin-catalog-node@1.2.2-next.0 + - @backstage/backend-tasks@0.3.8-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket@0.2.6-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.6.0-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.2-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.1.6-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/catalog-client@1.2.0-next.0 + - @backstage/plugin-catalog-backend@1.6.0-next.0 + - @backstage/plugin-events-node@0.2.0-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.2-next.0 + - @backstage/backend-plugin-api@0.1.5-next.0 + - @backstage/plugin-catalog-node@1.2.2-next.0 + - @backstage/backend-tasks@0.3.8-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/plugin-catalog-common@1.0.9-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket-server@0.1.4-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.6.0-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/backend-plugin-api@0.1.5-next.0 + - @backstage/plugin-catalog-node@1.2.2-next.0 + - @backstage/backend-tasks@0.3.8-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/plugin-catalog-backend-module-gerrit@0.1.7-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.6.0-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/backend-plugin-api@0.1.5-next.0 + - @backstage/plugin-catalog-node@1.2.2-next.0 + - @backstage/backend-tasks@0.3.8-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/plugin-catalog-backend-module-github@0.2.2-next.0 + +### Patch Changes + +- 70fa5ec3ec: Fixes the assignment of group member references in `GithubMultiOrgProcessor` so membership relations are resolved correctly. +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- 754b5854df: Fix incorrectly exported GithubOrgEntityProvider as a type +- Updated dependencies + - @backstage/catalog-client@1.2.0-next.0 + - @backstage/plugin-catalog-backend@1.6.0-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/backend-plugin-api@0.1.5-next.0 + - @backstage/plugin-catalog-node@1.2.2-next.0 + - @backstage/backend-tasks@0.3.8-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/plugin-catalog-backend-module-gitlab@0.1.10-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.6.0-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/backend-plugin-api@0.1.5-next.0 + - @backstage/plugin-catalog-node@1.2.2-next.0 + - @backstage/backend-tasks@0.3.8-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/plugin-catalog-backend-module-ldap@0.5.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.6.0-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/backend-tasks@0.3.8-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/plugin-catalog-backend-module-msgraph@0.4.5-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.6.0-next.0 + - @backstage/backend-plugin-api@0.1.5-next.0 + - @backstage/plugin-catalog-node@1.2.2-next.0 + - @backstage/backend-tasks@0.3.8-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + +## @backstage/plugin-catalog-backend-module-openapi@0.1.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.6.0-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/plugin-catalog-node@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + +## @backstage/plugin-catalog-common@1.0.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.7.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/plugin-search-common@1.1.2-next.0 + +## @backstage/plugin-catalog-graph@0.2.24-next.0 + +### Patch Changes + +- cb716004ef: Internal refactor to improve tests +- Updated dependencies + - @backstage/catalog-client@1.2.0-next.0 + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-catalog-graphql@0.3.16-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/types@1.0.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + +## @backstage/plugin-catalog-import@0.9.2-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/catalog-client@1.2.0-next.0 + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/integration-react@1.1.7-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/plugin-catalog-common@1.0.9-next.0 + +## @backstage/plugin-catalog-node@1.2.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-client@1.2.0-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/backend-plugin-api@0.1.5-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/plugin-catalog-common@1.0.9-next.0 + +## @backstage/plugin-catalog-react@1.2.2-next.0 + +### Patch Changes + +- 19356df560: Updated dependency `zen-observable` to `^0.9.0`. +- Updated dependencies + - @backstage/catalog-client@1.2.0-next.0 + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/plugin-permission-common@0.7.2-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/theme@0.2.16 + - @backstage/version-bridge@1.0.2 + - @backstage/plugin-catalog-common@1.0.9-next.0 + - @backstage/plugin-permission-react@0.4.8-next.0 + +## @backstage/plugin-cicd-statistics@0.1.14-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + +## @backstage/plugin-cicd-statistics-module-gitlab@0.1.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/plugin-cicd-statistics@0.1.14-next.0 + +## @backstage/plugin-circleci@0.3.12-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-cloudbuild@0.3.12-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-code-climate@0.1.12-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-code-coverage@0.2.5-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-code-coverage-backend@0.2.5-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/catalog-client@1.2.0-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/plugin-codescene@0.1.7-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- 17a8e32f39: Updated dependency `rc-progress` to `3.4.1`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-config-schema@0.1.35-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- 19356df560: Updated dependency `zen-observable` to `^0.9.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-cost-insights@0.12.1-next.0 + +### Patch Changes + +- f9bbb3be37: Provide the ability to change the base currency from USD to any other currency in cost insights plugin +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-cost-insights-common@0.1.1 + +## @backstage/plugin-dynatrace@1.0.2-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-events-backend-module-aws-sqs@0.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.2.0-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/backend-plugin-api@0.1.5-next.0 + - @backstage/backend-tasks@0.3.8-next.0 + - @backstage/config@1.0.5-next.0 + +## @backstage/plugin-events-backend-module-azure@0.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.2.0-next.0 + - @backstage/backend-plugin-api@0.1.5-next.0 + +## @backstage/plugin-events-backend-module-bitbucket-cloud@0.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.2.0-next.0 + - @backstage/backend-plugin-api@0.1.5-next.0 + +## @backstage/plugin-events-backend-module-gerrit@0.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.2.0-next.0 + - @backstage/backend-plugin-api@0.1.5-next.0 + +## @backstage/plugin-events-backend-module-github@0.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.2.0-next.0 + - @backstage/backend-plugin-api@0.1.5-next.0 + +## @backstage/plugin-events-backend-module-gitlab@0.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.2.0-next.0 + - @backstage/backend-plugin-api@0.1.5-next.0 + +## @backstage/plugin-events-backend-test-utils@0.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.2.0-next.0 + +## @backstage/plugin-explore@0.3.43-next.0 + +### Patch Changes + +- ea4a5be8f3: Adds styling to graph forcing it to always fill out the available space. +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-explore-react@0.0.24-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-explore-react@0.0.24-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.1.1-next.0 + +## @backstage/plugin-firehydrant@0.1.29-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-fossa@0.2.44-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-gcalendar@0.3.8-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-gcp-projects@0.3.31-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-git-release-manager@0.3.25-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-github-actions@0.5.12-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-github-deployments@0.1.43-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/integration-react@1.1.7-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-github-issues@0.2.1-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-github-pull-requests-board@0.1.6-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-gitops-profiles@0.3.30-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-gocd@0.1.18-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-graphiql@0.2.44-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-graphql-backend@0.1.29-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/backend-common@0.16.1-next.0 + - @backstage/plugin-catalog-graphql@0.3.16-next.0 + - @backstage/config@1.0.5-next.0 + +## @backstage/plugin-home@0.4.28-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-stack-overflow@0.1.8-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-ilert@0.2.1-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-jenkins@0.7.11-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-jenkins-common@0.1.11-next.0 + +## @backstage/plugin-jenkins-backend@0.1.29-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/catalog-client@1.2.0-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/plugin-auth-node@0.2.8-next.0 + - @backstage/plugin-permission-common@0.7.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/plugin-jenkins-common@0.1.11-next.0 + +## @backstage/plugin-jenkins-common@0.1.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.7.2-next.0 + - @backstage/plugin-catalog-common@1.0.9-next.0 + +## @backstage/plugin-kafka@0.3.12-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-kafka-backend@0.2.32-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.1-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/plugin-kubernetes@0.7.5-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/plugin-kubernetes-common@0.4.5-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-kubernetes-backend@0.8.1-next.0 + +### Patch Changes + +- b585179770: Added Kubernetes proxy API route to backend Kubernetes plugin, allowing Backstage plugin developers to read/write new information from Kubernetes (if proper credentials are provided). +- Updated dependencies + - @backstage/catalog-client@1.2.0-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/backend-test-utils@0.1.31-next.0 + - @backstage/plugin-auth-node@0.2.8-next.0 + - @backstage/plugin-kubernetes-common@0.4.5-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/plugin-kubernetes-common@0.4.5-next.0 + +### Patch Changes + +- b585179770: Added Kubernetes proxy API route to backend Kubernetes plugin, allowing Backstage plugin developers to read/write new information from Kubernetes (if proper credentials are provided). +- Updated dependencies + - @backstage/catalog-model@1.1.4-next.0 + +## @backstage/plugin-lighthouse@0.3.12-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-newrelic@0.3.30-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-newrelic-dashboard@0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/plugin-org@0.6.1-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-org-react@0.1.1-next.0 + +### Patch Changes + +- 4cb5066828: Bug fixes and adding the possibility to add a default value for the `GroupListPicker`. Fixes: Vertical size jump on text entry, left align for text, selecting a value closes the popup, auto focus on the popup when opening +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/catalog-client@1.2.0-next.0 + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-pagerduty@0.5.5-next.0 + +### Patch Changes + +- cb716004ef: Internal refactor to improve tests +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-periskop@0.1.10-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-periskop-backend@0.1.10-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/backend-common@0.16.1-next.0 + - @backstage/config@1.0.5-next.0 + +## @backstage/plugin-permission-backend@0.5.14-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/backend-common@0.16.1-next.0 + - @backstage/plugin-auth-node@0.2.8-next.0 + - @backstage/plugin-permission-common@0.7.2-next.0 + - @backstage/plugin-permission-node@0.7.2-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/plugin-permission-common@0.7.2-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/types@1.0.2-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/plugin-permission-node@0.7.2-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/backend-common@0.16.1-next.0 + - @backstage/plugin-auth-node@0.2.8-next.0 + - @backstage/plugin-permission-common@0.7.2-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/plugin-permission-react@0.4.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-permission-common@0.7.2-next.0 + - @backstage/config@1.0.5-next.0 + +## @backstage/plugin-playlist@0.1.3-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-permission-common@0.7.2-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-common@1.0.9-next.0 + - @backstage/plugin-permission-react@0.4.8-next.0 + - @backstage/plugin-playlist-common@0.1.3-next.0 + - @backstage/plugin-search-react@1.2.2-next.0 + +## @backstage/plugin-playlist-backend@0.2.2-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/catalog-client@1.2.0-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/backend-test-utils@0.1.31-next.0 + - @backstage/plugin-auth-node@0.2.8-next.0 + - @backstage/plugin-permission-common@0.7.2-next.0 + - @backstage/plugin-permission-node@0.7.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/plugin-playlist-common@0.1.3-next.0 + +## @backstage/plugin-playlist-common@0.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.7.2-next.0 + +## @backstage/plugin-proxy-backend@0.2.33-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/backend-common@0.16.1-next.0 + - @backstage/config@1.0.5-next.0 + +## @backstage/plugin-rollbar@0.4.12-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-rollbar-backend@0.1.36-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/backend-common@0.16.1-next.0 + - @backstage/config@1.0.5-next.0 + +## @backstage/plugin-scaffolder-backend@1.8.1-next.0 + +### Patch Changes + +- cb716004ef: Internal refactor to improve tests +- 26404430bc: Use Json types from @backstage/types +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- 19356df560: Updated dependency `zen-observable` to `^0.9.0`. +- Updated dependencies + - @backstage/catalog-client@1.2.0-next.0 + - @backstage/plugin-catalog-backend@1.6.0-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/plugin-auth-node@0.2.8-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/backend-plugin-api@0.1.5-next.0 + - @backstage/plugin-catalog-node@1.2.2-next.0 + - @backstage/backend-tasks@0.3.8-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/plugin-scaffolder-common@1.2.3-next.0 + +## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.2.14-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.8.1-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/plugin-scaffolder-backend-module-rails@0.4.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.8.1-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/plugin-scaffolder-backend-module-yeoman@0.2.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.8.1-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/config@1.0.5-next.0 + +## @backstage/plugin-scaffolder-common@1.2.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.0.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + +## @backstage/plugin-search@1.0.5-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/theme@0.2.16 + - @backstage/version-bridge@1.0.2 + - @backstage/plugin-search-common@1.1.2-next.0 + - @backstage/plugin-search-react@1.2.2-next.0 + +## @backstage/plugin-search-backend@1.1.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-node@1.0.5-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/plugin-auth-node@0.2.8-next.0 + - @backstage/plugin-permission-common@0.7.2-next.0 + - @backstage/plugin-permission-node@0.7.2-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/plugin-search-common@1.1.2-next.0 + +## @backstage/plugin-search-backend-module-elasticsearch@1.0.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-node@1.0.5-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/plugin-search-common@1.1.2-next.0 + +## @backstage/plugin-search-backend-module-pg@0.4.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-node@1.0.5-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/plugin-search-common@1.1.2-next.0 + +## @backstage/plugin-search-backend-node@1.0.5-next.0 + +### Patch Changes + +- a962ce0551: Wait for indexer initialization before finalizing indexing. +- 683ced83f6: Fixed a bug that could cause a `max listeners exceeded warning` to be logged when more than 10 collators were running simultaneously. +- 81b1e7b0fe: Updated indexer and decorator base classes to take advantage of features introduced in Node.js v16; be sure you are running a [supported version of Node.js](https://backstage.io/docs/releases/v1.8.0#node-16-and-18). +- Updated dependencies + - @backstage/backend-common@0.16.1-next.0 + - @backstage/plugin-permission-common@0.7.2-next.0 + - @backstage/backend-tasks@0.3.8-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/plugin-search-common@1.1.2-next.0 + +## @backstage/plugin-search-common@1.1.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.7.2-next.0 + - @backstage/types@1.0.2-next.0 + +## @backstage/plugin-search-react@1.2.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/theme@0.2.16 + - @backstage/version-bridge@1.0.2 + - @backstage/plugin-search-common@1.1.2-next.0 + +## @backstage/plugin-sentry@0.4.5-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-shortcuts@0.3.4-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- 19356df560: Updated dependency `zen-observable` to `^0.9.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-sonarqube@0.5.1-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- 17a8e32f39: Updated dependency `rc-progress` to `3.4.1`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-sonarqube-backend@0.1.4-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/backend-common@0.16.1-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/plugin-splunk-on-call@0.4.1-next.0 + +### Patch Changes + +- cb716004ef: Internal refactor to improve tests +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-stack-overflow@0.1.8-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-home@0.4.28-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-search-common@1.1.2-next.0 + +## @backstage/plugin-stack-overflow-backend@0.1.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.21.2-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/plugin-search-common@1.1.2-next.0 + +## @backstage/plugin-tech-insights@0.3.4-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-tech-insights-common@0.2.9-next.0 + +## @backstage/plugin-tech-insights-backend@0.5.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-client@1.2.0-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/backend-tasks@0.3.8-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/plugin-tech-insights-common@0.2.9-next.0 + - @backstage/plugin-tech-insights-node@0.3.7-next.0 + +## @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.23-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.1-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/plugin-tech-insights-common@0.2.9-next.0 + - @backstage/plugin-tech-insights-node@0.3.7-next.0 + +## @backstage/plugin-tech-insights-common@0.2.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.0.2-next.0 + +## @backstage/plugin-tech-insights-node@0.3.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.1-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/backend-tasks@0.3.8-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/plugin-tech-insights-common@0.2.9-next.0 + +## @backstage/plugin-tech-radar@0.5.19-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-techdocs@1.4.1-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/plugin-techdocs-react@1.0.7-next.0 + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/integration-react@1.1.7-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-search-common@1.1.2-next.0 + - @backstage/plugin-search-react@1.2.2-next.0 + +## @backstage/plugin-techdocs-addons-test-utils@1.0.7-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/plugin-techdocs-react@1.0.7-next.0 + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-app-api@1.2.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/integration-react@1.1.7-next.0 + - @backstage/test-utils@1.2.3-next.0 + - @backstage/plugin-techdocs@1.4.1-next.0 + - @backstage/plugin-catalog@1.6.2-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-search-react@1.2.2-next.0 + +## @backstage/plugin-techdocs-backend@1.4.2-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/catalog-client@1.2.0-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/plugin-permission-common@0.7.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/plugin-catalog-common@1.0.9-next.0 + - @backstage/plugin-search-common@1.1.2-next.0 + - @backstage/plugin-techdocs-node@1.4.3-next.0 + +## @backstage/plugin-techdocs-module-addons-contrib@1.0.7-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- 8536e7c281: Use `app.title` from `app-config.yaml` when creating new Documentation Feedback issue. `Backstage` is the default value. +- Updated dependencies + - @backstage/plugin-techdocs-react@1.0.7-next.0 + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/integration-react@1.1.7-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-techdocs-node@1.4.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.1-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/plugin-search-common@1.1.2-next.0 + +## @backstage/plugin-techdocs-react@1.0.7-next.0 + +### Patch Changes + +- cb716004ef: Internal refactor to improve tests +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/version-bridge@1.0.2 + +## @backstage/plugin-todo@0.2.14-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-todo-backend@0.1.36-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/catalog-client@1.2.0-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/plugin-user-settings-backend@0.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.1-next.0 + - @backstage/plugin-auth-node@0.2.8-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/plugin-vault@0.1.6-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-vault-backend@0.2.5-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- 7a3d2688ed: Use `express-promise-router` to catch errors properly. + Add `403` error as a known one. It will now return a `NotAllowed` error. +- Updated dependencies + - @backstage/backend-common@0.16.1-next.0 + - @backstage/backend-test-utils@0.1.31-next.0 + - @backstage/backend-tasks@0.3.8-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @backstage/plugin-xcmetrics@0.2.32-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/errors@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## example-app@0.2.78-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-graph@0.2.24-next.0 + - @backstage/plugin-pagerduty@0.5.5-next.0 + - @backstage/plugin-techdocs-react@1.0.7-next.0 + - @backstage/plugin-scaffolder@1.9.0-next.0 + - @backstage/cli@0.21.2-next.0 + - @backstage/plugin-cost-insights@0.12.1-next.0 + - @backstage/core-components@0.12.1-next.0 + - @backstage/plugin-user-settings@0.6.0-next.0 + - @backstage/plugin-explore@0.3.43-next.0 + - @backstage/core-app-api@1.2.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/integration-react@1.1.7-next.0 + - @backstage/plugin-airbrake@0.3.12-next.0 + - @backstage/plugin-apache-airflow@0.2.5-next.0 + - @backstage/plugin-api-docs@0.8.12-next.0 + - @backstage/plugin-azure-devops@0.2.3-next.0 + - @backstage/plugin-azure-sites@0.1.1-next.0 + - @backstage/plugin-badges@0.2.36-next.0 + - @backstage/plugin-catalog-import@0.9.2-next.0 + - @backstage/plugin-circleci@0.3.12-next.0 + - @backstage/plugin-cloudbuild@0.3.12-next.0 + - @backstage/plugin-code-coverage@0.2.5-next.0 + - @backstage/plugin-dynatrace@1.0.2-next.0 + - @backstage/plugin-gcalendar@0.3.8-next.0 + - @backstage/plugin-gcp-projects@0.3.31-next.0 + - @backstage/plugin-github-actions@0.5.12-next.0 + - @backstage/plugin-gocd@0.1.18-next.0 + - @backstage/plugin-graphiql@0.2.44-next.0 + - @backstage/plugin-home@0.4.28-next.0 + - @backstage/plugin-jenkins@0.7.11-next.0 + - @backstage/plugin-kafka@0.3.12-next.0 + - @backstage/plugin-kubernetes@0.7.5-next.0 + - @backstage/plugin-lighthouse@0.3.12-next.0 + - @backstage/plugin-newrelic@0.3.30-next.0 + - @backstage/plugin-org@0.6.1-next.0 + - @backstage/plugin-playlist@0.1.3-next.0 + - @backstage/plugin-rollbar@0.4.12-next.0 + - @backstage/plugin-search@1.0.5-next.0 + - @backstage/plugin-sentry@0.4.5-next.0 + - @backstage/plugin-shortcuts@0.3.4-next.0 + - @backstage/plugin-stack-overflow@0.1.8-next.0 + - @backstage/plugin-tech-insights@0.3.4-next.0 + - @backstage/plugin-tech-radar@0.5.19-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.0.7-next.0 + - @backstage/plugin-techdocs@1.4.1-next.0 + - @backstage/plugin-todo@0.2.14-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/app-defaults@1.0.9-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-common@1.0.9-next.0 + - @backstage/plugin-newrelic-dashboard@0.2.5-next.0 + - @backstage/plugin-permission-react@0.4.8-next.0 + - @backstage/plugin-search-common@1.1.2-next.0 + - @backstage/plugin-search-react@1.2.2-next.0 + - @internal/plugin-catalog-customized@0.0.5-next.0 + +## example-backend@0.2.78-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.8.1-next.0 + - @backstage/catalog-client@1.2.0-next.0 + - @backstage/plugin-catalog-backend@1.6.0-next.0 + - @backstage/plugin-events-backend@0.2.0-next.0 + - @backstage/plugin-search-backend-node@1.0.5-next.0 + - @backstage/plugin-events-node@0.2.0-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/plugin-app-backend@0.3.39-next.0 + - @backstage/plugin-auth-backend@0.17.2-next.0 + - @backstage/plugin-auth-node@0.2.8-next.0 + - @backstage/plugin-azure-devops-backend@0.3.18-next.0 + - @backstage/plugin-azure-sites-backend@0.1.1-next.0 + - @backstage/plugin-code-coverage-backend@0.2.5-next.0 + - @backstage/plugin-graphql-backend@0.1.29-next.0 + - @backstage/plugin-jenkins-backend@0.1.29-next.0 + - @backstage/plugin-permission-backend@0.5.14-next.0 + - @backstage/plugin-permission-common@0.7.2-next.0 + - @backstage/plugin-permission-node@0.7.2-next.0 + - @backstage/plugin-playlist-backend@0.2.2-next.0 + - @backstage/plugin-proxy-backend@0.2.33-next.0 + - @backstage/plugin-rollbar-backend@0.1.36-next.0 + - @backstage/plugin-techdocs-backend@1.4.2-next.0 + - @backstage/plugin-todo-backend@0.1.36-next.0 + - @backstage/plugin-kubernetes-backend@0.8.1-next.0 + - example-app@0.2.78-next.0 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.7-next.0 + - @backstage/plugin-badges-backend@0.1.33-next.0 + - @backstage/plugin-catalog-node@1.2.2-next.0 + - @backstage/plugin-tech-insights-backend@0.5.5-next.0 + - @backstage/backend-tasks@0.3.8-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/plugin-kafka-backend@0.2.32-next.0 + - @backstage/plugin-search-backend@1.1.2-next.0 + - @backstage/plugin-search-backend-module-elasticsearch@1.0.5-next.0 + - @backstage/plugin-search-backend-module-pg@0.4.3-next.0 + - @backstage/plugin-search-common@1.1.2-next.0 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.23-next.0 + - @backstage/plugin-tech-insights-node@0.3.7-next.0 + +## example-backend-next@0.0.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.8.1-next.0 + - @backstage/plugin-catalog-backend@1.6.0-next.0 + - @backstage/plugin-app-backend@0.3.39-next.0 + - @backstage/backend-defaults@0.1.4-next.0 + +## techdocs-cli-embedded-app@0.2.77-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-techdocs-react@1.0.7-next.0 + - @backstage/cli@0.21.2-next.0 + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-app-api@1.2.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/integration-react@1.1.7-next.0 + - @backstage/test-utils@1.2.3-next.0 + - @backstage/plugin-techdocs@1.4.1-next.0 + - @backstage/plugin-catalog@1.6.2-next.0 + - @backstage/app-defaults@1.0.9-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/theme@0.2.16 + +## @internal/plugin-catalog-customized@0.0.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/plugin-catalog@1.6.2-next.0 + +## @internal/plugin-todo-list@1.0.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/theme@0.2.16 + +## @internal/plugin-todo-list-backend@1.0.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.1-next.0 + - @backstage/plugin-auth-node@0.2.8-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## @internal/plugin-todo-list-common@1.0.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.7.2-next.0 diff --git a/docs/releases/v1.9.0-next.1-changelog.md b/docs/releases/v1.9.0-next.1-changelog.md new file mode 100644 index 0000000000..862734131a --- /dev/null +++ b/docs/releases/v1.9.0-next.1-changelog.md @@ -0,0 +1,2325 @@ +# Release v1.9.0-next.1 + +## @backstage/backend-common@0.17.0-next.1 + +### Minor Changes + +- de8a975911: Changed to use native `AbortController` and `AbortSignal` from Node.js, instead + of the one from `node-abort-controller`. This is possible now that the minimum + supported Node.js version of the project is 16. + + Note that their interfaces are very slightly different, but typically not in a + way that matters to consumers. If you see any typescript errors as a direct + result from this, they are compatible with each other in the ways that we + interact with them, and should be possible to type-cast across without ill + effects. + +### Patch Changes + +- d3fea4ae0a: Internal fixes to avoid implicit usage of globals +- 1f2b2de3fe: exported KubernetesContainerRunner, KubernetesContainerRunnerOptions, KubernetesContainerRunnerMountBase +- 6b82598bd8: Added the ability to understand Job Artifact URLs to the GitLab integration +- 8646067e07: Fixed `SingleHostDiscovery` so that it properly handles single-string `backend.listen` configurations such as `:80`. +- Updated dependencies + - @backstage/types@1.0.2-next.1 + - @backstage/config-loader@1.1.7-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/cli-common@0.1.10 + - @backstage/errors@1.1.4-next.1 + +## @backstage/backend-tasks@0.4.0-next.1 + +### Minor Changes + +- de8a975911: Changed to use native `AbortController` and `AbortSignal` from Node.js, instead + of the one from `node-abort-controller`. This is possible now that the minimum + supported Node.js version of the project is 16. + + Note that their interfaces are very slightly different, but typically not in a + way that matters to consumers. If you see any typescript errors as a direct + result from this, they are compatible with each other in the ways that we + interact with them, and should be possible to type-cast across without ill + effects. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/errors@1.1.4-next.1 + +## @backstage/repo-tools@0.1.0-next.1 + +### Minor Changes + +- 03843259b4: Api reference documentation improvements + + - breadcrumbs links semantics as code spans + - new `@config` annotation to describe related config keys + +### Patch Changes + +- 71f80eb354: add the command type-deps to the repo tool package. +- Updated dependencies + - @backstage/errors@1.1.4-next.1 + +## @backstage/plugin-catalog-backend@1.6.0-next.1 + +### Minor Changes + +- c395abb5b2: The catalog no longer stops after the first processor `validateEntityKind` + method returns `true` when validating entity kind shapes. Instead, it continues + through all registered processors that have this method, and requires that _at + least one_ of them returned true. + + The old behavior of stopping early made it harder to extend existing core kinds + with additional fields, since the `BuiltinKindsEntityProcessor` is always + present at the top of the processing chain and ensures that your additional + validation code would never be run. + + This is technically a breaking change, although it should not affect anybody + under normal circumstances, except if you had problematic validation code that + you were unaware that it was not being run. That code may now start to exhibit + those problems. + + If you need to disable this new behavior, `CatalogBuilder` as used in your + `packages/backend/src/plugins/catalog.ts` file now has a + `useLegacySingleProcessorValidation()` method to go back to the old behavior. + + ```diff + const builder = await CatalogBuilder.create(env); + +builder.useLegacySingleProcessorValidation(); + ``` + +### Patch Changes + +- 2a8e3cc0b5: Optimize `Stitcher` process to be more memory efficient +- 5b3e2afa45: Fixed deprecated use of `substr` into `substring`. +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/backend-plugin-api@0.1.5-next.1 + - @backstage/plugin-catalog-node@1.2.2-next.1 + - @backstage/plugin-permission-node@0.7.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/catalog-client@1.2.0-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/plugin-catalog-common@1.0.9-next.1 + - @backstage/plugin-permission-common@0.7.2-next.1 + - @backstage/plugin-scaffolder-common@1.2.3-next.1 + - @backstage/plugin-search-common@1.1.2-next.1 + +## @backstage/plugin-catalog-backend-module-incremental-ingestion@0.1.0-next.0 + +### Minor Changes + +- 98c643a1a2: Introduces incremental entity providers, which are used for streaming very large data sources into the catalog. + +### Patch Changes + +- de8a975911: Changed to use native `AbortController` and `AbortSignal` from Node.js, instead + of the one from `node-abort-controller`. This is possible now that the minimum + supported Node.js version of the project is 16. + + Note that their interfaces are very slightly different, but typically not in a + way that matters to consumers. If you see any typescript errors as a direct + result from this, they are compatible with each other in the ways that we + interact with them, and should be possible to type-cast across without ill + effects. + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/plugin-catalog-backend@1.6.0-next.1 + - @backstage/backend-tasks@0.4.0-next.1 + - @backstage/backend-plugin-api@0.1.5-next.1 + - @backstage/backend-test-utils@0.1.31-next.1 + - @backstage/plugin-catalog-node@1.2.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/plugin-permission-common@0.7.2-next.1 + +## @backstage/app-defaults@1.0.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-app-api@1.2.1-next.1 + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-permission-react@0.4.8-next.1 + - @backstage/theme@0.2.16 + +## @backstage/backend-app-api@0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/backend-tasks@0.4.0-next.1 + - @backstage/backend-plugin-api@0.1.5-next.1 + - @backstage/plugin-permission-node@0.7.2-next.1 + - @backstage/errors@1.1.4-next.1 + +## @backstage/backend-defaults@0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-app-api@0.2.4-next.1 + - @backstage/backend-plugin-api@0.1.5-next.1 + +## @backstage/backend-plugin-api@0.1.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/backend-tasks@0.4.0-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/plugin-permission-common@0.7.2-next.1 + +## @backstage/backend-test-utils@0.1.31-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/cli@0.21.2-next.1 + - @backstage/backend-app-api@0.2.4-next.1 + - @backstage/backend-plugin-api@0.1.5-next.1 + - @backstage/config@1.0.5-next.1 + +## @backstage/catalog-client@1.2.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + +## @backstage/catalog-model@1.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.0.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/errors@1.1.4-next.1 + +## @backstage/cli@0.21.2-next.1 + +### Patch Changes + +- 8fffe42708: JSX and React Fast Refresh transforms are no longer enabled when bundling backend code. +- Updated dependencies + - @backstage/types@1.0.2-next.1 + - @backstage/config-loader@1.1.7-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/release-manifests@0.0.8-next.0 + - @backstage/cli-common@0.1.10 + - @backstage/errors@1.1.4-next.1 + +## @backstage/config@1.0.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.0.2-next.1 + +## @backstage/config-loader@1.1.7-next.1 + +### Patch Changes + +- 40e7e6e1a2: Updated dependency `typescript-json-schema` to `^0.55.0`. +- Updated dependencies + - @backstage/types@1.0.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/cli-common@0.1.10 + - @backstage/errors@1.1.4-next.1 + +## @backstage/core-app-api@1.2.1-next.1 + +### Patch Changes + +- d3fea4ae0a: Internal fixes to avoid implicit usage of globals +- c3fa90e184: Updated dependency `zen-observable` to `^0.10.0`. +- Updated dependencies + - @backstage/version-bridge@1.0.3-next.0 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/config@1.0.5-next.1 + +## @backstage/core-components@0.12.1-next.1 + +### Patch Changes + +- d3fea4ae0a: Internal fixes to avoid implicit usage of globals +- c3fa90e184: Updated dependency `zen-observable` to `^0.10.0`. +- Updated dependencies + - @backstage/version-bridge@1.0.3-next.0 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/core-plugin-api@1.1.1-next.1 + +### Patch Changes + +- c3fa90e184: Updated dependency `zen-observable` to `^0.10.0`. +- Updated dependencies + - @backstage/version-bridge@1.0.3-next.0 + - @backstage/types@1.0.2-next.1 + - @backstage/config@1.0.5-next.1 + +## @backstage/create-app@0.4.35-next.1 + +### Patch Changes + +- Bumped create-app version. +- Updated dependencies + - @backstage/cli-common@0.1.10 + +## @backstage/dev-utils@1.0.9-next.1 + +### Patch Changes + +- c3fa90e184: Updated dependency `zen-observable` to `^0.10.0`. +- Updated dependencies + - @backstage/core-app-api@1.2.1-next.1 + - @backstage/core-components@0.12.1-next.1 + - @backstage/test-utils@1.2.3-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/app-defaults@1.0.9-next.1 + - @backstage/integration-react@1.1.7-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/errors@1.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.0.2-next.1 + +## @backstage/integration@1.4.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.0.5-next.1 + - @backstage/errors@1.1.4-next.1 + +## @backstage/integration-react@1.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/theme@0.2.16 + +## @techdocs/cli@1.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/plugin-techdocs-node@1.4.3-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/cli-common@0.1.10 + +## @backstage/test-utils@1.2.3-next.1 + +### Patch Changes + +- 5e238ed56a: The test utility for the plugin context called `MockPluginProvider` has been created. It will be handy in the cases when you use + `__experimentalConfigure` in your plugin. It is experimental and exported through `@backstage/test-utils/alpha`. +- c3fa90e184: Updated dependency `zen-observable` to `^0.10.0`. +- Updated dependencies + - @backstage/core-app-api@1.2.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/plugin-permission-react@0.4.8-next.1 + - @backstage/theme@0.2.16 + - @backstage/plugin-permission-common@0.7.2-next.1 + +## @backstage/types@1.0.2-next.1 + +### Patch Changes + +- c3fa90e184: Updated dependency `zen-observable` to `^0.10.0`. + +## @backstage/version-bridge@1.0.3-next.0 + +### Patch Changes + +- d3fea4ae0a: Internal fixes to avoid implicit usage of globals + +## @backstage/plugin-adr@0.2.4-next.1 + +### Patch Changes + +- a19cffbeed: Update search links to only have header as linkable text +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/plugin-search-react@1.2.2-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/integration-react@1.1.7-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + - @backstage/plugin-adr-common@0.2.4-next.1 + - @backstage/plugin-search-common@1.1.2-next.1 + +## @backstage/plugin-adr-backend@0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/catalog-client@1.2.0-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/plugin-adr-common@0.2.4-next.1 + - @backstage/plugin-search-common@1.1.2-next.1 + +## @backstage/plugin-adr-common@0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.4.1-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/plugin-search-common@1.1.2-next.1 + +## @backstage/plugin-airbrake@0.3.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/test-utils@1.2.3-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/dev-utils@1.0.9-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-airbrake-backend@0.2.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/config@1.0.5-next.1 + +## @backstage/plugin-allure@0.1.28-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-analytics-module-ga@0.1.23-next.1 + +### Patch Changes + +- d3fea4ae0a: Internal fixes to avoid implicit usage of globals +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-apache-airflow@0.2.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + +## @backstage/plugin-api-docs@0.8.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/plugin-catalog@1.6.2-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-apollo-explorer@0.1.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-app-backend@0.3.39-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/config-loader@1.1.7-next.1 + - @backstage/backend-plugin-api@0.1.5-next.1 + - @backstage/config@1.0.5-next.1 + +## @backstage/plugin-auth-backend@0.17.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/plugin-auth-node@0.2.8-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/catalog-client@1.2.0-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + +## @backstage/plugin-auth-node@0.2.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/errors@1.1.4-next.1 + +## @backstage/plugin-azure-devops@0.2.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/theme@0.2.16 + - @backstage/plugin-azure-devops-common@0.3.0 + +## @backstage/plugin-azure-devops-backend@0.3.18-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/plugin-azure-devops-common@0.3.0 + +## @backstage/plugin-azure-sites@0.1.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + - @backstage/plugin-azure-sites-common@0.1.0 + +## @backstage/plugin-azure-sites-backend@0.1.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/plugin-azure-sites-common@0.1.0 + +## @backstage/plugin-badges@0.2.36-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-badges-backend@0.1.33-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/catalog-client@1.2.0-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + +## @backstage/plugin-bazaar@0.2.1-next.1 + +### Patch Changes + +- 9b1891061c: `HomePageBazaarInfoCard` is now displaying `title` instead of `name`. Title is a string that doesn't have to be URL friendly. + The BazaarOverviewCard have the new property `fullHeight`. Link in `BazaarOverviewCard`is moved to header in card. +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/plugin-catalog@1.6.2-next.1 + - @backstage/cli@0.21.2-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-client@1.2.0-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + +## @backstage/plugin-bazaar-backend@0.2.2-next.1 + +### Patch Changes + +- 9b1891061c: Column `title` has replaced column `name` for `BazaarProject` in database +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/backend-test-utils@0.1.31-next.1 + - @backstage/plugin-auth-node@0.2.8-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/errors@1.1.4-next.1 + +## @backstage/plugin-bitbucket-cloud-common@0.2.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.4.1-next.1 + +## @backstage/plugin-bitrise@0.1.39-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-catalog@1.6.2-next.1 + +### Patch Changes + +- d3fea4ae0a: Internal fixes to avoid implicit usage of globals +- ca04d97b09: Handle refresh entity error in `AboutCard`. +- a19cffbeed: Update search links to only have header as linkable text +- c3fa90e184: Updated dependency `zen-observable` to `^0.10.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/plugin-search-react@1.2.2-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/integration-react@1.1.7-next.1 + - @backstage/catalog-client@1.2.0-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-common@1.0.9-next.1 + - @backstage/plugin-search-common@1.1.2-next.1 + +## @backstage/plugin-catalog-backend-module-aws@0.1.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/plugin-catalog-backend@1.6.0-next.1 + - @backstage/backend-tasks@0.4.0-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/backend-plugin-api@0.1.5-next.1 + - @backstage/plugin-catalog-node@1.2.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + +## @backstage/plugin-catalog-backend-module-azure@0.1.10-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/plugin-catalog-backend@1.6.0-next.1 + - @backstage/backend-tasks@0.4.0-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/backend-plugin-api@0.1.5-next.1 + - @backstage/plugin-catalog-node@1.2.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + +## @backstage/plugin-catalog-backend-module-bitbucket@0.2.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/plugin-catalog-backend@1.6.0-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/plugin-bitbucket-cloud-common@0.2.2-next.1 + +## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.1.6-next.1 + +### Patch Changes + +- 4eb0bce299: Fix repo:push topic not matching `BitbucketCloudEventRouter`. +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/plugin-catalog-backend@1.6.0-next.1 + - @backstage/backend-tasks@0.4.0-next.1 + - @backstage/backend-plugin-api@0.1.5-next.1 + - @backstage/plugin-catalog-node@1.2.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/catalog-client@1.2.0-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/plugin-bitbucket-cloud-common@0.2.2-next.1 + - @backstage/plugin-catalog-common@1.0.9-next.1 + - @backstage/plugin-events-node@0.2.0-next.1 + +## @backstage/plugin-catalog-backend-module-bitbucket-server@0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/plugin-catalog-backend@1.6.0-next.1 + - @backstage/backend-tasks@0.4.0-next.1 + - @backstage/backend-plugin-api@0.1.5-next.1 + - @backstage/plugin-catalog-node@1.2.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + +## @backstage/plugin-catalog-backend-module-gerrit@0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/plugin-catalog-backend@1.6.0-next.1 + - @backstage/backend-tasks@0.4.0-next.1 + - @backstage/backend-plugin-api@0.1.5-next.1 + - @backstage/plugin-catalog-node@1.2.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + +## @backstage/plugin-catalog-backend-module-github@0.2.2-next.1 + +### Patch Changes + +- fe93cce743: Added the githubCredentialsProvider property to the GithubLocationAnalyzerOptions to be able to override the GithubCredentialsProvider. + +- a0fd4af94a: Handle GitHub `push` events at the `GithubEntityProvider` by subscribing to the topic `github.push.` + + Implements `EventSubscriber` to receive events for the topic `github.push`. + + On `github.push`, the affected repository will be refreshed. + This includes adding new Location entities, refreshing existing ones, + and removing obsolete ones. + + Please find more information at + + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/plugin-catalog-backend@1.6.0-next.1 + - @backstage/backend-tasks@0.4.0-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/backend-plugin-api@0.1.5-next.1 + - @backstage/plugin-catalog-node@1.2.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/catalog-client@1.2.0-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/plugin-catalog-common@1.0.9-next.1 + - @backstage/plugin-events-node@0.2.0-next.1 + +## @backstage/plugin-catalog-backend-module-gitlab@0.1.10-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/plugin-catalog-backend@1.6.0-next.1 + - @backstage/backend-tasks@0.4.0-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/backend-plugin-api@0.1.5-next.1 + - @backstage/plugin-catalog-node@1.2.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + +## @backstage/plugin-catalog-backend-module-ldap@0.5.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.6.0-next.1 + - @backstage/backend-tasks@0.4.0-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + +## @backstage/plugin-catalog-backend-module-msgraph@0.4.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.6.0-next.1 + - @backstage/backend-tasks@0.4.0-next.1 + - @backstage/backend-plugin-api@0.1.5-next.1 + - @backstage/plugin-catalog-node@1.2.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/catalog-model@1.1.4-next.1 + +## @backstage/plugin-catalog-backend-module-openapi@0.1.5-next.1 + +### Patch Changes + +- dd995cdc72: Enabled support of resolving `$refs` in all kind of yaml documents, not only OpenAPI. This implicitly adds `$ref` resolving support for AsyncAPI specs. Thus, the `openApiPlaceholderResolver` has been renamed to `jsonSchemaRefPlaceholderResolver`. +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/plugin-catalog-backend@1.6.0-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/plugin-catalog-node@1.2.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/catalog-model@1.1.4-next.1 + +## @backstage/plugin-catalog-common@1.0.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/plugin-permission-common@0.7.2-next.1 + - @backstage/plugin-search-common@1.1.2-next.1 + +## @backstage/plugin-catalog-graph@0.2.24-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-client@1.2.0-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-catalog-graphql@0.3.16-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.0.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/catalog-model@1.1.4-next.1 + +## @backstage/plugin-catalog-import@0.9.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/integration-react@1.1.7-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/catalog-client@1.2.0-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/plugin-catalog-common@1.0.9-next.1 + +## @backstage/plugin-catalog-node@1.2.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.0.2-next.1 + - @backstage/backend-plugin-api@0.1.5-next.1 + - @backstage/catalog-client@1.2.0-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/plugin-catalog-common@1.0.9-next.1 + +## @backstage/plugin-catalog-react@1.2.2-next.1 + +### Patch Changes + +- c3fa90e184: Updated dependency `zen-observable` to `^0.10.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/version-bridge@1.0.3-next.0 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/plugin-permission-react@0.4.8-next.1 + - @backstage/catalog-client@1.2.0-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-common@1.0.9-next.1 + - @backstage/plugin-permission-common@0.7.2-next.1 + +## @backstage/plugin-cicd-statistics@0.1.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-model@1.1.4-next.1 + +## @backstage/plugin-cicd-statistics-module-gitlab@0.1.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/plugin-cicd-statistics@0.1.14-next.1 + +## @backstage/plugin-circleci@0.3.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-cloudbuild@0.3.12-next.1 + +### Patch Changes + +- d3fea4ae0a: Internal fixes to avoid implicit usage of globals +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-code-climate@0.1.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-code-coverage@0.2.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-code-coverage-backend@0.2.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/catalog-client@1.2.0-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + +## @backstage/plugin-codescene@0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-config-schema@0.1.35-next.1 + +### Patch Changes + +- c3fa90e184: Updated dependency `zen-observable` to `^0.10.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-cost-insights@0.12.1-next.1 + +### Patch Changes + +- d379b6f070: Internal refactor to avoid usage of deprecated symbols +- f97c7fd1f7: added an optional config entry `costInsights.engineerThreshold` to allow users to control the threshold value for the 'negligible' change in costs. +- a5ecdb99f0: Making a possibility to hide a trending line in a cost insights plugin +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/test-utils@1.2.3-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + - @backstage/plugin-cost-insights-common@0.1.1 + +## @backstage/plugin-dynatrace@1.0.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-events-backend@0.2.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/backend-plugin-api@0.1.5-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/plugin-events-node@0.2.0-next.1 + +## @backstage/plugin-events-backend-module-aws-sqs@0.1.1-next.1 + +### Patch Changes + +- dd008a10c1: Upgrade to AWS SDK for Javascript v3 +- Updated dependencies + - @backstage/backend-tasks@0.4.0-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/backend-plugin-api@0.1.5-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/plugin-events-node@0.2.0-next.1 + +## @backstage/plugin-events-backend-module-azure@0.1.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.1.5-next.1 + - @backstage/plugin-events-node@0.2.0-next.1 + +## @backstage/plugin-events-backend-module-bitbucket-cloud@0.1.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.1.5-next.1 + - @backstage/plugin-events-node@0.2.0-next.1 + +## @backstage/plugin-events-backend-module-gerrit@0.1.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.1.5-next.1 + - @backstage/plugin-events-node@0.2.0-next.1 + +## @backstage/plugin-events-backend-module-github@0.1.1-next.1 + +### Patch Changes + +- 0f46ec304c: Add `createGithubSignatureValidator(config)` which can be used + to create a validator used at an ingress for topic `github`. + + On top, there is a new `githubWebhookEventsModule` for the new backend plugin API + which auto-registers the `HttpPostIngress` for topic `github` incl. the validator. + + Please find more information at + . + +- Updated dependencies + - @backstage/backend-plugin-api@0.1.5-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/plugin-events-node@0.2.0-next.1 + +## @backstage/plugin-events-backend-module-gitlab@0.1.1-next.1 + +### Patch Changes + +- 31fe8f256a: Add `createGitlabTokenValidator(config)` which can be used + to create a validator used at an ingress for topic `gitlab`. + + On top, there is a new `gitlabWebhookEventsModule` for the new backend plugin API + which auto-registers the `HttpPostIngress` for topic `gitlab` incl. the validator. + + Please find more information at + . + +- Updated dependencies + - @backstage/backend-plugin-api@0.1.5-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/plugin-events-node@0.2.0-next.1 + +## @backstage/plugin-events-backend-test-utils@0.1.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.2.0-next.1 + +## @backstage/plugin-events-node@0.2.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.1.5-next.1 + +## @backstage/plugin-explore@0.3.43-next.1 + +### Patch Changes + +- 4dec6f16be: Added new `@backstage/plugin-explore-backend` & `@backstage/plugin-explore-common` packages. + + This deprecates the `ExploreToolsConfig` API (in `@backstage/plugin-explore-react`) which is replaced by the `ExploreApi` & `ExploreClient`. The list of `ExploreTool` data can now be provided on the backend by either using the supplied `StaticExploreToolProvider` or by implementing a custom `ExploreToolProvider`. See the [explore-backend README](https://github.com/backstage/backstage/blob/master/plugins/explore-backend/README.md) for full details. + + NOTE: Existing installations that have customized the `ExploreToolConfig` will continue to work through the new `ExploreClient`. However, existing data should be migrated over to new `explore-backend` plugin as `ExploreToolConfig` will be removed in the future. + + BREAKING CHANGE: If you have previously installed the `explore` plugin, but not yet customized the `ExploreToolConfig` API in your `packages/app`, this will result in an empty list of tools. + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/plugin-search-react@1.2.2-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/plugin-explore-common@0.0.1-next.0 + - @backstage/plugin-explore-react@0.0.24-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/theme@0.2.16 + - @backstage/plugin-search-common@1.1.2-next.1 + +## @backstage/plugin-explore-backend@0.0.1-next.0 + +### Patch Changes + +- 4dec6f16be: Added new `@backstage/plugin-explore-backend` & `@backstage/plugin-explore-common` packages. + + This deprecates the `ExploreToolsConfig` API (in `@backstage/plugin-explore-react`) which is replaced by the `ExploreApi` & `ExploreClient`. The list of `ExploreTool` data can now be provided on the backend by either using the supplied `StaticExploreToolProvider` or by implementing a custom `ExploreToolProvider`. See the [explore-backend README](https://github.com/backstage/backstage/blob/master/plugins/explore-backend/README.md) for full details. + + NOTE: Existing installations that have customized the `ExploreToolConfig` will continue to work through the new `ExploreClient`. However, existing data should be migrated over to new `explore-backend` plugin as `ExploreToolConfig` will be removed in the future. + + BREAKING CHANGE: If you have previously installed the `explore` plugin, but not yet customized the `ExploreToolConfig` API in your `packages/app`, this will result in an empty list of tools. + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/plugin-explore-common@0.0.1-next.0 + - @backstage/config@1.0.5-next.1 + - @backstage/plugin-search-common@1.1.2-next.1 + +## @backstage/plugin-explore-common@0.0.1-next.0 + +### Patch Changes + +- 4dec6f16be: Added new `@backstage/plugin-explore-backend` & `@backstage/plugin-explore-common` packages. + + This deprecates the `ExploreToolsConfig` API (in `@backstage/plugin-explore-react`) which is replaced by the `ExploreApi` & `ExploreClient`. The list of `ExploreTool` data can now be provided on the backend by either using the supplied `StaticExploreToolProvider` or by implementing a custom `ExploreToolProvider`. See the [explore-backend README](https://github.com/backstage/backstage/blob/master/plugins/explore-backend/README.md) for full details. + + NOTE: Existing installations that have customized the `ExploreToolConfig` will continue to work through the new `ExploreClient`. However, existing data should be migrated over to new `explore-backend` plugin as `ExploreToolConfig` will be removed in the future. + + BREAKING CHANGE: If you have previously installed the `explore` plugin, but not yet customized the `ExploreToolConfig` API in your `packages/app`, this will result in an empty list of tools. + +## @backstage/plugin-explore-react@0.0.24-next.1 + +### Patch Changes + +- 4dec6f16be: Added new `@backstage/plugin-explore-backend` & `@backstage/plugin-explore-common` packages. + + This deprecates the `ExploreToolsConfig` API (in `@backstage/plugin-explore-react`) which is replaced by the `ExploreApi` & `ExploreClient`. The list of `ExploreTool` data can now be provided on the backend by either using the supplied `StaticExploreToolProvider` or by implementing a custom `ExploreToolProvider`. See the [explore-backend README](https://github.com/backstage/backstage/blob/master/plugins/explore-backend/README.md) for full details. + + NOTE: Existing installations that have customized the `ExploreToolConfig` will continue to work through the new `ExploreClient`. However, existing data should be migrated over to new `explore-backend` plugin as `ExploreToolConfig` will be removed in the future. + + BREAKING CHANGE: If you have previously installed the `explore` plugin, but not yet customized the `ExploreToolConfig` API in your `packages/app`, this will result in an empty list of tools. + +- Updated dependencies + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-explore-common@0.0.1-next.0 + +## @backstage/plugin-firehydrant@0.1.29-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-fossa@0.2.44-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-gcalendar@0.3.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-gcp-projects@0.3.31-next.1 + +### Patch Changes + +- d3fea4ae0a: Internal fixes to avoid implicit usage of globals +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-git-release-manager@0.3.25-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-github-actions@0.5.12-next.1 + +### Patch Changes + +- d3fea4ae0a: Internal fixes to avoid implicit usage of globals +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-github-deployments@0.1.43-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/integration-react@1.1.7-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-github-issues@0.2.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-github-pull-requests-board@0.1.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-gitops-profiles@0.3.30-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-gocd@0.1.18-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-graphiql@0.2.44-next.1 + +### Patch Changes + +- d3fea4ae0a: Internal fixes to avoid implicit usage of globals +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-graphql-backend@0.1.29-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/plugin-catalog-graphql@0.3.16-next.1 + +## @backstage/plugin-home@0.4.28-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/plugin-stack-overflow@0.1.8-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-ilert@0.2.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-jenkins@0.7.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/theme@0.2.16 + - @backstage/plugin-jenkins-common@0.1.11-next.1 + +## @backstage/plugin-jenkins-backend@0.1.29-next.1 + +### Patch Changes + +- cfe2b98fbe: Remove unnecessary dependency promise-any-polyfill +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/plugin-auth-node@0.2.8-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/catalog-client@1.2.0-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/plugin-jenkins-common@0.1.11-next.1 + - @backstage/plugin-permission-common@0.7.2-next.1 + +## @backstage/plugin-jenkins-common@0.1.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-common@1.0.9-next.1 + - @backstage/plugin-permission-common@0.7.2-next.1 + +## @backstage/plugin-kafka@0.3.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-kafka-backend@0.2.32-next.1 + +### Patch Changes + +- 0b54dbaf7d: Internal tweak to adapt to `kafkajs` 2.2.3 +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + +## @backstage/plugin-kubernetes@0.7.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + - @backstage/plugin-kubernetes-common@0.4.5-next.1 + +## @backstage/plugin-kubernetes-backend@0.8.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/backend-test-utils@0.1.31-next.1 + - @backstage/plugin-auth-node@0.2.8-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/catalog-client@1.2.0-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/plugin-kubernetes-common@0.4.5-next.1 + +## @backstage/plugin-kubernetes-common@0.4.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.1.4-next.1 + +## @backstage/plugin-lighthouse@0.3.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-newrelic@0.3.30-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-newrelic-dashboard@0.2.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + +## @backstage/plugin-org@0.6.2-next.1 + +### Patch Changes + +- 67cedfe42e: Update `UserProfileCard` and `GroupProfileCard` to not render links unless the `showLinks` prop is set. The primary component for rendering links are the `EntityLinksCard` from plugin-catalog. +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-org-react@0.1.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-client@1.2.0-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-pagerduty@0.5.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-periskop@0.1.10-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-periskop-backend@0.1.10-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/config@1.0.5-next.1 + +## @backstage/plugin-permission-backend@0.5.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/plugin-auth-node@0.2.8-next.1 + - @backstage/plugin-permission-node@0.7.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/plugin-permission-common@0.7.2-next.1 + +## @backstage/plugin-permission-common@0.7.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.0.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/errors@1.1.4-next.1 + +## @backstage/plugin-permission-node@0.7.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/plugin-auth-node@0.2.8-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/plugin-permission-common@0.7.2-next.1 + +## @backstage/plugin-permission-react@0.4.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/plugin-permission-common@0.7.2-next.1 + +## @backstage/plugin-playlist@0.1.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/plugin-search-react@1.2.2-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/plugin-permission-react@0.4.8-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-common@1.0.9-next.1 + - @backstage/plugin-permission-common@0.7.2-next.1 + - @backstage/plugin-playlist-common@0.1.3-next.1 + +## @backstage/plugin-playlist-backend@0.2.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/backend-test-utils@0.1.31-next.1 + - @backstage/plugin-auth-node@0.2.8-next.1 + - @backstage/plugin-permission-node@0.7.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/catalog-client@1.2.0-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/plugin-permission-common@0.7.2-next.1 + - @backstage/plugin-playlist-common@0.1.3-next.1 + +## @backstage/plugin-playlist-common@0.1.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.7.2-next.1 + +## @backstage/plugin-proxy-backend@0.2.33-next.1 + +### Patch Changes + +- 03843259b4: Documented the `createRouter` method. +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/config@1.0.5-next.1 + +## @backstage/plugin-rollbar@0.4.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-rollbar-backend@0.1.36-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/config@1.0.5-next.1 + +## @backstage/plugin-scaffolder@1.9.0-next.1 + +### Patch Changes + +- c3fa90e184: Updated dependency `zen-observable` to `^0.10.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/integration-react@1.1.7-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/plugin-permission-react@0.4.8-next.1 + - @backstage/catalog-client@1.2.0-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-common@1.0.9-next.1 + - @backstage/plugin-scaffolder-common@1.2.3-next.1 + +## @backstage/plugin-scaffolder-backend@1.8.1-next.1 + +### Patch Changes + +- c3fa90e184: Updated dependency `zen-observable` to `^0.10.0`. +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/plugin-catalog-backend@1.6.0-next.1 + - @backstage/backend-tasks@0.4.0-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/backend-plugin-api@0.1.5-next.1 + - @backstage/plugin-auth-node@0.2.8-next.1 + - @backstage/plugin-catalog-node@1.2.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/catalog-client@1.2.0-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/plugin-scaffolder-common@1.2.3-next.1 + +## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.2.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/plugin-scaffolder-backend@1.8.1-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/errors@1.1.4-next.1 + +## @backstage/plugin-scaffolder-backend-module-rails@0.4.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/plugin-scaffolder-backend@1.8.1-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/errors@1.1.4-next.1 + +## @backstage/plugin-scaffolder-backend-module-yeoman@0.2.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.0.2-next.1 + - @backstage/plugin-scaffolder-backend@1.8.1-next.1 + - @backstage/config@1.0.5-next.1 + +## @backstage/plugin-scaffolder-common@1.2.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.0.2-next.1 + - @backstage/catalog-model@1.1.4-next.1 + +## @backstage/plugin-search@1.0.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/version-bridge@1.0.3-next.0 + - @backstage/plugin-search-react@1.2.2-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/theme@0.2.16 + - @backstage/plugin-search-common@1.1.2-next.1 + +## @backstage/plugin-search-backend@1.1.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/plugin-search-backend-node@1.0.5-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/plugin-auth-node@0.2.8-next.1 + - @backstage/plugin-permission-node@0.7.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/plugin-permission-common@0.7.2-next.1 + - @backstage/plugin-search-common@1.1.2-next.1 + +## @backstage/plugin-search-backend-module-elasticsearch@1.0.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-node@1.0.5-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/plugin-search-common@1.1.2-next.1 + +## @backstage/plugin-search-backend-module-pg@0.4.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/plugin-search-backend-node@1.0.5-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/plugin-search-common@1.1.2-next.1 + +## @backstage/plugin-search-backend-node@1.0.5-next.1 + +### Patch Changes + +- de8a975911: Changed to use native `AbortController` and `AbortSignal` from Node.js, instead + of the one from `node-abort-controller`. This is possible now that the minimum + supported Node.js version of the project is 16. + + Note that their interfaces are very slightly different, but typically not in a + way that matters to consumers. If you see any typescript errors as a direct + result from this, they are compatible with each other in the ways that we + interact with them, and should be possible to type-cast across without ill + effects. + +- 54c5836f7a: Use of `TestPipeline.withSubject()` is now deprecated. Instead, use the `fromCollator`, `fromDecorator`, or `fromIndexer` static methods to instantiate a test pipeline. You may also use the class' `withCollator`, `withDecorator`, and `withIndexer` instance methods to build test pipelines that consist of multiple test subjects. + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/backend-tasks@0.4.0-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/plugin-permission-common@0.7.2-next.1 + - @backstage/plugin-search-common@1.1.2-next.1 + +## @backstage/plugin-search-common@1.1.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.0.2-next.1 + - @backstage/plugin-permission-common@0.7.2-next.1 + +## @backstage/plugin-search-react@1.2.2-next.1 + +### Patch Changes + +- a19cffbeed: Update search links to only have header as linkable text +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/version-bridge@1.0.3-next.0 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/theme@0.2.16 + - @backstage/plugin-search-common@1.1.2-next.1 + +## @backstage/plugin-sentry@0.4.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-shortcuts@0.3.4-next.1 + +### Patch Changes + +- c3fa90e184: Updated dependency `zen-observable` to `^0.10.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-sonarqube@0.5.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-sonarqube-backend@0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/errors@1.1.4-next.1 + +## @backstage/plugin-splunk-on-call@0.4.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-stack-overflow@0.1.8-next.1 + +### Patch Changes + +- a19cffbeed: Update search links to only have header as linkable text +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-home@0.4.28-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/theme@0.2.16 + - @backstage/plugin-search-common@1.1.2-next.1 + +## @backstage/plugin-stack-overflow-backend@0.1.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.21.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/plugin-search-common@1.1.2-next.1 + +## @backstage/plugin-tech-insights@0.3.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/theme@0.2.16 + - @backstage/plugin-tech-insights-common@0.2.9-next.1 + +## @backstage/plugin-tech-insights-backend@0.5.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/backend-tasks@0.4.0-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/plugin-tech-insights-node@0.3.7-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/catalog-client@1.2.0-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/plugin-tech-insights-common@0.2.9-next.1 + +## @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.23-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/plugin-tech-insights-node@0.3.7-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/plugin-tech-insights-common@0.2.9-next.1 + +## @backstage/plugin-tech-insights-common@0.2.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.0.2-next.1 + +## @backstage/plugin-tech-insights-node@0.3.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/backend-tasks@0.4.0-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/plugin-tech-insights-common@0.2.9-next.1 + +## @backstage/plugin-tech-radar@0.5.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-techdocs@1.4.1-next.1 + +### Patch Changes + +- d3fea4ae0a: Internal fixes to avoid implicit usage of globals +- a19cffbeed: Update search links to only have header as linkable text +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/plugin-search-react@1.2.2-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/integration-react@1.1.7-next.1 + - @backstage/plugin-techdocs-react@1.0.7-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/theme@0.2.16 + - @backstage/plugin-search-common@1.1.2-next.1 + +## @backstage/plugin-techdocs-addons-test-utils@1.0.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-app-api@1.2.1-next.1 + - @backstage/core-components@0.12.1-next.1 + - @backstage/plugin-catalog@1.6.2-next.1 + - @backstage/plugin-techdocs@1.4.1-next.1 + - @backstage/test-utils@1.2.3-next.1 + - @backstage/plugin-search-react@1.2.2-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/integration-react@1.1.7-next.1 + - @backstage/plugin-techdocs-react@1.0.7-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-techdocs-backend@1.4.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/plugin-techdocs-node@1.4.3-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/catalog-client@1.2.0-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/plugin-catalog-common@1.0.9-next.1 + - @backstage/plugin-permission-common@0.7.2-next.1 + - @backstage/plugin-search-common@1.1.2-next.1 + +## @backstage/plugin-techdocs-module-addons-contrib@1.0.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/integration-react@1.1.7-next.1 + - @backstage/plugin-techdocs-react@1.0.7-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-techdocs-node@1.4.3-next.1 + +### Patch Changes + +- 0a61aab172: Bump dependency @azure/identity to next minor + +- 37931c33ce: Upgrade to AWS SDK for Javascript v3 + + Techdocs support for AWS S3 now requires defining the AWS region to connect to. + If `techdocs.publisher.awsS3.region` is missing from the config, the AWS environment variable `AWS_REGION` will be used. + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/plugin-search-common@1.1.2-next.1 + +## @backstage/plugin-techdocs-react@1.0.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/version-bridge@1.0.3-next.0 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/catalog-model@1.1.4-next.1 + +## @backstage/plugin-todo@0.2.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-todo-backend@0.1.36-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/catalog-client@1.2.0-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + +## @backstage/plugin-user-settings@0.6.0-next.1 + +### Patch Changes + +- c3fa90e184: Updated dependency `zen-observable` to `^0.10.0`. +- Updated dependencies + - @backstage/core-app-api@1.2.1-next.1 + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-user-settings-backend@0.1.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/plugin-auth-node@0.2.8-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + +## @backstage/plugin-vault@0.1.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @backstage/plugin-vault-backend@0.2.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/backend-tasks@0.4.0-next.1 + - @backstage/backend-test-utils@0.1.31-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/errors@1.1.4-next.1 + +## @backstage/plugin-xcmetrics@0.2.32-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## example-app@0.2.78-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-app-api@1.2.1-next.1 + - @backstage/core-components@0.12.1-next.1 + - @backstage/plugin-cloudbuild@0.3.12-next.1 + - @backstage/plugin-gcp-projects@0.3.31-next.1 + - @backstage/plugin-github-actions@0.5.12-next.1 + - @backstage/plugin-graphiql@0.2.44-next.1 + - @backstage/plugin-techdocs@1.4.1-next.1 + - @backstage/plugin-cost-insights@0.12.1-next.1 + - @backstage/plugin-search-react@1.2.2-next.1 + - @backstage/plugin-stack-overflow@0.1.8-next.1 + - @backstage/cli@0.21.2-next.1 + - @backstage/plugin-org@0.6.2-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/plugin-scaffolder@1.9.0-next.1 + - @backstage/plugin-shortcuts@0.3.4-next.1 + - @backstage/plugin-user-settings@0.6.0-next.1 + - @backstage/plugin-explore@0.3.43-next.1 + - @backstage/app-defaults@1.0.9-next.1 + - @backstage/plugin-apache-airflow@0.2.5-next.1 + - @backstage/plugin-api-docs@0.8.12-next.1 + - @backstage/plugin-azure-devops@0.2.3-next.1 + - @backstage/plugin-azure-sites@0.1.1-next.1 + - @backstage/plugin-badges@0.2.36-next.1 + - @backstage/plugin-catalog-graph@0.2.24-next.1 + - @backstage/plugin-catalog-import@0.9.2-next.1 + - @backstage/plugin-circleci@0.3.12-next.1 + - @backstage/plugin-code-coverage@0.2.5-next.1 + - @backstage/plugin-dynatrace@1.0.2-next.1 + - @backstage/plugin-gcalendar@0.3.8-next.1 + - @backstage/plugin-gocd@0.1.18-next.1 + - @backstage/plugin-home@0.4.28-next.1 + - @backstage/plugin-jenkins@0.7.11-next.1 + - @backstage/plugin-kafka@0.3.12-next.1 + - @backstage/plugin-kubernetes@0.7.5-next.1 + - @backstage/plugin-lighthouse@0.3.12-next.1 + - @backstage/plugin-newrelic@0.3.30-next.1 + - @backstage/plugin-pagerduty@0.5.5-next.1 + - @backstage/plugin-playlist@0.1.3-next.1 + - @backstage/plugin-rollbar@0.4.12-next.1 + - @backstage/plugin-search@1.0.5-next.1 + - @backstage/plugin-sentry@0.4.5-next.1 + - @backstage/plugin-tech-insights@0.3.4-next.1 + - @backstage/plugin-tech-radar@0.5.19-next.1 + - @backstage/plugin-techdocs-module-addons-contrib@1.0.7-next.1 + - @backstage/plugin-todo@0.2.14-next.1 + - @backstage/integration-react@1.1.7-next.1 + - @backstage/plugin-airbrake@0.3.12-next.1 + - @backstage/plugin-newrelic-dashboard@0.2.5-next.1 + - @backstage/plugin-techdocs-react@1.0.7-next.1 + - @internal/plugin-catalog-customized@0.0.5-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/plugin-permission-react@0.4.8-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-common@1.0.9-next.1 + - @backstage/plugin-search-common@1.1.2-next.1 + +## example-backend@0.2.78-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/plugin-catalog-backend@1.6.0-next.1 + - @backstage/plugin-kafka-backend@0.2.32-next.1 + - @backstage/backend-tasks@0.4.0-next.1 + - @backstage/plugin-search-backend-node@1.0.5-next.1 + - @backstage/plugin-jenkins-backend@0.1.29-next.1 + - @backstage/plugin-scaffolder-backend@1.8.1-next.1 + - @backstage/plugin-explore-backend@0.0.1-next.0 + - @backstage/plugin-proxy-backend@0.2.33-next.1 + - @backstage/plugin-app-backend@0.3.39-next.1 + - @backstage/plugin-auth-backend@0.17.2-next.1 + - @backstage/plugin-auth-node@0.2.8-next.1 + - @backstage/plugin-azure-devops-backend@0.3.18-next.1 + - @backstage/plugin-azure-sites-backend@0.1.1-next.1 + - @backstage/plugin-badges-backend@0.1.33-next.1 + - @backstage/plugin-catalog-node@1.2.2-next.1 + - @backstage/plugin-code-coverage-backend@0.2.5-next.1 + - @backstage/plugin-events-backend@0.2.0-next.1 + - @backstage/plugin-graphql-backend@0.1.29-next.1 + - @backstage/plugin-kubernetes-backend@0.8.1-next.1 + - @backstage/plugin-permission-backend@0.5.14-next.1 + - @backstage/plugin-permission-node@0.7.2-next.1 + - @backstage/plugin-playlist-backend@0.2.2-next.1 + - @backstage/plugin-rollbar-backend@0.1.36-next.1 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.7-next.1 + - @backstage/plugin-search-backend@1.1.2-next.1 + - @backstage/plugin-search-backend-module-elasticsearch@1.0.5-next.1 + - @backstage/plugin-search-backend-module-pg@0.4.3-next.1 + - @backstage/plugin-tech-insights-backend@0.5.5-next.1 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.23-next.1 + - @backstage/plugin-tech-insights-node@0.3.7-next.1 + - @backstage/plugin-techdocs-backend@1.4.2-next.1 + - @backstage/plugin-todo-backend@0.1.36-next.1 + - example-app@0.2.78-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/catalog-client@1.2.0-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/plugin-events-node@0.2.0-next.1 + - @backstage/plugin-permission-common@0.7.2-next.1 + - @backstage/plugin-search-common@1.1.2-next.1 + +## example-backend-next@0.0.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.6.0-next.1 + - @backstage/plugin-scaffolder-backend@1.8.1-next.1 + - @backstage/plugin-app-backend@0.3.39-next.1 + - @backstage/backend-defaults@0.1.4-next.1 + +## techdocs-cli-embedded-app@0.2.77-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-app-api@1.2.1-next.1 + - @backstage/core-components@0.12.1-next.1 + - @backstage/plugin-catalog@1.6.2-next.1 + - @backstage/plugin-techdocs@1.4.1-next.1 + - @backstage/test-utils@1.2.3-next.1 + - @backstage/cli@0.21.2-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/app-defaults@1.0.9-next.1 + - @backstage/integration-react@1.1.7-next.1 + - @backstage/plugin-techdocs-react@1.0.7-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## @internal/plugin-catalog-customized@0.0.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog@1.6.2-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + +## @internal/plugin-todo-list@1.0.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/theme@0.2.16 + +## @internal/plugin-todo-list-backend@1.0.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/plugin-auth-node@0.2.8-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/errors@1.1.4-next.1 + +## @internal/plugin-todo-list-common@1.0.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.7.2-next.1 diff --git a/docs/tutorials/configuring-plugin-databases.md b/docs/tutorials/configuring-plugin-databases.md index 8cb78bff60..ed550f1801 100644 --- a/docs/tutorials/configuring-plugin-databases.md +++ b/docs/tutorials/configuring-plugin-databases.md @@ -21,8 +21,8 @@ instance or cluster. With infrastructure defined as code or data (Terraform, AWS CloudFormation, etc.), you may have database credentials which lack permissions to create new databases or you do not have control over the database names. In these -instances, you can set the database name and connection information on a per -plugin basis as mentioned earlier. +instances, you can set the database connection configuration on a [per plugin basis] +(#connection-configuration-per-plugin). Backstage supports all of these use cases with the `DatabaseManager` provided by `@backstage/backend-common`. We will now cover how to use and configure diff --git a/docs/tutorials/package-role-migration.md b/docs/tutorials/package-role-migration.md index 0af5fdb615..db84defd91 100644 --- a/docs/tutorials/package-role-migration.md +++ b/docs/tutorials/package-role-migration.md @@ -116,7 +116,7 @@ The way to execute this step of the migration is not as well defined as the prev - In places where the entire repo is being built, use `yarn backstage-cli repo build`, which also supports the `--since` flag. The migration here is a bit more nuanced as it depends on why you are building all packages. - If you are building all packages to **verify** that you are able to build them, you most likely want `backstage-cli repo build --all`. The `--all` flag signals that bundled packages like `packages/app` and `packages/backend` should be built as well. Pair this up with a `--since` flag in CI to avoid needing to build all packages. - If you are building all packages to **publish** them, then `backstage-cli repo build` is enough, as it builds all published packages. - - If you are building all packages to **deploy** them, you likely don't want to use the `repo` command at all, simply call `yarn build` in the packages you want to deploy instead. For example, if you are deploying the backend with a docker host build, it's enough to call `yarn build` inside `packages/backend`. + - If you are building all packages to **deploy** them, you likely don't want to use the `repo` command at all, simply call `yarn build` in the packages you want to deploy instead. For example, if you are deploying the backend with a docker host build, it's enough to call `yarn build` inside `packages/backend`. In a standard `@backstage/create-app` there is also a shorthand for building the backend from the root, `yarn build:backend`. ## FAQ diff --git a/docs/tutorials/quickstart-app-plugin.md b/docs/tutorials/quickstart-app-plugin.md index d1ca61a11f..ea0a511c93 100644 --- a/docs/tutorials/quickstart-app-plugin.md +++ b/docs/tutorials/quickstart-app-plugin.md @@ -20,7 +20,7 @@ title: Adding Custom Plugin to Existing Monorepo App > functionality, extend the Sidebar to make our life easy. Finally, we add > custom code to display GitHub repository information. > -> This document assumes you have Node.js 14 active along with Yarn and Python. +> This document assumes you have Node.js 16 active along with Yarn and Python. > Please note, that at the time of this writing, the current version is > 0.1.1-alpha.21. This guide can still be used with future versions, just, > verify as you go. If you run into issues, you can compare your setup with mine diff --git a/microsite/blog/2022-03-04-backstage-upgrade-helper.md b/microsite/blog/2022-03-04-backstage-upgrade-helper.md index a189e28cd5..80b3b9c0a8 100644 --- a/microsite/blog/2022-03-04-backstage-upgrade-helper.md +++ b/microsite/blog/2022-03-04-backstage-upgrade-helper.md @@ -29,7 +29,7 @@ We started by creating a fork from React Native’s open source project, applyin The Backstage Upgrade Helper tool enables adopters to easily upgrade their Backstage app by using the power of git to create a diff between different versions. -Whenever a new version of Backstage is released, the Helper scaffolds a new dummy Backstage app using the `backstage-create-app` cli utility and checks all the generated files in a specific git branch. After the branch is generated, it gets compared with all the existing ones, which results in generating specific git patches stored in specific files. By selecting the version of the current Backstage release together with the version you want to upgrade to, the UI knows which patch file needs to be picked up. +Whenever a new version of Backstage is released, the Helper scaffolds a new sample Backstage app using the `backstage-create-app` cli utility and checks all the generated files in a specific git branch. After the branch is generated, it gets compared with all the existing ones, which results in generating specific git patches stored in specific files. By selecting the version of the current Backstage release together with the version you want to upgrade to, the UI knows which patch file needs to be picked up. So, now you can update your Backstage application in three steps rather than manually reading the changelogs of all the Backstage modules in reverse order. diff --git a/microsite/blog/2022-10-28-backstagecon-kubecon-2022.md b/microsite/blog/2022-10-28-backstagecon-kubecon-2022.md new file mode 100644 index 0000000000..ffc44ed432 --- /dev/null +++ b/microsite/blog/2022-10-28-backstagecon-kubecon-2022.md @@ -0,0 +1,36 @@ +--- +title: 'ICYMI: BackstageCon & KubeCon NA 2022 Recap' +description: 'We had a great time in Detroit! Learn more about our first dedicated conference to Backstage and KubeCon NA 2022.' +author: Emma White, Spotify +authorURL: https://www.linkedin.com/in/emmamckeewhite/ +--- + +## ICYMI: BackstageCon & KubeCon NA 2022 Recap + + + +What an action-packed and memorable week for the Backstage community meeting up IRL at KubeCon North America 2022 in (unseasonably warm and sunny) Detroit. Let’s see what the community was up to: + +### BackstageCon: A full day of nothing but Backstage + + + +We started the week off strong, packing a ballroom for [BackstageCon](https://events.linuxfoundation.org/backstagecon-north-america/) on Monday. It was a smorgasbord of some of our active community members at the first official Backstage conference — as well as some new faces interested in learning more about Backstage! To welcome us, Roadie’s [Martina Iglesias Fernandez](https://github.com/martina-if) and Spotify’s [Suzanne Daniels](https://github.com/suuus) took center stage. Next up, we listened to three keynotes from the event’s top sponsors: Roadie’s [David Tuite](https://github.com/dtuite) enlightened us on how to 10x developer effectiveness for teams, [Dave Zolotusky](https://github.com/dzolotusky) from Spotify discussed developer happiness and [announced](https://www.linkedin.com/posts/spotify-r%26d_backstage-devex-activity-6990305201710587904-SnDQ?utm_source=share&utm_medium=member_desktop) that [Spotify Plugins for Backstage](https://backstage.spotify.com/blog/spotify-plugins-for-backstage/) are launching soon, and [Valentina Alaria](https://www.linkedin.com/in/valentinaalaria/) from VMware Tanzu talked about how to curate the Backstage experience to enable developer velocity. In between some creative snacks (lemon blueberry popcorn, anyone?) and coffee breaks, we heard from adopters including [Telus](https://backstage.spotify.com/blog/building-for-simplicity-TELUS/), [DAZN](https://backstage.spotify.com/blog/adopter-spotlight/dazn/), HP, US Bank, and more on lessons learned through their adoption journeys, we talked about different ways to leverage data within Backstage, and we discussed new ways to customize Backstage for specific adopter needs. + +You can watch all the BackstageCon sessions, talks, and keynotes [here](https://www.youtube.com/playlist?list=PLj6h78yzYM2OKySsTuiip3BqmdYZQRnSf)! + +### Project Meeting: Building a better Backstage together + + + +The following day, the Backstage maintainers hosted a lively project meeting, where we engaged with a lot of folks that had been at BackstageCon the day before. Over the course of the meeting, the Backstage community talked through recommended approaches for maintaining your Software Catalog as a source of truth, sourcing internal contributors for organization’s Backstage apps, improving frontend performance in a few plugins, how Backstage maintainers work, and appreciation for the contributions from our community. You can read more detailed notes from the project meeting in the repo [here](https://github.com/backstage/community/blob/main/project-meetings/kubecon-na-2022.md). + +### KubeCon: Demos, swag, and standing-room only + +And last but not least: three days of [KubeCon North America](https://events.linuxfoundation.org/kubecon-cloudnativecon-north-america/)! At KubeCon, the Backstage team met and greeted so many new faces at our kiosk in the Project Pavilion. We ran demos, answered questions, and handed out lots and lots of SWAG! + + + +Spotify’s [Francesco Corti](https://github.com/fcorti) and core maintainer [Ben Lambert](https://github.com/benjdlambert) took the stage on Wednesday to present the Backstage maintainer talk to a PACKED audience. They discussed how core features of Backstage are changing the way end-user developers interact and manage their ecosystem, and encouraged folks to create the future of developer experience with the rest of the Backstage community. If you missed it, no worries! Their talk track will be posted on the [CNCF YouTube channel](https://www.youtube.com/c/cloudnativefdn). + +…and that’s a wrap! What an incredible week. Our growing Backstage community continues to amaze us with its dedication and enthusiasm. We can’t wait to see you all again at KubeCon Europe in The Netherlands! In fact, we’d love to see our adopters give Backstage talks next year (hint, hint). The KubeCon Europe [CFP is open](https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/program/cfp/#overview) until Friday, November 18, 2022. diff --git a/microsite/blog/2022-11-15-linux-foundation-introduction-to-backstage-course.md b/microsite/blog/2022-11-15-linux-foundation-introduction-to-backstage-course.md new file mode 100644 index 0000000000..b762bd7e97 --- /dev/null +++ b/microsite/blog/2022-11-15-linux-foundation-introduction-to-backstage-course.md @@ -0,0 +1,16 @@ +--- +title: The Linux Foundation launches its Introduction to Backstage course +description: The new Linux Foundation course is available for free on edX and is designed to help individuals understand how to map Backstage to their organization needs +author: Jorge Lainfiesta, Roadie +authorURL: https://www.linkedin.com/in/jrlainfiesta/ +--- + +Backstage continues to grow in [popularity and maturity](https://roadie.io/blog/backstage-consolidating-its-role-in-the-cloud-native-ecosystem/), with industry leaders not only adopting the framework but actively participating in the community through contributions and commercial offerings. One of the most recent contributions comes from the Linux Foundation, [launching an introductory course](https://training.linuxfoundation.org/blog/23107/) aimed at DevOps engineers or professionals working on Developer Productivity or Developer Experience. The course is available for free on edX, with a paid option for the certified track. + +[](https://www.edx.org/course/introduction-to-backstage-developer-portals-made-easy) + + + +The course, [Introduction to Backstage: Developer Portals Made Easy (LFS142x)](https://www.edx.org/course/introduction-to-backstage-developer-portals-made-easy), starts discussing the benefits of adopting a Developer Portal. Then, it dives into what is Backstage, its main features (Catalog, Scaffolder, TechDocs), and how to map its capabilities to your organization. At last, it provides tips on how to connect with the community to ease up your adoption journey. + +The course author, [Jorge Lainfiesta](https://www.linkedin.com/in/jrlainfiesta/), is a Technical Marketing Manager at [Roadie](https://roadie.io). Jorge has a background in software engineering (PayPal) and digital communication (UCLA). He’s been working around Backstage since it was open sourced by Spotify and co-hosts community initiatives like the Backstage Users Unconference. diff --git a/microsite/blog/assets/2022-10-28/groupimage.jpg b/microsite/blog/assets/2022-10-28/groupimage.jpg new file mode 100644 index 0000000000..ef12667e0a Binary files /dev/null and b/microsite/blog/assets/2022-10-28/groupimage.jpg differ diff --git a/microsite/blog/assets/2022-10-28/preview.png b/microsite/blog/assets/2022-10-28/preview.png new file mode 100644 index 0000000000..67774e7744 Binary files /dev/null and b/microsite/blog/assets/2022-10-28/preview.png differ diff --git a/microsite/blog/assets/2022-10-28/project_meeting.jpg b/microsite/blog/assets/2022-10-28/project_meeting.jpg new file mode 100644 index 0000000000..8e3bc91ddf Binary files /dev/null and b/microsite/blog/assets/2022-10-28/project_meeting.jpg differ diff --git a/microsite/blog/assets/2022-10-28/real_project_meeting.jpeg b/microsite/blog/assets/2022-10-28/real_project_meeting.jpeg new file mode 100644 index 0000000000..f1e0ff40bf Binary files /dev/null and b/microsite/blog/assets/2022-10-28/real_project_meeting.jpeg differ diff --git a/microsite/blog/assets/22-11-15/Introduction-to-Backstage-Developer-Portals-Made-Easy-2-768x432.png b/microsite/blog/assets/22-11-15/Introduction-to-Backstage-Developer-Portals-Made-Easy-2-768x432.png new file mode 100644 index 0000000000..a789762cc1 Binary files /dev/null and b/microsite/blog/assets/22-11-15/Introduction-to-Backstage-Developer-Portals-Made-Easy-2-768x432.png differ diff --git a/microsite/data/plugins/announcements.yaml b/microsite/data/plugins/announcements.yaml new file mode 100644 index 0000000000..de80dcf6fe --- /dev/null +++ b/microsite/data/plugins/announcements.yaml @@ -0,0 +1,10 @@ +--- +title: Announcements +author: K-Phoen +authorUrl: https://github.com/K-Phoen +category: Discovery +description: Write and share announcements within Backstage. +documentation: https://github.com/K-Phoen/backstage-plugin-announcements/ +iconUrl: img/plugin-announcements-logo.png +npmPackageName: '@k-phoen/backstage-plugin-announcements' +addedDate: '2022-11-09' diff --git a/microsite/data/plugins/azure-spring-apps.yml b/microsite/data/plugins/azure-spring-apps.yml new file mode 100644 index 0000000000..5b41885ac4 --- /dev/null +++ b/microsite/data/plugins/azure-spring-apps.yml @@ -0,0 +1,10 @@ +--- +title: 'Azure Spring Apps' +author: Enfuse +authorUrl: https://enfuse.io/ +category: Discovery +description: Easily view your Azure Spring Apps service resources +documentation: https://github.com/enfuse/asae-backstage-plugin/blob/main/README.md +iconUrl: img/enfuse.png +npmPackageName: '@enfuse/plugin-azure-spring-apps' +addedDate: '2022-11-21' diff --git a/microsite/data/plugins/cicd-statistics.yaml b/microsite/data/plugins/cicd-statistics.yaml new file mode 100644 index 0000000000..a43b56b0d9 --- /dev/null +++ b/microsite/data/plugins/cicd-statistics.yaml @@ -0,0 +1,13 @@ +--- +title: CI/CD Statistics +author: Spotify +authorUrl: https://github.com/spotify +category: CI/CD +description: Visualize CI/CD pipeline statistics such as build time or success and error rates. +documentation: https://github.com/backstage/backstage/tree/master/plugins/cicd-statistics +iconUrl: img/cicd-statistics.svg +npmPackageName: '@backstage/plugin-cicd-statistics' +tags: + - ci + - cd +addedDate: '2022-01-13' diff --git a/microsite/data/plugins/cloudsmith.yaml b/microsite/data/plugins/cloudsmith.yaml new file mode 100644 index 0000000000..5fc417eec1 --- /dev/null +++ b/microsite/data/plugins/cloudsmith.yaml @@ -0,0 +1,13 @@ +--- +title: Cloudsmith +author: Roadie +authorUrl: https://roadie.io +category: CI/CD +description: Show Cloudsmith Repository stats on your backstage homepage. +documentation: https://github.com/RoadieHQ/roadie-backstage-plugins/tree/main/plugins/frontend/backstage-plugin-cloudsmith +iconUrl: https://cloudsmith.com/img/cloudsmith-mini-dark.svg +npmPackageName: '@roadiehq/backstage-plugin-cloudsmith' +tags: + - dashboards + - monitoring +addedDate: '2022-11-18' diff --git a/microsite/data/plugins/humanitec.yaml b/microsite/data/plugins/humanitec.yaml index 5b3c459116..1b79270582 100644 --- a/microsite/data/plugins/humanitec.yaml +++ b/microsite/data/plugins/humanitec.yaml @@ -6,7 +6,7 @@ category: Deployment # A single category e.g. CI, Machine Learning, Services, Mo description: | Show workloads, environments and resources deployed by Humanitec Platform Orchestrator. Plugin includes an Entity ComponentCard, Backend API route and scaffolder actions. -documentation: https://github.com/thefrontside/backstage/tree/main/plugins/humanitec +documentation: https://github.com/thefrontside/playhouse/tree/main/plugins/humanitec iconUrl: img/humanitec-logo.png npmPackageName: '@frontside/backstage-plugin-humanitec' addedDate: '2022-06-22' diff --git a/microsite/pages/en/community.js b/microsite/pages/en/community.js index 2e7801d581..a5fd5353e0 100644 --- a/microsite/pages/en/community.js +++ b/microsite/pages/en/community.js @@ -103,64 +103,79 @@ const Background = props => { Stay tuned to the latest developments + - - - Community sessions - - Maintainers and adopters meet monthly to share updates, demos, - and ideas. Yep, all sessions are recorded! - + + + + Community sessions + + Maintainers and adopters meet monthly to share updates, demos, + and ideas. Yep, all sessions are recorded! + + Join a session - - - Newsletter - - The official monthly Backstage newsletter. Don't miss the latest - news from your favorite project! - + + + + + Newsletter + + The official monthly Backstage newsletter. Don't miss the + latest news from your favorite project! + + Subscribe - - - Contributor Spotlight - - A recognition for valuable community work. Nominate contributing - members for their efforts! We'll put them in the spotlight ❤️ - + + + + + Contributor Spotlight + + A recognition for valuable community work. Nominate + contributing members for their efforts! We'll put them in the + spotlight ❤️ + + Nominate now - + + Community initiatives - - Open Mic Meetup - - A casual get together of Backstage users sharing their experiences - and helping each other. Hosted by{' '} - Roadie.io and{' '} - Frontside Software. - + + + Open Mic Meetup + + A casual get together of Backstage users sharing their + experiences and helping each other. Hosted by{' '} + Roadie.io and{' '} + Frontside Software. + + Learn more - - Backstage Weekly Newsletter - - A weekly newsletter with news, updates and things community from - your friends at Roadie.io. - + + + Backstage Weekly Newsletter + + A weekly newsletter with news, updates and things community from + your friends at Roadie.io. + + Learn more @@ -168,6 +183,29 @@ const Background = props => { + + + + Trainings and Certifications + + + + + Introduction to Backstage: Developer Portals Made Easy (LFS142x) + + + This is a course produced and curated by the Linux Foundation. + This course introduces you to Backstage and how to get started + with the project. + + + + Learn more + + + + + diff --git a/microsite/pages/en/index.js b/microsite/pages/en/index.js index 8e963c2453..ab3dabe14e 100644 --- a/microsite/pages/en/index.js +++ b/microsite/pages/en/index.js @@ -31,15 +31,6 @@ class Index extends React.Component { ! - - - 🤩 Join us for the first{' '} - - BackstageCon - {' '} - on October 24, 2022! - - diff --git a/microsite/pages/en/live.js b/microsite/pages/en/live.js index 2accd6d11c..11945fcd3b 100644 --- a/microsite/pages/en/live.js +++ b/microsite/pages/en/live.js @@ -34,7 +34,7 @@ const Background = props => { { diff --git a/microsite/sidebars.json b/microsite/sidebars.json index e758fe9100..581f8b592d 100644 --- a/microsite/sidebars.json +++ b/microsite/sidebars.json @@ -1,6 +1,7 @@ { "releases": { "Release Notes": [ + "releases/v1.8.0", "releases/v1.7.0", "releases/v1.6.0", "releases/v1.5.0", @@ -95,6 +96,7 @@ "features/software-templates/configuration", "features/software-templates/adding-templates", "features/software-templates/writing-templates", + "features/software-templates/input-examples", "features/software-templates/builtin-actions", "features/software-templates/writing-custom-actions", "features/software-templates/writing-custom-field-extensions", @@ -315,6 +317,7 @@ ], "Designing for Backstage": [ "dls/design", + "dls/component-design-guidelines", "dls/contributing-to-storybook", "dls/figma" ], diff --git a/microsite/static/img/cicd-statistics.svg b/microsite/static/img/cicd-statistics.svg new file mode 100644 index 0000000000..302f5e8f98 --- /dev/null +++ b/microsite/static/img/cicd-statistics.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/microsite/static/img/enfuse.png b/microsite/static/img/enfuse.png new file mode 100644 index 0000000000..42124a4a24 Binary files /dev/null and b/microsite/static/img/enfuse.png differ diff --git a/microsite/static/img/plugin-announcements-logo.png b/microsite/static/img/plugin-announcements-logo.png new file mode 100644 index 0000000000..edb0caf8d9 Binary files /dev/null and b/microsite/static/img/plugin-announcements-logo.png differ diff --git a/microsite/yarn.lock b/microsite/yarn.lock index 0a943bbe83..0a26cf8ef6 100644 --- a/microsite/yarn.lock +++ b/microsite/yarn.lock @@ -281,14 +281,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.10.4, @babel/helper-validator-identifier@npm:^7.12.11": - version: 7.12.11 - resolution: "@babel/helper-validator-identifier@npm:7.12.11" - checksum: e604c6bf890704fc46c1ae13bf23afb242b810224ec3403bba67cdbf0d8dabfec4b82123d6dfb18135a0ee3f7f79218583c819363ebb5e04a0a49d8418db7fce - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.18.6": +"@babel/helper-validator-identifier@npm:^7.10.4, @babel/helper-validator-identifier@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-validator-identifier@npm:7.18.6" checksum: e295254d616bbe26e48c196a198476ab4d42a73b90478c9842536cf910ead887f5af6b5c4df544d3052a25ccb3614866fa808dc1e3a5a4291acd444e243c0648 @@ -1241,18 +1234,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.10.4, @babel/types@npm:^7.10.5, @babel/types@npm:^7.12.1, @babel/types@npm:^7.12.10, @babel/types@npm:^7.12.11, @babel/types@npm:^7.12.12, @babel/types@npm:^7.12.5, @babel/types@npm:^7.12.6, @babel/types@npm:^7.12.7, @babel/types@npm:^7.4.4": - version: 7.12.12 - resolution: "@babel/types@npm:7.12.12" - dependencies: - "@babel/helper-validator-identifier": ^7.12.11 - lodash: ^4.17.19 - to-fast-properties: ^2.0.0 - checksum: 1eefe9468573a32491030f2986f820eb4289ff0b93e437b97f665e73cc8dae0ec0bdd95f37995bb3b70b5ce2a9a45a302affbbad497150021cf874c5ef10e361 - languageName: node - linkType: hard - -"@babel/types@npm:^7.8.3": +"@babel/types@npm:^7.10.4, @babel/types@npm:^7.10.5, @babel/types@npm:^7.12.1, @babel/types@npm:^7.12.10, @babel/types@npm:^7.12.11, @babel/types@npm:^7.12.12, @babel/types@npm:^7.12.5, @babel/types@npm:^7.12.6, @babel/types@npm:^7.12.7, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": version: 7.18.10 resolution: "@babel/types@npm:7.18.10" dependencies: @@ -2917,7 +2899,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.3.3": +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.3.3": version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: @@ -2929,7 +2911,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4.3.1, debug@npm:^4.1.0": +"debug@npm:4.3.1": version: 4.3.1 resolution: "debug@npm:4.3.1" dependencies: @@ -2958,9 +2940,9 @@ __metadata: linkType: hard "decode-uri-component@npm:^0.2.0": - version: 0.2.0 - resolution: "decode-uri-component@npm:0.2.0" - checksum: f3749344ab9305ffcfe4bfe300e2dbb61fc6359e2b736812100a3b1b6db0a5668cba31a05e4b45d4d63dbf1a18dfa354cd3ca5bb3ededddabb8cd293f4404f94 + version: 0.2.2 + resolution: "decode-uri-component@npm:0.2.2" + checksum: 95476a7d28f267292ce745eac3524a9079058bbb35767b76e3ee87d42e34cd0275d2eb19d9d08c3e167f97556e8a2872747f5e65cbebcac8b0c98d83e285f139 languageName: node linkType: hard @@ -4275,21 +4257,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.0.0, glob@npm:^7.0.5, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.6": - version: 7.2.0 - resolution: "glob@npm:7.2.0" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^3.0.4 - once: ^1.3.0 - path-is-absolute: ^1.0.0 - checksum: 78a8ea942331f08ed2e055cb5b9e40fe6f46f579d7fd3d694f3412fe5db23223d29b7fee1575440202e9a7ff9a72ab106a39fee39934c7bedafe5e5f8ae20134 - languageName: node - linkType: hard - -"glob@npm:^7.1.4": +"glob@npm:^7.0.0, glob@npm:^7.0.5, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: @@ -4430,14 +4398,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.10, graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0": - version: 4.2.4 - resolution: "graceful-fs@npm:4.2.4" - checksum: 9d58c444eb4f391ce30b451aae8a8af2bd675d9f6f624719e97306f571ab89b2bd2b5f9025199bc63a2edfe2e53e7701554012f32a708148d53aa689163728cc - languageName: node - linkType: hard - -"graceful-fs@npm:^4.2.6": +"graceful-fs@npm:^4.1.10, graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.6": version: 4.2.10 resolution: "graceful-fs@npm:4.2.10" checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da @@ -5056,15 +5017,6 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.1.0": - version: 2.2.0 - resolution: "is-core-module@npm:2.2.0" - dependencies: - has: ^1.0.3 - checksum: 61e2aff4a7db4f8f7d5a97b484808af17290f4197b34a797cd3d3d27b6b448951064f8d3d6ceae4394fa9b7e6cf08aacd2ba7a17ef6352e922fe803580fbde56 - languageName: node - linkType: hard - "is-core-module@npm:^2.8.0": version: 2.8.1 resolution: "is-core-module@npm:2.8.1" @@ -6196,7 +6148,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:3.0.4, minimatch@npm:^3.0.4, minimatch@npm:~3.0.2": +"minimatch@npm:3.0.4, minimatch@npm:~3.0.2": version: 3.0.4 resolution: "minimatch@npm:3.0.4" dependencies: @@ -6205,7 +6157,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.1.1": +"minimatch@npm:^3.0.4, minimatch@npm:^3.1.1": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -6941,7 +6893,7 @@ __metadata: languageName: node linkType: hard -"path-parse@npm:^1.0.6, path-parse@npm:^1.0.7": +"path-parse@npm:^1.0.7": version: 1.0.7 resolution: "path-parse@npm:1.0.7" checksum: 49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a @@ -7441,11 +7393,11 @@ __metadata: linkType: hard "prettier@npm:^2.6.2": - version: 2.7.1 - resolution: "prettier@npm:2.7.1" + version: 2.8.0 + resolution: "prettier@npm:2.8.0" bin: prettier: bin-prettier.js - checksum: 55a4409182260866ab31284d929b3cb961e5fdb91fe0d2e099dac92eaecec890f36e524b4c19e6ceae839c99c6d7195817579cdffc8e2c80da0cb794463a748b + checksum: 72004ce0cc9bb097daf3e3833f62495768724392c1d5b178dd47372337616e9e50ecbb0804f236596223f7b5eb1bbe69cefc8957dca21112c5777e77ef73a564 languageName: node linkType: hard @@ -7967,7 +7919,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.1.6": +"resolve@npm:^1.1.6, resolve@npm:^1.10.0": version: 1.21.0 resolution: "resolve@npm:1.21.0" dependencies: @@ -7980,17 +7932,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.10.0": - version: 1.19.0 - resolution: "resolve@npm:1.19.0" - dependencies: - is-core-module: ^2.1.0 - path-parse: ^1.0.6 - checksum: a05b356e47b85ad3613d9e2a39a824f3c27f4fcad9c9ff6c7cc71a2e314c5904a90ab37481ad0069d03cab9eaaac6eb68aca1bc3355fdb05f1045cd50e2aacea - languageName: node - linkType: hard - -"resolve@patch:resolve@^1.1.6#~builtin": +"resolve@patch:resolve@^1.1.6#~builtin, resolve@patch:resolve@^1.10.0#~builtin": version: 1.21.0 resolution: "resolve@patch:resolve@npm%3A1.21.0#~builtin::version=1.21.0&hash=07638b" dependencies: @@ -8003,16 +7945,6 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.10.0#~builtin": - version: 1.19.0 - resolution: "resolve@patch:resolve@npm%3A1.19.0#~builtin::version=1.19.0&hash=07638b" - dependencies: - is-core-module: ^2.1.0 - path-parse: ^1.0.6 - checksum: 2443b94d347e6946c87c85faf13071f605e609e0b54784829b0ed2b917d050bfc1cbaf4ecc6453f224cfa7d0c5dcd97cbb273454cd210bee68e4af15c1a5abc9 - languageName: node - linkType: hard - "responselike@npm:1.0.2": version: 1.0.2 resolution: "responselike@npm:1.0.2" @@ -8313,14 +8245,7 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2": - version: 3.0.3 - resolution: "signal-exit@npm:3.0.3" - checksum: f0169d3f1263d06df32ca072b0bf33b34c6f8f0341a7a1621558a2444dfbe8f5fec76b35537fcc6f0bc4944bdb5336fe0bdcf41a5422c4e45a1dba3f45475e6c - languageName: node - linkType: hard - -"signal-exit@npm:^3.0.7": +"signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 diff --git a/mkdocs.yml b/mkdocs.yml index 43efc32f8e..f3194f0d61 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -62,6 +62,7 @@ nav: - Configuration: 'features/software-templates/configuration.md' - Adding your own Templates: 'features/software-templates/adding-templates.md' - Writing Templates: 'features/software-templates/writing-templates.md' + - Input Examples: 'features/software-templates/input-examples.md' - Builtin Actions: 'features/software-templates/builtin-actions.md' - Writing Custom Actions: 'features/software-templates/writing-custom-actions.md' - Writing Custom Step Layouts: 'features/software-templates/writing-custom-step-layouts.md' @@ -177,6 +178,7 @@ nav: - Heroku: 'deployment/heroku.md' - Designing for Backstage: - Design: 'dls/design.md' + - Component Design Guidelines: 'dls/component-design-guidelines.md' - Contributing to Storybook: 'dls/contributing-to-storybook.md' - Figma: 'dls/figma.md' - API Reference: diff --git a/package.json b/package.json index 168f24787d..524cdf4bbe 100644 --- a/package.json +++ b/package.json @@ -2,15 +2,16 @@ "name": "root", "private": true, "engines": { - "node": "14 || 16" + "node": "16 || 18" }, "scripts": { "dev": "concurrently \"yarn start\" \"yarn start-backend\"", "start": "yarn workspace example-app start", "start-backend": "yarn workspace example-backend start", - "build": "backstage-cli repo build --all", + "build:backend": "yarn workspace backend build", + "build:all": "backstage-cli repo build --all", "build:api-reports": "yarn build:api-reports:only --tsc", - "build:api-reports:only": "ts-node -T -P scripts/tsconfig.json scripts/api-extractor.ts", + "build:api-reports:only": "backstage-repo-tools api-reports", "build:api-docs": "LANG=en_EN yarn build:api-reports --docs", "tsc": "tsc", "tsc:full": "backstage-cli repo clean && tsc --skipLibCheck false --incremental false", @@ -20,7 +21,7 @@ "lint": "backstage-cli repo lint --since origin/master", "lint:docs": "node ./scripts/check-docs-quality", "lint:all": "backstage-cli repo lint", - "lint:type-deps": "node scripts/check-type-dependencies.js", + "lint:type-deps": "backstage-repo-tools type-deps", "docker-build": "yarn tsc && yarn workspace example-backend build --build-dependencies && yarn workspace example-backend build-image", "new": "backstage-cli new --scope backstage --baseVersion 0.0.0 --no-private", "create-plugin": "echo \"use 'yarn new' instead\"", @@ -32,7 +33,8 @@ "build-storybook": "yarn ./storybook run build-storybook", "techdocs-cli": "node scripts/techdocs-cli.js", "techdocs-cli:dev": "cross-env TECHDOCS_CLI_DEV_MODE=true node scripts/techdocs-cli.js", - "prepare": "husky install" + "prepare": "husky install", + "postinstall": "husky install" }, "workspaces": { "packages": [ @@ -44,19 +46,16 @@ "@types/react": "^17", "@types/react-dom": "^17" }, - "version": "1.8.0-next.0", + "version": "1.9.0-next.1", "dependencies": { "@backstage/errors": "workspace:^", - "@manypkg/get-packages": "^1.1.3", - "@microsoft/api-documenter": "^7.17.11", - "@microsoft/api-extractor": "^7.23.0", - "@microsoft/api-extractor-model": "^7.17.2", - "@microsoft/tsdoc": "^0.14.1" + "@manypkg/get-packages": "^1.1.3" }, "devDependencies": { "@backstage/cli": "workspace:*", "@backstage/codemods": "workspace:*", "@backstage/create-app": "workspace:*", + "@backstage/repo-tools": "workspace:*", "@changesets/cli": "^2.14.0", "@octokit/rest": "^19.0.3", "@spotify/prettier-config": "^14.0.0", @@ -69,10 +68,12 @@ "e2e-test": "workspace:*", "eslint": "^8.6.0", "eslint-plugin-notice": "^0.9.10", + "eslint-plugin-testing-library": "^5.9.1", "fs-extra": "10.1.0", "husky": "^8.0.0", "lint-staged": "^13.0.0", "minimist": "^1.2.5", + "node-gyp": "^9.1.0", "prettier": "^2.2.1", "semver": "^7.3.2", "shx": "^0.3.2", @@ -90,6 +91,12 @@ ], "*.md": [ "node ./scripts/check-docs-quality" + ], + "./yarn.lock": [ + "node ./scripts/verify-lockfile-duplicates --fix" + ], + "*/yarn.lock": [ + "node ./scripts/verify-lockfile-duplicates --fix" ] }, "packageManager": "yarn@3.2.3" diff --git a/packages/app-defaults/CHANGELOG.md b/packages/app-defaults/CHANGELOG.md index 12b6a0894f..7485f130e3 100644 --- a/packages/app-defaults/CHANGELOG.md +++ b/packages/app-defaults/CHANGELOG.md @@ -1,5 +1,49 @@ # @backstage/app-defaults +## 1.0.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-app-api@1.2.1-next.1 + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-permission-react@0.4.8-next.1 + - @backstage/theme@0.2.16 + +## 1.0.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-app-api@1.2.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-permission-react@0.4.8-next.0 + +## 1.0.8 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0 + - @backstage/core-app-api@1.2.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-permission-react@0.4.7 + +## 1.0.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/core-app-api@1.2.0-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-permission-react@0.4.7-next.0 + ## 1.0.8-next.0 ### Patch Changes diff --git a/packages/app-defaults/package.json b/packages/app-defaults/package.json index 6658f0a8bd..e7acda4732 100644 --- a/packages/app-defaults/package.json +++ b/packages/app-defaults/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/app-defaults", "description": "Provides the default wiring of a Backstage App", - "version": "1.0.8-next.0", + "version": "1.0.9-next.1", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/app/CHANGELOG.md b/packages/app/CHANGELOG.md index d909773ff4..813a669173 100644 --- a/packages/app/CHANGELOG.md +++ b/packages/app/CHANGELOG.md @@ -1,5 +1,266 @@ # example-app +## 0.2.78-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-app-api@1.2.1-next.1 + - @backstage/core-components@0.12.1-next.1 + - @backstage/plugin-cloudbuild@0.3.12-next.1 + - @backstage/plugin-gcp-projects@0.3.31-next.1 + - @backstage/plugin-github-actions@0.5.12-next.1 + - @backstage/plugin-graphiql@0.2.44-next.1 + - @backstage/plugin-techdocs@1.4.1-next.1 + - @backstage/plugin-cost-insights@0.12.1-next.1 + - @backstage/plugin-search-react@1.2.2-next.1 + - @backstage/plugin-stack-overflow@0.1.8-next.1 + - @backstage/cli@0.21.2-next.1 + - @backstage/plugin-org@0.6.2-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/plugin-scaffolder@1.9.0-next.1 + - @backstage/plugin-shortcuts@0.3.4-next.1 + - @backstage/plugin-user-settings@0.6.0-next.1 + - @backstage/plugin-explore@0.3.43-next.1 + - @backstage/app-defaults@1.0.9-next.1 + - @backstage/plugin-apache-airflow@0.2.5-next.1 + - @backstage/plugin-api-docs@0.8.12-next.1 + - @backstage/plugin-azure-devops@0.2.3-next.1 + - @backstage/plugin-azure-sites@0.1.1-next.1 + - @backstage/plugin-badges@0.2.36-next.1 + - @backstage/plugin-catalog-graph@0.2.24-next.1 + - @backstage/plugin-catalog-import@0.9.2-next.1 + - @backstage/plugin-circleci@0.3.12-next.1 + - @backstage/plugin-code-coverage@0.2.5-next.1 + - @backstage/plugin-dynatrace@1.0.2-next.1 + - @backstage/plugin-gcalendar@0.3.8-next.1 + - @backstage/plugin-gocd@0.1.18-next.1 + - @backstage/plugin-home@0.4.28-next.1 + - @backstage/plugin-jenkins@0.7.11-next.1 + - @backstage/plugin-kafka@0.3.12-next.1 + - @backstage/plugin-kubernetes@0.7.5-next.1 + - @backstage/plugin-lighthouse@0.3.12-next.1 + - @backstage/plugin-newrelic@0.3.30-next.1 + - @backstage/plugin-pagerduty@0.5.5-next.1 + - @backstage/plugin-playlist@0.1.3-next.1 + - @backstage/plugin-rollbar@0.4.12-next.1 + - @backstage/plugin-search@1.0.5-next.1 + - @backstage/plugin-sentry@0.4.5-next.1 + - @backstage/plugin-tech-insights@0.3.4-next.1 + - @backstage/plugin-tech-radar@0.5.19-next.1 + - @backstage/plugin-techdocs-module-addons-contrib@1.0.7-next.1 + - @backstage/plugin-todo@0.2.14-next.1 + - @backstage/integration-react@1.1.7-next.1 + - @backstage/plugin-airbrake@0.3.12-next.1 + - @backstage/plugin-newrelic-dashboard@0.2.5-next.1 + - @backstage/plugin-techdocs-react@1.0.7-next.1 + - @internal/plugin-catalog-customized@0.0.5-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/plugin-permission-react@0.4.8-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-common@1.0.9-next.1 + - @backstage/plugin-search-common@1.1.2-next.1 + +## 0.2.78-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-graph@0.2.24-next.0 + - @backstage/plugin-pagerduty@0.5.5-next.0 + - @backstage/plugin-techdocs-react@1.0.7-next.0 + - @backstage/plugin-scaffolder@1.9.0-next.0 + - @backstage/cli@0.21.2-next.0 + - @backstage/plugin-cost-insights@0.12.1-next.0 + - @backstage/core-components@0.12.1-next.0 + - @backstage/plugin-user-settings@0.6.0-next.0 + - @backstage/plugin-explore@0.3.43-next.0 + - @backstage/core-app-api@1.2.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/integration-react@1.1.7-next.0 + - @backstage/plugin-airbrake@0.3.12-next.0 + - @backstage/plugin-apache-airflow@0.2.5-next.0 + - @backstage/plugin-api-docs@0.8.12-next.0 + - @backstage/plugin-azure-devops@0.2.3-next.0 + - @backstage/plugin-azure-sites@0.1.1-next.0 + - @backstage/plugin-badges@0.2.36-next.0 + - @backstage/plugin-catalog-import@0.9.2-next.0 + - @backstage/plugin-circleci@0.3.12-next.0 + - @backstage/plugin-cloudbuild@0.3.12-next.0 + - @backstage/plugin-code-coverage@0.2.5-next.0 + - @backstage/plugin-dynatrace@1.0.2-next.0 + - @backstage/plugin-gcalendar@0.3.8-next.0 + - @backstage/plugin-gcp-projects@0.3.31-next.0 + - @backstage/plugin-github-actions@0.5.12-next.0 + - @backstage/plugin-gocd@0.1.18-next.0 + - @backstage/plugin-graphiql@0.2.44-next.0 + - @backstage/plugin-home@0.4.28-next.0 + - @backstage/plugin-jenkins@0.7.11-next.0 + - @backstage/plugin-kafka@0.3.12-next.0 + - @backstage/plugin-kubernetes@0.7.5-next.0 + - @backstage/plugin-lighthouse@0.3.12-next.0 + - @backstage/plugin-newrelic@0.3.30-next.0 + - @backstage/plugin-org@0.6.1-next.0 + - @backstage/plugin-playlist@0.1.3-next.0 + - @backstage/plugin-rollbar@0.4.12-next.0 + - @backstage/plugin-search@1.0.5-next.0 + - @backstage/plugin-sentry@0.4.5-next.0 + - @backstage/plugin-shortcuts@0.3.4-next.0 + - @backstage/plugin-stack-overflow@0.1.8-next.0 + - @backstage/plugin-tech-insights@0.3.4-next.0 + - @backstage/plugin-tech-radar@0.5.19-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.0.7-next.0 + - @backstage/plugin-techdocs@1.4.1-next.0 + - @backstage/plugin-todo@0.2.14-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/app-defaults@1.0.9-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-common@1.0.9-next.0 + - @backstage/plugin-newrelic-dashboard@0.2.5-next.0 + - @backstage/plugin-permission-react@0.4.8-next.0 + - @backstage/plugin-search-common@1.1.2-next.0 + - @backstage/plugin-search-react@1.2.2-next.0 + - @internal/plugin-catalog-customized@0.0.5-next.0 + +## 0.2.77 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder@1.8.0 + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/plugin-techdocs@1.4.0 + - @backstage/core-components@0.12.0 + - @backstage/plugin-cost-insights@0.12.0 + - @backstage/plugin-apache-airflow@0.2.4 + - @backstage/core-app-api@1.2.0 + - @backstage/plugin-explore@0.3.42 + - @backstage/plugin-tech-insights@0.3.3 + - @backstage/plugin-github-actions@0.5.11 + - @backstage/cli@0.21.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/plugin-dynatrace@1.0.1 + - @backstage/plugin-catalog-import@0.9.1 + - @backstage/plugin-catalog-graph@0.2.23 + - @backstage/plugin-tech-radar@0.5.18 + - @backstage/plugin-playlist@0.1.2 + - @backstage/plugin-stack-overflow@0.1.7 + - @backstage/catalog-model@1.1.3 + - @backstage/plugin-gcalendar@0.3.7 + - @backstage/plugin-code-coverage@0.2.4 + - @backstage/plugin-org@0.6.0 + - @backstage/plugin-api-docs@0.8.11 + - @backstage/plugin-kubernetes@0.7.4 + - @backstage/plugin-techdocs-module-addons-contrib@1.0.6 + - @backstage/plugin-circleci@0.3.11 + - @backstage/plugin-azure-sites@0.1.0 + - @backstage/plugin-techdocs-react@1.0.6 + - @backstage/plugin-cloudbuild@0.3.11 + - @backstage/plugin-jenkins@0.7.10 + - @backstage/plugin-kafka@0.3.11 + - @backstage/plugin-pagerduty@0.5.4 + - @backstage/plugin-rollbar@0.4.11 + - @backstage/plugin-airbrake@0.3.11 + - @backstage/plugin-azure-devops@0.2.2 + - @backstage/plugin-badges@0.2.35 + - @internal/plugin-catalog-customized@0.0.4 + - @backstage/plugin-gocd@0.1.17 + - @backstage/plugin-home@0.4.27 + - @backstage/plugin-lighthouse@0.3.11 + - @backstage/plugin-newrelic-dashboard@0.2.4 + - @backstage/plugin-search@1.0.4 + - @backstage/plugin-sentry@0.4.4 + - @backstage/plugin-todo@0.2.13 + - @backstage/app-defaults@1.0.8 + - @backstage/integration-react@1.1.6 + - @backstage/plugin-gcp-projects@0.3.30 + - @backstage/plugin-graphiql@0.2.43 + - @backstage/plugin-newrelic@0.3.29 + - @backstage/plugin-search-react@1.2.1 + - @backstage/plugin-shortcuts@0.3.3 + - @backstage/plugin-user-settings@0.5.1 + - @backstage/config@1.0.4 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-common@1.0.8 + - @backstage/plugin-permission-react@0.4.7 + - @backstage/plugin-search-common@1.1.1 + +## 0.2.77-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder@1.8.0-next.1 + - @backstage/plugin-cost-insights@0.12.0-next.1 + - @backstage/plugin-techdocs@1.4.0-next.2 + - @backstage/plugin-explore@0.3.42-next.1 + - @backstage/plugin-github-actions@0.5.11-next.1 + - @backstage/cli@0.21.0-next.1 + - @backstage/plugin-catalog-graph@0.2.23-next.1 + - @backstage/core-components@0.12.0-next.1 + - @backstage/plugin-code-coverage@0.2.4-next.1 + - @backstage/plugin-org@0.6.0-next.1 + - @backstage/plugin-kubernetes@0.7.4-next.1 + - @backstage/app-defaults@1.0.8-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/core-app-api@1.2.0-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/integration-react@1.1.6-next.1 + - @backstage/theme@0.2.16 + - @backstage/plugin-airbrake@0.3.11-next.1 + - @backstage/plugin-apache-airflow@0.2.4-next.1 + - @backstage/plugin-api-docs@0.8.11-next.1 + - @backstage/plugin-azure-devops@0.2.2-next.1 + - @backstage/plugin-azure-sites@0.1.0-next.1 + - @backstage/plugin-badges@0.2.35-next.1 + - @backstage/plugin-catalog-common@1.0.8-next.0 + - @backstage/plugin-catalog-import@0.9.1-next.1 + - @backstage/plugin-catalog-react@1.2.1-next.1 + - @backstage/plugin-circleci@0.3.11-next.1 + - @backstage/plugin-cloudbuild@0.3.11-next.1 + - @backstage/plugin-dynatrace@1.0.1-next.1 + - @backstage/plugin-gcalendar@0.3.7-next.1 + - @backstage/plugin-gcp-projects@0.3.30-next.1 + - @backstage/plugin-gocd@0.1.17-next.1 + - @backstage/plugin-graphiql@0.2.43-next.1 + - @backstage/plugin-home@0.4.27-next.1 + - @backstage/plugin-jenkins@0.7.10-next.1 + - @backstage/plugin-kafka@0.3.11-next.1 + - @backstage/plugin-lighthouse@0.3.11-next.1 + - @backstage/plugin-newrelic@0.3.29-next.1 + - @backstage/plugin-newrelic-dashboard@0.2.4-next.1 + - @backstage/plugin-pagerduty@0.5.4-next.1 + - @backstage/plugin-permission-react@0.4.7-next.0 + - @backstage/plugin-playlist@0.1.2-next.2 + - @backstage/plugin-rollbar@0.4.11-next.1 + - @backstage/plugin-search@1.0.4-next.1 + - @backstage/plugin-search-common@1.1.1-next.0 + - @backstage/plugin-search-react@1.2.1-next.1 + - @backstage/plugin-sentry@0.4.4-next.1 + - @backstage/plugin-shortcuts@0.3.3-next.1 + - @backstage/plugin-stack-overflow@0.1.7-next.1 + - @backstage/plugin-tech-insights@0.3.3-next.1 + - @backstage/plugin-tech-radar@0.5.18-next.1 + - @backstage/plugin-techdocs-module-addons-contrib@1.0.6-next.1 + - @backstage/plugin-techdocs-react@1.0.6-next.1 + - @backstage/plugin-todo@0.2.13-next.1 + - @backstage/plugin-user-settings@0.5.1-next.1 + - @internal/plugin-catalog-customized@0.0.4-next.1 + +## 0.2.77-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-techdocs@1.4.0-next.1 + - @backstage/plugin-playlist@0.1.2-next.1 + - @backstage/plugin-techdocs-module-addons-contrib@1.0.6-next.0 + ## 0.2.77-next.0 ### Patch Changes diff --git a/packages/app/cypress/integration/app.js b/packages/app/cypress/integration/app.js index 7b874907be..6371bcc4f8 100644 --- a/packages/app/cypress/integration/app.js +++ b/packages/app/cypress/integration/app.js @@ -25,14 +25,17 @@ describe('App', () => { it('should display support info when clicking the button', () => { cy.visit('/'); + // eslint-disable-next-line testing-library/await-async-query cy.findByTestId('support-button').click({ force: true }); cy.contains('#backstage'); }); it('should display error message when triggering it', () => { cy.visit('/'); + // eslint-disable-next-line testing-library/await-async-query cy.findByTestId('error-button').click({ force: true }); cy.contains('Error: Oh no!'); + // eslint-disable-next-line testing-library/await-async-query cy.findByTestId('error-button-close').click({ force: true }); }); @@ -55,6 +58,7 @@ describe('App', () => { cy.contains('Token') .get('input[name=github-auth-tf]') .type('password', { force: true }); + // eslint-disable-next-line testing-library/await-async-query cy.findByTestId('github-auth-button').click({ force: true }); cy.contains(`Welcome, ${name}!`); cy.contains('Logout').click({ force: true }); diff --git a/packages/app/package.json b/packages/app/package.json index 9388f305f6..3f15471993 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "example-app", - "version": "0.2.77-next.0", + "version": "0.2.78-next.1", "private": true, "backstage": { "role": "frontend" @@ -80,7 +80,7 @@ "react-router": "^6.3.0", "react-router-dom": "^6.3.0", "react-use": "^17.2.4", - "zen-observable": "^0.8.15" + "zen-observable": "^0.10.0" }, "devDependencies": { "@backstage/test-utils": "workspace:^", diff --git a/packages/app/public/index.html b/packages/app/public/index.html index 885fb6c228..0710a0d69d 100644 --- a/packages/app/public/index.html +++ b/packages/app/public/index.html @@ -44,24 +44,7 @@ /> <%= config.getString('app.title') %> - <% if (config.has('app.googleAnalyticsTrackingId')) { %> - - - <% } %> <% if (config.has('app.datadogRum')) { %> + <% if (config.has('app.datadogRum')) { %> + - + - <% } %> + + ``` + + Additionally, you should make the following adjustment to `app-config.yaml`: + + ```diff + app: + title: Backstage Example App + baseUrl: http://localhost:3000 + - googleAnalyticsTrackingId: # UA-000000-0 + ``` + +- 4091c73e68: Updated `@swc/core` to `v1.3.9` which fixes a `.tsx` parser bug. You may want to run `yarn backstage-cli versions:bump` to get on latest version including the CLI itself. +- 80bfac5266: Updated the create-app command to no longer require Git to be installed and configured. A git repository will only be initialized if possible and if not already in an git repository. +- 286d474675: The `build` script in the root `package.json` has been split into two separate scripts, `build:backend` and `build:all`. This is to more accurately reflect what is being built, to avoid confusion. + + If you want to build the project for a production deployment, you will want to use `build:backend`, as this builds both the frontend and backend package. If you are not using the `app-backend` plugin you will want to add your own `build:frontend` script, to which you can pass additional configuration parameters if needed. + + The `build:all` script is useful if you simply want to check that it is possible to build all packages in the project. This might be useful as a CI check, but is generally unnecessary. + + If you want to publish the packages in your repository you can add a `build:packages` script that calls `backstage-cli repo build`. This will skip the frontend and backend packages builds, as those are quite time consuming. + + To apply these changes to an existing project, make the following change to the root `package.json` file: + + ```diff + - "build": "backstage-cli repo build --all", + + "build:backend": "yarn workspace backend build", + + "build:all": "backstage-cli repo build --all", + ``` + + There are also a couple of places where documentation has been updated, see the [upgrade helper](https://backstage.github.io/upgrade-helper/?to=1.8.0) for a full list of changes. + +- 384eaa2307: Switched Node.js version to support version 16 & 18, rather than 14 & 16. To switch the Node.js version in your own project, apply the following change to the root `package.json`: + + ```diff + "engines": { + - "node": "14 || 16" + + "node": "16 || 18" + }, + ``` + + As well as the following change to `packages/app/package.json`: + + ```diff + - "@types/node": "^14.14.32", + + "@types/node": "^16.11.26", + ``` + +- f905853ad6: Prefer using `Link` from `@backstage/core-components` rather than material-UI. +- 864c876e57: Fixed incorrect comments in the templated `app-config.yaml` and `app-config.production.yaml`. The `backend.listen` directive is not in fact needed to override the `backend.baseUrl`, the backend listens to all interfaces by default. The configuration has also been updated to listen to all interfaces, rather than just IPv4 ones, as this is required for Node.js v18. The production configuration now also shows the option to specify `backend.listen` as a single string. + + To apply this changes to an existing app, make the following change to `app-config.yaml`: + + ```diff + - # Uncomment the following host directive to bind to all IPv4 interfaces and + - # not just the baseUrl hostname. + - # host: 0.0.0.0 + + # Uncomment the following host directive to bind to specific interfaces + + # host: 127.0.0.1 + ``` + + And the following change to `app-config.production.yaml`: + + ```diff + - listen: + - port: 7007 + - # The following host directive binds to all IPv4 interfaces when its value + - # is "0.0.0.0". This is the most permissive setting. The right value depends + - # on your specific deployment. If you remove the host line entirely, the + - # backend will bind on the interface that corresponds to the backend.baseUrl + - # hostname. + - host: 0.0.0.0 + + # The listener can also be expressed as a single : string. In this case we bind to + + # all interfaces, the most permissive setting. The right value depends on your specific deployment. + + listen: ':7007' + ``` + +- Updated dependencies + - @backstage/cli-common@0.1.10 + +## 0.4.34-next.2 + +### Patch Changes + +- 384eaa2307: Switched Node.js version to support version 16 & 18, rather than 14 & 16. To switch the Node.js version in your own project, apply the following change to the root `package.json`: + + ```diff + "engines": { + - "node": "14 || 16" + + "node": "16 || 18" + }, + ``` + + As well as the following change to `packages/app/package.json`: + + ```diff + - "@types/node": "^14.14.32", + + "@types/node": "^16.11.26", + ``` + +- 864c876e57: Fixed incorrect comments in the templated `app-config.yaml` and `app-config.production.yaml`. The `backend.listen` directive is not in fact needed to override the `backend.baseUrl`, the backend listens to all interfaces by default. The configuration has also been updated to listen to all interfaces, rather than just IPv4 ones, as this is required for Node.js v18. The production configuration now also shows the option to specify `backend.listen` as a single string. + + To apply this changes to an existing app, make the following change to `app-config.yaml`: + + ```diff + - # Uncomment the following host directive to bind to all IPv4 interfaces and + - # not just the baseUrl hostname. + - # host: 0.0.0.0 + + # Uncomment the following host directive to bind to specific interfaces + + # host: 127.0.0.1 + ``` + + And the following change to `app-config.production.yaml`: + + ```diff + - listen: + - port: 7007 + - # The following host directive binds to all IPv4 interfaces when its value + - # is "0.0.0.0". This is the most permissive setting. The right value depends + - # on your specific deployment. If you remove the host line entirely, the + - # backend will bind on the interface that corresponds to the backend.baseUrl + - # hostname. + - host: 0.0.0.0 + + # The listener can also be expressed as a single : string. In this case we bind to + + # all interfaces, the most permissive setting. The right value depends on your specific deployment. + + listen: ':7007' + ``` + +- Updated dependencies + - @backstage/cli-common@0.1.10 + +## 0.4.33-next.1 + +### Patch Changes + +- Bumped create-app version. + ## 0.4.33-next.0 ### Patch Changes diff --git a/packages/create-app/package.json b/packages/create-app/package.json index a2a168b263..e233e67ea5 100644 --- a/packages/create-app/package.json +++ b/packages/create-app/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/create-app", "description": "A CLI that helps you create your own Backstage app", - "version": "0.4.33-next.0", + "version": "0.4.35-next.1", "publishConfig": { "access": "public" }, diff --git a/packages/create-app/templates/default-app/app-config.production.yaml b/packages/create-app/templates/default-app/app-config.production.yaml index 6535d967d5..df09dac50a 100644 --- a/packages/create-app/templates/default-app/app-config.production.yaml +++ b/packages/create-app/templates/default-app/app-config.production.yaml @@ -9,14 +9,9 @@ backend: # callers. When its value is "http://localhost:7007", it's strictly private # and can't be reached by others. baseUrl: http://localhost:7007 - listen: - port: 7007 - # The following host directive binds to all IPv4 interfaces when its value - # is "0.0.0.0". This is the most permissive setting. The right value depends - # on your specific deployment. If you remove the host line entirely, the - # backend will bind on the interface that corresponds to the backend.baseUrl - # hostname. - host: 0.0.0.0 + # The listener can also be expressed as a single : string. In this case we bind to + # all interfaces, the most permissive setting. The right value depends on your specific deployment. + listen: ':7007' # config options: https://node-postgres.com/api/client database: diff --git a/packages/create-app/templates/default-app/app-config.yaml.hbs b/packages/create-app/templates/default-app/app-config.yaml.hbs index 4a058deefd..1a45d4015b 100644 --- a/packages/create-app/templates/default-app/app-config.yaml.hbs +++ b/packages/create-app/templates/default-app/app-config.yaml.hbs @@ -15,9 +15,8 @@ backend: baseUrl: http://localhost:7007 listen: port: 7007 - # Uncomment the following host directive to bind to all IPv4 interfaces and - # not just the baseUrl hostname. - # host: 0.0.0.0 + # Uncomment the following host directive to bind to specific interfaces + # host: 127.0.0.1 csp: connect-src: ["'self'", 'http:', 'https:'] # Content-Security-Policy directives follow the Helmet format: https://helmetjs.github.io/#reference diff --git a/packages/create-app/templates/default-app/package.json.hbs b/packages/create-app/templates/default-app/package.json.hbs index c5810d8880..070cb871bc 100644 --- a/packages/create-app/templates/default-app/package.json.hbs +++ b/packages/create-app/templates/default-app/package.json.hbs @@ -3,13 +3,14 @@ "version": "1.0.0", "private": true, "engines": { - "node": "14 || 16" + "node": "16 || 18" }, "scripts": { "dev": "concurrently \"yarn start\" \"yarn start-backend\"", "start": "yarn workspace app start", "start-backend": "yarn workspace backend start", - "build": "backstage-cli repo build --all", + "build:backend": "yarn workspace backend build", + "build:all": "backstage-cli repo build --all", "build-image": "yarn workspace backend build-image", "tsc": "tsc", "tsc:full": "tsc --skipLibCheck false --incremental false", diff --git a/packages/create-app/templates/default-app/packages/app/public/index.html b/packages/create-app/templates/default-app/packages/app/public/index.html index a936c73602..c6083b3dd2 100644 --- a/packages/create-app/templates/default-app/packages/app/public/index.html +++ b/packages/create-app/templates/default-app/packages/app/public/index.html @@ -43,24 +43,6 @@ color="#5bbad5" /> <%= config.getString('app.title') %> - <% if (config.has('app.googleAnalyticsTrackingId')) { %> - - - <% } %> You need to enable JavaScript to run this app. @@ -72,8 +54,8 @@ You can add webfonts, meta tags, or analytics to this file. The build step will place the bundled scripts into the tag. - To begin the development, run `npm start` or `yarn start`. - To create a production bundle, use `npm run build` or `yarn build`. + To begin the development, run `yarn start`. + To create a production bundle, use `yarn build`. --> diff --git a/packages/create-app/templates/default-app/packages/backend/Dockerfile b/packages/create-app/templates/default-app/packages/backend/Dockerfile index f0be3ac1d3..51f7124db4 100644 --- a/packages/create-app/templates/default-app/packages/backend/Dockerfile +++ b/packages/create-app/templates/default-app/packages/backend/Dockerfile @@ -5,7 +5,7 @@ # # yarn install # yarn tsc -# yarn build +# yarn build:backend # # Once the commands have been run, you can build the image using `yarn build-image` diff --git a/packages/create-app/templates/default-app/packages/backend/README.md b/packages/create-app/templates/default-app/packages/backend/README.md index 02426ef9b3..aa042db030 100644 --- a/packages/create-app/templates/default-app/packages/backend/README.md +++ b/packages/create-app/templates/default-app/packages/backend/README.md @@ -16,8 +16,6 @@ To run the example backend, first go to the project root and run ```bash yarn install -yarn tsc -yarn build ``` You should only need to do this once. @@ -25,16 +23,11 @@ You should only need to do this once. After that, go to the `packages/backend` directory and run ```bash -AUTH_GOOGLE_CLIENT_ID=x AUTH_GOOGLE_CLIENT_SECRET=x \ -AUTH_GITHUB_CLIENT_ID=x AUTH_GITHUB_CLIENT_SECRET=x \ -AUTH_OAUTH2_CLIENT_ID=x AUTH_OAUTH2_CLIENT_SECRET=x \ -AUTH_OAUTH2_AUTH_URL=x AUTH_OAUTH2_TOKEN_URL=x \ -LOG_LEVEL=debug \ yarn start ``` -Substitute `x` for actual values, or leave them as dummy values just to try out -the backend without using the auth or sentry features. +If you want to override any configuration locally, for example adding any secrets, +you can do so in `app-config.local.yaml`. The backend starts up on port 7007 per default. diff --git a/packages/dev-utils/CHANGELOG.md b/packages/dev-utils/CHANGELOG.md index 7177a25fb2..f3a505fc02 100644 --- a/packages/dev-utils/CHANGELOG.md +++ b/packages/dev-utils/CHANGELOG.md @@ -1,5 +1,67 @@ # @backstage/dev-utils +## 1.0.9-next.1 + +### Patch Changes + +- c3fa90e184: Updated dependency `zen-observable` to `^0.10.0`. +- Updated dependencies + - @backstage/core-app-api@1.2.1-next.1 + - @backstage/core-components@0.12.1-next.1 + - @backstage/test-utils@1.2.3-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-react@1.2.2-next.1 + - @backstage/app-defaults@1.0.9-next.1 + - @backstage/integration-react@1.1.7-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## 1.0.9-next.0 + +### Patch Changes + +- 19356df560: Updated dependency `zen-observable` to `^0.9.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-app-api@1.2.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/integration-react@1.1.7-next.0 + - @backstage/test-utils@1.2.3-next.0 + - @backstage/plugin-catalog-react@1.2.2-next.0 + - @backstage/app-defaults@1.0.9-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/theme@0.2.16 + +## 1.0.8 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.2.1 + - @backstage/core-components@0.12.0 + - @backstage/core-app-api@1.2.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/app-defaults@1.0.8 + - @backstage/integration-react@1.1.6 + - @backstage/test-utils@1.2.2 + - @backstage/theme@0.2.16 + +## 1.0.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/app-defaults@1.0.8-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/core-app-api@1.2.0-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/integration-react@1.1.6-next.1 + - @backstage/test-utils@1.2.2-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-react@1.2.1-next.1 + ## 1.0.8-next.0 ### Patch Changes @@ -850,7 +912,7 @@ ### Patch Changes -- 5aa4ceea6: Make sure to provide dummy routes for all external routes of plugins given to DevApp +- 5aa4ceea6: Make sure to provide sample routes for all external routes of plugins given to DevApp - Updated dependencies [3a58084b6] - Updated dependencies [e799e74d4] - Updated dependencies [dc12852c9] diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 0decdbe985..1f7578f837 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/dev-utils", "description": "Utilities for developing Backstage plugins.", - "version": "1.0.8-next.0", + "version": "1.0.9-next.1", "publishConfig": { "access": "public", "main": "dist/index.esm.js", @@ -47,7 +47,7 @@ "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", "react-use": "^17.2.4", - "zen-observable": "^0.8.15" + "zen-observable": "^0.10.0" }, "peerDependencies": { "@types/react": "^16.13.1 || ^17.0.0", diff --git a/packages/dev-utils/src/devApp/render.tsx b/packages/dev-utils/src/devApp/render.tsx index e04779b4d1..6fa73ba860 100644 --- a/packages/dev-utils/src/devApp/render.tsx +++ b/packages/dev-utils/src/devApp/render.tsx @@ -165,9 +165,9 @@ export class DevAppBuilder { * Build a DevApp component using the resources registered so far */ build(): ComponentType<{}> { - const dummyRouteRef = createRouteRef({ id: 'dummy' }); - const DummyPage = () => Page belonging to another plugin.; - attachComponentData(DummyPage, 'core.mountPoint', dummyRouteRef); + const fakeRouteRef = createRouteRef({ id: 'fake' }); + const FakePage = () => Page belonging to another plugin.; + attachComponentData(FakePage, 'core.mountPoint', fakeRouteRef); const apis = [...this.apis]; if (!apis.some(api => api.api.id === scmIntegrationsApiRef.id)) { @@ -188,7 +188,7 @@ export class DevAppBuilder { for (const plugin of this.plugins ?? []) { const targets: Record> = {}; for (const routeKey of Object.keys(plugin.externalRoutes)) { - targets[routeKey] = dummyRouteRef; + targets[routeKey] = fakeRouteRef; } bind(plugin.externalRoutes, targets); } @@ -215,7 +215,7 @@ export class DevAppBuilder { {this.routes} - } /> + } /> diff --git a/packages/e2e-test/README.md b/packages/e2e-test/README.md index 139213c0c1..f3692de2a7 100644 --- a/packages/e2e-test/README.md +++ b/packages/e2e-test/README.md @@ -11,7 +11,7 @@ All packages need to be installed and built before running the test. In a fresh ```sh yarn install yarn tsc -yarn build +yarn build:all ``` Once those tasks have completed, you can now run the test using `yarn e2e-test run`. diff --git a/packages/e2e-test/src/commands/run.ts b/packages/e2e-test/src/commands/run.ts index 3f9d28eadd..fe4d87bea4 100644 --- a/packages/e2e-test/src/commands/run.ts +++ b/packages/e2e-test/src/commands/run.ts @@ -275,7 +275,7 @@ async function createApp( for (const cmd of [ 'install', 'tsc:full', - 'build', + 'build:all', 'lint:all', 'prettier:check', 'test:all', @@ -507,6 +507,7 @@ async function testBackendStart(appDir: string, ...args: string[]) { // Skipping the whole block throw new Error(stderr); } + await new Promise(resolve => setTimeout(resolve, 500)); print('Try to fetch entities from the backend'); // Try fetch entities, should be ok diff --git a/packages/errors/CHANGELOG.md b/packages/errors/CHANGELOG.md index f64792a5a3..5a46b58378 100644 --- a/packages/errors/CHANGELOG.md +++ b/packages/errors/CHANGELOG.md @@ -1,5 +1,26 @@ # @backstage/errors +## 1.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.0.2-next.1 + +## 1.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.0.2-next.0 + +## 1.1.3 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.0.1 + ## 1.1.3-next.0 ### Patch Changes diff --git a/packages/errors/package.json b/packages/errors/package.json index 9b9e0dcd1d..30656c6d41 100644 --- a/packages/errors/package.json +++ b/packages/errors/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/errors", "description": "Common utilities for error handling within Backstage", - "version": "1.1.3-next.0", + "version": "1.1.4-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/integration-react/CHANGELOG.md b/packages/integration-react/CHANGELOG.md index b396593d12..871243fb94 100644 --- a/packages/integration-react/CHANGELOG.md +++ b/packages/integration-react/CHANGELOG.md @@ -1,5 +1,50 @@ # @backstage/integration-react +## 1.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.1-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/theme@0.2.16 + +## 1.1.7-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/theme@0.2.16 + +## 1.1.6 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/integration@1.4.0 + - @backstage/config@1.0.4 + - @backstage/theme@0.2.16 + +## 1.1.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.0-next.1 + - @backstage/config@1.0.4-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/theme@0.2.16 + ## 1.1.6-next.0 ### Patch Changes diff --git a/packages/integration-react/package.json b/packages/integration-react/package.json index 7efea2e74a..239cd87a70 100644 --- a/packages/integration-react/package.json +++ b/packages/integration-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/integration-react", "description": "Frontend package for managing integrations towards external systems", - "version": "1.1.6-next.0", + "version": "1.1.7-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -45,7 +45,7 @@ "@testing-library/user-event": "^14.0.0", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.47.0" + "msw": "^0.49.0" }, "files": [ "dist" diff --git a/packages/integration/CHANGELOG.md b/packages/integration/CHANGELOG.md index 4c34e91f8d..0542c17989 100644 --- a/packages/integration/CHANGELOG.md +++ b/packages/integration/CHANGELOG.md @@ -1,5 +1,54 @@ # @backstage/integration +## 1.4.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.0.5-next.1 + - @backstage/errors@1.1.4-next.1 + +## 1.4.1-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- 34b039ca9f: Added `integrations.github.apps.allowedInstallationOwners` to the configuration schema. +- Updated dependencies + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## 1.4.0 + +### Minor Changes + +- d05e1841ce: This patch brings Gitea as a valid integration: target, via the ScmIntegration interface. It adds gitea to the relevant static properties (get integration by name, get integration by type) for plugins to be able to reference the same Gitea server. +- c1784a4980: Replaces in-code uses of `GitHub` with `Github` and deprecates old versions. + + Deprecates: + + - `getGitHubFileFetchUrl` replaced by `getGithubFileFetchUrl` + - `GitHubIntegrationConfig` replaced by `GithubIntegrationConfig` + - `GitHubIntegration` replaced by `GithubIntegration` + - `readGitHubIntegrationConfig` replaced by `readGithubIntegrationConfig` + - `readGitHubIntegrationConfigs` replaced by `readGithubIntegrationConfigs` + - `replaceGitHubUrlType` replaced by `replaceGithubUrlType` + +### Patch Changes + +- 7573b65232: Internal refactor of imports to avoid circular dependencies +- a6d779d58a: Remove explicit default visibility at `config.d.ts` files. + + ```ts + /** + * @visibility backend + */ + ``` + +- Updated dependencies + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + ## 1.4.0-next.0 ### Minor Changes diff --git a/packages/integration/config.d.ts b/packages/integration/config.d.ts index 49a121aff3..a1eb7aceb9 100644 --- a/packages/integration/config.d.ts +++ b/packages/integration/config.d.ts @@ -189,6 +189,14 @@ export interface Config { * @visibility secret */ clientSecret: string; + /** + * List of installation owners allowed to be used by this GitHub app. The GitHub UI does not provide a way to list the installations. + * However you can list the installations with the GitHub API. You can find the list of installations here: + * https://api.github.com/app/installations + * The relevant documentation for this is here. + * https://docs.github.com/en/rest/reference/apps#list-installations-for-the-authenticated-app--code-samples + */ + allowedInstallationOwners?: string[]; }>; }>; diff --git a/packages/integration/package.json b/packages/integration/package.json index bbed7de2d1..bcf6da2d74 100644 --- a/packages/integration/package.json +++ b/packages/integration/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/integration", "description": "Helpers for managing integrations towards external systems", - "version": "1.4.0-next.0", + "version": "1.4.1-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -46,7 +46,7 @@ "@backstage/config-loader": "workspace:^", "@backstage/test-utils": "workspace:^", "@types/luxon": "^3.0.0", - "msw": "^0.47.0" + "msw": "^0.49.0" }, "files": [ "dist", diff --git a/packages/release-manifests/CHANGELOG.md b/packages/release-manifests/CHANGELOG.md index 177ea55a5a..e8bb4dfb07 100644 --- a/packages/release-manifests/CHANGELOG.md +++ b/packages/release-manifests/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/release-manifests +## 0.0.8-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. + +## 0.0.7 + +### Patch Changes + +- a4496131fa: Added a fallback that fetches manifests from `https://raw.githubusercontent.com` if `https://versions.backstage.io` is unavailable. + +## 0.0.7-next.0 + +### Patch Changes + +- a4496131fa: Added a fallback that fetches manifests from `https://raw.githubusercontent.com` if `https://versions.backstage.io` is unavailable. + ## 0.0.6 ### Patch Changes diff --git a/packages/release-manifests/package.json b/packages/release-manifests/package.json index 949cd2bcd5..2a53438bd2 100644 --- a/packages/release-manifests/package.json +++ b/packages/release-manifests/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/release-manifests", "description": "Helper library for receiving release manifests", - "version": "0.0.6", + "version": "0.0.8-next.0", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { @@ -38,7 +38,7 @@ "@backstage/cli": "workspace:^", "@backstage/test-utils": "workspace:^", "@types/node": "^16.0.0", - "msw": "^0.47.0" + "msw": "^0.49.0" }, "files": [ "dist" diff --git a/packages/release-manifests/src/manifest.test.ts b/packages/release-manifests/src/manifest.test.ts index 272555df70..6a53f993c8 100644 --- a/packages/release-manifests/src/manifest.test.ts +++ b/packages/release-manifests/src/manifest.test.ts @@ -17,7 +17,11 @@ import { setupServer } from 'msw/node'; import { rest } from 'msw'; import { setupRequestMockHandlers } from '@backstage/test-utils'; -import { getManifestByReleaseLine, getManifestByVersion } from './manifest'; +import { + getManifestByReleaseLine, + getManifestByVersion, + withFallback, +} from './manifest'; describe('Release Manifests', () => { const worker = setupServer(); @@ -86,3 +90,50 @@ describe('Release Manifests', () => { }); }); }); + +describe('withFallback', () => { + it('should use the first value to resolve', async () => { + const fn1 = jest.fn((_s: AbortSignal) => Promise.resolve(1)); + const fn2 = jest.fn((_s: AbortSignal) => Promise.resolve(2)); + await expect(withFallback(fn1, fn2, 100)).resolves.toBe(1); + expect(fn1.mock.lastCall?.[0].aborted).toBe(false); + expect(fn2).not.toHaveBeenCalled(); + }); + + it('should fall back on rejection', async () => { + const fn1 = jest.fn((_s: AbortSignal) => Promise.reject(new Error('1'))); + const fn2 = jest.fn((_s: AbortSignal) => Promise.resolve(2)); + await expect(withFallback(fn1, fn2, 0)).resolves.toBe(2); + expect(fn1.mock.lastCall?.[0].aborted).toBe(true); + expect(fn2.mock.lastCall?.[0].aborted).toBe(false); + }); + + it('should fall back on timeout', async () => { + const fn1 = jest.fn((_s: AbortSignal) => new Promise(() => {})); + const fn2 = jest.fn((_s: AbortSignal) => Promise.resolve(2)); + await expect(withFallback(fn1, fn2, 0)).resolves.toBe(2); + expect(fn1.mock.lastCall?.[0].aborted).toBe(true); + expect(fn2.mock.lastCall?.[0].aborted).toBe(false); + }); + + it('should always reject with the first error', async () => { + const fn1 = jest.fn((_s: AbortSignal) => Promise.reject(new Error('1'))); + const fn2 = jest.fn((_s: AbortSignal) => Promise.reject(new Error('2'))); + await expect(withFallback(fn1, fn2, 0)).rejects.toThrow('1'); + expect(fn1.mock.lastCall?.[0].aborted).toBe(false); + expect(fn2.mock.lastCall?.[0].aborted).toBe(false); + }); + + it('should always reject with the first error even if rejected after', async () => { + const fn1 = jest.fn( + (_s: AbortSignal) => + new Promise((_resolve, reject) => { + setTimeout(() => reject(new Error('1')), 100); + }), + ); + const fn2 = jest.fn((_s: AbortSignal) => Promise.reject(new Error('2'))); + await expect(withFallback(fn1, fn2, 0)).rejects.toThrow('1'); + expect(fn1.mock.lastCall?.[0].aborted).toBe(false); + expect(fn2.mock.lastCall?.[0].aborted).toBe(false); + }); +}); diff --git a/packages/release-manifests/src/manifest.ts b/packages/release-manifests/src/manifest.ts index 955cf7308c..004ccfc77c 100644 --- a/packages/release-manifests/src/manifest.ts +++ b/packages/release-manifests/src/manifest.ts @@ -16,7 +16,9 @@ import fetch from 'cross-fetch'; -const VERSIONS_DOMAIN = 'https://versions.backstage.io'; +const VERSIONS_BASE_URL = 'https://versions.backstage.io'; +const GITHUB_RAW_BASE_URL = + 'https://raw.githubusercontent.com/backstage/versions/main'; /** * Contains mapping between Backstage release and package versions. @@ -35,6 +37,45 @@ export type GetManifestByVersionOptions = { version: string; }; +// Wait for waitMs, or until signal is aborted. +function wait(waitMs: number, signal: AbortSignal) { + return new Promise((resolve, reject) => { + const timeout = setTimeout(() => { + if (!signal.aborted) { + resolve(); + } + }, waitMs); + signal.addEventListener('abort', () => { + clearTimeout(timeout); + reject(new Error('Aborted')); + }); + }); +} + +// Run fn1 and then fn2 after fallbackDelayMs. Whichever one finishes +// first wins, and the other one is aborted through the provided signal. +export async function withFallback( + fn1: (signal: AbortSignal) => Promise, + fn2: (signal: AbortSignal) => Promise, + fallbackDelayMs: number, +): Promise { + const c1 = new AbortController(); + const c2 = new AbortController(); + + const promise1 = fn1(c1.signal).then(res => { + c2.abort(); + return res; + }); + const promise2 = wait(fallbackDelayMs, c2.signal) + .then(() => fn2(c2.signal)) + .then(res => { + c1.abort(); + return res; + }); + + return Promise.any([promise1, promise2]).catch(() => promise1); +} + /** * Returns a release manifest based on supplied version. * @public @@ -42,19 +83,27 @@ export type GetManifestByVersionOptions = { export async function getManifestByVersion( options: GetManifestByVersionOptions, ): Promise { - const url = `${VERSIONS_DOMAIN}/v1/releases/${encodeURIComponent( - options.version, - )}/manifest.json`; - const response = await fetch(url); - if (response.status === 404) { + const versionEnc = encodeURIComponent(options.version); + const res = await withFallback( + signal => + fetch(`${VERSIONS_BASE_URL}/v1/releases/${versionEnc}/manifest.json`, { + signal, + }), + signal => + fetch(`${GITHUB_RAW_BASE_URL}/v1/releases/${versionEnc}/manifest.json`, { + signal, + }), + 500, + ); + if (res.status === 404) { throw new Error(`No release found for ${options.version} version`); } - if (response.status !== 200) { + if (res.status !== 200) { throw new Error( - `Unexpected response status ${response.status} when fetching release from ${url}.`, + `Unexpected response status ${res.status} when fetching release from ${res.url}.`, ); } - return await response.json(); + return res.json(); } /** @@ -72,17 +121,31 @@ export type GetManifestByReleaseLineOptions = { export async function getManifestByReleaseLine( options: GetManifestByReleaseLineOptions, ): Promise { - const url = `${VERSIONS_DOMAIN}/v1/tags/${encodeURIComponent( - options.releaseLine, - )}/manifest.json`; - const response = await fetch(url); - if (response.status === 404) { + const releaseEnc = encodeURIComponent(options.releaseLine); + const res = await withFallback( + signal => + fetch(`${VERSIONS_BASE_URL}/v1/tags/${releaseEnc}/manifest.json`, { + signal, + }), + async signal => { + // The release tags are symlinks, which we need to follow manually when fetching from GitHub. + const baseUrl = `${GITHUB_RAW_BASE_URL}/v1/tags/${releaseEnc}`; + const linkRes = await fetch(baseUrl, { signal }); + if (!linkRes.ok) { + return linkRes; + } + const link = (await linkRes.text()).trim(); + return fetch(new URL(`${link}/manifest.json`, baseUrl), { signal }); + }, + 1000, + ); + if (res.status === 404) { throw new Error(`No '${options.releaseLine}' release line found`); } - if (response.status !== 200) { + if (res.status !== 200) { throw new Error( - `Unexpected response status ${response.status} when fetching release from ${url}.`, + `Unexpected response status ${res.status} when fetching release from ${res.url}.`, ); } - return await response.json(); + return res.json(); } diff --git a/packages/repo-tools/.eslintrc.js b/packages/repo-tools/.eslintrc.js new file mode 100644 index 0000000000..599478bcc8 --- /dev/null +++ b/packages/repo-tools/.eslintrc.js @@ -0,0 +1,5 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname, { + rules: { + 'no-console': 0, + }, +}); diff --git a/packages/repo-tools/CHANGELOG.md b/packages/repo-tools/CHANGELOG.md new file mode 100644 index 0000000000..2aa40b7cb3 --- /dev/null +++ b/packages/repo-tools/CHANGELOG.md @@ -0,0 +1,27 @@ +# @backstage/repo-tools + +## 0.1.0-next.1 + +### Minor Changes + +- 03843259b4: Api reference documentation improvements + + - breadcrumbs links semantics as code spans + - new `@config` annotation to describe related config keys + +### Patch Changes + +- 71f80eb354: add the command type-deps to the repo tool package. +- Updated dependencies + - @backstage/errors@1.1.4-next.1 + +## 0.1.0-next.0 + +### Minor Changes + +- 99713fd671: Introducing repo-tools package + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.1.4-next.0 diff --git a/packages/repo-tools/README.md b/packages/repo-tools/README.md new file mode 100644 index 0000000000..eb9f70dd72 --- /dev/null +++ b/packages/repo-tools/README.md @@ -0,0 +1,11 @@ +# @backstage/repo-tools + +This package provides a CLI for backstage repo tooling. + +## Installation + +Install the package via Yarn: + +```sh +yarn add @backstage/repo-tools +``` diff --git a/packages/repo-tools/bin/backstage-repo-tools b/packages/repo-tools/bin/backstage-repo-tools new file mode 100755 index 0000000000..377e4a32ca --- /dev/null +++ b/packages/repo-tools/bin/backstage-repo-tools @@ -0,0 +1,37 @@ +#!/usr/bin/env node +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +const path = require('path'); + +// Figure out whether we're running inside the backstage repo or as an installed dependency +/* eslint-disable-next-line no-restricted-syntax */ +const isLocal = require('fs').existsSync(path.resolve(__dirname, '../src')); + +if (!isLocal || process.env.BACKSTAGE_E2E_CLI_TEST) { + require('..'); +} else { + require('ts-node').register({ + transpileOnly: true, + /* eslint-disable-next-line no-restricted-syntax */ + project: path.resolve(__dirname, '../../../tsconfig.json'), + compilerOptions: { + module: 'CommonJS', + }, + }); + + require('../src'); +} diff --git a/packages/repo-tools/cli-report.md b/packages/repo-tools/cli-report.md new file mode 100644 index 0000000000..309ddad2a3 --- /dev/null +++ b/packages/repo-tools/cli-report.md @@ -0,0 +1,39 @@ +## CLI Report file for "@backstage/repo-tools" + +> Do not edit this file. It is a report generated by `yarn build:api-reports` + +### `backstage-repo-tools` + +``` +Usage: backstage-repo-tools [options] [command] + +Options: + -V, --version + -h, --help + +Commands: + api-reports [options] [path...] + type-deps + help [command] +``` + +### `backstage-repo-tools api-reports` + +``` +Usage: backstage-repo-tools api-reports [options] [path...] + +Options: + --ci + --tsc + --docs + -h, --help +``` + +### `backstage-repo-tools type-deps` + +``` +Usage: backstage-repo-tools type-deps [options] + +Options: + -h, --help +``` diff --git a/packages/repo-tools/package.json b/packages/repo-tools/package.json new file mode 100644 index 0000000000..a0caa3ee9c --- /dev/null +++ b/packages/repo-tools/package.json @@ -0,0 +1,53 @@ +{ + "name": "@backstage/repo-tools", + "description": "CLI for Backstage repo tooling ", + "version": "0.1.0-next.1", + "publishConfig": { + "access": "public" + }, + "backstage": { + "role": "cli" + }, + "homepage": "https://backstage.io", + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "packages/repo-tools" + }, + "keywords": [ + "backstage" + ], + "license": "Apache-2.0", + "main": "dist/index.cjs.js", + "scripts": { + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "clean": "backstage-cli package clean", + "start": "nodemon --" + }, + "bin": { + "backstage-repo-tools": "bin/backstage-repo-tools" + }, + "dependencies": { + "@backstage/errors": "workspace:^", + "@manypkg/get-packages": "^1.1.3", + "@microsoft/api-documenter": "^7.17.11", + "@microsoft/api-extractor": "^7.23.0", + "@microsoft/api-extractor-model": "^7.17.2", + "@microsoft/tsdoc": "0.14.1", + "chalk": "^4.0.0", + "commander": "^9.1.0", + "fs-extra": "10.1.0", + "ts-node": "^10.0.0" + }, + "files": [ + "bin", + "dist/**/*.js" + ], + "nodemonConfig": { + "watch": "./src", + "exec": "bin/backstage-repo-tools", + "ext": "ts" + } +} diff --git a/scripts/api-extractor.ts b/packages/repo-tools/src/commands/api-reports/api-extractor.ts similarity index 84% rename from scripts/api-extractor.ts rename to packages/repo-tools/src/commands/api-reports/api-extractor.ts index 244008584f..bae62ccc7e 100644 --- a/scripts/api-extractor.ts +++ b/packages/repo-tools/src/commands/api-reports/api-extractor.ts @@ -24,7 +24,7 @@ import { dirname, join, } from 'path'; -import { spawnSync, execFile } from 'child_process'; +import { execFile } from 'child_process'; import prettier from 'prettier'; import fs from 'fs-extra'; import { @@ -39,9 +39,19 @@ import { DocNode, IDocNodeContainerParameters, TSDocTagSyntaxKind, + TSDocConfiguration, + Standardization, + DocBlockTag, + DocPlainText, + DocLinkTag, } from '@microsoft/tsdoc'; import { TSDocConfigFile } from '@microsoft/tsdoc-config'; -import { ApiPackage, ApiModel, ApiItem } from '@microsoft/api-extractor-model'; +import { + ApiPackage, + ApiModel, + ApiItem, + ApiItemKind, +} from '@microsoft/api-extractor-model'; import { IMarkdownDocumenterOptions, MarkdownDocumenter, @@ -49,11 +59,17 @@ import { import { DocTable } from '@microsoft/api-documenter/lib/nodes/DocTable'; import { DocTableRow } from '@microsoft/api-documenter/lib/nodes/DocTableRow'; import { DocHeading } from '@microsoft/api-documenter/lib/nodes/DocHeading'; -import { CustomMarkdownEmitter } from '@microsoft/api-documenter/lib/markdown/CustomMarkdownEmitter'; +import { + CustomMarkdownEmitter, + ICustomMarkdownEmitterOptions, +} from '@microsoft/api-documenter/lib/markdown/CustomMarkdownEmitter'; import { IMarkdownEmitterContext } from '@microsoft/api-documenter/lib/markdown/MarkdownEmitter'; import { AstDeclaration } from '@microsoft/api-extractor/lib/analyzer/AstDeclaration'; -const tmpDir = resolvePath(__dirname, '../node_modules/.cache/api-extractor'); +const tmpDir = resolvePath( + process.cwd(), + './node_modules/.cache/api-extractor', +); /** * All of this monkey patching below is because MUI has these bare package.json file as a method @@ -99,7 +115,9 @@ function patchFileMessageFetcher( } = router; router.fetchAssociatedMessagesForReviewFile = - function patchedFetchAssociatedMessagesForReviewFile(ast) { + function patchedFetchAssociatedMessagesForReviewFile( + ast: AstDeclaration | undefined, + ) { const messages = fetchAssociatedMessagesForReviewFile.call(this, ast); return transform(messages, ast); }; @@ -113,7 +131,10 @@ function patchFileMessageFetcher( const originalGenerateReviewFileContent = ApiReportGenerator.generateReviewFileContent; ApiReportGenerator.generateReviewFileContent = - function decoratedGenerateReviewFileContent(collector, ...moreArgs) { + function decoratedGenerateReviewFileContent( + collector: { program: Program; messageRouter: any }, + ...moreArgs: any[] + ) { const program = collector.program as Program; // The purpose of this override is to allow the @ignore tag to be used to ignore warnings @@ -137,7 +158,9 @@ ApiReportGenerator.generateReviewFileContent = } const [, symbolName] = symbolMatch; - const sourceFile = program.getSourceFile(message.sourceFilePath); + const sourceFile = + message.sourceFilePath && + program.getSourceFile(message.sourceFilePath); if (!sourceFile) { throw new Error( `Failed to find source file in program at path "${message.sourceFilePath}"`, @@ -210,7 +233,7 @@ const ALLOW_WARNINGS = [ async function resolvePackagePath( packagePath: string, ): Promise { - const projectRoot = resolvePath(__dirname, '..'); + const projectRoot = resolvePath(process.cwd()); const fullPackageDir = resolvePath(projectRoot, packagePath); const stat = await fs.stat(fullPackageDir); @@ -228,7 +251,7 @@ async function resolvePackagePath( return relativePath(projectRoot, fullPackageDir); } -async function findSpecificPackageDirs(unresolvedPackageDirs: string[]) { +export async function findSpecificPackageDirs(unresolvedPackageDirs: string[]) { const packageDirs = new Array(); for (const unresolvedPackageDir of unresolvedPackageDirs) { @@ -246,9 +269,9 @@ async function findSpecificPackageDirs(unresolvedPackageDirs: string[]) { return packageDirs; } -async function findPackageDirs() { +export async function findPackageDirs() { const packageDirs = new Array(); - const projectRoot = resolvePath(__dirname, '..'); + const projectRoot = resolvePath(process.cwd()); for (const packageRoot of PACKAGE_ROOTS) { const dirs = await fs.readdir(resolvePath(projectRoot, packageRoot)); @@ -265,8 +288,8 @@ async function findPackageDirs() { return packageDirs; } -async function createTemporaryTsConfig(includedPackageDirs: string[]) { - const path = resolvePath(__dirname, '..', 'tsconfig.tmp.json'); +export async function createTemporaryTsConfig(includedPackageDirs: string[]) { + const path = resolvePath(process.cwd(), 'tsconfig.tmp.json'); process.once('exit', () => { fs.removeSync(path); @@ -284,7 +307,7 @@ async function createTemporaryTsConfig(includedPackageDirs: string[]) { return path; } -async function countApiReportWarnings(projectFolder: string) { +export async function countApiReportWarnings(projectFolder: string) { const path = resolvePath(projectFolder, 'api-report.md'); try { const content = await fs.readFile(path, 'utf8'); @@ -313,7 +336,7 @@ async function countApiReportWarnings(projectFolder: string) { } } -async function getTsDocConfig() { +export async function getTsDocConfig() { const tsdocConfigFile = await TSDocConfigFile.loadFile( require.resolve('@microsoft/api-extractor/extends/tsdoc-base.json'), ); @@ -321,7 +344,12 @@ async function getTsDocConfig() { tagName: '@ignore', syntaxKind: TSDocTagSyntaxKind.ModifierTag, }); + tsdocConfigFile.addTagDefinition({ + tagName: '@config', + syntaxKind: TSDocTagSyntaxKind.BlockTag, + }); tsdocConfigFile.setSupportForTag('@ignore', true); + tsdocConfigFile.setSupportForTag('@config', true); return tsdocConfigFile; } @@ -349,7 +377,7 @@ interface ApiExtractionOptions { tsconfigFilePath: string; } -async function runApiExtraction({ +export async function runApiExtraction({ packageDirs, outputDir, isLocalBuild, @@ -358,7 +386,10 @@ async function runApiExtraction({ await fs.remove(outputDir); const entryPoints = packageDirs.map(packageDir => { - return resolvePath(__dirname, `../dist-types/${packageDir}/src/index.d.ts`); + return resolvePath( + process.cwd(), + `./dist-types/${packageDir}/src/index.d.ts`, + ); }); let compilerState: CompilerState | undefined = undefined; @@ -367,8 +398,12 @@ async function runApiExtraction({ for (const packageDir of packageDirs) { console.log(`## Processing ${packageDir}`); - const projectFolder = resolvePath(__dirname, '..', packageDir); - const packageFolder = resolvePath(__dirname, '../dist-types', packageDir); + const projectFolder = resolvePath(process.cwd(), packageDir); + const packageFolder = resolvePath( + process.cwd(), + './dist-types', + packageDir, + ); const warningCountBefore = await countApiReportWarnings(projectFolder); @@ -618,7 +653,7 @@ class ApiModelTransforms { if (serialized.members.length !== 1) { throw new Error( `Unexpected members in serialized ApiPackage, [${serialized.members - .map(m => m.kind) + .map((m: { kind: any }) => m.kind) .join(' ')}]`, ); } @@ -634,7 +669,7 @@ class ApiModelTransforms { members: [ { ...entryPoint, - members: entryPoint.members.map(member => + members: entryPoint.members.map((member: any) => transforms.reduce((m, t) => t(m), member), ), }, @@ -753,7 +788,7 @@ class ApiModelTransforms { }; } -async function buildDocs({ +export async function buildDocs({ inputDir, outputDir, }: { @@ -807,6 +842,16 @@ async function buildDocs({ } } + // This class only propose is to have a different kind and be able to render links with backticks + class DocCodeSpanLink extends DocLinkTag { + static kind = 'DocCodeSpanLink'; + + /** @override */ + public get kind(): string { + return DocCodeSpanLink.kind; + } + } + // This is where we actually write the markdown and where we can hook // in the rendering of our own nodes. class CustomCustomMarkdownEmitter extends CustomMarkdownEmitter { @@ -825,7 +870,7 @@ async function buildDocs({ /** @override */ protected writeNode( docNode: DocNode, - context: IMarkdownEmitterContext, + context: IMarkdownEmitterContext, docNodeSiblings: boolean, ): void { switch (docNode.kind) { @@ -841,13 +886,43 @@ async function buildDocs({ context.writer.writeLine(); break; } + case 'BlockTag': { + const node = docNode as DocBlockTag; + if (node.tagName === '@config') { + context.writer.writeLine('## Related config '); + } + break; + } + case DocCodeSpanLink.kind: { + const node = docNode as DocLinkTag; + if (node.codeDestination) { + // TODO @sarabadu understand if we need `codeDestination` at all on this custom DocCodeSpanLink + super.writeLinkTagWithCodeDestination(node, context); + } else if (node.urlDestination) { + const linkText = + node.linkText !== undefined ? node.linkText : node.urlDestination; + const encodedLinkText = this.getEscapedText( + linkText.replace(/\s+/g, ' '), + ); + context.writer.write('['); + context.writer.write(`\`${encodedLinkText}\``); + context.writer.write(`](${node.urlDestination})`); + } else if (node.linkText) { + this.writePlainText(node.linkText, context); + } + break; + } default: super.writeNode(docNode, context, docNodeSiblings); } } /** @override */ - emit(stringBuilder, docNode, options) { + emit( + stringBuilder: any, + docNode: DocNode, + options: ICustomMarkdownEmitterOptions, + ) { // Hack to get rid of the leading comment of each file, since // we want the front matter to come first stringBuilder._chunks.length = 0; @@ -860,15 +935,35 @@ async function buildDocs({ super(options); // It's a strict model, we gotta register the allowed usage of our new node - this._tsdocConfiguration.docNodeManager.registerDocNodes( - '@backstage/docs', - [{ docNodeKind: DocFrontMatter.kind, constructor: DocFrontMatter }], - ); - this._tsdocConfiguration.docNodeManager.registerAllowableChildren( - 'Paragraph', - [DocFrontMatter.kind], - ); + ( + this._tsdocConfiguration as TSDocConfiguration + ).docNodeManager.registerDocNodes('@backstage/docs', [ + { docNodeKind: DocFrontMatter.kind, constructor: DocFrontMatter }, + ]); + ( + this._tsdocConfiguration as TSDocConfiguration + ).docNodeManager.registerDocNodes('@backstage/docs', [ + { docNodeKind: DocCodeSpanLink.kind, constructor: DocCodeSpanLink }, + ]); + ( + this._tsdocConfiguration as TSDocConfiguration + ).docNodeManager.registerAllowableChildren('Paragraph', [ + DocFrontMatter.kind, + DocCodeSpanLink.kind, + ]); + const def = { + tagName: '@config', + syntaxKind: TSDocTagSyntaxKind.BlockTag, + tagNameWithUpperCase: '@CONFIG', + standardization: Standardization.Extended, + allowMultiple: false, + }; + (this._tsdocConfiguration as TSDocConfiguration).addTagDefinition(def); + (this._tsdocConfiguration as TSDocConfiguration).setSupportForTag( + def, + true, + ); this._markdownEmitter = new CustomCustomMarkdownEmitter(newModel); } @@ -886,7 +981,7 @@ async function buildDocs({ // so we hook in wherever we can. In this case we add the front matter // just before writing the breadcrumbs at the top. /** @override */ - _writeBreadcrumb(output, apiItem) { + _writeBreadcrumb(output: any, apiItem: ApiItem & { name: string }) { let title; let description; @@ -897,9 +992,12 @@ async function buildDocs({ } else if (apiItem.kind === 'Model') { title = 'Package Index'; description = 'Index of all Backstage Packages'; - } else { + } else if (apiItem.name) { title = apiItem.name; description = `API Reference for ${apiItem.name}`; + } else { + title = apiItem.displayName; + description = `API Reference for ${apiItem.displayName}`; } // Add our front matter @@ -914,8 +1012,40 @@ async function buildDocs({ }), ); - // Now write the actual breadcrumbs - super._writeBreadcrumb(output, apiItem); + const configuration: TSDocConfiguration = this._tsdocConfiguration; + + output.appendNodeInParagraph( + new DocLinkTag({ + configuration, + tagName: '@link', + linkText: 'Home', + urlDestination: this._getLinkFilenameForApiItem(this._apiModel), + }), + ); + + for (const hierarchyItem of apiItem.getHierarchy()) { + switch (hierarchyItem.kind) { + case ApiItemKind.Model: + case ApiItemKind.EntryPoint: + // We don't show the model as part of the breadcrumb because it is the root-level container. + // We don't show the entry point because today API Extractor doesn't support multiple entry points; + // this may change in the future. + break; + default: + output.appendNodesInParagraph([ + new DocPlainText({ + configuration, + text: ' > ', + }), + new DocCodeSpanLink({ + configuration, + tagName: '@link', + linkText: hierarchyItem.displayName, + urlDestination: this._getLinkFilenameForApiItem(hierarchyItem), + }), + ]); + } + } // We wanna ignore the header that always gets written after the breadcrumb // This otherwise becomes more or less a duplicate of the title in the front matter @@ -925,7 +1055,10 @@ async function buildDocs({ }; } - _writeModelTable(output, apiModel): void { + _writeModelTable( + output: { appendNode: (arg0: DocTable | DocHeading) => void }, + apiModel: { members: any }, + ): void { const configuration = this._tsdocConfiguration; const packagesTable = new DocTable({ @@ -998,7 +1131,10 @@ async function buildDocs({ documenter.generateFiles(); } -async function categorizePackageDirs(projectRoot, packageDirs) { +export async function categorizePackageDirs( + projectRoot: string, + packageDirs: any[], +) { const dirs = packageDirs.slice(); const tsPackageDirs = new Array(); const cliPackageDirs = new Array(); @@ -1086,11 +1222,11 @@ function parseHelpPage(helpPageContent: string) { // Trim away documentation const sectionItems = sectionLines .map(line => line.match(/^\s{1,8}(.*?)\s\s+/)?.[1]) - .filter(Boolean); + .filter(Boolean) as string[]; - if (sectionName.toLocaleLowerCase('en-US') === 'options:') { + if (sectionName?.toLocaleLowerCase('en-US') === 'options:') { options = sectionItems; - } else if (sectionName.toLocaleLowerCase('en-US') === 'commands:') { + } else if (sectionName?.toLocaleLowerCase('en-US') === 'commands:') { commands = sectionItems; } else { throw new Error(`Unknown CLI section: ${sectionName}`); @@ -1185,7 +1321,7 @@ interface CliExtractionOptions { isLocalBuild: boolean; } -async function runCliExtraction({ +export async function runCliExtraction({ projectRoot, packageDirs, isLocalBuild, @@ -1250,96 +1386,3 @@ async function runCliExtraction({ } } } - -async function main() { - const projectRoot = resolvePath(__dirname, '..'); - const isCiBuild = process.argv.includes('--ci'); - const isDocsBuild = process.argv.includes('--docs'); - const runTsc = process.argv.includes('--tsc'); - - const selectedPackageDirs = await findSpecificPackageDirs( - process.argv.slice(2).filter(arg => !arg.startsWith('--')), - ); - if (selectedPackageDirs && isCiBuild) { - throw new Error( - 'Package path arguments are not supported together with the --ci flag', - ); - } - if (!selectedPackageDirs && !isCiBuild && !isDocsBuild) { - console.log(''); - console.log( - 'TIP: You can generate api-reports for select packages by passing package paths:', - ); - console.log(''); - console.log( - ' yarn build:api-reports packages/config packages/core-plugin-api', - ); - console.log(''); - } - - let temporaryTsConfigPath: string | undefined; - if (selectedPackageDirs) { - temporaryTsConfigPath = await createTemporaryTsConfig(selectedPackageDirs); - } - const tsconfigFilePath = - temporaryTsConfigPath ?? resolvePath(projectRoot, 'tsconfig.json'); - - if (runTsc) { - await fs.remove(resolvePath(projectRoot, 'dist-types')); - const { status } = spawnSync( - 'yarn', - [ - 'tsc', - ['--project', tsconfigFilePath], - ['--skipLibCheck', 'false'], - ['--incremental', 'false'], - ].flat(), - { - stdio: 'inherit', - shell: true, - cwd: projectRoot, - }, - ); - if (status !== 0) { - process.exit(status); - } - } - - const packageDirs = selectedPackageDirs ?? (await findPackageDirs()); - - const { tsPackageDirs, cliPackageDirs } = await categorizePackageDirs( - projectRoot, - packageDirs, - ); - - if (tsPackageDirs.length > 0) { - console.log('# Generating package API reports'); - await runApiExtraction({ - packageDirs: tsPackageDirs, - outputDir: tmpDir, - isLocalBuild: !isCiBuild, - tsconfigFilePath, - }); - } - if (cliPackageDirs.length > 0) { - console.log('# Generating package CLI reports'); - await runCliExtraction({ - projectRoot, - packageDirs: cliPackageDirs, - isLocalBuild: !isCiBuild, - }); - } - - if (isDocsBuild) { - console.log('# Generating package documentation'); - await buildDocs({ - inputDir: tmpDir, - outputDir: resolvePath(projectRoot, 'docs/reference'), - }); - } -} - -main().catch(error => { - console.error(error.stack || String(error)); - process.exit(1); -}); diff --git a/packages/repo-tools/src/commands/api-reports/api-reports.ts b/packages/repo-tools/src/commands/api-reports/api-reports.ts new file mode 100644 index 0000000000..3ac740d596 --- /dev/null +++ b/packages/repo-tools/src/commands/api-reports/api-reports.ts @@ -0,0 +1,120 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { OptionValues } from 'commander'; +import { resolve as resolvePath } from 'path'; +import fs from 'fs-extra'; +import { spawnSync } from 'child_process'; +import { + findSpecificPackageDirs, + createTemporaryTsConfig, + findPackageDirs, + categorizePackageDirs, + runApiExtraction, + runCliExtraction, + buildDocs, +} from './api-extractor'; + +export default async (paths: string[], opts: OptionValues) => { + const tmpDir = resolvePath( + process.cwd(), + './node_modules/.cache/api-extractor', + ); + const projectRoot = resolvePath(process.cwd()); + const isCiBuild = opts.ci; + const isDocsBuild = opts.docs; + const runTsc = opts.tsc; + + const selectedPackageDirs = await findSpecificPackageDirs(paths); + + if (selectedPackageDirs && isCiBuild) { + throw new Error( + 'Package path arguments are not supported together with the --ci flag', + ); + } + if (!selectedPackageDirs && !isCiBuild && !isDocsBuild) { + console.log(''); + console.log( + 'TIP: You can generate api-reports for select packages by passing package paths:', + ); + console.log(''); + console.log( + ' yarn build:api-reports packages/config packages/core-plugin-api', + ); + console.log(''); + } + + let temporaryTsConfigPath: string | undefined; + if (selectedPackageDirs) { + temporaryTsConfigPath = await createTemporaryTsConfig(selectedPackageDirs); + } + const tsconfigFilePath = + temporaryTsConfigPath ?? resolvePath(projectRoot, 'tsconfig.json'); + + if (runTsc) { + await fs.remove(resolvePath(projectRoot, 'dist-types')); + const { status } = spawnSync( + 'yarn', + [ + 'tsc', + ['--project', tsconfigFilePath], + ['--skipLibCheck', 'false'], + ['--incremental', 'false'], + ].flat(), + { + stdio: 'inherit', + shell: true, + cwd: projectRoot, + }, + ); + if (status !== 0) { + process.exit(status || undefined); + } + } + + const packageDirs = selectedPackageDirs ?? (await findPackageDirs()); + + const { tsPackageDirs, cliPackageDirs } = await categorizePackageDirs( + projectRoot, + packageDirs, + ); + + if (tsPackageDirs.length > 0) { + console.log('# Generating package API reports'); + await runApiExtraction({ + packageDirs: tsPackageDirs, + outputDir: tmpDir, + isLocalBuild: !isCiBuild, + tsconfigFilePath, + }); + } + if (cliPackageDirs.length > 0) { + console.log('# Generating package CLI reports'); + await runCliExtraction({ + projectRoot, + packageDirs: cliPackageDirs, + isLocalBuild: !isCiBuild, + }); + } + + if (isDocsBuild) { + console.log('# Generating package documentation'); + await buildDocs({ + inputDir: tmpDir, + outputDir: resolvePath(projectRoot, 'docs/reference'), + }); + } +}; diff --git a/packages/repo-tools/src/commands/index.ts b/packages/repo-tools/src/commands/index.ts new file mode 100644 index 0000000000..ebbcb5be8e --- /dev/null +++ b/packages/repo-tools/src/commands/index.ts @@ -0,0 +1,53 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { assertError } from '@backstage/errors'; +import { Command } from 'commander'; +import { exitWithError } from '../lib/errors'; + +export function registerCommands(program: Command) { + program + .command('api-reports [path...]') + .option('--ci', 'CI run checks that there is no changes on API reports') + .option('--tsc', 'executes the tsc compilation before extracting the APIs') + .option('--docs', 'generates the api documentation') + .description('Generate an API report for selected packages') + .action( + lazy(() => import('./api-reports/api-reports').then(m => m.default)), + ); + + program + .command('type-deps') + .description('Find inconsistencies in types of all packages and plugins') + .action(lazy(() => import('./type-deps/type-deps').then(m => m.default))); +} + +// Wraps an action function so that it always exits and handles errors +function lazy( + getActionFunc: () => Promise<(...args: any[]) => Promise>, +): (...args: any[]) => Promise { + return async (...args: any[]) => { + try { + const actionFunc = await getActionFunc(); + await actionFunc(...args); + + process.exit(0); + } catch (error) { + assertError(error); + exitWithError(error); + } + }; +} diff --git a/scripts/check-type-dependencies.js b/packages/repo-tools/src/commands/type-deps/type-deps.ts old mode 100755 new mode 100644 similarity index 79% rename from scripts/check-type-dependencies.js rename to packages/repo-tools/src/commands/type-deps/type-deps.ts index ba362bd5ff..d4dd28aa14 --- a/scripts/check-type-dependencies.js +++ b/packages/repo-tools/src/commands/type-deps/type-deps.ts @@ -1,6 +1,5 @@ -#!/usr/bin/env node /* - * Copyright 2020 The Backstage Authors + * Copyright 2022 The Backstage Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,14 +14,14 @@ * limitations under the License. */ -const fs = require('fs'); -const { resolve: resolvePath } = require('path'); +import fs from 'fs'; +import { resolve as resolvePath } from 'path'; // Cba polluting root package.json, we'll have this // eslint-disable-next-line import/no-extraneous-dependencies -const chalk = require('chalk'); -const { getPackages } = require('@manypkg/get-packages'); +import chalk from 'chalk'; +import { getPackages, Package } from '@manypkg/get-packages'; -async function main() { +export default async () => { const { packages } = await getPackages(resolvePath('.')); let hadErrors = false; @@ -63,24 +62,29 @@ async function main() { process.exit(2); } -} +}; -function shouldCheckTypes(pkg) { +type PackageJsonWithTypes = { + packageJson: { + types?: string; + }; +}; +function shouldCheckTypes(pkg: Package & PackageJsonWithTypes) { return ( - !pkg.private && + !pkg.packageJson.private && pkg.packageJson.types && fs.existsSync(resolvePath(pkg.dir, 'dist/index.d.ts')) ); } -function findAllDeps(declSrc) { +function findAllDeps(declSrc: string) { const importedDeps = (declSrc.match(/^import .* from '.*';$/gm) || []) - .map(match => match.match(/from '(.*)'/)[1]) + .map(match => match.match(/from '(.*)'/)?.[1] ?? '') .filter(n => !n.startsWith('.')); const referencedDeps = ( declSrc.match(/^\/\/\/ $/gm) || [] ) - .map(match => match.match(/types="(.*)"/)[1]) + .map(match => match.match(/types="(.*)"/)?.[1] ?? '') .filter(n => !n.startsWith('.')) // We allow references to these without an explicit dependency. .filter(n => !['node', 'react'].includes(n)); @@ -91,7 +95,7 @@ function findAllDeps(declSrc) { * Scan index.d.ts for imports and return errors for any dependency that's * missing or incorrect in package.json */ -function checkTypes(pkg) { +function checkTypes(pkg: Package) { const typeDecl = fs.readFileSync( resolvePath(pkg.dir, 'dist/index.d.ts'), 'utf8', @@ -121,7 +125,7 @@ function checkTypes(pkg) { * Find the package used for types. This assumes that types are working is a package * can be resolved, it doesn't do any checking of presence of types inside the dep. */ -function findTypesPackage(dep, pkg) { +function findTypesPackage(dep: string, pkg: Package) { try { require.resolve(`@types/${dep}/package.json`, { paths: [pkg.dir] }); return `@types/${dep}`; @@ -136,10 +140,21 @@ function findTypesPackage(dep, pkg) { return undefined; } catch { try { - // Finally check if it's just a .d.ts file + // Check if it's just a .d.ts file require.resolve(`${dep}.d.ts`, { paths: [pkg.dir] }); return undefined; } catch { + // And finally a naive lookup of the file directly, in case `require.resolve` fails us due to "exports" + if (fs.existsSync(resolvePath(pkg.dir, `node_modules/${dep}.d.ts`))) { + return undefined; + } + if ( + fs.existsSync( + resolvePath(pkg.dir, `../../node_modules/${dep}.d.ts`), + ) + ) { + return undefined; + } throw mkErr('MissingDepError', `No types for ${dep}`, { dep }); } } @@ -150,7 +165,7 @@ function findTypesPackage(dep, pkg) { /** * Figures out what type dependencies are missing, or should be moved between dep types */ -function findTypeDepErrors(typeDeps, pkg) { +function findTypeDepErrors(typeDeps: string[], pkg: Package) { const devDeps = mkTypeDepSet(pkg.packageJson.devDependencies); const deps = mkTypeDepSet({ ...pkg.packageJson.dependencies, @@ -193,19 +208,14 @@ function findTypeDepErrors(typeDeps, pkg) { return errors; } -function mkTypeDepSet(deps) { +function mkTypeDepSet(deps: Record | undefined) { const typeDeps = Object.keys(deps || {}).filter(n => n.startsWith('@types/')); return new Set(typeDeps); } -function mkErr(name, msg, extra) { +function mkErr(name: string, msg: string, extra: Record) { const error = new Error(msg); error.name = name; Object.assign(error, extra); return error; } - -main().catch(error => { - console.error(error.stack || error); - process.exit(1); -}); diff --git a/packages/repo-tools/src/index.ts b/packages/repo-tools/src/index.ts new file mode 100644 index 0000000000..ed0e2992d3 --- /dev/null +++ b/packages/repo-tools/src/index.ts @@ -0,0 +1,52 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * CLI for Backstage repo tooling + * + * @packageDocumentation + */ + +import { program } from 'commander'; +import chalk from 'chalk'; +import { exitWithError } from './lib/errors'; +import { registerCommands } from './commands'; + +const main = (argv: string[]) => { + program.name('backstage-repo-tools').version('1.0'); + + registerCommands(program); + + program.on('command:*', () => { + console.log(); + console.log(chalk.red(`Invalid command: ${program.args.join(' ')}`)); + console.log(); + program.outputHelp(); + process.exit(1); + }); + + program.parse(argv); +}; + +process.on('unhandledRejection', rejection => { + if (rejection instanceof Error) { + exitWithError(rejection); + } else { + exitWithError(new Error(`Unknown rejection: '${rejection}'`)); + } +}); + +main(process.argv); diff --git a/packages/repo-tools/src/lib/errors.ts b/packages/repo-tools/src/lib/errors.ts new file mode 100644 index 0000000000..dd3955a10a --- /dev/null +++ b/packages/repo-tools/src/lib/errors.ts @@ -0,0 +1,48 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import chalk from 'chalk'; + +export class CustomError extends Error { + get name(): string { + return this.constructor.name; + } +} + +export class ExitCodeError extends CustomError { + readonly code: number; + + constructor(code: number, command?: string) { + super( + command + ? `Command '${command}' exited with code ${code}` + : `Child exited with code ${code}`, + ); + this.code = code; + } +} + +export function exitWithError(error: Error): never { + if (error instanceof ExitCodeError) { + process.stderr.write(`\n${chalk.red(error.message)}\n\n`); + process.exit(error.code); + } else { + process.stderr.write(`\n${chalk.red(`${error}`)}\n\n`); + process.exit(1); + } +} + +export class NotFoundError extends CustomError {} diff --git a/packages/techdocs-cli-embedded-app/CHANGELOG.md b/packages/techdocs-cli-embedded-app/CHANGELOG.md index fc7dbe743b..fde2899596 100644 --- a/packages/techdocs-cli-embedded-app/CHANGELOG.md +++ b/packages/techdocs-cli-embedded-app/CHANGELOG.md @@ -1,5 +1,88 @@ # techdocs-cli-embedded-app +## 0.2.77-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-app-api@1.2.1-next.1 + - @backstage/core-components@0.12.1-next.1 + - @backstage/plugin-catalog@1.6.2-next.1 + - @backstage/plugin-techdocs@1.4.1-next.1 + - @backstage/test-utils@1.2.3-next.1 + - @backstage/cli@0.21.2-next.1 + - @backstage/core-plugin-api@1.1.1-next.1 + - @backstage/app-defaults@1.0.9-next.1 + - @backstage/integration-react@1.1.7-next.1 + - @backstage/plugin-techdocs-react@1.0.7-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/theme@0.2.16 + +## 0.2.77-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-techdocs-react@1.0.7-next.0 + - @backstage/cli@0.21.2-next.0 + - @backstage/core-components@0.12.1-next.0 + - @backstage/core-app-api@1.2.1-next.0 + - @backstage/core-plugin-api@1.1.1-next.0 + - @backstage/integration-react@1.1.7-next.0 + - @backstage/test-utils@1.2.3-next.0 + - @backstage/plugin-techdocs@1.4.1-next.0 + - @backstage/plugin-catalog@1.6.2-next.0 + - @backstage/app-defaults@1.0.9-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/theme@0.2.16 + +## 0.2.76 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-techdocs@1.4.0 + - @backstage/core-components@0.12.0 + - @backstage/core-app-api@1.2.0 + - @backstage/cli@0.21.0 + - @backstage/core-plugin-api@1.1.0 + - @backstage/catalog-model@1.1.3 + - @backstage/plugin-techdocs-react@1.0.6 + - @backstage/plugin-catalog@1.6.1 + - @backstage/app-defaults@1.0.8 + - @backstage/integration-react@1.1.6 + - @backstage/test-utils@1.2.2 + - @backstage/config@1.0.4 + - @backstage/theme@0.2.16 + +## 0.2.76-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-techdocs@1.4.0-next.2 + - @backstage/cli@0.21.0-next.1 + - @backstage/core-components@0.12.0-next.1 + - @backstage/app-defaults@1.0.8-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/core-app-api@1.2.0-next.0 + - @backstage/core-plugin-api@1.1.0-next.0 + - @backstage/integration-react@1.1.6-next.1 + - @backstage/test-utils@1.2.2-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog@1.6.1-next.1 + - @backstage/plugin-techdocs-react@1.0.6-next.1 + +## 0.2.76-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-techdocs@1.4.0-next.1 + ## 0.2.76-next.0 ### Patch Changes diff --git a/packages/techdocs-cli-embedded-app/package.json b/packages/techdocs-cli-embedded-app/package.json index c34c52e3f2..79aef2a74a 100644 --- a/packages/techdocs-cli-embedded-app/package.json +++ b/packages/techdocs-cli-embedded-app/package.json @@ -1,6 +1,6 @@ { "name": "techdocs-cli-embedded-app", - "version": "0.2.76-next.0", + "version": "0.2.77-next.1", "private": true, "backstage": { "role": "frontend" diff --git a/packages/techdocs-cli-embedded-app/public/index.html b/packages/techdocs-cli-embedded-app/public/index.html index b548d8fb70..c6083b3dd2 100644 --- a/packages/techdocs-cli-embedded-app/public/index.html +++ b/packages/techdocs-cli-embedded-app/public/index.html @@ -54,8 +54,8 @@ You can add webfonts, meta tags, or analytics to this file. The build step will place the bundled scripts into the tag. - To begin the development, run `npm start` or `yarn start`. - To create a production bundle, use `npm run build` or `yarn build`. + To begin the development, run `yarn start`. + To create a production bundle, use `yarn build`. -->