diff --git a/.changeset/afraid-flies-try.md b/.changeset/afraid-flies-try.md
new file mode 100644
index 0000000000..15d2e3942c
--- /dev/null
+++ b/.changeset/afraid-flies-try.md
@@ -0,0 +1,7 @@
+---
+'@backstage/plugin-cost-insights': patch
+---
+
+Move cost-insights data specific API types (non react) into an @backstage/plugin-cost-insights-common
+isomorphic package. This allows these types to be shared in any backend packages or other cost-insight
+modules.
diff --git a/.changeset/beige-carpets-double.md b/.changeset/beige-carpets-double.md
new file mode 100644
index 0000000000..98e0d8d69a
--- /dev/null
+++ b/.changeset/beige-carpets-double.md
@@ -0,0 +1,9 @@
+---
+'@backstage/plugin-code-coverage': minor
+---
+
+Cleaned up API exports.
+
+The `Router` export has been removed; users are expected to use `EntityCodeCoverageContent` instead.
+
+The `isPluginApplicableToEntity` helper has been deprecated, in favor of the `isCodeCoverageAvailable` helper.
diff --git a/.changeset/beige-carpets-triple.md b/.changeset/beige-carpets-triple.md
new file mode 100644
index 0000000000..5eda26fb02
--- /dev/null
+++ b/.changeset/beige-carpets-triple.md
@@ -0,0 +1,7 @@
+---
+'@backstage/plugin-code-coverage-backend': minor
+---
+
+Cleaned up API exports.
+
+The `CodeCoverageApi` and `makeRouter` exports have been removed from the backend, since they were not meant to be exported in the first place.
diff --git a/.changeset/blue-monkeys-explain.md b/.changeset/blue-monkeys-explain.md
new file mode 100644
index 0000000000..69382ff11d
--- /dev/null
+++ b/.changeset/blue-monkeys-explain.md
@@ -0,0 +1,6 @@
+---
+'@backstage/create-app': patch
+---
+
+Adds the ability to define the Backstage app name using a `BACKSTAGE_APP_NAME`
+environment variable when running `create-app`.
diff --git a/.changeset/breezy-poems-grab.md b/.changeset/breezy-poems-grab.md
new file mode 100644
index 0000000000..ac250b9c7e
--- /dev/null
+++ b/.changeset/breezy-poems-grab.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-tech-insights-backend': patch
+---
+
+TechInsightsBackend: Added missing 'scheduler' to code examples
diff --git a/.changeset/breezy-seas-exist.md b/.changeset/breezy-seas-exist.md
new file mode 100644
index 0000000000..2b061f11a8
--- /dev/null
+++ b/.changeset/breezy-seas-exist.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder': patch
+---
+
+The template editor now shows the cause of request errors that happen during a dry-run.
diff --git a/.changeset/bright-balloons-hide.md b/.changeset/bright-balloons-hide.md
new file mode 100644
index 0000000000..5163e72dc1
--- /dev/null
+++ b/.changeset/bright-balloons-hide.md
@@ -0,0 +1,5 @@
+---
+'@backstage/core-components': patch
+---
+
+Change BackstageIconLinkVertical style to use pallette instead of explicit color
diff --git a/.changeset/calm-experts-buy.md b/.changeset/calm-experts-buy.md
new file mode 100644
index 0000000000..d95844e298
--- /dev/null
+++ b/.changeset/calm-experts-buy.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-techdocs-node': minor
+---
+
+Added local publishing target directory `config`: `techdocs.publisher.local.publishDirectory`
diff --git a/.changeset/chilled-mirrors-grab.md b/.changeset/chilled-mirrors-grab.md
new file mode 100644
index 0000000000..ecc95680e2
--- /dev/null
+++ b/.changeset/chilled-mirrors-grab.md
@@ -0,0 +1,5 @@
+---
+'@backstage/backend-common': patch
+---
+
+Fix parsing of S3 URLs for the default region.
diff --git a/.changeset/cool-toys-flow.md b/.changeset/cool-toys-flow.md
new file mode 100644
index 0000000000..799bf3ace4
--- /dev/null
+++ b/.changeset/cool-toys-flow.md
@@ -0,0 +1,5 @@
+---
+'@backstage/core-components': minor
+---
+
+Add `transformLinkUri` and `transformImageUri` to `MarkdownContent`
diff --git a/.changeset/create-app-1656408352.md b/.changeset/create-app-1656408352.md
new file mode 100644
index 0000000000..b50d431d4b
--- /dev/null
+++ b/.changeset/create-app-1656408352.md
@@ -0,0 +1,5 @@
+---
+'@backstage/create-app': patch
+---
+
+Bumped create-app version.
diff --git a/.changeset/cuddly-flowers-provide.md b/.changeset/cuddly-flowers-provide.md
new file mode 100644
index 0000000000..729ac96cda
--- /dev/null
+++ b/.changeset/cuddly-flowers-provide.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-fossa': patch
+---
+
+Allow configuration of base URL for Fossa links
diff --git a/.changeset/curly-candles-battle.md b/.changeset/curly-candles-battle.md
new file mode 100644
index 0000000000..9a4d850fd1
--- /dev/null
+++ b/.changeset/curly-candles-battle.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder': patch
+---
+
+Bumped `codemirror` dependencies to `v6.0.0`.
diff --git a/.changeset/eight-suits-fail.md b/.changeset/eight-suits-fail.md
new file mode 100644
index 0000000000..742154da91
--- /dev/null
+++ b/.changeset/eight-suits-fail.md
@@ -0,0 +1,6 @@
+---
+'@backstage/plugin-kubernetes-backend': patch
+'@backstage/plugin-kubernetes-common': patch
+---
+
+Fixed the lack of `limitranges` as part of the Default Objects to fetch from the kubernetes api
diff --git a/.changeset/eighty-windows-brush.md b/.changeset/eighty-windows-brush.md
new file mode 100644
index 0000000000..753b53fbb4
--- /dev/null
+++ b/.changeset/eighty-windows-brush.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-tech-insights-backend': minor
+---
+
+Allow FactRetrieverRegistry to be injected into buildTechInsightsContext so that we can override default registry implementation.
diff --git a/.changeset/five-fireants-run.md b/.changeset/five-fireants-run.md
new file mode 100644
index 0000000000..589d46cc81
--- /dev/null
+++ b/.changeset/five-fireants-run.md
@@ -0,0 +1,5 @@
+---
+'@backstage/core-components': patch
+---
+
+Fix the EntityLayout header style so that EntityContextMenu button can display in correct shape when user hover on it
diff --git a/.changeset/forty-seals-complain.md b/.changeset/forty-seals-complain.md
new file mode 100644
index 0000000000..b2435b2d3a
--- /dev/null
+++ b/.changeset/forty-seals-complain.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder-backend': patch
+---
+
+Improve error messaging when passing in malformed auth
diff --git a/.changeset/great-roses-pump.md b/.changeset/great-roses-pump.md
new file mode 100644
index 0000000000..0e15d186d4
--- /dev/null
+++ b/.changeset/great-roses-pump.md
@@ -0,0 +1,23 @@
+---
+'@backstage/plugin-catalog': patch
+---
+
+Previously, the color of the Entity Context Menu (in the Entity Page Header) was hardcoded as `white`.
+
+This was an issue for themes that use a header with a white background. By default, the color of the icon is now `theme.page.fontColor`.
+
+It can now also be overridden in the theme, which is only necessary if the header title, subtitle and three-dots icon need to have different colors. For example:
+
+```typescript
+export function createThemeOverrides(theme: BackstageTheme): Overrides {
+ return {
+ PluginCatalogEntityContextMenu: {
+ button: {
+ color: 'blue',
+ },
+ },
+ ...
+ },
+ ...
+ }
+```
diff --git a/.changeset/green-actors-argue.md b/.changeset/green-actors-argue.md
new file mode 100644
index 0000000000..e21fbb040c
--- /dev/null
+++ b/.changeset/green-actors-argue.md
@@ -0,0 +1,19 @@
+---
+'@backstage/cli': minor
+---
+
+**BREAKING**: Removed the following deprecated package commands:
+
+- `app:build` - Use `package build` instead
+- `app:serve` - Use `package start` instead
+- `backend:build` - Use `package build` instead
+- `backend:bundle` - Use `package build` instead
+- `backend:dev` - Use `package start` instead
+- `plugin:build` - Use `package build` instead
+- `plugin:serve` - Use `package start` instead
+- `build` - Use `package build` instead
+- `lint` - Use `package lint` instead
+- `prepack` - Use `package prepack` instead
+- `postpack` - Use `package postpack` instead
+
+In order to replace these you need to have [migrated to using package roles](https://backstage.io/docs/tutorials/package-role-migration).
diff --git a/.changeset/happy-boxes-melt.md b/.changeset/happy-boxes-melt.md
new file mode 100644
index 0000000000..c478e783d3
--- /dev/null
+++ b/.changeset/happy-boxes-melt.md
@@ -0,0 +1,6 @@
+---
+'@techdocs/cli': patch
+'@backstage/plugin-techdocs-node': patch
+---
+
+Fix the flag parsing for `legacyCopyReadmeMdToIndexMd` in `techdocs-cli generate` command, and decouple it's logic from the `techdocs-ref` flag.
diff --git a/.changeset/hot-rice-sin.md b/.changeset/hot-rice-sin.md
new file mode 100644
index 0000000000..5a3d6fdb7a
--- /dev/null
+++ b/.changeset/hot-rice-sin.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder': minor
+---
+
+Add `allowedRepos` `ui:option` to `RepoUrlPicker` component, and move `repoName` field to own component
diff --git a/.changeset/large-kangaroos-poke.md b/.changeset/large-kangaroos-poke.md
new file mode 100644
index 0000000000..3a9444cfa1
--- /dev/null
+++ b/.changeset/large-kangaroos-poke.md
@@ -0,0 +1,13 @@
+---
+'@backstage/create-app': patch
+---
+
+Added an explicit `node-gyp` dependency to the root `package.json`. This is to work around a bug in older versions of `node-gyp` that causes Python execution to fail on macOS.
+
+You can add this workaround to your existing project by adding `node-gyp` as a `devDependency` in your root `package.json` file:
+
+```diff
+ "devDependencies": {
++ "node-gyp": "^9.0.0"
+ },
+```
diff --git a/.changeset/lemon-goats-obey.md b/.changeset/lemon-goats-obey.md
new file mode 100644
index 0000000000..7bdb59bd61
--- /dev/null
+++ b/.changeset/lemon-goats-obey.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-apache-airflow': minor
+---
+
+Exposed DagTableComponent as standalone component + added a prop to get only select DAGs instead of the full list
diff --git a/.changeset/light-hornets-eat.md b/.changeset/light-hornets-eat.md
new file mode 100644
index 0000000000..795e51fb67
--- /dev/null
+++ b/.changeset/light-hornets-eat.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-cost-insights-common': minor
+---
+
+Introduces a new isomorphic @backstage/plugin-cost-insight-common package to contain shared types across all other cost insights packages and modules.
diff --git a/.changeset/little-geckos-end.md b/.changeset/little-geckos-end.md
new file mode 100644
index 0000000000..328095aa44
--- /dev/null
+++ b/.changeset/little-geckos-end.md
@@ -0,0 +1,18 @@
+---
+'@backstage/plugin-kubernetes-backend': minor
+---
+
+Add new endpoints to Kubernetes backend plugin
+
+BREAKING: Kubernetes backend plugin now depends on CatalogApi
+
+```typescript
+// Create new CatalogClient
+const catalogApi = new CatalogClient({ discoveryApi: env.discovery });
+const { router } = await KubernetesBuilder.createBuilder({
+ logger: env.logger,
+ config: env.config,
+ // Inject it into createBuilder params
+ catalogApi,
+}).build();
+```
diff --git a/.changeset/long-bananas-rescue.md b/.changeset/long-bananas-rescue.md
new file mode 100644
index 0000000000..d990fd67c6
--- /dev/null
+++ b/.changeset/long-bananas-rescue.md
@@ -0,0 +1,91 @@
+---
+'@backstage/plugin-catalog-backend-module-msgraph': minor
+---
+
+Align `msgraph` plugin's entity provider config with other providers. **Deprecated** entity processor as well as previous config.
+
+You will see warning at the log output until you migrate to the new setup.
+All deprecated parts will be removed eventually after giving some time to migrate.
+
+Please find information on how to migrate your current setup to the new one below.
+
+**Migration Guide:**
+
+There were two different way on how to use the msgraph plugin: processor or provider.
+
+Previous registration for the processor:
+
+```typescript
+// packages/backend/src/plugins/catalog.ts
+builder.addProcessor(
+ MicrosoftGraphOrgReaderProcessor.fromConfig(env.config, {
+ logger: env.logger,
+ // [...]
+ }),
+);
+```
+
+Previous registration when using the provider:
+
+```typescript
+// packages/backend/src/plugins/catalog.ts
+builder.addEntityProvider(
+ MicrosoftGraphOrgEntityProvider.fromConfig(env.config, {
+ id: 'https://graph.microsoft.com/v1.0',
+ target: 'https://graph.microsoft.com/v1.0',
+ logger: env.logger,
+ schedule: env.scheduler.createScheduledTaskRunner({
+ frequency: { minutes: 30 },
+ timeout: { minutes: 3 },
+ }),
+ // [...]
+ }),
+);
+```
+
+Previous configuration as used for both:
+
+```yaml
+# app-config.yaml
+catalog:
+ processors:
+ microsoftGraphOrg:
+ providers:
+ - target: https://graph.microsoft.com/v1.0
+ # [...]
+```
+
+**Replacement:**
+
+Please check https://github.com/backstage/backstage/blob/master/plugins/catalog-backend-module-msgraph/README.md for the complete documentation of all configuration options (config as well as registration of the provider).
+
+```yaml
+# app-config.yaml
+catalog:
+ providers:
+ microsoftGraphOrg:
+ # In case you used the deprecated configuration with the entity provider
+ # using the value of `target` will keep the same location key for all
+ providerId: # some stable ID which will be used as part of the location key for all ingested data
+ target: https://graph.microsoft.com/v1.0
+ # [...]
+```
+
+```typescript
+// packages/backend/src/plugins/catalog.ts
+builder.addEntityProvider(
+ MicrosoftGraphOrgEntityProvider.fromConfig(env.config, {
+ logger: env.logger,
+ schedule: env.scheduler.createScheduledTaskRunner({
+ frequency: { minutes: 30 },
+ timeout: { minutes: 3 },
+ }),
+ // [...]
+ }),
+);
+```
+
+In case you've used multiple entity providers before
+**and** you had different transformers for each of them
+you can provide these directly at the one `fromConfig` call
+by passing a Record with the provider ID as key.
diff --git a/.changeset/many-vans-thank.md b/.changeset/many-vans-thank.md
new file mode 100644
index 0000000000..16f8c8a69b
--- /dev/null
+++ b/.changeset/many-vans-thank.md
@@ -0,0 +1,6 @@
+---
+'@backstage/plugin-jenkins': patch
+'@backstage/plugin-jenkins-backend': patch
+---
+
+feature: added support for multiple branches to the `JenkinsApi`
diff --git a/.changeset/metal-singers-matter.md b/.changeset/metal-singers-matter.md
new file mode 100644
index 0000000000..2c8d370790
--- /dev/null
+++ b/.changeset/metal-singers-matter.md
@@ -0,0 +1,5 @@
+---
+'@backstage/cli': patch
+---
+
+Upgrade `@rollup/plugin-node-resolve` to `^13.0.6`
diff --git a/.changeset/metal-windows-share.md b/.changeset/metal-windows-share.md
new file mode 100644
index 0000000000..b4443a620f
--- /dev/null
+++ b/.changeset/metal-windows-share.md
@@ -0,0 +1,7 @@
+---
+'@backstage/plugin-search-backend-module-pg': patch
+---
+
+**DEPRECATED**: `PgSearchEngine` static `from` has been deprecated and will be removed in a future release. Use static `fromConfig` method to instantiate.
+
+Added support for highlighting matched terms in search result data
diff --git a/.changeset/modern-ducks-lay.md b/.changeset/modern-ducks-lay.md
new file mode 100644
index 0000000000..bd62c309ba
--- /dev/null
+++ b/.changeset/modern-ducks-lay.md
@@ -0,0 +1,6 @@
+---
+'@backstage/plugin-stack-overflow': patch
+---
+
+- Publicly exports `StackOverflowIcon`.
+- `HomePageStackOverflowQuestions` accepts optional icon property.
diff --git a/.changeset/moody-crabs-march.md b/.changeset/moody-crabs-march.md
new file mode 100644
index 0000000000..b5ddf12ffa
--- /dev/null
+++ b/.changeset/moody-crabs-march.md
@@ -0,0 +1,6 @@
+---
+'@backstage/plugin-vault': patch
+'@backstage/plugin-vault-backend': patch
+---
+
+Added a path notion in addition to secret name to allow to differentiate secrets in sub-paths
diff --git a/.changeset/nasty-zoos-cross.md b/.changeset/nasty-zoos-cross.md
new file mode 100644
index 0000000000..7a658d7209
--- /dev/null
+++ b/.changeset/nasty-zoos-cross.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-github-pull-requests-board': patch
+---
+
+Support namespaced teams and fetch all kinds
diff --git a/.changeset/nervous-humans-sip.md b/.changeset/nervous-humans-sip.md
new file mode 100644
index 0000000000..aa1ca2c60a
--- /dev/null
+++ b/.changeset/nervous-humans-sip.md
@@ -0,0 +1,5 @@
+---
+'@backstage/core-app-api': patch
+---
+
+The `signOut` method of the `IdentityApi` will now navigate the user back to the base URL of the app as indicated by the `app.baseUrl` config.
diff --git a/.changeset/ninety-coats-learn.md b/.changeset/ninety-coats-learn.md
new file mode 100644
index 0000000000..9d6945e9c0
--- /dev/null
+++ b/.changeset/ninety-coats-learn.md
@@ -0,0 +1,5 @@
+---
+'@backstage/core-components': patch
+---
+
+Fix relative `sub-paths` by concatenating the app's base path with them.
diff --git a/.changeset/old-onions-hear.md b/.changeset/old-onions-hear.md
new file mode 100644
index 0000000000..82dcc09190
--- /dev/null
+++ b/.changeset/old-onions-hear.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder-backend': minor
+---
+
+Update GitLab Merge Request Action to allow source branch to be deleted
diff --git a/.changeset/pink-cars-pretend.md b/.changeset/pink-cars-pretend.md
new file mode 100644
index 0000000000..c46cb99f55
--- /dev/null
+++ b/.changeset/pink-cars-pretend.md
@@ -0,0 +1,7 @@
+---
+'@backstage/plugin-scaffolder-backend': patch
+---
+
+new setUserAsOwner flag for publish:gitlab action
+
+The field default is `false`. When true it will use the token configured in the gitlab integration for the matching host, to try and set the user logged in via `repoUrlPicker` `requestUserCredentials` OAuth flow as owner of the repository created in GitLab.
diff --git a/.changeset/plenty-clouds-guess.md b/.changeset/plenty-clouds-guess.md
new file mode 100644
index 0000000000..cc56bd604d
--- /dev/null
+++ b/.changeset/plenty-clouds-guess.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-auth-backend': patch
+---
+
+Added an option for the auth backend router to select the algorithm for the JWT token signing keys
diff --git a/.changeset/polite-lions-sell.md b/.changeset/polite-lions-sell.md
new file mode 100644
index 0000000000..07b5fcbd77
--- /dev/null
+++ b/.changeset/polite-lions-sell.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-auth-backend': patch
+---
+
+Auth provider now also export createAuthProviderIntegration
diff --git a/.changeset/popular-pots-yell.md b/.changeset/popular-pots-yell.md
new file mode 100644
index 0000000000..f0decc9fb8
--- /dev/null
+++ b/.changeset/popular-pots-yell.md
@@ -0,0 +1,11 @@
+---
+'@backstage/plugin-auth-backend': minor
+---
+
+**BREAKING**: Removed all directly exported auth provider factories, option types, and sign-in resolvers. For example: `AwsAlbProviderOptions`, `bitbucketUserIdSignInResolver`, `createGithubProvider`. These are all still accessible via the `providers` export. For example, use `providers.github.create()` rather than `createGithubProvider()`, and `providers.bitbucket.resolvers.userIdMatchingUserEntityAnnotation()` rather than `bitbucketUserIdSignInResolver`.
+
+**BREAKING**: Removed the exported `AuthProviderFactoryOptions` type as well as the deprecated option fields of the `AuthProviderFactory` callback. This includes the `tokenManager`, `tokenIssuer`, `discovery`, and `catalogApi` fields. Existing usage of these should be replaced with the new utilities in the `resolverContext` field. The deprecated `TokenIssuer` type is now also removed, since it is no longer used.
+
+**BREAKING**: Removed `getEntityClaims`, use `getDefaultOwnershipEntityRefs` instead.
+
+**DEPRECATION**: Deprecated `AtlassianAuthProvider` as it was unintentionally exported.
diff --git a/.changeset/pre.json b/.changeset/pre.json
index 500bf4ac83..7b30cba7ba 100644
--- a/.changeset/pre.json
+++ b/.changeset/pre.json
@@ -156,7 +156,101 @@
"@backstage/plugin-user-settings": "0.4.5",
"@backstage/plugin-vault": "0.1.0",
"@backstage/plugin-vault-backend": "0.1.0",
- "@backstage/plugin-xcmetrics": "0.2.26"
+ "@backstage/plugin-xcmetrics": "0.2.26",
+ "@backstage/plugin-api-docs-module-protoc-gen-doc": "0.0.0",
+ "@backstage/plugin-catalog-backend-module-openapi": "0.0.0",
+ "@backstage/plugin-cost-insights-common": "0.0.0"
},
- "changesets": []
+ "changesets": [
+ "afraid-flies-try",
+ "beige-horses-scream",
+ "blue-monkeys-explain",
+ "breezy-poems-grab",
+ "breezy-seas-exist",
+ "bright-balloons-hide",
+ "calm-experts-buy",
+ "chilled-mirrors-grab",
+ "cool-toys-flow",
+ "create-app-1656408352",
+ "curly-candles-battle",
+ "curvy-weeks-matter",
+ "eight-suits-fail",
+ "eighty-windows-brush",
+ "eleven-mice-collect",
+ "five-fireants-run",
+ "forty-seals-complain",
+ "great-roses-pump",
+ "green-actors-argue",
+ "happy-boxes-melt",
+ "hot-rice-sin",
+ "large-kangaroos-poke",
+ "lemon-goats-obey",
+ "light-hornets-eat",
+ "long-bananas-rescue",
+ "many-vans-thank",
+ "metal-singers-matter",
+ "metal-windows-share",
+ "modern-ducks-lay",
+ "moody-crabs-march",
+ "nasty-zoos-cross",
+ "nervous-humans-sip",
+ "old-onions-hear",
+ "plenty-clouds-guess",
+ "polite-eagles-invite",
+ "polite-lions-sell",
+ "popular-pots-yell",
+ "pretty-masks-live",
+ "proud-toys-return",
+ "purple-beans-march",
+ "quiet-pens-notice",
+ "red-games-decide",
+ "renovate-149779d",
+ "renovate-2ae4dda",
+ "renovate-4b5ff24",
+ "renovate-7438bff",
+ "renovate-833a91b",
+ "renovate-9454dab",
+ "rude-llamas-lie",
+ "search-boats-double",
+ "search-lightning-cult",
+ "search-turtles-itch",
+ "serious-houses-watch",
+ "serious-zebras-joke",
+ "shaggy-melons-drive",
+ "sharp-numbers-taste",
+ "sharp-planes-turn",
+ "shiny-seahorses-do",
+ "shiny-turkeys-doubt",
+ "short-deers-remember",
+ "short-olives-train",
+ "shy-cameras-develop",
+ "silent-coats-brake",
+ "silly-geese-design",
+ "silver-needles-unite",
+ "smart-elephants-knock",
+ "smooth-sheep-hide",
+ "strange-tables-flash",
+ "strange-trains-collect",
+ "strong-lies-explain",
+ "sweet-plants-sparkle",
+ "tame-guests-wave",
+ "techdocs-eyes-sit",
+ "techdocs-gorgeous-plants-sniff",
+ "techdocs-sheep-talk",
+ "techdocs-sixty-mugs-hug",
+ "techdocs-the-whole-pulse",
+ "thick-cats-kiss",
+ "thick-radios-drive",
+ "thirty-rivers-watch",
+ "tricky-ravens-visit",
+ "twelve-candles-jump",
+ "two-crews-accept",
+ "unlucky-stingrays-juggle",
+ "weak-bananas-deliver",
+ "weak-jeans-cry",
+ "weak-llamas-repeat",
+ "wet-dolphins-act",
+ "wicked-icons-grin",
+ "wicked-ladybugs-argue"
+ ]
}
diff --git a/.changeset/pretty-masks-live.md b/.changeset/pretty-masks-live.md
new file mode 100644
index 0000000000..c45ad1e77f
--- /dev/null
+++ b/.changeset/pretty-masks-live.md
@@ -0,0 +1,5 @@
+---
+'@backstage/catalog-model': patch
+---
+
+Added type predicates for all entity types, e.g. isUserEntity
diff --git a/.changeset/proud-toys-return.md b/.changeset/proud-toys-return.md
new file mode 100644
index 0000000000..f93e6ef4a8
--- /dev/null
+++ b/.changeset/proud-toys-return.md
@@ -0,0 +1,5 @@
+---
+'@backstage/catalog-model': minor
+---
+
+Introduced `GroupDefaultParentEntityPolicy` to set a default group entity parent.
diff --git a/.changeset/purple-beans-march.md b/.changeset/purple-beans-march.md
new file mode 100644
index 0000000000..f4a3b45ab2
--- /dev/null
+++ b/.changeset/purple-beans-march.md
@@ -0,0 +1,5 @@
+---
+'@backstage/cli': patch
+---
+
+Fix `webpack-dev-server` deprecations.
diff --git a/.changeset/quiet-pens-notice.md b/.changeset/quiet-pens-notice.md
new file mode 100644
index 0000000000..aa6aeb049d
--- /dev/null
+++ b/.changeset/quiet-pens-notice.md
@@ -0,0 +1,5 @@
+---
+'@backstage/backend-common': patch
+---
+
+Improve plural handling in logging output for secrets
diff --git a/.changeset/red-games-decide.md b/.changeset/red-games-decide.md
new file mode 100644
index 0000000000..208cecfc0a
--- /dev/null
+++ b/.changeset/red-games-decide.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-api-docs-module-protoc-gen-doc': minor
+---
+
+Added the new `grpcDocsApiWidget` to render `protoc-gen-doc` generated descriptors by the `grpc-docs` package.
diff --git a/.changeset/renovate-0546761.md b/.changeset/renovate-0546761.md
new file mode 100644
index 0000000000..ed7b8b19a3
--- /dev/null
+++ b/.changeset/renovate-0546761.md
@@ -0,0 +1,103 @@
+---
+'@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-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-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': 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-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': 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-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': 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.43.0`.
diff --git a/.changeset/renovate-149779d.md b/.changeset/renovate-149779d.md
new file mode 100644
index 0000000000..58d764485e
--- /dev/null
+++ b/.changeset/renovate-149779d.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-kafka-backend': patch
+---
+
+Updated dependency `kafkajs` to `^2.0.0`.
diff --git a/.changeset/renovate-2ae4dda.md b/.changeset/renovate-2ae4dda.md
new file mode 100644
index 0000000000..2cedbcb9d7
--- /dev/null
+++ b/.changeset/renovate-2ae4dda.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog-backend-module-openapi': patch
+---
+
+Updated dependency `openapi-types` to `^12.0.0`.
diff --git a/.changeset/renovate-4b5ff24.md b/.changeset/renovate-4b5ff24.md
new file mode 100644
index 0000000000..4867c345d8
--- /dev/null
+++ b/.changeset/renovate-4b5ff24.md
@@ -0,0 +1,5 @@
+---
+'@backstage/cli': patch
+---
+
+Updated dependency `run-script-webpack-plugin` to `^0.1.0`.
diff --git a/.changeset/renovate-7438bff.md b/.changeset/renovate-7438bff.md
new file mode 100644
index 0000000000..43a4ac5016
--- /dev/null
+++ b/.changeset/renovate-7438bff.md
@@ -0,0 +1,16 @@
+---
+'@backstage/backend-common': patch
+'@backstage/backend-tasks': patch
+'@backstage/backend-test-utils': patch
+'@backstage/plugin-app-backend': patch
+'@backstage/plugin-auth-backend': patch
+'@backstage/plugin-bazaar-backend': patch
+'@backstage/plugin-catalog-backend': patch
+'@backstage/plugin-code-coverage-backend': patch
+'@backstage/plugin-scaffolder-backend': patch
+'@backstage/plugin-search-backend-module-pg': patch
+'@backstage/plugin-tech-insights-backend': patch
+'@backstage/plugin-techdocs-backend': patch
+---
+
+Updated dependency `knex` to `^2.0.0`.
diff --git a/.changeset/renovate-833a91b.md b/.changeset/renovate-833a91b.md
new file mode 100644
index 0000000000..15e23ec5ff
--- /dev/null
+++ b/.changeset/renovate-833a91b.md
@@ -0,0 +1,7 @@
+---
+'@backstage/core-components': patch
+'@backstage/plugin-codescene': patch
+'@backstage/plugin-sonarqube': patch
+---
+
+Updated dependency `rc-progress` to `3.4.0`.
diff --git a/.changeset/renovate-913f3dc.md b/.changeset/renovate-913f3dc.md
new file mode 100644
index 0000000000..edb2f95356
--- /dev/null
+++ b/.changeset/renovate-913f3dc.md
@@ -0,0 +1,5 @@
+---
+'@backstage/config-loader': patch
+---
+
+Updated dependency `typescript-json-schema` to `^0.54.0`.
diff --git a/.changeset/renovate-9454dab.md b/.changeset/renovate-9454dab.md
new file mode 100644
index 0000000000..1f8401e10f
--- /dev/null
+++ b/.changeset/renovate-9454dab.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-auth-backend': patch
+---
+
+Updated dependency `google-auth-library` to `^8.0.0`.
diff --git a/.changeset/renovate-cbb545a.md b/.changeset/renovate-cbb545a.md
new file mode 100644
index 0000000000..be423e8252
--- /dev/null
+++ b/.changeset/renovate-cbb545a.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-api-docs': patch
+---
+
+Updated dependency `@asyncapi/react-component` to `1.0.0-next.39`.
diff --git a/.changeset/rude-llamas-lie.md b/.changeset/rude-llamas-lie.md
new file mode 100644
index 0000000000..918d61da6d
--- /dev/null
+++ b/.changeset/rude-llamas-lie.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-vault': patch
+---
+
+Export missing parameters and added them to the api-report. Also adapted the API to the expected response from the backend
diff --git a/.changeset/search-boats-double.md b/.changeset/search-boats-double.md
new file mode 100644
index 0000000000..92fd372cb8
--- /dev/null
+++ b/.changeset/search-boats-double.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-search-react': patch
+---
+
+Fix search pagination to reset page cursor also when a term is cleared.
diff --git a/.changeset/search-lightning-cult.md b/.changeset/search-lightning-cult.md
new file mode 100644
index 0000000000..79cd256e77
--- /dev/null
+++ b/.changeset/search-lightning-cult.md
@@ -0,0 +1,24 @@
+---
+'@backstage/plugin-search-backend-module-elasticsearch': minor
+---
+
+**BREAKING**: In order to remain interoperable with all currently supported
+deployments of Elasticsearch, this package will now conditionally use either
+the `@elastic/elasticsearch` or `@opensearch-project/opensearch` client when
+communicating with your deployed cluster.
+
+If you do not rely on types exported from this package, or if you do not make
+use of the `createElasticSearchClientOptions` or `newClient` methods on the
+`ElasticSearchSearchEngine` class, then upgrading to this version should not
+require any further action on your part. Everything will continue to work as it
+always has.
+
+If you _do_ rely on either of the above methods or any underlying types, some
+changes may be needed to your custom code. A type guard is now exported by this
+package (`isOpenSearchCompatible(options)`), which you may use to help clarify
+which client options are compatible with which client constructors.
+
+If you are using this package with the `search.elasticsearch.provider` set to
+`aws`, and you are making use of the `newClient` method in particular, you may
+wish to start using the `@opensearch-project/opensearch` client in your custom
+code.
diff --git a/.changeset/search-turtles-itch.md b/.changeset/search-turtles-itch.md
new file mode 100644
index 0000000000..2da26fc64a
--- /dev/null
+++ b/.changeset/search-turtles-itch.md
@@ -0,0 +1,13 @@
+---
+'@backstage/plugin-search': patch
+---
+
+To allow people to use a global search context in the search modal, the code for the search modal has been changed to only create a local search context if there is no parent context already defined.
+
+If you want to continue using a local context even if you define a global one, you will have to wrap the modal in a new local context manually:
+
+```tsx
+
+
+
+```
diff --git a/.changeset/serious-houses-watch.md b/.changeset/serious-houses-watch.md
new file mode 100644
index 0000000000..63d5253bcb
--- /dev/null
+++ b/.changeset/serious-houses-watch.md
@@ -0,0 +1,7 @@
+---
+'@backstage/theme': patch
+---
+
+**DEPRECATED**: The `bursts` object from `BackstagePaletteAdditions` has been depreciated and will be removed in a future release
+
+The `genPageTheme` function now includes an optional options object with an optional `fontColor` which defaults to white if not provided.
diff --git a/.changeset/serious-zebras-joke.md b/.changeset/serious-zebras-joke.md
new file mode 100644
index 0000000000..78f38ca967
--- /dev/null
+++ b/.changeset/serious-zebras-joke.md
@@ -0,0 +1,5 @@
+---
+'@backstage/core-components': patch
+---
+
+Support displaying subtitle text in `SidebarSubmenuItem`
diff --git a/.changeset/shaggy-melons-drive.md b/.changeset/shaggy-melons-drive.md
new file mode 100644
index 0000000000..b5674493f4
--- /dev/null
+++ b/.changeset/shaggy-melons-drive.md
@@ -0,0 +1,5 @@
+---
+'@backstage/catalog-model': minor
+---
+
+Adding an optional type field to entity links to group and categorize links
diff --git a/.changeset/sharp-numbers-taste.md b/.changeset/sharp-numbers-taste.md
new file mode 100644
index 0000000000..4819aca18f
--- /dev/null
+++ b/.changeset/sharp-numbers-taste.md
@@ -0,0 +1,7 @@
+---
+'@backstage/errors': minor
+---
+
+The `ResponseError.fromResponse` now accepts a more narrow response type, in order to avoid incompatibilities between different fetch implementations.
+
+The `response` property of `ResponseError` has also been narrowed to a new `ConsumedResponse` type that omits all the properties for consuming the body of the response. This is not considered a breaking change as it was always an error to try to consume the body of the response.
diff --git a/.changeset/sharp-planes-turn.md b/.changeset/sharp-planes-turn.md
new file mode 100644
index 0000000000..47f6a6176d
--- /dev/null
+++ b/.changeset/sharp-planes-turn.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-vault-backend': minor
+---
+
+Throw exceptions instead of swallow them, remove some exported types from the `api-report`, small changes in the API responses & expose the vault `baseUrl` to the frontend as well
diff --git a/.changeset/shiny-seahorses-do.md b/.changeset/shiny-seahorses-do.md
new file mode 100644
index 0000000000..06892900bf
--- /dev/null
+++ b/.changeset/shiny-seahorses-do.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-badges-backend': patch
+---
+
+Add missing installation instructions
diff --git a/.changeset/shiny-turkeys-doubt.md b/.changeset/shiny-turkeys-doubt.md
new file mode 100644
index 0000000000..edac39182c
--- /dev/null
+++ b/.changeset/shiny-turkeys-doubt.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-org': patch
+---
+
+Render namespaces for teams with subtitles in `MyGroupsSidebarItem`
diff --git a/.changeset/short-deers-remember.md b/.changeset/short-deers-remember.md
new file mode 100644
index 0000000000..7579e7773b
--- /dev/null
+++ b/.changeset/short-deers-remember.md
@@ -0,0 +1,21 @@
+---
+'@backstage/backend-common': patch
+'@backstage/integration': patch
+'@backstage/plugin-adr': patch
+'@backstage/plugin-catalog-backend': patch
+'@backstage/plugin-catalog-import': patch
+'@backstage/plugin-scaffolder': patch
+'@backstage/plugin-scaffolder-backend': patch
+'@backstage/plugin-techdocs': patch
+'@backstage/plugin-techdocs-module-addons-contrib': patch
+'@backstage/plugin-techdocs-node': patch
+---
+
+Upgrade git-url-parse to 12.0.0.
+
+Motivation for upgrade is transitively upgrading parse-url which is vulnerable
+to several CVEs detected by Snyk.
+
+- SNYK-JS-PARSEURL-2935944
+- SNYK-JS-PARSEURL-2935947
+- SNYK-JS-PARSEURL-2936249
diff --git a/.changeset/short-olives-train.md b/.changeset/short-olives-train.md
new file mode 100644
index 0000000000..594d95f073
--- /dev/null
+++ b/.changeset/short-olives-train.md
@@ -0,0 +1,6 @@
+---
+'@backstage/plugin-kubernetes-backend': minor
+'@backstage/plugin-kubernetes-common': minor
+---
+
+Refactor `KubernetesObjectsProvider` with new methods, `KubernetesServiceLocator` now takes an `Entity` instead of `serviceId`
diff --git a/.changeset/shy-cameras-develop.md b/.changeset/shy-cameras-develop.md
new file mode 100644
index 0000000000..c62a9a56e3
--- /dev/null
+++ b/.changeset/shy-cameras-develop.md
@@ -0,0 +1,7 @@
+---
+'@backstage/plugin-catalog-backend-module-openapi': minor
+---
+
+Add basic OpenAPI \$ref support.
+
+For more information see [here](https://github.com/backstage/backstage/tree/master/plugins/catalog-backend-module-openapi).
diff --git a/.changeset/silent-coats-brake.md b/.changeset/silent-coats-brake.md
new file mode 100644
index 0000000000..b1cfbacb6a
--- /dev/null
+++ b/.changeset/silent-coats-brake.md
@@ -0,0 +1,6 @@
+---
+'@backstage/plugin-catalog': patch
+'@backstage/plugin-catalog-backend': patch
+---
+
+Use entity type predicates from catalog-model
diff --git a/.changeset/silly-geese-design.md b/.changeset/silly-geese-design.md
new file mode 100644
index 0000000000..d4f8de2510
--- /dev/null
+++ b/.changeset/silly-geese-design.md
@@ -0,0 +1,6 @@
+---
+'@backstage/plugin-api-docs': patch
+'@backstage/plugin-catalog': minor
+---
+
+Add hidden title column to catalog and API table to enable filtering by title.
diff --git a/.changeset/silver-needles-unite.md b/.changeset/silver-needles-unite.md
new file mode 100644
index 0000000000..b5fed7e615
--- /dev/null
+++ b/.changeset/silver-needles-unite.md
@@ -0,0 +1,26 @@
+---
+'@backstage/plugin-home': patch
+---
+
+Added support for customizing the time format used in the `HeaderWorldClock` component
+
+Here's an example of how this can be used in the `HomePage.tsx` found in `\packages\app\src\components\home` to change the clock to be in the 24hr time format:
+
+```diff
++const timeFormat: Intl.DateTimeFormatOptions = {
++ hour: '2-digit',
++ minute: '2-digit',
++ hour12: false,
++};
+
+export const homePage = (
+
+ } pageTitleOverride="Home">
++
+
+
+
+
+
+
+```
diff --git a/.changeset/small-shoes-hide.md b/.changeset/small-shoes-hide.md
new file mode 100644
index 0000000000..b1f95e9f2d
--- /dev/null
+++ b/.changeset/small-shoes-hide.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-search-backend-node': patch
+---
+
+Exports `MissingIndexError` that can be used by the search engines for better error handling when missing index.
diff --git a/.changeset/smart-elephants-knock.md b/.changeset/smart-elephants-knock.md
new file mode 100644
index 0000000000..7aed10a71e
--- /dev/null
+++ b/.changeset/smart-elephants-knock.md
@@ -0,0 +1,5 @@
+---
+'@backstage/cli': patch
+---
+
+The `test` command now ensures that all IO is flushed before exiting when printing `--help`.
diff --git a/.changeset/smooth-sheep-hide.md b/.changeset/smooth-sheep-hide.md
new file mode 100644
index 0000000000..8a65602ca9
--- /dev/null
+++ b/.changeset/smooth-sheep-hide.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-azure-devops': patch
+---
+
+Exporting azureDevOpsApiRef, AzureGitTagsIcon, and all hooks for the benefit of other plugins.
diff --git a/.changeset/strange-tables-flash.md b/.changeset/strange-tables-flash.md
new file mode 100644
index 0000000000..b42069aa64
--- /dev/null
+++ b/.changeset/strange-tables-flash.md
@@ -0,0 +1,6 @@
+---
+'@backstage/plugin-stack-overflow': patch
+'@backstage/plugin-stack-overflow-backend': patch
+---
+
+app-config is now picked up properly.
diff --git a/.changeset/strange-trains-collect.md b/.changeset/strange-trains-collect.md
new file mode 100644
index 0000000000..3da9aff515
--- /dev/null
+++ b/.changeset/strange-trains-collect.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder': patch
+---
+
+The max content size for dry-run files has been reduced from 256k to 64k.
diff --git a/.changeset/strong-lies-explain.md b/.changeset/strong-lies-explain.md
new file mode 100644
index 0000000000..d9657be6b4
--- /dev/null
+++ b/.changeset/strong-lies-explain.md
@@ -0,0 +1,5 @@
+---
+'@backstage/theme': patch
+---
+
+Adds optional `htmlFontSize` property and also sets typography design tokens for h5 and h6 in base theme.
diff --git a/.changeset/sweet-plants-sparkle.md b/.changeset/sweet-plants-sparkle.md
new file mode 100644
index 0000000000..69e7647849
--- /dev/null
+++ b/.changeset/sweet-plants-sparkle.md
@@ -0,0 +1,5 @@
+---
+'@backstage/integration': patch
+---
+
+Allow frontend visibility for `integrations` itself.
diff --git a/.changeset/tame-guests-wave.md b/.changeset/tame-guests-wave.md
new file mode 100644
index 0000000000..bbf757084d
--- /dev/null
+++ b/.changeset/tame-guests-wave.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-azure-devops-backend': patch
+---
+
+Added comments to example to help avoid confusion as to where lines need to be added
diff --git a/.changeset/techdocs-eyes-sit.md b/.changeset/techdocs-eyes-sit.md
new file mode 100644
index 0000000000..a09410a4fb
--- /dev/null
+++ b/.changeset/techdocs-eyes-sit.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-techdocs-backend': patch
+---
+
+Add sample headings on the documented component homepage.
diff --git a/.changeset/techdocs-gorgeous-plants-sniff.md b/.changeset/techdocs-gorgeous-plants-sniff.md
new file mode 100644
index 0000000000..f5453f35be
--- /dev/null
+++ b/.changeset/techdocs-gorgeous-plants-sniff.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-techdocs': patch
+---
+
+Reorder browser tab title in Techdocs pages to have the site name first.
diff --git a/.changeset/techdocs-sheep-talk.md b/.changeset/techdocs-sheep-talk.md
new file mode 100644
index 0000000000..b17408d7a4
--- /dev/null
+++ b/.changeset/techdocs-sheep-talk.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-techdocs': patch
+---
+
+Remove the 60% factor from the font size calculation of headers to use the exact size defined in BackstageTheme.
diff --git a/.changeset/techdocs-sixty-mugs-hug.md b/.changeset/techdocs-sixty-mugs-hug.md
new file mode 100644
index 0000000000..a1a9e815a1
--- /dev/null
+++ b/.changeset/techdocs-sixty-mugs-hug.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-techdocs': patch
+---
+
+Fix: When docs are shown in an entity page under the docs tab the sidebars start overlapping with the header and tabs in the page when you scroll the documentation content.
diff --git a/.changeset/techdocs-the-whole-pulse.md b/.changeset/techdocs-the-whole-pulse.md
new file mode 100644
index 0000000000..b54fb080ae
--- /dev/null
+++ b/.changeset/techdocs-the-whole-pulse.md
@@ -0,0 +1,5 @@
+---
+'@techdocs/cli': patch
+---
+
+Fixed a bug that prevented docker images from being pulled by default when generating TechDocs.
diff --git a/.changeset/ten-cobras-wash.md b/.changeset/ten-cobras-wash.md
new file mode 100644
index 0000000000..81915d958d
--- /dev/null
+++ b/.changeset/ten-cobras-wash.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-auth-backend': minor
+---
+
+Allowed post method on /refresh path
diff --git a/.changeset/tender-chicken-learn.md b/.changeset/tender-chicken-learn.md
new file mode 100644
index 0000000000..bd95c5545f
--- /dev/null
+++ b/.changeset/tender-chicken-learn.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-search-backend': patch
+---
+
+If error is `MissingIndexError` we return a 400 response with a more clear error message.
diff --git a/.changeset/tender-terms-flash.md b/.changeset/tender-terms-flash.md
new file mode 100644
index 0000000000..ca5fdb3799
--- /dev/null
+++ b/.changeset/tender-terms-flash.md
@@ -0,0 +1,5 @@
+---
+'@backstage/integration': patch
+---
+
+Avoid double encoding of the file path in `getBitbucketServerDownloadUrl`
diff --git a/.changeset/thick-cats-kiss.md b/.changeset/thick-cats-kiss.md
new file mode 100644
index 0000000000..8817115ec3
--- /dev/null
+++ b/.changeset/thick-cats-kiss.md
@@ -0,0 +1,7 @@
+---
+'@backstage/plugin-catalog': patch
+---
+
+Adding ability to customize the "unregister entity" menu item in the entity context menu on the entity page with options 'visible','hidden','disabled'.With this three new options, one can hide the "unregister entity" menu item from the list, disable or keep it enabled.
+
+The boolean input for "unregister entity" will be deprecated later in favour of the above three options.
diff --git a/.changeset/thick-radios-drive.md b/.changeset/thick-radios-drive.md
new file mode 100644
index 0000000000..130030be59
--- /dev/null
+++ b/.changeset/thick-radios-drive.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-adr': patch
+---
+
+Track discover event and result rank for `AdrSearchResultListItem`
diff --git a/.changeset/thirty-rivers-watch.md b/.changeset/thirty-rivers-watch.md
new file mode 100644
index 0000000000..d92343f365
--- /dev/null
+++ b/.changeset/thirty-rivers-watch.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder-backend': minor
+---
+
+Added two new scaffolder actions: `github:repo:create` and `github:repo:push`
diff --git a/.changeset/tricky-ravens-visit.md b/.changeset/tricky-ravens-visit.md
new file mode 100644
index 0000000000..8500c9b64e
--- /dev/null
+++ b/.changeset/tricky-ravens-visit.md
@@ -0,0 +1,6 @@
+---
+'@backstage/core-components': patch
+'@backstage/plugin-catalog': patch
+---
+
+Updated to remove usage of the `bursts` object in the theme palette
diff --git a/.changeset/twelve-candles-jump.md b/.changeset/twelve-candles-jump.md
new file mode 100644
index 0000000000..9d0cccd0ba
--- /dev/null
+++ b/.changeset/twelve-candles-jump.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog-backend-module-ldap': patch
+---
+
+Add possibility to resolve relations by RDN, in addition to UUID and DN
diff --git a/.changeset/two-crews-accept.md b/.changeset/two-crews-accept.md
new file mode 100644
index 0000000000..9540f97cb5
--- /dev/null
+++ b/.changeset/two-crews-accept.md
@@ -0,0 +1,15 @@
+---
+'@backstage/plugin-catalog-backend-module-gitlab': patch
+---
+
+Add the possibility in the `GitlabDiscoveryEntityProvider` to scan the whole project instead of concrete groups. For that, use a configuration like this one, where the group parameter is omitted (not mandatory anymore):
+
+```yaml
+catalog:
+ providers:
+ gitlab:
+ yourProviderId:
+ host: gitlab-host # Identifies one of the hosts set up in the integrations
+ branch: main # Optional. Uses `master` as default
+ entityFilename: catalog-info.yaml # Optional. Defaults to `catalog-info.yaml`
+```
diff --git a/.changeset/two-owls-cry.md b/.changeset/two-owls-cry.md
new file mode 100644
index 0000000000..ca371781a1
--- /dev/null
+++ b/.changeset/two-owls-cry.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-search-backend-module-elasticsearch': patch
+---
+
+Throws `MissingIndexError` when no index of type exist.
diff --git a/.changeset/unlucky-stingrays-juggle.md b/.changeset/unlucky-stingrays-juggle.md
new file mode 100644
index 0000000000..f2e83f7163
--- /dev/null
+++ b/.changeset/unlucky-stingrays-juggle.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog-import': patch
+---
+
+Support use without `integrations` or only integrations without frontend visible properties (e.g., `bitbucketCloud`) being configured by checking `integrations.github` directly without attempting to load `integrations`.
diff --git a/.changeset/weak-bananas-deliver.md b/.changeset/weak-bananas-deliver.md
new file mode 100644
index 0000000000..f46c7b7bfe
--- /dev/null
+++ b/.changeset/weak-bananas-deliver.md
@@ -0,0 +1,28 @@
+---
+'@backstage/plugin-pagerduty': minor
+---
+
+Introduces a new annotation `pagerduty.com/service-id` that can be used instead of the `pagerduty.com/integration-key` annotation.
+_Note: If both annotations are specified on a given Entity, then the `pagerduty.com/integration-key` annotation will be prefered_
+
+**BREAKING** The `PagerDutyClient.fromConfig` static method now expects a `FetchApi` compatible object and has been refactored to
+accept 2 arguments: config and ClientApiDependencies
+The `PagerDutyClient` now relies on a `fetchApi` being available to execute `fetch` requests.
+
+**BREAKING** A new query method `getServiceByEntity` that is used to query for Services by either the `integrationKey` or `serviceId`
+annotation values if they are defined. The `integrationKey` value is preferred currently over `serviceId`. As such, the previous
+`getServiceByIntegrationKey` method has been removed.
+
+**BREAKING** The return values for each Client query method has been changed to return an object instead of raw values.
+For example, the `getIncidentsByServiceId` query method now returns an object in the shape of `{ incidents: Incident[] }`
+instead of just `Incident[]`.
+This same pattern goes for `getChangeEventsByServiceId` and `getOnCallByPolicyId` functions.
+
+**BREAKING** All public exported types that relate to entities within PagerDuty have been prefixed with `PagerDuty` (e.g. `ServicesResponse` is now `PagerDutyServicesResponse` and `User` is now `PagerDutyUser`)
+
+In addition, various enhancements/bug fixes were introduced:
+
+- The `PagerDutyCard` component now wraps error and loading messages with an `InfoCard` to contain errors/messages. This enforces a consistent experience on the EntityPage
+- If no service can be found for the provided integration key, a new Error Message Empty State component will be shown instead of an error alert
+- Introduces the `fetchApi` to replace standard `window.fetch`
+ - ensures that Identity Authorization is respected and provided in API requests
diff --git a/.changeset/weak-jeans-cry.md b/.changeset/weak-jeans-cry.md
new file mode 100644
index 0000000000..79f419e3db
--- /dev/null
+++ b/.changeset/weak-jeans-cry.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder': patch
+---
+
+Add `allowArbitraryValues` to `ui:options` in `OwnedEntityPicker`, similar to `allowArbitraryValues` in `EntityPicker`
diff --git a/.changeset/weak-llamas-repeat.md b/.changeset/weak-llamas-repeat.md
new file mode 100644
index 0000000000..a86ce3a964
--- /dev/null
+++ b/.changeset/weak-llamas-repeat.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-techdocs-backend': minor
+---
+
+Added local publishing target directory `config`: `techdocs.publisher.local.publishDirectory`
diff --git a/.changeset/wicked-icons-grin.md b/.changeset/wicked-icons-grin.md
new file mode 100644
index 0000000000..8d26a9255e
--- /dev/null
+++ b/.changeset/wicked-icons-grin.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder': patch
+---
+
+Swap usage of `MaterialTable` with `Table` from `core-components`
diff --git a/.changeset/wicked-ladybugs-argue.md b/.changeset/wicked-ladybugs-argue.md
new file mode 100644
index 0000000000..9a36cf17cb
--- /dev/null
+++ b/.changeset/wicked-ladybugs-argue.md
@@ -0,0 +1,43 @@
+---
+'@backstage/plugin-catalog': patch
+'@backstage/plugin-catalog-react': patch
+---
+
+Added new `EntityProcessingStatusPicker` that will filter for entities with orphans and/or errors.
+
+If you are using the default Catalog page this picker will be added automatically. For those who have customized their Catalog page you'll need to add this manually by doing something like this:
+
+```diff
+...
+import {
+ CatalogFilterLayout,
+ EntityTypePicker,
+ UserListPicker,
+ EntityTagPicker
++ EntityProcessingStatusPicker,
+} from '@backstage/plugin-catalog-react';
+...
+export const CustomCatalogPage = ({
+ columns,
+ actions,
+ initiallySelectedFilter = 'owned',
+}: CatalogPageProps) => {
+ return (
+ ...
+
+
+
+
+
+
+
++
+
+
+
+
+
+
+ ...
+};
+```
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 3401dc5b2b..7127fb1da2 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -8,8 +8,7 @@
yarn.lock @backstage/reviewers @backstage-service
*/yarn.lock @backstage/reviewers @backstage-service
/.changeset/cost-insights-* @backstage/reviewers @backstage/silver-lining
-/.changeset/search-* @backstage/reviewers @backstage/techdocs-core
-/.changeset/techdocs-* @backstage/reviewers @backstage/techdocs-core
+/.changeset @backstage/reviewers @backstage/techdocs-core
/cypress/src/integration/plugins/techdocs.spec.ts @backstage/reviewers @backstage/techdocs-core
/docs/assets/search @backstage/reviewers @backstage/techdocs-core
/docs/features/search @backstage/reviewers @backstage/techdocs-core
diff --git a/.github/workflows/automate_merge_renovate_prs.yaml b/.github/workflows/automate_merge_renovate_prs.yaml
deleted file mode 100644
index 8de488cf05..0000000000
--- a/.github/workflows/automate_merge_renovate_prs.yaml
+++ /dev/null
@@ -1,85 +0,0 @@
-name: Automate Merge Renovate PRs
-
-on:
- workflow_dispatch:
- schedule:
- - cron: '*/10 * * * *'
-
-jobs:
- diff:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/github-script@v6
- with:
- script: |
- const owner = "backstage";
- const repo = "backstage";
- const query = `{
- repository(owner: "backstage", name: "backstage") {
- pullRequests(labels: ["dependencies"], last: 10, states: [OPEN]) {
- nodes {
- title
- author {
- login
- }
- number
- mergeable
- files(first: 1) {
- nodes {
- path
- }
- }
- changedFiles
- commits(last: 1) {
- nodes {
- commit {
- statusCheckRollup {
- state
- }
- }
- }
- }
- reviewDecision
- reviews(first: 10) {
- nodes {
- author {
- login
- }
- }
- }
- }
- }
- }
- }`;
-
- const date = new Date();
- if (date.getDay() === 2) {
- console.log("Skipping auto merge because Tuesday is release day");
- return;
- }
-
- const r = await github.graphql(query);
- const mergable = r.repository.pullRequests.nodes.filter(
- (pr) =>
- pr.author.login === "renovate" &&
- pr.mergeable === "MERGEABLE" &&
- pr.changedFiles === 1 &&
- pr.files.nodes[0].path.split("/").slice(-1)[0] === "yarn.lock" &&
- pr.commits.nodes[0].commit.statusCheckRollup.state === "SUCCESS" &&
- pr.reviewDecision === "APPROVED"
- );
-
- if (mergable.length === 0) {
- console.log("no mergable PRs");
- return;
- }
-
- for (const pr of mergable) {
- console.log(`Merging #${pr.number} - ${pr.title}`);
- await github.rest.pulls.merge({
- owner,
- repo,
- pull_number: pr.number,
- });
- await new Promise((r) => setTimeout(r, 2000));
- }
diff --git a/.github/workflows/automate_review-labels-scheduled.yaml b/.github/workflows/automate_review-labels-scheduled.yaml
deleted file mode 100644
index 3ba13cfd17..0000000000
--- a/.github/workflows/automate_review-labels-scheduled.yaml
+++ /dev/null
@@ -1,31 +0,0 @@
-# on a review from someone in the reviewers group, remove the awaiting-review label and add the awaiting-author label
-name: Automate review labels - scheduled
-on:
- schedule:
- - cron: '* * * * *'
-
-jobs:
- label:
- runs-on: ubuntu-latest
- steps:
- - name: Get Token
- id: get_workflow_token
- uses: peter-murray/workflow-application-token-action@v1
- with:
- application_id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }}
- application_private_key: ${{ secrets.BACKSTAGE_GOALIE_PRIVATE_KEY }}
- organization: backstage
-
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
- with:
- node-version: 14
- - run: npm install codeowners
-
- - uses: actions/github-script@v6
- id: fix-labels
- with:
- github-token: ${{ steps.get_workflow_token.outputs.token }}
- script: |
- const script = require('./scripts/goalie-labels.js')
- await script({github, context, core})
diff --git a/.github/workflows/automate_review-labels.yaml b/.github/workflows/automate_review-labels.yaml
deleted file mode 100644
index cae71f6aaa..0000000000
--- a/.github/workflows/automate_review-labels.yaml
+++ /dev/null
@@ -1,84 +0,0 @@
-# When the target of the PR changes, open, re-open or sync, then re-add the label.
-
-name: Automate review labels
-on:
- pull_request_target:
- types:
- - opened
- - closed
- - synchronize
-
-permissions:
- issues: write
- pull-requests: write
-
-jobs:
- label:
- runs-on: ubuntu-latest
- steps:
- # THESE SCRIPTS SHOULD BE INLINED AND NOT IN REPO
- # DUE TO THE TOKEN PERMISSIONS THAT ARE GIVEN
- # TO THE WORKFLOW. THIS SCRIPT WILL AND SHOULD
- # RUN FROM THE BASE REPO ALL TIMES.
- - uses: actions/github-script@v6
- id: fix-labels
- with:
- github-token: ${{ secrets.GITHUB_TOKEN }}
- script: |
- if (['opened', 'synchronize'].includes('${{ github.event.action }}')) {
- // if it's the author, always add awaiting-review label
- const isAuthor = context.payload.pull_request.user.login === context.actor
- if (isAuthor) {
- await github.rest.issues.addLabels({
- issue_number: context.issue.number,
- owner: context.repo.owner,
- repo: context.repo.repo,
- labels: ['awaiting-review']
- });
- }
- }
-
- if ('${{ github.event.action}}' === 'closed') {
- await github.rest.issues.removeLabel({
- issue_number: context.issue.number,
- owner: context.repo.owner,
- repo: context.repo.repo,
- labels: 'awaiting-review'
- }).catch((e) => {
- console.log(e)
- });
- }
-
- - name: Add PRs to review board
- uses: actions/github-script@v6
- if: github.event.action == 'opened' || github.event.action == 'reopened'
- env:
- PROJECT_ID: PN_kwDOBFKqdc02LQ
- with:
- github-token: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }}
- script: |
- const prLookup = await github.graphql(`
- query($owner: String!, $repo: String!, $number: Int!){
- repository(owner: $owner, name: $repo) {
- pullRequest(number: $number) {
- id
- }
- }
- }
- `, context.issue);
-
- await github.graphql(`
- mutation($projectId: ID!, $contentId: ID!) {
- addProjectNextItem(input: {
- projectId: $projectId,
- contentId: $contentId,
- }) {
- projectNextItem {
- id
- }
- }
- }
- `, {
- projectId: process.env.PROJECT_ID,
- contentId: prLookup.repository.pullRequest.id
- })
diff --git a/.github/workflows/automate_stale.yml b/.github/workflows/automate_stale.yml
index f9c655fc4a..8978048c89 100644
--- a/.github/workflows/automate_stale.yml
+++ b/.github/workflows/automate_stale.yml
@@ -25,6 +25,6 @@ jobs:
If you are the author and the PR has been closed, feel free to re-open the PR and continue the contribution!
days-before-pr-stale: 7
days-before-pr-close: 5
- exempt-pr-labels: reviewer-approved,awaiting-review,will-fix
+ exempt-pr-labels: reviewer-approved,will-fix
stale-pr-label: stale
operations-per-run: 100
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 0718c8a8b9..06f89b06d3 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -9,9 +9,116 @@ concurrency:
cancel-in-progress: true
jobs:
+ # This step only runs yarn install to make sure that an exact match is available
+ # in the cache. The two following verify and tests jobs then always install from cache.
+ install:
+ runs-on: ubuntu-latest
+
+ strategy:
+ matrix:
+ node-version: [14.x, 16.x]
+
+ env:
+ CI: true
+ NODE_OPTIONS: --max-old-space-size=4096
+
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: use node.js ${{ matrix.node-version }}
+ uses: actions/setup-node@v3
+ with:
+ node-version: ${{ matrix.node-version }}
+ registry-url: https://registry.npmjs.org/ # Needed for auth
+
+ - name: yarn install
+ uses: backstage/actions/yarn-install@v0.5.2
+ with:
+ cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
+
+ # The verify jobs runs all the verification that doesn't require a
+ # diff towards master, since it takes some time to fetch that.
verify:
runs-on: ubuntu-latest
+ needs: install
+
+ strategy:
+ matrix:
+ node-version: [14.x, 16.x]
+
+ env:
+ CI: true
+ NODE_OPTIONS: --max-old-space-size=4096
+
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: use node.js ${{ matrix.node-version }}
+ uses: actions/setup-node@v3
+ with:
+ node-version: ${{ matrix.node-version }}
+ registry-url: https://registry.npmjs.org/ # Needed for auth
+
+ - name: yarn install
+ uses: backstage/actions/yarn-install@v0.5.2
+ with:
+ cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
+
+ - name: verify changesets
+ run: node scripts/verify-changesets.js
+
+ - name: verify local dependency ranges
+ run: node scripts/verify-local-dependencies.js
+
+ - name: validate config
+ run: yarn backstage-cli config:check --lax
+
+ - name: type checking and declarations
+ run: yarn tsc:full
+
+ - name: prettier
+ run: yarn prettier:check
+
+ # We need to generate the API references as well, so that we can verify the doc links
+ - name: check api reports and generate API reference
+ run: yarn build:api-reports:only --ci --docs
+
+ - name: verify api reference
+ run: node scripts/verify-api-reference.js
+
+ - name: verify doc links
+ run: node scripts/verify-links.js
+
+ - name: build all packages
+ run: yarn backstage-cli repo build --all
+
+ - name: verify type dependencies
+ run: yarn lint:type-deps
+
+ - name: verify plugin template
+ run: yarn lerna -- run diff -- --check
+
+ - name: ensure clean working directory
+ run: |
+ if files=$(git ls-files --exclude-standard --others --modified) && [[ -z "$files" ]]; then
+ exit 0
+ else
+ echo ""
+ echo "Working directory has been modified:"
+ echo ""
+ git status --short
+ echo ""
+ exit 1
+ fi
+
+ # The test job runs all tests as well as any verification step that
+ # requires a diff towards master.
+ test:
+ runs-on: ubuntu-latest
+
+ needs: install
+
strategy:
matrix:
node-version: [14.x, 16.x]
@@ -64,93 +171,28 @@ jobs:
- name: fetch branch master
run: git fetch origin master
- # 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@v3
with:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
- # Cache every node_modules folder inside the monorepo
- - name: cache all node_modules
- id: cache-modules
- uses: actions/cache@v3
- with:
- path: '**/node_modules'
- # We use both yarn.lock and package.json as cache keys to ensure that
- # changes to local monorepo packages bust the cache.
- key: ${{ runner.os }}-v${{ matrix.node-version }}-node_modules-${{ hashFiles('yarn.lock', '**/package.json') }}
-
- # If we get a cache hit for node_modules, there's no need to bring in the global
- # yarn cache or run yarn install, as all dependencies will be installed already.
-
- - 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)"
-
- - name: cache global yarn cache
- uses: actions/cache@v3
- if: steps.cache-modules.outputs.cache-hit != 'true'
- with:
- path: ${{ steps.yarn-cache.outputs.dir }}
- key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}
- restore-keys: |
- ${{ runner.os }}-yarn-
-
- name: yarn install
- if: steps.cache-modules.outputs.cache-hit != 'true'
- run: yarn install --frozen-lockfile
- # End of yarn setup
+ uses: backstage/actions/yarn-install@v0.5.2
+ with:
+ cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
- name: check for yarn.lock changes
id: yarn-lock
run: git diff --quiet origin/master HEAD -- yarn.lock
continue-on-error: true
- - name: prettier
- run: yarn prettier:check
-
- name: lock
run: yarn lock:check
- - name: validate config
- run: yarn backstage-cli config:check --lax
-
- name: lint
run: yarn backstage-cli repo lint --since origin/master
- - name: type checking and declarations
- run: yarn tsc:full
-
- # We need to generate the API references as well, so that we can verify the doc links
- - name: check api reports and generate API reference
- run: yarn build:api-reports:only --ci --docs
-
- - name: verify api reference
- run: node scripts/verify-api-reference.js
-
- - name: verify changesets
- run: node scripts/verify-changesets.js
-
- - name: verify doc links
- run: node scripts/verify-links.js
-
- - name: verify local dependency ranges
- run: node scripts/verify-local-dependencies.js
-
- - name: build changed packages
- if: ${{ steps.yarn-lock.outcome == 'success' }}
- run: yarn backstage-cli repo build --all --since origin/master
-
- - name: build all packages
- if: ${{ steps.yarn-lock.outcome == 'failure' }}
- run: yarn backstage-cli repo build --all
-
- - name: verify type dependencies
- run: yarn lint:type-deps
-
- name: test changed packages
if: ${{ steps.yarn-lock.outcome == 'success' }}
run: yarn lerna -- run test --since origin/master -- --coverage --runInBand
@@ -173,9 +215,6 @@ jobs:
BACKSTAGE_TEST_DATABASE_POSTGRES9_CONNECTION_STRING: postgresql://postgres:postgres@localhost:${{ job.services.postgres9.ports[5432] }}
BACKSTAGE_TEST_DATABASE_MYSQL8_CONNECTION_STRING: mysql://root:root@localhost:${{ job.services.mysql8.ports[3306] }}/ignored
- - name: verify plugin template
- run: yarn lerna -- run diff -- --check
-
- name: ensure clean working directory
run: |
if files=$(git ls-files --exclude-standard --others --modified) && [[ -z "$files" ]]; then
diff --git a/.github/workflows/cron.yml b/.github/workflows/cron.yml
new file mode 100644
index 0000000000..228d4c62ac
--- /dev/null
+++ b/.github/workflows/cron.yml
@@ -0,0 +1,15 @@
+name: Cron
+on:
+ workflow_dispatch:
+ schedule:
+ - cron: '*/5 * * * *'
+
+jobs:
+ cron:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: backstage/actions/cron@v0.5.2
+ with:
+ app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }}
+ private-key: ${{ secrets.BACKSTAGE_GOALIE_PRIVATE_KEY }}
+ installation-id: ${{ secrets.BACKSTAGE_GOALIE_INSTALLATION_ID }}
diff --git a/.github/workflows/deploy_docker-image.yml b/.github/workflows/deploy_docker-image.yml
new file mode 100644
index 0000000000..b41ca516ef
--- /dev/null
+++ b/.github/workflows/deploy_docker-image.yml
@@ -0,0 +1,89 @@
+name: Build and push Docker Hub image
+on:
+ repository_dispatch:
+ types: [release-published]
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: checkout
+ uses: actions/checkout@v2
+ with:
+ path: backstage
+ ref: v${{ github.event.client_payload.version }}
+
+ - name: setup-node
+ uses: actions/setup-node@v1
+ with:
+ node-version: 16.x
+ registry-url: https://registry.npmjs.org/
+
+ # 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
+ with:
+ node-version: ${{ matrix.node-version }}
+ registry-url: https://registry.npmjs.org/ # Needed for auth
+
+ # Cache every node_modules folder inside the monorepo
+ - name: cache all node_modules
+ id: cache-modules
+ uses: actions/cache@v2
+ with:
+ path: '**/node_modules'
+ # We use both yarn.lock and package.json as cache keys to ensure that
+ # changes to local monorepo packages bust the cache.
+ key: ${{ runner.os }}-v${{ matrix.node-version }}-node_modules-${{ hashFiles('yarn.lock', '**/package.json') }}
+
+ # If we get a cache hit for node_modules, there's no need to bring in the global
+ # yarn cache or run yarn install, as all dependencies will be installed already.
+
+ - 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)"
+
+ - name: cache global yarn cache
+ uses: actions/cache@v2
+ if: steps.cache-modules.outputs.cache-hit != 'true'
+ with:
+ path: ${{ steps.yarn-cache.outputs.dir }}
+ key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}
+ restore-keys: |
+ ${{ runner.os }}-yarn-
+ - name: yarn install
+ if: steps.cache-modules.outputs.cache-hit != 'true'
+ run: yarn install --frozen-lockfile
+ # End of yarn setup
+
+ - name: create-app
+ run: npx @backstage/create-app
+ env:
+ BACKSTAGE_APP_NAME: example-app
+
+ - name: yarn build
+ run: yarn build
+ working-directory: ./example-app
+
+ - name: Login to GitHub Container Registry
+ uses: docker/login-action@v1
+ with:
+ registry: ghcr.io
+ username: ${{ github.actor }}
+ password: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v2
+
+ - name: Build and push
+ uses: docker/build-push-action@v3
+ with:
+ context: './example-app'
+ file: ./example-app/packages/backend/Dockerfile
+ push: true
+ tags: |
+ ghcr.io/${{ github.repository_owner }}/backstage:latest
+ ghcr.io/${{ github.repository_owner }}/backstage:${{ github.event.client_payload.version }}
diff --git a/.github/workflows/deploy_microsite.yml b/.github/workflows/deploy_microsite.yml
index d0f8dc1e79..ffada71523 100644
--- a/.github/workflows/deploy_microsite.yml
+++ b/.github/workflows/deploy_microsite.yml
@@ -55,7 +55,7 @@ jobs:
run: ls microsite/build/backstage && ls microsite/build/backstage/storybook
- name: Deploy both microsite and storybook to gh-pages
- uses: JamesIves/github-pages-deploy-action@v4.3.3
+ uses: JamesIves/github-pages-deploy-action@v4.3.4
with:
branch: gh-pages
folder: microsite/build/backstage
diff --git a/.github/workflows/deploy_nightly.yml b/.github/workflows/deploy_nightly.yml
index c90894bce4..719b5ea94b 100644
--- a/.github/workflows/deploy_nightly.yml
+++ b/.github/workflows/deploy_nightly.yml
@@ -20,33 +20,15 @@ jobs:
steps:
- uses: actions/checkout@v3
- # Beginning of yarn setup, keep in sync between all workflows, see ci.yml
- name: use node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
- - name: cache all node_modules
- id: cache-modules
- uses: actions/cache@v3
- with:
- path: '**/node_modules'
- key: ${{ runner.os }}-v${{ matrix.node-version }}-node_modules-${{ hashFiles('yarn.lock', '**/package.json') }}
- - 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)"
- - name: cache global yarn cache
- uses: actions/cache@v3
- if: steps.cache-modules.outputs.cache-hit != 'true'
- with:
- path: ${{ steps.yarn-cache.outputs.dir }}
- key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}
- restore-keys: |
- ${{ runner.os }}-yarn-
- name: yarn install
- run: yarn install --frozen-lockfile
- # End of yarn setup
+ uses: backstage/actions/yarn-install@v0.5.2
+ with:
+ cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
# No verification done here, only build & publish. If the master branch
# is broken we will see that from those builds, but we still want to push nightly
diff --git a/.github/workflows/deploy_packages.yml b/.github/workflows/deploy_packages.yml
index b63507df0c..371712fedb 100644
--- a/.github/workflows/deploy_packages.yml
+++ b/.github/workflows/deploy_packages.yml
@@ -61,33 +61,15 @@ jobs:
steps:
- uses: actions/checkout@v3
- # Beginning of yarn setup, keep in sync between all workflows, see ci.yml
- name: use node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
- - name: cache all node_modules
- id: cache-modules
- uses: actions/cache@v3
- with:
- path: '**/node_modules'
- key: ${{ runner.os }}-v${{ matrix.node-version }}-node_modules-${{ hashFiles('yarn.lock', '**/package.json') }}
- - 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)"
- - name: cache global yarn cache
- uses: actions/cache@v3
- if: steps.cache-modules.outputs.cache-hit != 'true'
- with:
- path: ${{ steps.yarn-cache.outputs.dir }}
- key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}
- restore-keys: |
- ${{ runner.os }}-yarn-
- name: yarn install
- run: yarn install --frozen-lockfile
- # End of yarn setup
+ uses: backstage/actions/yarn-install@v0.5.2
+ with:
+ cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
- name: Fetch previous commit for release check
run: git fetch origin '${{ github.event.before }}'
@@ -157,33 +139,15 @@ jobs:
steps:
- uses: actions/checkout@v3
- # Beginning of yarn setup, keep in sync between all workflows, see ci.yml
- name: use node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
- - name: cache all node_modules
- id: cache-modules
- uses: actions/cache@v3
- with:
- path: '**/node_modules'
- key: ${{ runner.os }}-v${{ matrix.node-version }}-node_modules-${{ hashFiles('yarn.lock', '**/package.json') }}
- - 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)"
- - name: cache global yarn cache
- uses: actions/cache@v3
- if: steps.cache-modules.outputs.cache-hit != 'true'
- with:
- path: ${{ steps.yarn-cache.outputs.dir }}
- key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}
- restore-keys: |
- ${{ runner.os }}-yarn-
- name: yarn install
- run: yarn install --frozen-lockfile
- # End of yarn setup
+ uses: backstage/actions/yarn-install@v0.5.2
+ with:
+ cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
- name: build type declarations
run: yarn tsc:full
@@ -209,7 +173,7 @@ jobs:
# Grabs the version in the root package.json and creates a tag on GitHub
- name: Create a release tag
id: create_tag
- run: node scripts/create-release-tag.js --dispatch-workflows
+ run: node scripts/create-release-tag.js
env:
GITHUB_TOKEN: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }}
@@ -219,6 +183,13 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }}
+ - name: Dispatch repository event
+ uses: peter-evans/repository-dispatch@v2
+ with:
+ token: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }}
+ event-type: release-published
+ client-payload: '{"version": "${{ steps.create_tag.outputs.version }}"}'
+
# Notify everyone about this great new release :D
- name: Discord notification
uses: Ilshidur/action-discord@0.3.2
diff --git a/.github/workflows/issue.yaml b/.github/workflows/issue.yaml
new file mode 100644
index 0000000000..de02e45e76
--- /dev/null
+++ b/.github/workflows/issue.yaml
@@ -0,0 +1,13 @@
+name: Issue
+on:
+ issues:
+ types: [opened]
+
+jobs:
+ sync:
+ runs-on: ubuntu-latest
+
+ if: github.repository == 'backstage/backstage'
+ steps:
+ - name: Issue sync
+ uses: backstage/actions/issue-sync@v0.5.2
diff --git a/.github/workflows/pr-review-comment-trigger.yaml b/.github/workflows/pr-review-comment-trigger.yaml
new file mode 100644
index 0000000000..25475a03dc
--- /dev/null
+++ b/.github/workflows/pr-review-comment-trigger.yaml
@@ -0,0 +1,19 @@
+# This workflow is used to trigger the "PR Review Comment" workflow. This chaining is needed
+# because workflows triggered by pull_request_review_comment do not have access to secrets.
+
+name: PR Review Comment Trigger
+on:
+ pull_request_review_comment:
+ types:
+ - created
+
+jobs:
+ trigger:
+ runs-on: ubuntu-latest
+
+ # The "PR Review Comment" workflow will check the success status of this workflow and only mark
+ # the PR for re-review if this workflow was successful, which is when the author leaves a review comment.
+ if: github.repository == 'backstage/backstage' && github.event.comment.user.id == github.event.pull_request.user.id
+
+ steps:
+ - run: echo "This PR needs another review"
diff --git a/.github/workflows/pr-review-comment.yaml b/.github/workflows/pr-review-comment.yaml
new file mode 100644
index 0000000000..65252bae09
--- /dev/null
+++ b/.github/workflows/pr-review-comment.yaml
@@ -0,0 +1,24 @@
+# This workflow is triggered by "PR Review Comment Trigger"
+
+name: PR Review Comment
+on:
+ workflow_run:
+ workflows: [PR Review Comment Trigger]
+ types:
+ - completed
+
+jobs:
+ re-review:
+ runs-on: ubuntu-latest
+
+ # The triggering workflow will report success if the PR needs re-review
+ if: github.repository == 'backstage/backstage' && github.event.workflow_run.conclusion == 'success'
+
+ steps:
+ - uses: backstage/actions/re-review@v0.5.2
+ with:
+ app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }}
+ private-key: ${{ secrets.BACKSTAGE_GOALIE_PRIVATE_KEY }}
+ installation-id: ${{ secrets.BACKSTAGE_GOALIE_INSTALLATION_ID }}
+ project-id: PVT_kwDOBFKqdc02LQ
+ issue-number: ${{ github.event.workflow_run.pull_requests[0].number }}
diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml
new file mode 100644
index 0000000000..e5945f6f20
--- /dev/null
+++ b/.github/workflows/pr.yaml
@@ -0,0 +1,29 @@
+name: PR
+on:
+ pull_request_target:
+ types:
+ - opened
+ - synchronize
+ - reopened
+ - closed
+ issue_comment:
+ types:
+ - created
+
+jobs:
+ sync:
+ runs-on: ubuntu-latest
+
+ # Avoid running on issue comments
+ 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.2
+ with:
+ github-token: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }}
+ app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }}
+ private-key: ${{ secrets.BACKSTAGE_GOALIE_PRIVATE_KEY }}
+ installation-id: ${{ secrets.BACKSTAGE_GOALIE_INSTALLATION_ID }}
+ project-id: PVT_kwDOBFKqdc02LQ
+ excluded-users: ${{ secrets.OOO_USERS }}
+ owning-teams: '@backstage/techdocs'
diff --git a/.github/workflows/sync_approve_renovate_pr.yaml b/.github/workflows/sync_approve_renovate_pr.yaml
deleted file mode 100644
index 2d25bea223..0000000000
--- a/.github/workflows/sync_approve_renovate_pr.yaml
+++ /dev/null
@@ -1,37 +0,0 @@
-name: Approve renovate lock file changes
-on:
- pull_request_target:
- paths:
- - '.github/workflows/sync_renovate-changesets.yml'
- - '**/yarn.lock'
-
-jobs:
- generate-changeset:
- runs-on: ubuntu-latest
- if: github.actor == 'renovate[bot]' && github.repository == 'backstage/backstage'
- steps:
- - name: Approve
- uses: actions/github-script@v6
- with:
- github-token: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }}
- script: |
- const owner = 'backstage';
- const repo = 'backstage';
-
- const r = await github.rest.pulls.listFiles({
- owner,
- repo,
- pull_number: context.issue.number,
- });
-
- if (r.data.some((f) => f.filename.split('/').slice(-1)[0] !== 'yarn.lock')) {
- console.log('skipping approval since some files are not yarn.lock');
- return;
- }
-
- await github.rest.pulls.createReview({
- owner,
- repo,
- pull_number: context.issue.number,
- event: 'APPROVE'
- })
diff --git a/.github/workflows/sync_code-formatting.yml b/.github/workflows/sync_code-formatting.yml
index b6fce0e68d..b04a0a3de0 100644
--- a/.github/workflows/sync_code-formatting.yml
+++ b/.github/workflows/sync_code-formatting.yml
@@ -14,33 +14,15 @@ jobs:
# Fetch changes to previous commit - required for 'only_changed' in Prettier action
fetch-depth: 0
- # Beginning of yarn setup, keep in sync between all workflows, see ci.yml
- name: use node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
- - name: cache all node_modules
- id: cache-modules
- uses: actions/cache@v3
- with:
- path: '**/node_modules'
- key: ${{ runner.os }}-v${{ matrix.node-version }}-node_modules-${{ hashFiles('yarn.lock', '**/package.json') }}
- - 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)"
- - name: cache global yarn cache
- uses: actions/cache@v3
- if: steps.cache-modules.outputs.cache-hit != 'true'
- with:
- path: ${{ steps.yarn-cache.outputs.dir }}
- key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}
- restore-keys: |
- ${{ runner.os }}-yarn-
- name: yarn install
- run: yarn install --frozen-lockfile
- # End of yarn setup
+ uses: backstage/actions/yarn-install@v0.5.2
+ with:
+ cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
- name: Run Prettier on ADOPTERS.md
uses: creyD/prettier_action@v4.2
diff --git a/.github/workflows/sync_issue-labels.yml b/.github/workflows/sync_issue-labels.yml
deleted file mode 100644
index 91b5f79f5d..0000000000
--- a/.github/workflows/sync_issue-labels.yml
+++ /dev/null
@@ -1,38 +0,0 @@
-name: Sync Issue Labels
-on:
- issues:
- types: [opened]
-jobs:
- label-issue:
- runs-on: ubuntu-latest
- if: github.repository == 'backstage/backstage'
- steps:
- - name: View context attributes
- uses: actions/github-script@v6
- with:
- script: |
- const keywords = {
- 'techdocs|tech-docs|tech docs': 'docs-like-code',
- 'search': 'search',
- 'catalog': 'catalog',
- 'scaffolder': 'scaffolder',
- };
-
- const labels = Object.entries(keywords)
- .map(([regexp, label]) => {
- if (new RegExp(regexp, 'gi').test(context.payload.issue.title)) {
- return label;
- }
- })
- .filter(Boolean);
-
- if(!labels.length) {
- return;
- }
-
- github.rest.issues.addLabels({
- issue_number: context.issue.number,
- owner: context.repo.owner,
- repo: context.repo.repo,
- labels
- });
diff --git a/.github/workflows/sync_release-manifest.yml b/.github/workflows/sync_release-manifest.yml
index 816a3e632f..8cf6991aaf 100644
--- a/.github/workflows/sync_release-manifest.yml
+++ b/.github/workflows/sync_release-manifest.yml
@@ -1,10 +1,7 @@
name: Sync Release Manifest
on:
- workflow_dispatch:
- inputs:
- version:
- description: Version number, without any 'v' prefix
- required: true
+ repository_dispatch:
+ types: [release-published]
jobs:
create-new-version:
@@ -23,7 +20,7 @@ jobs:
with:
path: backstage
# 'v' prefix is added here for the tag, we keep it out of the manifest logic
- ref: v${{ github.event.inputs.version }}
+ ref: v${{ github.event.client_payload.version }}
# Checkout backstage/versions into /backstage/versions, which is where store the output
- name: Checkout versions
@@ -44,10 +41,10 @@ jobs:
cd backstage
mkdir -p scripts
wget -O scripts/assemble-manifest.js https://raw.githubusercontent.com/backstage/backstage/master/scripts/assemble-manifest.js
- node scripts/assemble-manifest.js ${{ github.event.inputs.version }}
+ node scripts/assemble-manifest.js ${{ github.event.client_payload.version }}
cd versions
git add .
- git commit -am "${{ github.event.inputs.version }}"
+ git commit -am "${{ github.event.client_payload.version }}"
git push
- name: Dispatch update-helper update
diff --git a/.github/workflows/sync_snyk-github-issues.yml b/.github/workflows/sync_snyk-github-issues.yml
index e45a36c8e8..d2af1307b0 100644
--- a/.github/workflows/sync_snyk-github-issues.yml
+++ b/.github/workflows/sync_snyk-github-issues.yml
@@ -16,33 +16,15 @@ jobs:
steps:
- uses: actions/checkout@v3
- # Beginning of yarn setup, keep in sync between all workflows, see ci.yml
- name: use node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
- - name: cache all node_modules
- id: cache-modules
- uses: actions/cache@v3
- with:
- path: '**/node_modules'
- key: ${{ runner.os }}-v${{ matrix.node-version }}-node_modules-${{ hashFiles('yarn.lock', '**/package.json') }}
- - 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)"
- - name: cache global yarn cache
- uses: actions/cache@v3
- if: steps.cache-modules.outputs.cache-hit != 'true'
- with:
- path: ${{ steps.yarn-cache.outputs.dir }}
- key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}
- restore-keys: |
- ${{ runner.os }}-yarn-
- name: yarn install
- run: yarn install --frozen-lockfile
- # End of yarn setup
+ uses: backstage/actions/yarn-install@v0.5.2
+ with:
+ cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
- name: Create Snyk report
uses: snyk/actions/node@master
diff --git a/.github/workflows/verify_dco.yaml b/.github/workflows/verify_dco.yaml
deleted file mode 100644
index 2094327d23..0000000000
--- a/.github/workflows/verify_dco.yaml
+++ /dev/null
@@ -1,65 +0,0 @@
-name: Verify DCO
-on:
- schedule:
- - cron: '*/15 * * * *'
-
-jobs:
- dco-helper:
- runs-on: ubuntu-latest
- steps:
- - name: Verify DCO status for open pull requests
- uses: actions/github-script@v6
- with:
- script: |
- const owner = "backstage";
- const repo = "backstage";
- const pulls = await github.paginate(github.rest.pulls.list, {
- state: "open",
- owner,
- repo,
- });
-
- for (const pull of pulls) {
- // Pick out the PRs that have the DCO check
- const checks = await github.rest.checks.listForRef({
- owner,
- repo,
- ref: pull.head.sha,
- check_name: "DCO",
- status: "completed",
- });
- // Skip if there are no checks
- if (!checks.data.check_runs.length) {
- continue;
- }
- // Skip if the conclusion is not action_required
- if (checks.data.check_runs[0].conclusion !== "action_required") {
- console.log(`No checks found for PR #${pull.number}, skipping`);
- continue;
- }
-
- const comments = await github.paginate(github.rest.issues.listComments, {
- owner,
- repo,
- issue_number: pull.number,
- });
- if (comments.find((c) =>
- c.user.login === "github-actions[bot]" &&
- c.body.includes("")
- )
- ) {
- console.log(`already commented on PR #${pull.number}, skipping`);
- continue;
- }
- console.log(`creating comment on PR #${pull.number}`);
- const body = `
- Thanks for the contribution!
- All commits need to be DCO signed before they are reviewed. Please refer to the the [DCO section in CONTRIBUTING.md](https://github.com/backstage/backstage/blob/master/CONTRIBUTING.md#developer-certificate-of-origin) or the [DCO](${checks.data.check_runs[0].html_url}) status for more info.
- `;
- await github.rest.issues.createComment({
- repo,
- owner,
- issue_number: pull.number,
- body,
- });
- }
diff --git a/.github/workflows/verify_e2e-linux.yml b/.github/workflows/verify_e2e-linux.yml
index 884d8bf172..811372d54d 100644
--- a/.github/workflows/verify_e2e-linux.yml
+++ b/.github/workflows/verify_e2e-linux.yml
@@ -40,35 +40,15 @@ jobs:
steps:
- uses: actions/checkout@v3
- # Beginning of yarn setup, keep in sync between all workflows, see ci.yml
- name: use node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
- - name: cache all node_modules
- id: cache-modules
- uses: actions/cache@v3
- with:
- path: '**/node_modules'
- key: ${{ runner.os }}-v${{ matrix.node-version }}-node_modules-${{ hashFiles('yarn.lock', '**/package.json') }}
- - 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)"
- - name: setup chrome
- uses: browser-actions/setup-chrome@latest
- - name: cache global yarn cache
- uses: actions/cache@v3
- if: steps.cache-modules.outputs.cache-hit != 'true'
- with:
- path: ${{ steps.yarn-cache.outputs.dir }}
- key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}
- restore-keys: |
- ${{ runner.os }}-yarn-
- name: yarn install
- run: yarn install --frozen-lockfile
- # End of yarn setup
+ uses: backstage/actions/yarn-install@v0.5.2
+ with:
+ cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
- run: yarn tsc
- run: yarn backstage-cli repo build
diff --git a/.github/workflows/verify_storybook.yml b/.github/workflows/verify_storybook.yml
index a13aa3ae71..1aea51bec9 100644
--- a/.github/workflows/verify_storybook.yml
+++ b/.github/workflows/verify_storybook.yml
@@ -17,44 +17,30 @@ on:
jobs:
chromatic:
- runs-on: ubuntu-latest
+ runs-on: ${{ matrix.os }}
+
+ strategy:
+ matrix:
+ os: [ubuntu-latest]
+ node-version: [16.x]
+
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0 # Required to retrieve git history
- # Beginning of yarn setup, keep in sync between all workflows, see ci.yml
- name: use node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
- - name: cache all node_modules
- id: cache-modules
- uses: actions/cache@v3
+ - name: yarn install
+ uses: backstage/actions/yarn-install@v0.5.2
with:
- path: '**/node_modules'
- key: ${{ runner.os }}-v${{ matrix.node-version }}-node_modules-${{ hashFiles('yarn.lock', '**/package.json') }}
- - 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)"
- - name: cache global yarn cache
- uses: actions/cache@v3
- if: steps.cache-modules.outputs.cache-hit != 'true'
- with:
- path: ${{ steps.yarn-cache.outputs.dir }}
- key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}
- restore-keys: |
- ${{ runner.os }}-yarn-
-
- - name: top-level install
- run: yarn install --frozen-lockfile
-
+ cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
- name: storybook yarn install
run: yarn install --frozen-lockfile
working-directory: storybook
- # End of yarn setup
- run: yarn build-storybook
diff --git a/.github/workflows/verify_windows.yml b/.github/workflows/verify_windows.yml
index bb8aa9e5aa..e286d42c7e 100644
--- a/.github/workflows/verify_windows.yml
+++ b/.github/workflows/verify_windows.yml
@@ -26,25 +26,15 @@ jobs:
steps:
- uses: actions/checkout@v3
- # Beginning of yarn setup, keep in sync between all workflows, see ci.yml
- name: use node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
- - name: find location of global yarn cache
- id: yarn-cache
- run: echo "::set-output name=dir::$(yarn cache dir)"
- - name: cache global yarn cache
- uses: actions/cache@v3
- with:
- path: ${{ steps.yarn-cache.outputs.dir }}
- key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}
- restore-keys: |
- ${{ runner.os }}-yarn-
+
+ # Windows file operation slowness means there's no point caching this
- name: yarn install
run: yarn install --frozen-lockfile
- # End of yarn setup
- name: lint
run: yarn backstage-cli repo lint
diff --git a/.prettierignore b/.prettierignore
index 393c35fdbe..8f1fae0456 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -5,6 +5,7 @@ coverage
*.hbs
templates
api-report.md
+cli-report.md
plugins/scaffolder-backend/sample-templates
.vscode
dist-types
diff --git a/ADOPTERS.md b/ADOPTERS.md
index 4df952be6d..6bf1f482bf 100644
--- a/ADOPTERS.md
+++ b/ADOPTERS.md
@@ -1,9 +1,11 @@
# Adopters
-_If you're using Backstage in your organization, please try to add your company name to this list. This really helps the project to gain momentum and credibility. It's a small contribution back to the project with a big impact._
+_If you're using Backstage in your organization, please try to add your company name to this list. It really helps the project to gain momentum and credibility. It's a small contribution back to the project with a big impact._
+_You can do this by using the [Adopter form](https://form.typeform.com/to/zcOaKikB) or by editing this file after following the [CONTRIBUTING.md](./CONTRIBUTING.md)._
+
| Organization | Contact | Description of Use |
-| --------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+|-----------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Spotify](https://www.spotify.com) | [@leemills83](https://github.com/leemills83) | Main interface towards all of Spotify's infrastructure and technical documentation. |
| [bol.com](https://www.bol.com) | [@sagacity](https://github.com/sagacity) | Initial work being done to unify platform tooling. |
| [DFDS](https://www.dfds.com) | [@carlsendk](https://github.com/carlsendk) | V2 self-service platform. |
@@ -21,7 +23,7 @@ _If you're using Backstage in your organization, please try to add your company
| [Fiverr](https://www.fiverr.com) | [@nirga](https://github.com/nirga) | Unifying separate tools that developers are using today (i.e. monitoring, dead letter queues management, etc.) into a single platform. |
| [Zalando SE](https://www.zalando.de) | [@leviferreira](https://github.com/leviferreira) | Building V2 of the Internal Development Portal. |
| [LegalZoom](https://legalzoom.com) | [@backjo](https://github.com/backjo) | Developer portal - hub for all engineering projects and metadata. |
-| [Expedia Group](https://www.expediagroup.com) | [@guillermomanzo](https://github.com/guillermomanzo), [Sheena Sharma](mailto:shesharma@expediagroup.com) | EG Common Developer Toolkit |
+| [Expedia Group](https://www.expediagroup.com) | [@guillermomanzo](https://github.com/guillermomanzo), [Sheena Sharma](mailto:shesharma@expediagroup.com), [@ajbw](https://github.com/ajbw) | EG Common Developer Toolkit |
| [Paddle.com](https://paddle.com) | [Ioannis Georgoulas](https://github.com/geototti21) | Developer portal (Tech Docs, Service Catalog, Internal Tooling), we use vanilla Backstage FE and custom BE implementation in Go |
| [Acast.com](https://acast.com) | [Olle Lundberg](https://github.com/lndbrg) | Developer portal with tech docs, service catalog and a bunch of other internal tooling |
| [Lunar](https://lunar.app) | [Jacob Valdemar](https://github.com/JacobValdemar) | Internal developer portal for service overview and insights, API documentation, technical guides, onboarding guides and RFC's. |
@@ -34,9 +36,9 @@ _If you're using Backstage in your organization, please try to add your company
| [Netflix](https://www.netflix.com/) | [bleathem](https://github.com/bleathem) | Our Backstage implementation will be the front door to a unified experience connecting our internal platform products across important workflows with integrated knowledge and support. |
| [b.well](https://www.icanbwell.com/) | [Jacob Rosales](https://github.com/jrosales) | Foundation for our engineering portal and cloud insights. |
| [PagerDuty](https://www.pagerduty.com/) | [Mark Shaw](https://github.com/markshawtoronto) | Developer portal, initially focused on software templates and tech-docs. |
-| [MoonShiner](https://moonshiner.at) | [Fabian Hippmann](https://github.com/FabianHippmann) | Developer portal - helps us keep track of our customer projects, onboard new developers & improve our development process 🌕🚀🧑🚀 |
+| [MoonShiner](https://moonshiner.at) | [Fabian Hippmann](https://github.com/FabianHippmann) | Developer portal - helps us keep track of our customer projects, onboard new developers & improve our development process 🌕🚀🧑🚀 |
| [FundApps](https://www.fundapps.co/) | [Elliot Greenwood](https://github.com/egnwd) | Developer Portal - A place for us to keep track of our projects and documentation for all services and processes |
-| [DAZN](https://dazn.com/) | [Lou Bichard](https://twitter.com/loujaybee), [Marco Crivellaro](https://github.com/crivetechie), [Alex Hollerith](mailto:alex.hollerith@dazn.com) | Ingesting all of DAZN's repos for the catalog, migrating our internal platform apps (pull request boards, release information, inner source marketplace etc) to Backstage plugins (where applicable). |
+| [DAZN](https://dazn.com/) | [David Rubio Vidal](https://github.com/davidrv87), [Marco Crivellaro](https://github.com/crivetechie), [Alex Hollerith](mailto:alex.hollerith@dazn.com), [Kamil Wolny](https://github.com/mrwolny) | Ingesting all of DAZN's repos for the catalog, migrating our internal platform apps (pull request boards, release information, inner source marketplace etc) to Backstage plugins (where applicable). |
| [HelloFresh](https://www.hellofresh.de/) | [@iammuho](https://github.com/iammuho), [@ElenaForester](https://github.com/ElenaForester), [@diegomarangoni](https://github.com/diegomarangoni) | Our developer portal at HelloFresh - Spread across an organisation of 500+ engineers globally. |
| [FactSet](https://www.factset.com/) | [@kuangp](https://github.com/kuangp) | Developer portal to provide discoverability to all internal components, APIs, documentation, and scaffold templates with integrations to our internal infrastructure tools. |
| [Workrise](https://www.workrise.com/) | [Michael Rode](https://github.com/michaelrode) | Developer portal, main gateway to our infrastructure, documentation and internal tooling. |
@@ -161,10 +163,9 @@ _If you're using Backstage in your organization, please try to add your company
| [OVHcloud](https://www.ovhcloud.com/fr/) | [Jean-Philippe Blary](https://github.com/blaryjp), [Arnaud Bauer](mailto:arnaud.bauer@ovhcloud.com), [Flavien Chantelot](https://github.com/Dorn-) | We're providing Backstage to our collaborators to ease their daily jobs, and let them extends it using plugins. |
| [Procter & Gamble](https://us.pg.com/) | [Binita Nayak](https://github.com/binitan), [Josh Rose](https://github.com/joshuarose), [RJ Winkler](https://github.com/rjwink) | P&G leverages Backstage to build internal developer portal to ensure developers' happiness. This developer portal shall act as single source of information needed by development teams to seamlessly create, find and maintain their software components/resources/documentation. |
| [SANS Institute](https://www.sans.org) | [Christopher Klewin](mailto:cklewin@sans.org) | Developer portal for centralized visibility, reporting, and tooling across multiple organizations. |
-| [Okay](https://www.okayhq.com/) | [Tomas Barreto](mailto:tomas@okayhq.com)
+| [Okay](https://www.okayhq.com/) | [Tomas Barreto](mailto:tomas@okayhq.com) | Service catalog, developer portal, and technical documentation |
| [Kaluza](https://www.kaluza.com) | [James Condren](mailto:james.condron@kaluza.com) | To provide an automated golden path to developers, with a focus on discovery and documentation |
| [LinkedIn](https://linkedin.com) | [Joshua Lawrence](mailto:jlawrence@linkedin.com) | We are building a platform for internal web tools |
-| [SANS Institute](https://www.sans.org) | [Justin Selleck](mailto:jselleck@sans.org) | SANS uses backstage to track components in github and to facilitate docs near code. |
| [Forto](https://forto.com) | [Rodolfo Matos](mailto:rodolfo.matos@forto.com) | Still in a experimental phase/assessing the organisational fit. We will be using it mostly a developer portal -- pretty standard use case. |
| [BetterUp](https://betterup.com) | [Jordan Hochenbaum](mailto:jordan.hochenbaum@betterup.co) | We're starting to use Backstage as the central hub for service discovery, documentation, and develop experience. |
| [warung pintar](https://warungpintar.co.id/) | [Muhammad Rafly Andrianza](mailto:rafly.andrianza@warungpintar.co) | Initial Work Developer Portal with TechRadar, Service Catalogue, TechDocs, anything about platform & infrastructure resources. |
@@ -172,11 +173,20 @@ _If you're using Backstage in your organization, please try to add your company
| [AEB](https://www.aeb.com/) | [David Fankhänel](mailto:dfl@aeb.com) | Central developer platform for creating new apps via templates, getting an overview via software catalog, etc |
| [SALTO Systems](https://saltosystems.com) | [Ian Cowley](mailto:i.cowley@saltosystems.com) | Currently using Backstage as an internal documentation portal. |
| [Lummo](https://lummo.com) | [Anjul Sahu](mailto:anjul@lummo.com) | We are building the internal developer portal using Backstage and bringing up all integrations and service information at one place. |
-| [Frontside](https://frontside.com) | [Taras Mankovski](mailto:taras@frontside.com) |
+| [Frontside](https://frontside.com) | [Taras Mankovski](mailto:taras@frontside.com) | |
| [Stepstone](https://www.stepstone.com/en/) | [Neil Kennedy](mailto:neil.kennedy@stepstone.com) | StepStone is using Backstage to solve problems around ownership and visibility of our applications. We have thousands of repos, multiple legacy systems and a growing platform that is hard to maintain. Backstage is forming the centre of our push to embrace the chaos. |
| [idwall](https://idwall.co) | [Rodrigo Catão Araujo](mailto:rodrigo@idwall.co) | Developer Portal for internal engineers to access service catalog, documentation, observability, infrastructure and internal tooling. |
| [Jaguar Land Rover](https://www.jaguarlandrover.com) | [Josh Walker](mailto:jwalke18@jaguarlandrover.com) | Users can request a Gitlab user, which creates a commit with the Terraform code. |
-| [GlovoApp](http://glovoapp.com/) | [Chris Biancucci](mailto:christian.biancucci@glovoapp.com) | We have recently adopted Backstage and we are using it to improve our Developer Experience: simplifying, automating, and keeping things in order for every existing and new service developed. |
-| [Dixa](https://dixa.com) | [Jens Møller](mailto:jsc@dixa.com) | We are in early stages, but using it to get overview of our repositories and ownership of these. We want among many things to use it for compliance and easier access to key metrics for our repos. |
+| [Glovo](http://glovoapp.com/) | [Yaser Toutah](mailto:yaser.toutah@glovoapp.com) | Developer Portal to improve our Developer Experience, identify ownership and track metadata for our services and tools. It's our Service Catalog. In addition to that, we use it for Service Creation, and much more. |
+| [Dixa](https://dixa.com) | [Jens Møller](https://github.com/jensamoller) | We are in early stages, but using it to get overview of our repositories and ownership of these. We want among many things to use it for compliance and easier access to key metrics for our repos. |
| [Notino](https://notino.com) | [Jan Remunda](mailto:jan.remunda@notino.com) | Backstage is our developer portal. We use it as service catalog and for technical documentation. |
+| [Polarpoint](https://polarpoint.io/) | [Surj Bains](https://github.com/polarpoint-io) | We are using Backstage as our Developer portal as well as for hosting our DevOps portal for software catalog. |
| [Niche](https://niche.com) | [Zach Romitz](mailto:zach.romitz@niche.com) | We are using the Software Catalog, Software Templates, API documentation, and Techdocs to try and centralize service information. |
+| [Mercedes-Benz.io](https://www.mercedes-benz.io/) | [Manuel Santos](https://github.com/manusant) | At Mercedes-Benz we use it as a developer portal with software catalog, TechDocs, Scaffolding and custom plugins. It provides an overview of our tech ecosystem to our product development teams. The portal also serves as a way to foster collaboration among the numerous companies of the Mercedes-Benz Group. |
+| [Funding Circle](https://www.fundingcircle.com/) | [Ariel Pacciaroni](https://github.com/arielpacciaroni) | We are building the internal developer portal using Backstage project and centralizing all services information at one place. The portal helps us track down repositories ownership as well as direct access to key information on every component. |
+| [Clarivate](https://www.clarivate.com) | [Gabriele Carteni](mailto:gabriele.carteni@clarivate.com) | We are building our Developer Portal using Backstage to have a better control over our software ecosystem, integrate SDLC tools and promote best practices |
+| [Cho Tot](https://www.chotot.com) | [Chotot Team](mailto:sre@chotot.vn) | Internal developer portal, service catalog with CI/CD tools. |
+| [William Hill](https://www.williamhillgroup.com/) | [Pat Mills](mailto:pat.mills@williamhill.com), [Nathan Flynn](mailto:nflynn@williamhill.co.uk), and [Nishkarsh Raj](mailto:nishkarsh.raj@williamhill.co.uk) | William Hill are leveraging Backstage to build our Engineering Portal. Our mission is to centralize the software catalog inventory to enable service discoverability, reduce the onboarding time for new Engineers, provide a single pane of glass to accelerate Developer Productivity and Save Engineers time. Our aspiration is to create an InnerSource community focussed on organization-wide patterns that are re-usable and can be self-served with the Scaffolder. |
+| [Vodafone NewZealand Limited](https://vodafone.co.nz) | [Ankit Gupta](mailto:ankit.gupta@vodafone.nz), [DevOps COE](mailto:devopstooling@vodafone.nz) | Vodafone NZ are leveraging Backstage to build centralised and self service Engineering Portal. Our mission is to standardised Pipeline templates across the Engineering teams, One shop stop to create the pipelines and repository with a template approach which reduces creation part from days to minutes and no wait time for developers. A unified view for Azure DevOps pipeline, Azure Repo pull requests, Deployment status from Azure RedHat Openshift-ArgoCD and SonarQube Security and code quality scans report on a single pan to provide a streamlined view for all microservices across the app stack. |
+| [Coamo](http://www.coamo.com.br) | [@holiiveira](https://github.com/holiiveira), [@gpxlnx](https://github.com/gpxlnx) | We're starting to use it as the main tool of a DevOps platform. Our goal is to provide software templates, centralize our software catalog enabling efficient service discovery, and make it easy to manage the entire software ecosystem in one place.
+ |
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index eb60bc48e0..1afbf072fc 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -58,9 +58,9 @@ If you are proposing a feature:
- Remember that this is a volunteer-driven project, and that contributions
are welcome :)
-### Add your company to ADOPTERS
+### Add your company to `ADOPTERS`
-Have you started using Backstage? Adding your company to [ADOPTERS](ADOPTERS.md) really helps the project.
+Have you started using Backstage? Adding your company to [ADOPTERS](ADOPTERS.md) really helps the project, you can do this by filling out this [Adopter form](https://form.typeform.com/to/zcOaKikB).
## Get Started!
diff --git a/README.md b/README.md
index 5dba1fdf52..a6e740a427 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,7 @@

+> 🏖 From July 7th due to Summer Vacations for some of the maintainers, expect the project to move a little slower than normal, and support to be limited. Normal service will resume on August 8th 🏝
+
# [Backstage](https://backstage.io)
[](https://opensource.org/licenses/Apache-2.0)
diff --git a/app-config.yaml b/app-config.yaml
index 5919deb1ee..9a3206026e 100644
--- a/app-config.yaml
+++ b/app-config.yaml
@@ -171,26 +171,26 @@ integrations:
github:
- host: github.com
token: ${GITHUB_TOKEN}
- ### Example for how to add your GitHub Enterprise instance using the API:
- # - host: ghe.example.net
- # apiBaseUrl: https://ghe.example.net/api/v3
- # token: ${GHE_TOKEN}
- ### Example for how to add your GitHub Enterprise instance using raw HTTP fetches (token is optional):
- # - host: ghe.example.net
- # rawBaseUrl: https://ghe.example.net/raw
- # token: ${GHE_TOKEN}
+ ### Example for how to add your GitHub Enterprise instance using the API:
+ # - host: ghe.example.net
+ # apiBaseUrl: https://ghe.example.net/api/v3
+ # token: ${GHE_TOKEN}
+ ### Example for how to add your GitHub Enterprise instance using raw HTTP fetches (token is optional):
+ # - host: ghe.example.net
+ # rawBaseUrl: https://ghe.example.net/raw
+ # token: ${GHE_TOKEN}
gitlab:
- host: gitlab.com
token: ${GITLAB_TOKEN}
- bitbucket:
- - host: bitbucket.org
- username: ${BITBUCKET_USERNAME}
- appPassword: ${BITBUCKET_APP_PASSWORD}
- ### Example for how to add your bitbucket server instance using the API:
- # - host: server.bitbucket.com
- # apiBaseUrl: server.bitbucket.com
- # username: ${BITBUCKET_SERVER_USERNAME}
- # appPassword: ${BITBUCKET_SERVER_APP_PASSWORD}
+ ### Example for how to add a bitbucket cloud integration
+ # bitbucketCloud:
+ # - username: ${BITBUCKET_USERNAME}
+ # appPassword: ${BITBUCKET_APP_PASSWORD}
+ ### Example for how to add your bitbucket server instance using the API:
+ # - host: server.bitbucket.com
+ # apiBaseUrl: server.bitbucket.com
+ # username: ${BITBUCKET_SERVER_USERNAME}
+ # appPassword: ${BITBUCKET_SERVER_APP_PASSWORD}
azure:
- host: dev.azure.com
token: ${AZURE_TOKEN}
@@ -234,16 +234,6 @@ catalog:
# dn: ou=access,ou=groups,ou=example,dc=example,dc=net
# options:
# filter: (&(objectClass=some-group-class)(!(groupType=email)))
- microsoftGraphOrg:
- ### Example for how to add your Microsoft Graph tenant
- #providers:
- # - target: https://graph.microsoft.com/v1.0
- # authority: https://login.microsoftonline.com
- # tenantId: ${MICROSOFT_GRAPH_TENANT_ID}
- # clientId: ${MICROSOFT_GRAPH_CLIENT_ID}
- # clientSecret: ${MICROSOFT_GRAPH_CLIENT_SECRET_TOKEN}
- # userFilter: accountEnabled eq true and userType eq 'member'
- # groupFilter: securityEnabled eq false and mailEnabled eq true and groupTypes/any(c:c+eq+'Unified')
locations:
# Add a location here to ingest it, for example from a URL:
diff --git a/contrib/docs/tutorials/aws-alb-aad-oidc-auth.md b/contrib/docs/tutorials/aws-alb-aad-oidc-auth.md
index 2b3e02c18b..3cedf5634b 100644
--- a/contrib/docs/tutorials/aws-alb-aad-oidc-auth.md
+++ b/contrib/docs/tutorials/aws-alb-aad-oidc-auth.md
@@ -122,10 +122,7 @@ When using ALB auth you can configure it as described [here](https://backstage.i
- replace the content of `packages/backend/plugin/auth.ts` with the below and tweak it according to your needs.
```ts
-import {
- createRouter,
- createAwsAlbProvider,
-} from '@backstage/plugin-auth-backend';
+import { createRouter, providers } from '@backstage/plugin-auth-backend';
import {
DEFAULT_NAMESPACE,
stringifyEntityRef,
@@ -145,7 +142,7 @@ export default async function createPlugin({
database,
discovery,
providerFactories: {
- awsalb: createAwsAlbProvider({
+ awsalb: providers.awsAlb.create({
authHandler: async ({ fullProfile }) => {
let email: string | undefined = undefined;
if (fullProfile.emails && fullProfile.emails.length > 0) {
diff --git a/contrib/docs/tutorials/prometheus-metrics-output.png b/contrib/docs/tutorials/prometheus-metrics-output.png
new file mode 100644
index 0000000000..f7fac739ac
Binary files /dev/null and b/contrib/docs/tutorials/prometheus-metrics-output.png differ
diff --git a/contrib/docs/tutorials/prometheus-metrics.md b/contrib/docs/tutorials/prometheus-metrics.md
new file mode 100644
index 0000000000..5b7dc61df3
--- /dev/null
+++ b/contrib/docs/tutorials/prometheus-metrics.md
@@ -0,0 +1,108 @@
+# Prometheus
+
+## Overview
+
+This is a small tutorial that goes over how to setup your Backstage instance to output metrics in a format that can be pulled in by Prometheus.
+
+## How to Setup Prometheus Metrics
+
+1. First we need to add the needed dependencies to the `package.json` in the `\packages\backend`:
+
+ ```diff
+ // packages/backend/package.json
+ "dependencies": {
+ + "express-prom-bundle": "^6.3.6",
+ + "prom-client": "^14.0.1",
+ ```
+
+2. Now we want to run `yarn install` from the root of the project to get those dependencies in place
+3. Then we need to add a handler for the metrics by creating a file called `metrics.ts` in the `\packages\backend\src` folder
+4. Next we add the following content to the `metrics.ts` file:
+
+ ```ts
+ // packages/backend/src/metrics.ts
+ import { useHotCleanup } from '@backstage/backend-common';
+ import { RequestHandler } from 'express';
+ import promBundle from 'express-prom-bundle';
+ import prom from 'prom-client';
+ import * as url from 'url';
+
+ const rootRegEx = new RegExp('^/([^/]*)/.*');
+ const apiRegEx = new RegExp('^/api/([^/]*)/.*');
+
+ export function normalizePath(req: any): string {
+ const path = url.parse(req.originalUrl || req.url).pathname || '/';
+
+ // Capture /api/ and the plugin name
+ if (apiRegEx.test(path)) {
+ return path.replace(apiRegEx, '/api/$1');
+ }
+
+ // Only the first path segment at root level
+ return path.replace(rootRegEx, '/$1');
+ }
+
+ /**
+ * Adds a /metrics endpoint, register default runtime metrics and instrument the router.
+ */
+ export function metricsHandler(): RequestHandler {
+ // We can only initialize the metrics once and have to clean them up between hot reloads
+ useHotCleanup(module, () => prom.register.clear());
+
+ return promBundle({
+ includeMethod: true,
+ includePath: true,
+ // Using includePath alone is problematic, as it will include path labels with high
+ // cardinality (e.g. path params). Instead we would have to template them. However, this
+ // is difficult, as every backend plugin might use different routes. Instead we only take
+ // the first directory of the path, to have at least an idea how each plugin performs:
+ normalizePath,
+ promClient: { collectDefaultMetrics: {} },
+ });
+ }
+ ```
+
+5. Now we will extend the router configuration with the `metricsHandler`:
+
+ ```diff
+ +import { metricsHandler } from './metrics';
+
+ ...
+
+ const service = createServiceBuilder(module)
+ .loadConfig(config)
+ .addRouter('', await healthcheck(healthcheckEnv))
+ + .addRouter('', metricsHandler())
+ .addRouter('/api', apiRouter);
+ ```
+
+6. You now have everything setup, from the `\packages\backend` folder run `yarn start` this will start up the backend
+7. Now in a browser load up `http://localhost:7007/metrics`, if everything went smoothly you should see metrics in your browser something like this:
+
+ 
+
+## Metrics
+
+The following sections goes over the included and experimental metrics available once you have completed this tutorial
+
+## Included
+
+This tutorials uses the [`express-prom-bundle`](https://github.com/jochen-schweizer/express-prom-bundle) and the [`prom-client`](https://github.com/siimon/prom-client) to make this all work. They both come with some built in metrics:
+
+- `express-prom-bundle` comes with 2 metrics:
+ - `up`: this normally will be just 1
+ - `http_request_duration_seconds`: http latency histogram/summary labeled with `status_code`, `method` and `path`
+- `prom-client` comes with a collection of metrics around memory, CPU, processes, etc. You can see the supported metrics in the `prom-client's` [`lib/metrics`](https://github.com/siimon/prom-client/tree/master/lib/metrics) folder.
+
+### Experimental
+
+There are some custom metrics that have been added to Backstage will be output for you, these are currently deemed experimental and may be changed or removed in a future release. Here is a rough list, again subject to changes:
+
+- `catalog_entities_count`: Total amount of entities in the catalog
+- `catalog_registered_locations_count`: Total amount of registered locations in the catalog
+- `catalog_relations_count`: Total amount of relations between entities
+- `catalog_stitched_entities_count`: Amount of entities stitched
+- `catalog_processed_entities_count`: Amount of entities processed
+- `catalog_processing_duration_seconds`: Time spent executing the full processing flow
+- `catalog_processors_duration_seconds`: Time spent executing catalog processors
+- `catalog_processing_queue_delay_seconds`: The amount of delay between being scheduled for processing, and the start of actually being processed
diff --git a/cypress/yarn.lock b/cypress/yarn.lock
index 53f61fd113..991d2d8562 100644
--- a/cypress/yarn.lock
+++ b/cypress/yarn.lock
@@ -40,14 +40,14 @@
lodash.once "^4.1.1"
"@types/node@*":
- version "17.0.40"
- resolved "https://registry.npmjs.org/@types/node/-/node-17.0.40.tgz#76ee88ae03650de8064a6cf75b8d95f9f4a16090"
- integrity sha512-UXdBxNGqTMtm7hCwh9HtncFVLrXoqA3oJW30j6XWp5BH/wu3mVeaxo7cq5benFdBw34HB3XDT2TRPI7rXZ+mDg==
+ version "18.0.0"
+ resolved "https://registry.npmjs.org/@types/node/-/node-18.0.0.tgz#67c7b724e1bcdd7a8821ce0d5ee184d3b4dd525a"
+ integrity sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA==
"@types/node@^14.14.31":
- version "14.18.20"
- resolved "https://registry.npmjs.org/@types/node/-/node-14.18.20.tgz#268f028b36eaf51181c3300252f605488c4f0650"
- integrity sha512-Q8KKwm9YqEmUBRsqJ2GWJDtXltBDxTdC4m5vTdXBolu2PeQh8LX+f6BTwU+OuXPu37fLxoN6gidqBmnky36FXA==
+ version "14.18.21"
+ resolved "https://registry.npmjs.org/@types/node/-/node-14.18.21.tgz#0155ee46f6be28b2ff0342ca1a9b9fd4468bef41"
+ integrity sha512-x5W9s+8P4XteaxT/jKF0PSb7XEvo5VmqEWgsMlyeY4ZlLK8I6aH6g5TPPyDlLAep+GYf4kefb7HFyc7PAO3m+Q==
"@types/sinonjs__fake-timers@8.1.1":
version "8.1.1"
@@ -121,9 +121,9 @@ astral-regex@^2.0.0:
integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
async@^3.2.0:
- version "3.2.3"
- resolved "https://registry.npmjs.org/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9"
- integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==
+ version "3.2.4"
+ resolved "https://registry.npmjs.org/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c"
+ integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==
asynckit@^0.4.0:
version "0.4.0"
@@ -217,9 +217,9 @@ check-more-types@^2.24.0:
integrity sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==
ci-info@^3.2.0:
- version "3.3.1"
- resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.3.1.tgz#58331f6f472a25fe3a50a351ae3052936c2c7f32"
- integrity sha512-SXgeMX9VwDe7iFFaEWkA5AstuER9YKqy4EhHqr4DVqkwmD9rpVimkMKWHdjn30Ja45txyjhSn63lVX69eVCckg==
+ version "3.3.2"
+ resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz#6d2967ffa407466481c6c90b6e16b3098f080128"
+ integrity sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==
clean-stack@^2.0.0:
version "2.2.0"
@@ -263,9 +263,9 @@ color-name@~1.1.4:
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
colorette@^2.0.16:
- version "2.0.17"
- resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.17.tgz#5dd4c0d15e2984b7433cb4a9f2ead45063b80c47"
- integrity sha512-hJo+3Bkn0NCHybn9Tu35fIeoOKGOk5OCC32y4Hz2It+qlCO2Q3DeQ1hRn/tDDMQKRYUEzqsl7jbF6dYKjlE60g==
+ version "2.0.19"
+ resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798"
+ integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==
combined-stream@^1.0.6, combined-stream@~1.0.6:
version "1.0.8"
@@ -304,9 +304,9 @@ cross-spawn@^7.0.0:
which "^2.0.1"
cypress@^10.0.0:
- version "10.0.3"
- resolved "https://registry.npmjs.org/cypress/-/cypress-10.0.3.tgz#889b4bef863b7d1ef1b608b85b964394ad350c5f"
- integrity sha512-8C82XTybsEmJC9POYSNITGUhMLCRwB9LadP0x33H+52QVoBjhsWvIzrI+ybCe0+TyxaF0D5/9IL2kSTgjqCB9A==
+ version "10.3.0"
+ resolved "https://registry.npmjs.org/cypress/-/cypress-10.3.0.tgz#fae8d32f0822fcfb938e79c7c31ef344794336ae"
+ integrity sha512-txkQWKzvBVnWdCuKs5Xc08gjpO89W2Dom2wpZgT9zWZT5jXxqPIxqP/NC1YArtkpmp3fN5HW8aDjYBizHLUFvg==
dependencies:
"@cypress/request" "^2.88.10"
"@cypress/xvfb" "^1.2.4"
@@ -878,7 +878,7 @@ qs@~6.5.2:
request-progress@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe"
- integrity sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=
+ integrity sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==
dependencies:
throttleit "^1.0.0"
@@ -1014,12 +1014,12 @@ supports-color@^8.1.1:
throttleit@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c"
- integrity sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=
+ integrity sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==
through@^2.3.8:
version "2.3.8"
resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
- integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
+ integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
tmp@~0.2.1:
version "0.2.1"
@@ -1044,14 +1044,14 @@ tslib@^2.1.0:
tunnel-agent@^0.6.0:
version "0.6.0"
resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
- integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
+ integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==
dependencies:
safe-buffer "^5.0.1"
tweetnacl@^0.14.3, tweetnacl@~0.14.0:
version "0.14.5"
resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
- integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
+ integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==
type-fest@^0.21.3:
version "0.21.3"
@@ -1059,9 +1059,9 @@ type-fest@^0.21.3:
integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
typescript@^4.1.3:
- version "4.7.3"
- resolved "https://registry.npmjs.org/typescript/-/typescript-4.7.3.tgz#8364b502d5257b540f9de4c40be84c98e23a129d"
- integrity sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==
+ version "4.7.4"
+ resolved "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235"
+ integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==
universalify@^2.0.0:
version "2.0.0"
@@ -1081,7 +1081,7 @@ uuid@^8.3.2:
verror@1.10.0:
version "1.10.0"
resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
- integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
+ integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==
dependencies:
assert-plus "^1.0.0"
core-util-is "1.0.2"
@@ -1115,7 +1115,7 @@ wrap-ansi@^7.0.0:
wrappy@1:
version "1.0.2"
resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
- integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+ integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
yallist@^4.0.0:
version "4.0.0"
@@ -1125,7 +1125,7 @@ yallist@^4.0.0:
yauzl@^2.10.0:
version "2.10.0"
resolved "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
- integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=
+ integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==
dependencies:
buffer-crc32 "~0.2.3"
fd-slicer "~1.1.0"
diff --git a/docs/FAQ.md b/docs/FAQ.md
index 96d49ff060..f695a59410 100644
--- a/docs/FAQ.md
+++ b/docs/FAQ.md
@@ -223,8 +223,7 @@ For more information, see our
No, this is not a service offering. We build the piece of software, and someone
in your infrastructure team is responsible for
-[deploying](https://backstage.io/docs/getting-started/deployment-k8s) and
-maintaining it.
+[deploying](https://backstage.io/docs/deployment) and maintaining it.
### How secure is Backstage?
diff --git a/docs/auth/add-auth-provider.md b/docs/auth/add-auth-provider.md
index eb8973bec1..01c18f04cd 100644
--- a/docs/auth/add-auth-provider.md
+++ b/docs/auth/add-auth-provider.md
@@ -350,6 +350,7 @@ router.get('/auth/providerA/handler/frame');
router.post('/auth/providerA/handler/frame');
router.post('/auth/providerA/logout');
router.get('/auth/providerA/refresh'); // if supported
+router.post('/auth/providerA/refresh'); // if supported
```
As you can see each endpoint is prefixed with both `/auth` and its provider
diff --git a/docs/auth/bitbucket/provider.md b/docs/auth/bitbucket/provider.md
index c54fb75ffa..36859dab45 100644
--- a/docs/auth/bitbucket/provider.md
+++ b/docs/auth/bitbucket/provider.md
@@ -57,7 +57,7 @@ In order to use the Bitbucket provider for sign-in, you must configure it with a
`signIn.resolver`. See the
[Sign-In Resolver documentation](../identity-resolver.md) for more details on
how this is done. Note that for the Bitbucket provider, you'll want to use
-`bitbucket` as the provider ID, and `createBitbucketProvider` for the provider
+`bitbucket` as the provider ID, and `providers.bitbucket.create` for the provider
factory.
The `@backstage/plugin-auth-backend` plugin also comes with two built-in
@@ -74,16 +74,14 @@ same way, but uses the Bitbucket user ID instead, and matches on the
The following is an example of how to use one of the built-in resolvers:
```ts
-import {
- createBitbucketProvider,
- bitbucketUsernameSignInResolver,
-} from '@backstage/plugin-auth-backend';
+import { providers } from '@backstage/plugin-auth-backend';
// ...
providerFactories: {
- bitbucket: createBitbucketProvider({
+ bitbucket: providers.bitbucket.create({
signIn: {
- resolver: bitbucketUsernameSignInResolver,
+ resolver:
+ providers.bitbucket.resolvers.usernameMatchingUserEntityAnnotation(),
},
}),
},
diff --git a/docs/auth/identity-resolver.md b/docs/auth/identity-resolver.md
index b314954105..06ada040e4 100644
--- a/docs/auth/identity-resolver.md
+++ b/docs/auth/identity-resolver.md
@@ -110,6 +110,7 @@ Now let's look at the example, with the rest of the commentary being made with i
the code comments:
```ts
+// File: packages/backend/src/plugins/auth.ts
import {
createRouter,
providers,
@@ -170,11 +171,21 @@ property of each of the auth provider integrations. For example, the Google prov
a built in resolver that works just like the one we defined above:
```ts
-providers.google.create({
- signIn: {
- resolver: providers.google.resolvers.emailLocalPartMatchingUserEntityName(),
- },
-});
+// File: packages/backend/src/plugins/auth.ts
+export default async function createPlugin(
+ // ...
+ return await createRouter({
+ // ...
+ providerFactories: {
+ // ...
+ google: providers.google.create({
+ signIn: {
+ resolver: providers.google.resolvers.emailLocalPartMatchingUserEntityName(),
+ },
+ });
+ }
+ })
+)
```
There are also other options, like the this one that looks up a user
@@ -195,40 +206,49 @@ that happens during sign-in you can replace `ctx.signInWithCatalogUser` with a s
of lower-level calls:
```ts
+// File: packages/backend/src/plugins/auth.ts
import { getDefaultOwnershipRefs } from '@backstage/plugin-auth-backend';
-// This example only shows the resolver function itself.
-async ({ profile: { email } }, ctx) => {
- if (!email) {
- throw new Error('User profile contained no email');
- }
+export default async function createPlugin(
+ // ...
+ return await createRouter({
+ // ...
+ providerFactories: {
+ // ...
+ google: async ({ profile: { email } }, ctx) => {
+ if (!email) {
+ throw new Error('User profile contained no email');
+ }
- // This step calls the catalog to look up a user entity. You could for example
- // replace it with a call to a different external system.
- const { entity } = await ctx.findCatalogUser({
- annotations: {
- 'acme.org/email': email,
- },
- });
+ // This step calls the catalog to look up a user entity. You could for example
+ // replace it with a call to a different external system.
+ const { entity } = await ctx.findCatalogUser({
+ annotations: {
+ 'acme.org/email': email,
+ },
+ });
- // In this step we extract the ownership references from the user entity using
- // the standard logic. It uses a reference to the entity itself, as well as the
- // target of each `memberOf` relation where the target is of the kind `Group`.
- //
- // If you replace the catalog lookup with something does not return
- // an entity you will need to replace this step as well.
- //
- // You might also replace it if you for example want to filter out certain groups.
- const ownershipRefs = getDefaultOwnershipRefs(entity);
+ // In this step we extract the ownership references from the user entity using
+ // the standard logic. It uses a reference to the entity itself, as well as the
+ // target of each `memberOf` relation where the target is of the kind `Group`.
+ //
+ // If you replace the catalog lookup with something that does not return
+ // an entity you will need to replace this step as well.
+ //
+ // You might also replace it if you for example want to filter out certain groups.
+ const ownershipRefs = getDefaultOwnershipRefs(entity);
- // The last step is to issue the token, where we might provide more options in the future.
- return ctx.issueToken({
- claims: {
- sub: stringifyEntityRef(entity),
- ent: ownershipRefs,
- },
- });
-};
+ // The last step is to issue the token, where we might provide more options in the future.
+ return ctx.issueToken({
+ claims: {
+ sub: stringifyEntityRef(entity),
+ ent: ownershipRefs,
+ },
+ });
+ };
+ }
+ })
+)
```
## Sign-In without Users in the Catalog
@@ -252,38 +272,47 @@ check like in the example below, or you might for example look up the GitHub org
that the user belongs to using the user access token in the provided result object.
```ts
+// File: packages/backend/src/plugins/auth.ts
import { DEFAULT_NAMESPACE, stringifyEntityRef, } from '@backstage/catalog-model';
-// This example only shows the resolver function itself.
-async ({ profile }, ctx) => {
- if (!profile.email) {
- throw new Error(
- 'Login failed, user profile does not contain an email',
- );
- }
- // Split the email into the local part and the domain.
- const [localPart, domain] = profile.email.split('@');
+export default async function createPlugin(
+ // ...
+ return await createRouter({
+ // ...
+ providerFactories: {
+ // ...
+ google: async ({ profile }, ctx) => {
+ if (!profile.email) {
+ throw new Error(
+ 'Login failed, user profile does not contain an email',
+ );
+ }
+ // Split the email into the local part and the domain.
+ const [localPart, domain] = profile.email.split('@');
- // Next we verify the email domain. It is recommended to include this
- // kind of check if you don't look up the user in an external service.
- if (domain !== 'acme.org') {
- throw new Error('Login failed, user email domain check failed');
- }
+ // Next we verify the email domain. It is recommended to include this
+ // kind of check if you don't look up the user in an external service.
+ if (domain !== 'acme.org') {
+ throw new Error('Login failed, user email domain check failed');
+ }
- // By using `stringifyEntityRef` we ensure that the reference is formatted correctly
- const userEntityRef = stringifyEntityRef({
- kind: 'User',
- name: localPart,
- namespace: DEFAULT_NAMESPACE,
- });
+ // By using `stringifyEntityRef` we ensure that the reference is formatted correctly
+ const userEntityRef = stringifyEntityRef({
+ kind: 'User',
+ name: localPart,
+ namespace: DEFAULT_NAMESPACE,
+ });
- return ctx.issueToken({
- claims: {
- sub: userEntityRef,
- ent: [userEntityRef],
- },
- });
-},
+ return ctx.issueToken({
+ claims: {
+ sub: userEntityRef,
+ ent: [userEntityRef],
+ },
+ });
+ },
+ }
+ })
+)
```
## AuthHandler
@@ -304,7 +333,7 @@ export default async function createPlugin(
return await createRouter({
...
providerFactories: {
- google: createGoogleProvider({
+ google: providers.google.create({
authHandler: async ({
fullProfile // Type: passport.Profile,
idToken // Type: (Optional) string,
diff --git a/docs/auth/index.md b/docs/auth/index.md
index c34d244886..e713e722ef 100644
--- a/docs/auth/index.md
+++ b/docs/auth/index.md
@@ -185,6 +185,24 @@ const app = createApp({
When using multiple auth providers like this, it's important that you configure the different
sign-in resolvers so that they resolve to the same identity regardless of the method used.
+## Scaffolder Configuration (Software Templates)
+
+If you want to use the authentication capabilities of the [Repository Picker](../features/software-templates/writing-templates.md#the-repository-picker) inside your software templates you will need to configure the [`ScmAuthApi`](https://backstage.io/docs/reference/integration-react.scmauthapi) alongside your authentication provider. It is an API used to authenticate towards different SCM systems in a generic way, based on what resource is being accessed.
+
+To set it up, you'll need to add an API factory entry to `packages/app/src/apis.ts`. The example below sets up the `ScmAuthApi` for an already configured GitLab authentication provider:
+
+```ts
+createApiFactory({
+ api: scmAuthApiRef,
+ deps: {
+ gitlabAuthApi: gitlabAuthApiRef,
+ },
+ factory: ({ gitlabAuthApi }) => ScmAuth.forGitlab(gitlabAuthApi),
+});
+```
+
+In case you are using a custom authentication providers, you might need to add a [custom `ScmAuthApi` implementation](./index.md#custom-scmauthapi-implementation).
+
## For Plugin Developers
The Backstage frontend core APIs provide a set of Utility APIs for plugin developers
diff --git a/docs/features/search/search-engines.md b/docs/features/search/search-engines.md
index 9bb8b8c343..ecd8a85109 100644
--- a/docs/features/search/search-engines.md
+++ b/docs/features/search/search-engines.md
@@ -59,10 +59,38 @@ configured and make the following changes to your backend:
// Initialize a connection to a search engine.
const searchEngine = (await PgSearchEngine.supported(env.database))
- ? await PgSearchEngine.from({ database: env.database })
+ ? await PgSearchEngine.fromConfig(env.config, { database: env.database })
: new LunrSearchEngine({ logger: env.logger });
```
+## Optional Configuration
+
+The following is an example of the optional configuration that can be applied when using Postgres as the search backend. Currently this is mostly for just the highlight feature:
+
+```yaml
+search:
+ pg:
+ highlightOptions:
+ useHighlight: true # Used to enable to disable the highlight feature. The default value is true
+ maxWord: 35 # Used to set the longest headlines to output. The default value is 35.
+ minWord: 15 # Used to set the shortest headlines to output. The default value is 15.
+ shortWord: 3 # Words of this length or less will be dropped at the start and end of a headline, unless they are query terms. The default value of three (3) eliminates common English articles.
+ highlightAll: false # If true the whole document will be used as the headline, ignoring the preceding three parameters. The default is false.
+ maxFragments: 0 # Maximum number of text fragments to display. The default value of zero selects a non-fragment-based headline generation method. A value greater than zero selects fragment-based headline generation (see the linked documentation above for more details).
+ fragmentDelimiter: ' ... ' # Delimiter string used to concatenate fragments. Defaults to " ... ".
+```
+
+**Note:** the highlight search term feature uses `ts_headline` which has been known to potentially impact performance. You only need this minimal config to disable it should you have issues:
+
+```yaml
+search:
+ pg:
+ highlightOptions:
+ useHighlight: false
+```
+
+The Postgres documentation on [Highlighting Results](https://www.postgresql.org/docs/current/textsearch-controls.html#TEXTSEARCH-HEADLINE) has more details.
+
## ElasticSearch
Backstage supports ElasticSearch search engine connections, indexing and
@@ -80,15 +108,16 @@ const searchEngine = await ElasticSearchSearchEngine.initialize({
const indexBuilder = new IndexBuilder({ logger: env.logger, searchEngine });
```
-For the engine to be available, your backend package needs a dependency into
+For the engine to be available, your backend package needs a dependency on
package `@backstage/plugin-search-backend-module-elasticsearch`.
ElasticSearch needs some additional configuration before it is ready to use
within your instance. The configuration options are documented in the
[configuration schema definition file.](https://github.com/backstage/backstage/blob/master/plugins/search-backend-module-elasticsearch/config.d.ts)
-The underlying functionality is using official ElasticSearch client version 7.x,
-meaning that ElasticSearch version 7 is the only one confirmed to be supported.
+The underlying functionality uses either the official ElasticSearch client
+version 7.x (meaning that ElasticSearch version 7 is the only one confirmed to
+be supported), or the OpenSearch client, when the `aws` provider is configured.
Should you need to create your own bespoke search experiences that require more
than just a query translator (such as faceted search or Relay pagination), you
@@ -97,9 +126,19 @@ search clients. The version of the client need not be the same as one used
internally by the elastic search engine plugin. For example:
```typescript
-import { Client } from '@elastic/elastic-search';
+import { isOpenSearchCompatible } from '@backstage/plugin-search-backend-module-elasticsearch';
+import { Client as ElasticClient } from '@elastic/elastic-search';
+import { Client as OpenSearchClient } from '@opensearch-project/opensearch';
-const client = searchEngine.newClient(options => new Client(options));
+const client = searchEngine.newClient(options => {
+ // In reality, you would only import / instantiate one of the following, but
+ // for illustrative purposes, here are both:
+ if (isOpenSearchCompatible(options)) {
+ return new OpenSearchClient(options);
+ } else {
+ return new ElasticClient(options);
+ }
+});
```
#### Set custom index template
diff --git a/docs/features/software-catalog/configuration.md b/docs/features/software-catalog/configuration.md
index 849823a59e..5abd266099 100644
--- a/docs/features/software-catalog/configuration.md
+++ b/docs/features/software-catalog/configuration.md
@@ -106,8 +106,7 @@ with [Static Location Configuration](#static-location-configuration) or a
discovery processor like
[GitHub Discovery](../../integrations/github/discovery.md). To enforce usage of
processors to locate entities we can configure the catalog into `readonly` mode.
-This configuration disables the mutating backend catalog APIs and disallows
-users from registering new entities at run-time.
+This configuration disables registering and deleting locations with the catalog APIs.
```yaml
catalog:
@@ -117,6 +116,8 @@ catalog:
> **Note that any plugin relying on the catalog API for creating, updating and
> deleting entities will not work in this mode.**
+Deleting an entity by UUID, `DELETE /entities/by-uid/:uid`, is allowed when using this mode. It may be rediscovered as noted in [explicit deletion](life-of-an-entity.md#explicit-deletion).
+
A common use case for this configuration is when organizations have a remote
source that should be mirrored into Backstage. To make Backstage a mirror of
this remote source, users cannot also register new entities with e.g. the
diff --git a/docs/features/software-catalog/descriptor-format.md b/docs/features/software-catalog/descriptor-format.md
index 86c832e3d2..81e3604ffe 100644
--- a/docs/features/software-catalog/descriptor-format.md
+++ b/docs/features/software-catalog/descriptor-format.md
@@ -55,6 +55,7 @@ metadata:
- url: https://admin.example-org.com
title: Admin Dashboard
icon: dashboard
+ type: admin-dashboard
spec:
type: website
lifecycle: production
@@ -83,7 +84,8 @@ This is the same entity as returned in JSON from the software catalog API:
{
"url": "https://admin.example-org.com",
"title": "Admin Dashboard",
- "icon": "dashboard"
+ "icon": "dashboard",
+ "type": "admin-dashboard"
}
],
"tags": ["java"],
@@ -353,6 +355,7 @@ Fields of a link are:
| `url` | String | [Required] A `url` in a standard `uri` format (e.g. `https://example.com/some/page`) |
| `title` | String | [Optional] A user friendly display name for the link. |
| `icon` | String | [Optional] A key representing a visual icon to be displayed in the UI. |
+| `type` | String | [Optional] An optional value to categorize links into specific groups. |
_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`
@@ -362,6 +365,8 @@ 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.
+The semantics of the `type` field are undefined. The adopter is free to define their own set of types and utilize them as they wish. Some potential use cases can be to utilize the type field to validate certain links exist on entities or to create customized UI components for specific link types.
+
## Common to All Kinds: Relations
The `relations` root field is a read-only list of relations, between the current
diff --git a/docs/features/software-templates/adding-templates.md b/docs/features/software-templates/adding-templates.md
index db765fc7ee..e8176a688b 100644
--- a/docs/features/software-templates/adding-templates.md
+++ b/docs/features/software-templates/adding-templates.md
@@ -86,6 +86,13 @@ contains more information about the required fields.
Once we have a `template.yaml` ready, we can then add it to the software catalog
for use by the scaffolder.
+> Note: When you add or modify a template, you will need to refresh the location entity.
+> Otherwise, Backstage won't display the template in the available templates,
+> or it will keep showing the old template. You can refresh the location instance by
+> going into `Catalog` web page, choosing `Locations` instead of `Components`, and selecting the correct location entity.
+> From there, you can click on the refresh icon representing "Scheduled entity refresh" action.
+> Afterwards, you should see your template updated.
+
You can add the template files to the catalog through
[static location configuration](../software-catalog/configuration.md#static-location-configuration),
for example:
@@ -97,6 +104,8 @@ catalog:
target: https://github.com/backstage/software-templates/blob/main/scaffolder-templates/react-ssr-template/template.yaml
rules:
- allow: [Template]
+ - type: file
+ target: template.yaml # Backstage will expect the file to be in packages/backend/template.yaml
```
Or you can add the template using the `catalog-import` plugin, which unless
diff --git a/docs/features/software-templates/writing-custom-actions.md b/docs/features/software-templates/writing-custom-actions.md
index 8e698e1a05..a9e1d297f3 100644
--- a/docs/features/software-templates/writing-custom-actions.md
+++ b/docs/features/software-templates/writing-custom-actions.md
@@ -9,8 +9,9 @@ by writing custom actions which can be used along side our
[built-in actions](./builtin-actions.md).
> Note: When adding custom actions, the actions array will **replace the
-> built-in actions too**. To ensure you can continue to include the builtin
-> actions, see below to include them during registration of your action.
+> built-in actions too**. Meaning, you will no longer be able to use them.
+> If you want to continue using the builtin actions, include them in the actions
+> array when registering your custom actions, as seen below.
## Writing your Custom Action
@@ -122,27 +123,32 @@ will set the available actions that the scaffolder has access to.
```ts
import { createBuiltinActions } from '@backstage/plugin-scaffolder-backend';
import { ScmIntegrations } from '@backstage/integration';
+import { createNewFileAction } from './actions/custom';
-const integrations = ScmIntegrations.fromConfig(env.config);
+export default async function createPlugin(
+ env: PluginEnvironment,
+): Promise {
+ const catalogClient = new CatalogClient({ discoveryApi: env.discovery });
+ const integrations = ScmIntegrations.fromConfig(env.config);
-const builtInActions = createBuiltinActions({
- containerRunner,
- integrations,
- catalogClient,
- config: env.config,
- reader: env.reader,
-});
+ const builtInActions = createBuiltinActions({
+ integrations,
+ catalogClient,
+ config: env.config,
+ reader: env.reader,
+ });
-const actions = [...builtInActions, createNewFileAction()];
-return await createRouter({
- containerRunner,
- catalogClient,
- actions,
- logger: env.logger,
- config: env.config,
- database: env.database,
- reader: env.reader,
-});
+ const actions = [...builtInActions, createNewFileAction()];
+
+ return createRouter({
+ actions,
+ catalogClient: catalogClient,
+ logger: env.logger,
+ config: env.config,
+ database: env.database,
+ reader: env.reader,
+ });
+}
```
## List of custom action packages
diff --git a/docs/features/software-templates/writing-templates.md b/docs/features/software-templates/writing-templates.md
index 27e6e76817..81367b19c5 100644
--- a/docs/features/software-templates/writing-templates.md
+++ b/docs/features/software-templates/writing-templates.md
@@ -320,6 +320,30 @@ The `allowedHosts` part should be set to where you wish to enable this template
to publish to. And it can be any host that is listed in your `integrations`
config in `app-config.yaml`.
+Besides specifying `allowedHosts` you can also restrict the template to publish to
+repositories owned by specific users/groups/namespaces by setting the `allowedOwners`
+option. With the `allowedRepos` option you are able to narrow it down further to a
+specific set of repository names. A full example could look like this:
+
+```yaml
+- title: Choose a location
+ required:
+ - repoUrl
+ properties:
+ repoUrl:
+ title: Repository Location
+ type: string
+ ui:field: RepoUrlPicker
+ ui:options:
+ allowedHosts:
+ - github.com
+ allowedOwners:
+ - backstage
+ - someGithubUser
+ allowedRepos:
+ - backstage
+```
+
The `RepoUrlPicker` is a custom field that we provide part of the
`plugin-scaffolder`. You can provide your own custom fields by
[writing your own Custom Field Extensions](./writing-custom-field-extensions.md)
@@ -397,6 +421,9 @@ There's also the ability to pass additional scopes when requesting the `oauth`
token from the user, which you can do on a per-provider basis, in case your
template can be published to multiple providers.
+Note, that you will need to configure an [authentication provider](../../auth/index.md#configuring-authentication-providers), alongside the
+[`ScmAuthApi`](../../auth/index.md#scaffolder-configuration-software-templates) for your source code management (SCM) service to make this feature work.
+
### Accessing the signed-in users details
Sometimes when authoring templates, you'll want to access the user that is running the template, and get details from the profile or the users `Entity` in the Catalog.
@@ -482,6 +509,64 @@ the value of `firstName` from the parameters). This is great for passing the
values from the form into different steps and reusing these input variables.
These template strings preserve the type of the parameter.
+The `${{ parameters.firstName }}` pattern will work only in the template file.
+If you want to start using values provided from the UI in your code, you will have to use
+the `${{ values.firstName }}` pattern. Additionally, you have to pass
+the parameters from the UI to the input of the `fetch:template` step.
+
+```yaml
+apiVersion: scaffolder.backstage.io/v1beta3
+kind: Template
+metadata:
+ name: v1beta3-demo
+ title: Test Action
+ description: scaffolder v1beta3 template demo
+spec:
+ owner: backstage/techdocs-core
+ type: service
+ parameters:
+ - title: Fill in some steps
+ required:
+ - name
+ properties:
+ name:
+ title: Name
+ type: string
+ description: Unique name of your project
+ urlParameter:
+ title: URL endpoint
+ type: string
+ description: URL endpoint at which the component can be reached
+ default: 'https://www.example.com'
+ enabledDB:
+ title: Enable Database
+ type: boolean
+ default: false
+ ...
+ steps:
+ - id: fetch-base
+ name: Fetch Base
+ action: fetch:template
+ input:
+ url: ./template
+ values:
+ name: ${{ parameters.name }}
+ url: ${{ parameters.urlParameter }}
+ enabledDB: ${{ parameters.enabledDB }}
+```
+
+Afterwards, if you are using the builtin templating action, you can start using
+the variables in your code. You can use also any other templating functions from
+[Nunjucks](https://mozilla.github.io/nunjucks/templating.html#tags) as well.
+
+```bash
+#!/bin/bash
+echo "Hi my name is ${{ values.name }}, and you can fine me at ${{ values.url }}!"
+{% if values.enabledDB %}
+echo "You have enabled your database!"
+{% endif %}
+```
+
As you can see above in the `Outputs` section, `actions` and `steps` can also
output things. You can grab that output using `steps.$stepId.output.$property`.
diff --git a/docs/features/techdocs/addons.md b/docs/features/techdocs/addons.md
index 831729d093..fe1058b2ca 100644
--- a/docs/features/techdocs/addons.md
+++ b/docs/features/techdocs/addons.md
@@ -52,6 +52,8 @@ Addons are rendered in the order in which they are registered.
## Installing and using Addons
+To start using Addons you need to add the `@backstage/plugin-techdocs-module-addons-contrib` package to your app. You can do that by running this command from the root of your project: `yarn add --cwd packages/app @backstage/plugin-techdocs-module-addons-contrib`
+
Addons can be installed and configured in much the same way as extensions for
other Backstage plugins: by adding them underneath an extension registry
component (``) under the route representing the TechDocs Reader
@@ -74,6 +76,18 @@ import { ReportIssue } from '@backstage/plugin-techdocs-module-addons-contrib';
;
```
+If you are using a custom [TechDocs reader page](./how-to-guides.md#how-to-customize-the-techdocs-reader-page) your setup will be very similar, here's an example:
+
+```ts
+}>
+
+
+ {/* Other addons can be added here. */}
+
+ {techDocsPage} // This is your custom TechDocs reader page
+
+```
+
The process for configuring Addons on the documentation tab on the entity page
is very similar; instead of adding the `` registry under a
``, you'd add it as a child of ``:
diff --git a/docs/features/techdocs/configuration.md b/docs/features/techdocs/configuration.md
index d14850da77..8a54d76ed0 100644
--- a/docs/features/techdocs/configuration.md
+++ b/docs/features/techdocs/configuration.md
@@ -74,6 +74,12 @@ techdocs:
type: 'local'
+ # Optional when techdocs.publisher.type is set to 'local'.
+
+ local:
+ # (Optional). Set this to specify where the generated documentation is stored.
+ publishDirectory: '/path/to/local/directory'
+
# Required when techdocs.publisher.type is set to 'googleGcs'. Skip otherwise.
googleGcs:
@@ -154,7 +160,8 @@ techdocs:
# techdocs.cache is optional, and is only recommended when you've configured
# an external techdocs.publisher.type above. Also requires backend.cache to
- # be configured with a valid cache store.
+ # be configured with a valid cache store. Configure techdocs.cache.ttl to
+ # enable caching of techdocs assets.
cache:
# Represents the number of milliseconds a statically built asset should
# stay cached. Cache invalidation is handled automatically by the frontend,
diff --git a/docs/getting-started/configuration.md b/docs/getting-started/configuration.md
index 59780d2a01..3413f32875 100644
--- a/docs/getting-started/configuration.md
+++ b/docs/getting-started/configuration.md
@@ -155,6 +155,8 @@ auth:
clientSecret: YOUR CLIENT SECRET
```
+### Add sign-in option to the frontend
+
Backstage will re-read the configuration. If there's no errors, that's great! We
can continue with the last part of the configuration. The next step is needed to
change the sign-in page, this you actually need to add in the source code.
@@ -185,10 +187,11 @@ components: {
},
```
-> Since [v1.1.0](https://github.com/backstage/backstage/releases/tag/v1.1.0-next.3), you must provide an [explicit sign-in resolver](../auth/identity-resolver.md).
+> Note: The default Backstage app comes with a guest Sign In Resolver. This resolver makes all users share a single "guest" identity and is only intended as a minimum requirement to quickly get up and running. You can read more about how [Sign In Resolvers](../auth/identity-resolver.md#sign-in-resolvers) play a role in creating a [Backstage User Identity](../auth/identity-resolver.md#backstage-user-identity) for logged in users.
-That should be it. You can stop your Backstage App. When you start it again and
-go to your Backstage portal in your browser, you should have your login prompt!
+Restart Backstage from the terminal, by stopping it with `Control-C`, and starting it with `yarn dev` . You should be welcomed by a login prompt!
+
+> Note: Sometimes the frontend starts before the backend resulting in errors on the sign in page. Wait for the backend to start and then reload Backstage to proceed.
To learn more about Authentication in Backstage, here are some docs you
could read:
diff --git a/docs/getting-started/homepage.md b/docs/getting-started/homepage.md
index 2f86380b13..eac76b5fdc 100644
--- a/docs/getting-started/homepage.md
+++ b/docs/getting-started/homepage.md
@@ -157,7 +157,7 @@ export const HomePage = () => {
return (
-
+
);
diff --git a/docs/getting-started/index.md b/docs/getting-started/index.md
index 8c2f6bc865..d560b97eae 100644
--- a/docs/getting-started/index.md
+++ b/docs/getting-started/index.md
@@ -21,7 +21,7 @@ guide to do a repository-based installation.
### Prerequisites
-- Access to a Linux-based operating system, such as Linux, MacOS or
+- Access to a Unix-based operating system, such as Linux, MacOS or
[Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/)
- An account with elevated rights to install the dependencies
- `curl` or `wget` installed
diff --git a/docs/getting-started/project-structure.md b/docs/getting-started/project-structure.md
index cbe84db2e0..8dca898ae7 100644
--- a/docs/getting-started/project-structure.md
+++ b/docs/getting-started/project-structure.md
@@ -28,7 +28,7 @@ the code.
sub-folder which is used for a markdown spellchecker.
- [`.yarn/`](https://github.com/backstage/backstage/tree/master/.yarn) -
- Backstage ships with it's own `yarn` implementation. This allows us to have
+ Backstage ships with its own `yarn` implementation. This allows us to have
better control over our `yarn.lock` file and hopefully avoid problems due to
yarn versioning differences.
diff --git a/docs/integrations/azure/discovery.md b/docs/integrations/azure/discovery.md
index c607a6550e..6a420462c0 100644
--- a/docs/integrations/azure/discovery.md
+++ b/docs/integrations/azure/discovery.md
@@ -45,7 +45,7 @@ catalog:
anotherProviderId: # another identifier
organization: myorg
project: myproject
- repository: '*' # this will match all repos starting with service-*
+ repository: '*' # this will match all repos
path: /src/*/catalog-info.yaml # this will search for files deep inside the /src folder
yetAotherProviderId: # guess, what? Another one :)
host: selfhostedazure.yourcompany.com
diff --git a/docs/integrations/github/github-apps.md b/docs/integrations/github/github-apps.md
index 5725e67c7b..4f2c58bbec 100644
--- a/docs/integrations/github/github-apps.md
+++ b/docs/integrations/github/github-apps.md
@@ -79,7 +79,7 @@ privateKey: |
### Including in Integrations Config
Once the credentials are stored in a YAML file generated by `create-github-app`,
-or manually by following the [GitHub Enterprise](#gitHub-enterprise)
+or manually by following the [GitHub Enterprise](#github-enterprise)
instructions, they can be included in the `app-config.yaml` under the
`integrations` section.
diff --git a/docs/integrations/gitlab/discovery.md b/docs/integrations/gitlab/discovery.md
index ea151e9415..aad73c8209 100644
--- a/docs/integrations/gitlab/discovery.md
+++ b/docs/integrations/gitlab/discovery.md
@@ -22,7 +22,7 @@ catalog:
yourProviderId:
host: gitlab-host # Identifies one of the hosts set up in the integrations
branch: main # Optional. Uses `master` as default
- group: example-group # Group and subgroup (if needed) to look for repositories
+ group: example-group # Optional. Group and subgroup (if needed) to look for repositories. If not present the whole project will be scanned
entityFilename: catalog-info.yaml # Optional. Defaults to `catalog-info.yaml`
```
diff --git a/docs/overview/architecture-overview.md b/docs/overview/architecture-overview.md
index 382399e603..3c9417268b 100644
--- a/docs/overview/architecture-overview.md
+++ b/docs/overview/architecture-overview.md
@@ -341,7 +341,8 @@ separate Docker images.
The backend container can be built by running the following command:
```bash
-yarn run docker-build
+yarn run build
+yarn run build-image
```
This will create a container called `example-backend`.
diff --git a/docs/overview/roadmap.md b/docs/overview/roadmap.md
index 727000728f..df242ed172 100644
--- a/docs/overview/roadmap.md
+++ b/docs/overview/roadmap.md
@@ -15,9 +15,9 @@ work"](#future-work). With "next" we mean features planned for release within
the ongoing quarter from April through June 2022. With "future" we mean
features on the radar, but not yet scheduled.
-| [What's next](#whats-next) | [Future work](#future-work) |
-| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
-| [Ease of onboarding](#ease-of-onboarding) [Backstage Search 1.0](#search-1.0) [TechDocs Addon Framework](#techdocs-addon-framework) [Backend Services (initial)](#backend-services-initial) [Backstage Security Audit](#backstage-security-audit) [SIGs for contributors](#sigs-for-contributors) | Security Plan (and Strategy) Composable Homepage 1.0 GraphQL Telemetry Improved UX design |
+| [What's next](#whats-next) | [Future work](#future-work) |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
+| [Backstage Search 1.0](#search-1.0) [Backend Services (MVP)](#backend-services-mvp) [Backstage Security Audit](#backstage-security-audit) [Backstage Threat Model](#backstage-threat-model) [TechDocs Addon Framework](#techdocs-addon-framework) [Software Catalog pagination](#software-catalog-pagination) [More SIGs](#more-sigs) | Ease of onboarding Composable Homepage 1.0 Creator experience GraphQL Telemetry |
The long-term roadmap (12 - 36 months) is not detailed in the public roadmap.
Third-party contributions are also not currently included in the roadmap. Let us
@@ -30,47 +30,22 @@ The feature set below is planned for the ongoing quarter, and grouped by theme.
The list order doesn't necessarily reflect priority, and the development/release
cycle will vary based on maintainer schedules.
-### Ease of onboarding
-
-A faster (with less development) and easier setup of a proof-of-concept
-deployment, as part of the onboarding experience, has been a common and loud
-suggestion from new adopters as well as analysts looking at Backstage.
-
-With this initiative we plan to start facing this important topic with the most
-commonly used and challenging tasks. More in particular we plan to reduce the
-effort required to go from zero to production in installing and customizing
-Backstage, as well as reducing the effort required to populate the Software
-Catalog.
-
-More iterations will be required in the following quarters, but this will be a
-good improvement in the onboarding experience, especially for the benefit of new
-adopters.
-
### Backstage Search 1.0
Fix the few remaining issues to get Backstage Search platform up to 1.0. For more information, see the [Backstage Search documentation and roadmap page](https://backstage.io/docs/features/search/search-overview).
-### TechDocs Addon Framework
-
-Addons are TechDocs features that are added on top of the base docs-like-code experience. An example would be a feature that showed comments on the page. We plan to add an Addon framework and open source a selection of the Addons that we use internally at Spotify. We encourage the Backstage community to add further Addons.
-
-For more information about the TechDocs Addon Framework, see the documentation page [here](https://backstage.io/docs/features/techdocs/addons)
-
-For general information about TechDocs including roadmap, see [here](https://backstage.io/docs/features/techdocs/techdocs-overview).
-
-### Backend Services (initial)
+### Backend Services (MVP)
To better scale and maintain the Backstage instances, a backend services system
is planned to be introduced as part of the software architecture. This layer of
backend services will help in decoupling the various modules (e.g. Catalog and
Scaffolder) from the frontend experience.
-In this quarter we plan to start designing the new architecture, together with
-the first experimentation and development of the software components.
+After the experimentation and design happened in the past quarter, soon we plan to release a first version to start providing the first benefits to adopters and developers.
### Backstage Security Audit
-This is the continuation of the initiative started in the previous quarter. This
+This is the continuation of the initiative started in the previous quarters. This
quarter will see the publication of the report describing the outcome of the
audit, together the first fixes and the development of some of the changes
required to address the vulnerabilities.
@@ -84,12 +59,34 @@ initiative.
This initiative is done together with, and with the support of, the [Cloud
Native Computing Foundation (CNCF)](https://www.cncf.io/).
-### SIGs for contributors
+### Backstage Threat Model
-The request to better coordinate the increasing number of contributions coming
-from the various adopters' developers is loud and clear. We think that the
-community is mature enough to start launching the SIGs (Special Interest Groups)
-following the successful model of Kubernetes.
+This is another (relevant) initiative planned to make Backstage a secure product for the adopters. The goals of this initiative are:
+
+1. Understand where security investment and attention is needed.
+2. Guide the upcoming security audit.
+3. Communicate expectations to Backstage adopters and inform and attract security researchers.
+
+The planned artifacts are:
+
+- Concise high level threat model that will be included as part of the Backstage security documentation.
+- Granular threat model created in conjunction with the security audit to inform further security investment areas for Backstage.
+
+### TechDocs Addon Framework
+
+Addons are TechDocs features that are added on top of the base docs-like-code experience. An example would be a feature that showed comments on the page. We plan to add an Addon framework and open source a selection of the Addons that we use internally at Spotify. We encourage the Backstage community to add further Addons.
+
+For more information about the TechDocs Addon Framework, see the documentation page [here](https://backstage.io/docs/features/techdocs/addons).
+
+For general information about TechDocs including roadmap, see [here](https://backstage.io/docs/features/techdocs/techdocs-overview).
+
+### Software Catalog pagination
+
+Today adopters with a big catalog (with several thousands of software components) might not have an ideal end-user experience when viewing the `/catalog` page. The issue is related to how the entities are fetched by the frontend. In order to provide a better end-user experience the pagination of the catalog’s entities needs to be enforced. Some experimentation is already completed but in this quarter we plan to continue, and hopefully complete, this relevant enhancement.
+
+### More SIGs
+
+In the last quarter we launched the [Catalog SIG (Special Interest Group)](https://github.com/backstage/community/tree/main/sigs/sig-catalog) to better coordinate the increasing number of contributions to the project. We think that this is the proper path to follow to engage more with the contributors. For this reason we will launch other SIGs dedicated to the most interesting topics for the community.
## Future work
@@ -97,18 +94,17 @@ The following feature list doesn't represent a commitment to develop, and the
list order doesn't reflect any priority or importance, but these features are on
the maintainers' radar, with clear interest expressed by the community.
-- **Security Plan (and Strategy):** The purpose of the Security Strategy is to
- move another step along the path to maturing the platform, setting the
- expectations of any adopters from a security standpoint.
+- **Ease of onboarding:** A faster (with less development) and easier setup of
+ Backstage and the most relevant/adopted plugins.
- **Composable Homepage 1.0:** Driving this to 1.0 by adding some composable
components.
+- **Creator experience:** Provide a better Backstage user experience through
+ visual guidelines and templates, especially navigation across plug-ins and
+ portal functionalities.
- **[GraphQL](https://graphql.org/) support:** Introduce the ability to query
Backstage backend services with a standard query language for APIs.
- **Telemetry:** To efficiently generate logging and metrics in such a way that
adopters can get insights so that Backstage can be monitored and improved.
-- **Improved UX design:** Provide a better Backstage user experience through
- visual guidelines and templates, especially navigation across plug-ins and
- portal functionalities.
## How to influence the roadmap
diff --git a/docs/overview/versioning-policy.md b/docs/overview/versioning-policy.md
index 7430f3c200..282906c580 100644
--- a/docs/overview/versioning-policy.md
+++ b/docs/overview/versioning-policy.md
@@ -135,3 +135,21 @@ package export.
accessed via `/beta` or `/alpha` imports.
- `@alpha` - here be dragons. Not visible in the main package entry point, alpha
exports must be accessed via `/alpha` imports.
+
+## Node.js Releases
+
+The Backstage project uses [Node.js](https://nodejs.org/) for both its development
+tooling and backend runtime. In order for expectations to be clear we use the
+following schedule for determining the [Node.js releases](https://nodejs.org/en/about/releases/) that we support:
+
+- 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.
+
+When we say _Supporting_ a Node.js release, that means the following:
+
+- The CI pipeline in the main Backstage repo tests towards the supported releases, and we encourage any other Backstage related projects to do the same.
+- New Backstage projects created with `@backstage/create-app` will have their `engines.node` version set accordingly.
+- Dropping compatibility with unsupported releases is not considered a breaking change. This includes using new syntax or APIs, as well as bumping dependencies that drop support for these versions.
diff --git a/docs/permissions/plugin-authors/03-adding-a-resource-permission-check.md b/docs/permissions/plugin-authors/03-adding-a-resource-permission-check.md
index e818557402..a76518b202 100644
--- a/docs/permissions/plugin-authors/03-adding-a-resource-permission-check.md
+++ b/docs/permissions/plugin-authors/03-adding-a-resource-permission-check.md
@@ -160,12 +160,12 @@ Create a new `plugins/todo-list-backend/src/conditionExports.ts` file and add th
```typescript
import { TODO_LIST_RESOURCE_TYPE } from '@internal/plugin-todo-list-common';
import { createConditionExports } from '@backstage/plugin-permission-node';
-import { permissionRules } from './service/rules';
+import { rules } from './service/rules';
const { conditions, createConditionalDecision } = createConditionExports({
- pluginId: 'catalog',
- resourceType: RESOURCE_TYPE_CATALOG_ENTITY,
- rules: permissionRules,
+ pluginId: 'todolist',
+ resourceType: TODO_LIST_RESOURCE_TYPE,
+ rules,
});
export const todoListConditions = conditions;
@@ -173,7 +173,12 @@ export const todoListConditions = conditions;
export const createTodoListConditionalDecision = createConditionalDecision;
```
-Make sure `todoListConditions` and `createTodoListConditionalDecision` are exported from the `todo-list-backend` package.
+Make sure `todoListConditions` and `createTodoListConditionalDecision` are exported from the `todo-list-backend` package by editing `plugins/todo-list-backend/src/index.ts`:
+
+```diff
+ export * from './service/router';
++ export * from './conditionExports';
+```
## Test the authorized update endpoint
diff --git a/docs/releases/v1.4.0-next.0-changelog.md b/docs/releases/v1.4.0-next.0-changelog.md
new file mode 100644
index 0000000000..c6b9fd7cf9
--- /dev/null
+++ b/docs/releases/v1.4.0-next.0-changelog.md
@@ -0,0 +1,1365 @@
+# Release v1.4.0-next.0
+
+## @backstage/catalog-model@1.1.0-next.0
+
+### Minor Changes
+
+- 1380b389dc: Adding an optional type field to entity links to group and categorize links
+
+### Patch Changes
+
+- c3cfc83af2: Updated JSDoc to be MDX compatible.
+
+## @backstage/plugin-api-docs-module-protoc-gen-doc@0.1.0-next.0
+
+### Minor Changes
+
+- e0328f2107: Added the new `grpcDocsApiWidget` to render `protoc-gen-doc` generated descriptors by the `grpc-docs` package.
+
+## @backstage/plugin-kubernetes-backend@0.7.0-next.0
+
+### Minor Changes
+
+- 0791af993f: Refactor `KubernetesObjectsProvider` with new methods, `KubernetesServiceLocator` now takes an `Entity` instead of `serviceId`
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/plugin-kubernetes-common@0.4.0-next.0
+
+## @backstage/plugin-kubernetes-common@0.4.0-next.0
+
+### Minor Changes
+
+- 0791af993f: Refactor `KubernetesObjectsProvider` with new methods, `KubernetesServiceLocator` now takes an `Entity` instead of `serviceId`
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+
+## @backstage/plugin-pagerduty@0.5.0-next.0
+
+### Minor Changes
+
+- 8798f8d93f: Introduces a new annotation `pagerduty.com/service-id` that can be used instead of the `pagerduty.com/integration-key` annotation.
+ _Note: If both annotations are specified on a given Entity, then the `pagerduty.com/integration-key` annotation will be prefered_
+
+ **BREAKING** The `PagerDutyClient.fromConfig` static method now expects a `FetchApi` compatible object and has been refactored to
+ accept 2 arguments: config and ClientApiDependencies
+ The `PagerDutyClient` now relies on a `fetchApi` being available to execute `fetch` requests.
+
+ **BREAKING** A new query method `getServiceByEntity` that is used to query for Services by either the `integrationKey` or `serviceId`
+ annotation values if they are defined. The `integrationKey` value is preferred currently over `serviceId`. As such, the previous
+ `getServiceByIntegrationKey` method has been removed.
+
+ **BREAKING** The return values for each Client query method has been changed to return an object instead of raw values.
+ For example, the `getIncidentsByServiceId` query method now returns an object in the shape of `{ incidents: Incident[] }`
+ instead of just `Incident[]`.
+ This same pattern goes for `getChangeEventsByServiceId` and `getOnCallByPolicyId` functions.
+
+ **BREAKING** All public exported types that relate to entities within PagerDuty have been prefixed with `PagerDuty` (e.g. `ServicesResponse` is now `PagerDutyServicesResponse` and `User` is now `PagerDutyUser`)
+
+ In addition, various enhancements/bug fixes were introduced:
+
+ - The `PagerDutyCard` component now wraps error and loading messages with an `InfoCard` to contain errors/messages. This enforces a consistent experience on the EntityPage
+ - If no service can be found for the provided integration key, a new Error Message Empty State component will be shown instead of an error alert
+ - Introduces the `fetchApi` to replace standard `window.fetch`
+ - ensures that Identity Authorization is respected and provided in API requests
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-scaffolder@1.4.0-next.0
+
+### Minor Changes
+
+- 3500c13a33: A new template editor has been added which is accessible via the context menu on the top right hand corner of the Create page. It allows you to load a template from a local directory, edit it with a preview, execute it in dry-run mode, and view the results. Note that the [File System Access API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API) must be supported by your browser for this to be available.
+
+ To support the new template editor the `ScaffolderApi` now has an optional `dryRun` method, which is implemented by the default `ScaffolderClient`.
+
+### Patch Changes
+
+- 37539e29d8: The template editor now shows the cause of request errors that happen during a dry-run.
+- 842282ecf9: Bumped `codemirror` dependencies to `v6.0.0`.
+- 464bb0e6c8: The max content size for dry-run files has been reduced from 256k to 64k.
+- a7c0b34d70: Swap usage of `MaterialTable` with `Table` from `core-components`
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/integration@1.2.2-next.0
+ - @backstage/catalog-client@1.0.4-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+ - @backstage/plugin-scaffolder-common@1.1.2-next.0
+ - @backstage/integration-react@1.1.2-next.0
+
+## @backstage/plugin-scaffolder-backend@1.4.0-next.0
+
+### Minor Changes
+
+- 3500c13a33: Added a new `/v2/dry-run` endpoint that allows for a synchronous dry run of a provided template. A `supportsDryRun` option has been added to `createTemplateAction`, which signals whether the action should be executed during dry runs. When enabled, the action context will have the new `isDryRun` property set to signal if the action is being executed during a dry run.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/integration@1.2.2-next.0
+ - @backstage/plugin-catalog-backend@1.2.1-next.0
+ - @backstage/catalog-client@1.0.4-next.0
+ - @backstage/plugin-scaffolder-common@1.1.2-next.0
+
+## @backstage/plugin-vault-backend@0.2.0-next.0
+
+### Minor Changes
+
+- 5ebf2c7023: Throw exceptions instead of swallow them, remove some exported types from the `api-report`, small changes in the API responses & expose the vault `baseUrl` to the frontend as well
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/backend-tasks@0.3.3-next.0
+ - @backstage/backend-test-utils@0.1.26-next.0
+
+## @backstage/app-defaults@1.0.4-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/core-app-api@1.0.4-next.0
+
+## @backstage/backend-common@0.14.1-next.0
+
+### Patch Changes
+
+- b1edb5cfd9: Fix parsing of S3 URLs for the default region.
+- c3cfc83af2: Updated JSDoc to be MDX compatible.
+- Updated dependencies
+ - @backstage/integration@1.2.2-next.0
+
+## @backstage/backend-tasks@0.3.3-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+
+## @backstage/backend-test-utils@0.1.26-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/cli@0.17.3-next.0
+
+## @backstage/catalog-client@1.0.4-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+
+## @backstage/cli@0.17.3-next.0
+
+### Patch Changes
+
+- d2256c0384: Fix `webpack-dev-server` deprecations.
+
+## @backstage/core-app-api@1.0.4-next.0
+
+### Patch Changes
+
+- 8fe2357101: The `signOut` method of the `IdentityApi` will now navigate the user back to the base URL of the app as indicated by the `app.baseUrl` config.
+
+## @backstage/core-components@0.9.6-next.0
+
+### Patch Changes
+
+- c3cfc83af2: Updated JSDoc to be MDX compatible.
+
+## @backstage/create-app@0.4.29-next.0
+
+### Patch Changes
+
+- bc87604c26: Added an explicit `node-gyp` dependency to the root `package.json`. This is to work around a bug in older versions of `node-gyp` that causes Python execution to fail on macOS.
+
+ You can add this workaround to your existing project by adding `node-gyp` as a `devDependency` in your root `package.json` file:
+
+ ```diff
+ "devDependencies": {
+ + "node-gyp": "^9.0.0"
+ },
+ ```
+
+## @backstage/dev-utils@1.0.4-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/core-app-api@1.0.4-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+ - @backstage/app-defaults@1.0.4-next.0
+ - @backstage/integration-react@1.1.2-next.0
+ - @backstage/test-utils@1.1.2-next.0
+
+## @backstage/integration@1.2.2-next.0
+
+### Patch Changes
+
+- 8829e175f2: Allow frontend visibility for `integrations` itself.
+
+## @backstage/integration-react@1.1.2-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/integration@1.2.2-next.0
+
+## @techdocs/cli@1.1.3-next.0
+
+### Patch Changes
+
+- 14ce0d9347: Fixed a bug that prevented docker images from being pulled by default when generating TechDocs.
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/plugin-techdocs-node@1.1.3-next.0
+
+## @backstage/test-utils@1.1.2-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-app-api@1.0.4-next.0
+
+## @backstage/plugin-adr@0.1.2-next.0
+
+### Patch Changes
+
+- 7d47e7e512: Track discover event and result rank for `AdrSearchResultListItem`
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-adr-common@0.1.2-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+ - @backstage/integration-react@1.1.2-next.0
+ - @backstage/plugin-search-react@0.2.2-next.0
+
+## @backstage/plugin-adr-backend@0.1.2-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/integration@1.2.2-next.0
+ - @backstage/catalog-client@1.0.4-next.0
+ - @backstage/plugin-adr-common@0.1.2-next.0
+
+## @backstage/plugin-adr-common@0.1.2-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/integration@1.2.2-next.0
+
+## @backstage/plugin-airbrake@0.3.7-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/dev-utils@1.0.4-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+ - @backstage/test-utils@1.1.2-next.0
+
+## @backstage/plugin-airbrake-backend@0.2.7-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+
+## @backstage/plugin-allure@0.1.23-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-analytics-module-ga@0.1.18-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.0
+
+## @backstage/plugin-apache-airflow@0.1.15-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.0
+
+## @backstage/plugin-api-docs@0.8.7-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog@1.3.1-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-app-backend@0.3.34-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+
+## @backstage/plugin-auth-backend@0.14.2-next.0
+
+### Patch Changes
+
+- 859346bfbb: Updated dependency `google-auth-library` to `^8.0.0`.
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/plugin-auth-node@0.2.3-next.0
+ - @backstage/catalog-client@1.0.4-next.0
+
+## @backstage/plugin-auth-node@0.2.3-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+
+## @backstage/plugin-azure-devops@0.1.23-next.0
+
+### Patch Changes
+
+- e049e41048: Exporting azureDevOpsApiRef, AzureGitTagsIcon, and all hooks for the benefit of other plugins.
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-azure-devops-backend@0.3.13-next.0
+
+### Patch Changes
+
+- 13a232ec22: Added comments to example to help avoid confusion as to where lines need to be added
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+
+## @backstage/plugin-badges@0.2.31-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-badges-backend@0.1.28-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/catalog-client@1.0.4-next.0
+
+## @backstage/plugin-bazaar@0.1.22-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog@1.3.1-next.0
+ - @backstage/cli@0.17.3-next.0
+ - @backstage/catalog-client@1.0.4-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-bazaar-backend@0.1.18-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/backend-test-utils@0.1.26-next.0
+
+## @backstage/plugin-bitbucket-cloud-common@0.1.1-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/integration@1.2.2-next.0
+
+## @backstage/plugin-bitrise@0.1.34-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-catalog@1.3.1-next.0
+
+### Patch Changes
+
+- dcaf1cb418: Previously, the color of the Entity Context Menu (in the Entity Page Header) was hardcoded as `white`.
+
+ This was an issue for themes that use a header with a white background. By default, the color of the icon is now `theme.palette.bursts.fontColor`.
+
+ It can now also be overridden in the theme, which is only necessary if the header title, subtitle and three-dots icon need to have different colors. For example:
+
+ ```typescript
+ export function createThemeOverrides(theme: BackstageTheme): Overrides {
+ return {
+ PluginCatalogEntityContextMenu: {
+ button: {
+ color: 'blue',
+ },
+ },
+ ...
+ },
+ ...
+ }
+ ```
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/catalog-client@1.0.4-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+ - @backstage/integration-react@1.1.2-next.0
+ - @backstage/plugin-search-react@0.2.2-next.0
+
+## @backstage/plugin-catalog-backend@1.2.1-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/integration@1.2.2-next.0
+ - @backstage/plugin-permission-node@0.6.3-next.0
+ - @backstage/catalog-client@1.0.4-next.0
+ - @backstage/plugin-scaffolder-common@1.1.2-next.0
+
+## @backstage/plugin-catalog-backend-module-aws@0.1.7-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/integration@1.2.2-next.0
+ - @backstage/backend-tasks@0.3.3-next.0
+ - @backstage/plugin-catalog-backend@1.2.1-next.0
+
+## @backstage/plugin-catalog-backend-module-azure@0.1.5-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/integration@1.2.2-next.0
+ - @backstage/backend-tasks@0.3.3-next.0
+ - @backstage/plugin-catalog-backend@1.2.1-next.0
+
+## @backstage/plugin-catalog-backend-module-bitbucket@0.2.1-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/integration@1.2.2-next.0
+ - @backstage/plugin-catalog-backend@1.2.1-next.0
+ - @backstage/plugin-bitbucket-cloud-common@0.1.1-next.0
+
+## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.1.1-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/integration@1.2.2-next.0
+ - @backstage/backend-tasks@0.3.3-next.0
+ - @backstage/plugin-catalog-backend@1.2.1-next.0
+ - @backstage/plugin-bitbucket-cloud-common@0.1.1-next.0
+
+## @backstage/plugin-catalog-backend-module-gerrit@0.1.2-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/integration@1.2.2-next.0
+ - @backstage/backend-tasks@0.3.3-next.0
+ - @backstage/plugin-catalog-backend@1.2.1-next.0
+
+## @backstage/plugin-catalog-backend-module-github@0.1.5-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/integration@1.2.2-next.0
+ - @backstage/backend-tasks@0.3.3-next.0
+ - @backstage/plugin-catalog-backend@1.2.1-next.0
+
+## @backstage/plugin-catalog-backend-module-gitlab@0.1.5-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/integration@1.2.2-next.0
+ - @backstage/backend-tasks@0.3.3-next.0
+ - @backstage/plugin-catalog-backend@1.2.1-next.0
+
+## @backstage/plugin-catalog-backend-module-ldap@0.5.1-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/backend-tasks@0.3.3-next.0
+ - @backstage/plugin-catalog-backend@1.2.1-next.0
+
+## @backstage/plugin-catalog-backend-module-msgraph@0.3.4-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/backend-tasks@0.3.3-next.0
+ - @backstage/plugin-catalog-backend@1.2.1-next.0
+
+## @backstage/plugin-catalog-graph@0.2.19-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/catalog-client@1.0.4-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-catalog-graphql@0.3.11-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+
+## @backstage/plugin-catalog-import@0.8.10-next.0
+
+### Patch Changes
+
+- 272106fdad: Support use without `integrations` or only integrations without frontend visible properties (e.g., `bitbucketCloud`) being configured by checking `integrations.github` directly without attempting to load `integrations`.
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/integration@1.2.2-next.0
+ - @backstage/catalog-client@1.0.4-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+ - @backstage/integration-react@1.1.2-next.0
+
+## @backstage/plugin-catalog-react@1.1.2-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/integration@1.2.2-next.0
+ - @backstage/catalog-client@1.0.4-next.0
+
+## @backstage/plugin-cicd-statistics@0.1.9-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-cicd-statistics-module-gitlab@0.1.3-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/plugin-cicd-statistics@0.1.9-next.0
+
+## @backstage/plugin-circleci@0.3.7-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-cloudbuild@0.3.7-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-code-climate@0.1.7-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-code-coverage@0.1.34-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-code-coverage-backend@0.1.32-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/integration@1.2.2-next.0
+ - @backstage/catalog-client@1.0.4-next.0
+
+## @backstage/plugin-codescene@0.1.2-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.0
+
+## @backstage/plugin-config-schema@0.1.30-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.0
+
+## @backstage/plugin-cost-insights@0.11.29-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+
+## @backstage/plugin-dynatrace@0.1.1-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-explore@0.3.38-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-firehydrant@0.1.24-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-fossa@0.2.39-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-gcalendar@0.3.3-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.0
+
+## @backstage/plugin-gcp-projects@0.3.26-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.0
+
+## @backstage/plugin-git-release-manager@0.3.20-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/integration@1.2.2-next.0
+
+## @backstage/plugin-github-actions@0.5.7-next.0
+
+### Patch Changes
+
+- 217f919f0a: Minor cleanup of the API surface.
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/integration@1.2.2-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-github-deployments@0.1.38-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/integration@1.2.2-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+ - @backstage/integration-react@1.1.2-next.0
+
+## @backstage/plugin-github-pull-requests-board@0.1.1-next.0
+
+### Patch Changes
+
+- c6690d9d24: Fix bug on fetching teams repositories where were being filtered by type service unnecessarily
+- 04e1504e85: Support namespaced teams and fetch all kinds
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/integration@1.2.2-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-gitops-profiles@0.3.25-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.0
+
+## @backstage/plugin-gocd@0.1.13-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-graphiql@0.2.39-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.0
+
+## @backstage/plugin-graphql-backend@0.1.24-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/plugin-catalog-graphql@0.3.11-next.0
+
+## @backstage/plugin-home@0.4.23-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-stack-overflow@0.1.3-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-ilert@0.1.33-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-jenkins@0.7.6-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-jenkins-backend@0.1.24-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/plugin-auth-node@0.2.3-next.0
+ - @backstage/catalog-client@1.0.4-next.0
+
+## @backstage/plugin-kafka@0.3.7-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-kafka-backend@0.2.27-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/catalog-model@1.1.0-next.0
+
+## @backstage/plugin-kubernetes@0.6.7-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-kubernetes-common@0.4.0-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-lighthouse@0.3.7-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-newrelic@0.3.25-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.0
+
+## @backstage/plugin-newrelic-dashboard@0.1.15-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-org@0.5.7-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-periskop@0.1.5-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-periskop-backend@0.1.5-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+
+## @backstage/plugin-permission-backend@0.5.9-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/plugin-auth-node@0.2.3-next.0
+ - @backstage/plugin-permission-node@0.6.3-next.0
+
+## @backstage/plugin-permission-node@0.6.3-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/plugin-auth-node@0.2.3-next.0
+
+## @backstage/plugin-proxy-backend@0.2.28-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+
+## @backstage/plugin-rollbar@0.4.7-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-rollbar-backend@0.1.31-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+
+## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.2.9-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/plugin-scaffolder-backend@1.4.0-next.0
+ - @backstage/integration@1.2.2-next.0
+
+## @backstage/plugin-scaffolder-backend-module-rails@0.4.2-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/plugin-scaffolder-backend@1.4.0-next.0
+ - @backstage/integration@1.2.2-next.0
+
+## @backstage/plugin-scaffolder-backend-module-yeoman@0.2.7-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.4.0-next.0
+
+## @backstage/plugin-scaffolder-common@1.1.2-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+
+## @backstage/plugin-search@0.9.1-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+ - @backstage/plugin-search-react@0.2.2-next.0
+
+## @backstage/plugin-search-backend@0.5.4-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/plugin-auth-node@0.2.3-next.0
+ - @backstage/plugin-permission-node@0.6.3-next.0
+ - @backstage/plugin-search-backend-node@0.6.3-next.0
+
+## @backstage/plugin-search-backend-module-elasticsearch@0.1.6-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-search-backend-node@0.6.3-next.0
+
+## @backstage/plugin-search-backend-module-pg@0.3.5-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/plugin-search-backend-node@0.6.3-next.0
+
+## @backstage/plugin-search-backend-node@0.6.3-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/backend-tasks@0.3.3-next.0
+
+## @backstage/plugin-search-react@0.2.2-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.0
+
+## @backstage/plugin-sentry@0.3.45-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-shortcuts@0.2.8-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.0
+
+## @backstage/plugin-sonarqube@0.3.7-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-splunk-on-call@0.3.31-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-stack-overflow@0.1.3-next.0
+
+### Patch Changes
+
+- 12ae3eed2f: - Publicly exports `StackOverflowIcon`.
+ - `HomePageStackOverflowQuestions` accepts optional icon property.
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-home@0.4.23-next.0
+
+## @backstage/plugin-tech-insights@0.2.3-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-tech-insights-backend@0.4.2-next.0
+
+### Patch Changes
+
+- 2ef58ab539: TechInsightsBackend: Added missing 'scheduler' to code examples
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/backend-tasks@0.3.3-next.0
+ - @backstage/plugin-tech-insights-node@0.3.2-next.0
+ - @backstage/catalog-client@1.0.4-next.0
+
+## @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.18-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/plugin-tech-insights-node@0.3.2-next.0
+
+## @backstage/plugin-tech-insights-node@0.3.2-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+
+## @backstage/plugin-tech-radar@0.5.14-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.0
+
+## @backstage/plugin-techdocs@1.2.1-next.0
+
+### Patch Changes
+
+- 3cbebf710e: Reorder browser tab title in Techdocs pages to have the site name first.
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-techdocs-react@1.0.2-next.0
+ - @backstage/integration@1.2.2-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+ - @backstage/integration-react@1.1.2-next.0
+ - @backstage/plugin-search-react@0.2.2-next.0
+
+## @backstage/plugin-techdocs-addons-test-utils@1.0.2-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-techdocs-react@1.0.2-next.0
+ - @backstage/plugin-catalog@1.3.1-next.0
+ - @backstage/core-app-api@1.0.4-next.0
+ - @backstage/plugin-techdocs@1.2.1-next.0
+ - @backstage/integration-react@1.1.2-next.0
+ - @backstage/plugin-search-react@0.2.2-next.0
+ - @backstage/test-utils@1.1.2-next.0
+
+## @backstage/plugin-techdocs-backend@1.1.3-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/integration@1.2.2-next.0
+ - @backstage/plugin-techdocs-node@1.1.3-next.0
+ - @backstage/catalog-client@1.0.4-next.0
+
+## @backstage/plugin-techdocs-module-addons-contrib@1.0.2-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-techdocs-react@1.0.2-next.0
+ - @backstage/integration@1.2.2-next.0
+ - @backstage/integration-react@1.1.2-next.0
+
+## @backstage/plugin-techdocs-node@1.1.3-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/integration@1.2.2-next.0
+
+## @backstage/plugin-techdocs-react@1.0.2-next.0
+
+### Patch Changes
+
+- c3cfc83af2: Updated JSDoc to be MDX compatible.
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+
+## @backstage/plugin-todo@0.2.9-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-todo-backend@0.1.31-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/integration@1.2.2-next.0
+ - @backstage/catalog-client@1.0.4-next.0
+
+## @backstage/plugin-user-settings@0.4.6-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.0
+
+## @backstage/plugin-vault@0.1.1-next.0
+
+### Patch Changes
+
+- 5ebf2c7023: Export missing parameters and added them to the api-report. Also adapted the API to the expected response from the backend
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+
+## @backstage/plugin-xcmetrics@0.2.27-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.0
+
+## example-app@0.2.73-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder@1.4.0-next.0
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-techdocs-react@1.0.2-next.0
+ - @backstage/plugin-catalog@1.3.1-next.0
+ - @backstage/plugin-stack-overflow@0.1.3-next.0
+ - @backstage/core-app-api@1.0.4-next.0
+ - @backstage/cli@0.17.3-next.0
+ - @backstage/plugin-azure-devops@0.1.23-next.0
+ - @backstage/plugin-techdocs@1.2.1-next.0
+ - @backstage/plugin-catalog-import@0.8.10-next.0
+ - @backstage/plugin-pagerduty@0.5.0-next.0
+ - @backstage/plugin-github-actions@0.5.7-next.0
+ - @backstage/plugin-airbrake@0.3.7-next.0
+ - @backstage/plugin-api-docs@0.8.7-next.0
+ - @backstage/plugin-badges@0.2.31-next.0
+ - @backstage/plugin-catalog-graph@0.2.19-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.0
+ - @backstage/plugin-circleci@0.3.7-next.0
+ - @backstage/plugin-cloudbuild@0.3.7-next.0
+ - @backstage/plugin-code-coverage@0.1.34-next.0
+ - @backstage/plugin-cost-insights@0.11.29-next.0
+ - @backstage/plugin-dynatrace@0.1.1-next.0
+ - @backstage/plugin-explore@0.3.38-next.0
+ - @backstage/plugin-gocd@0.1.13-next.0
+ - @backstage/plugin-home@0.4.23-next.0
+ - @backstage/plugin-jenkins@0.7.6-next.0
+ - @backstage/plugin-kafka@0.3.7-next.0
+ - @backstage/plugin-kubernetes@0.6.7-next.0
+ - @backstage/plugin-lighthouse@0.3.7-next.0
+ - @backstage/plugin-newrelic-dashboard@0.1.15-next.0
+ - @backstage/plugin-org@0.5.7-next.0
+ - @backstage/plugin-rollbar@0.4.7-next.0
+ - @backstage/plugin-search@0.9.1-next.0
+ - @backstage/plugin-sentry@0.3.45-next.0
+ - @backstage/plugin-tech-insights@0.2.3-next.0
+ - @backstage/plugin-todo@0.2.9-next.0
+ - @backstage/app-defaults@1.0.4-next.0
+ - @backstage/integration-react@1.1.2-next.0
+ - @backstage/plugin-apache-airflow@0.1.15-next.0
+ - @backstage/plugin-gcalendar@0.3.3-next.0
+ - @backstage/plugin-gcp-projects@0.3.26-next.0
+ - @backstage/plugin-graphiql@0.2.39-next.0
+ - @backstage/plugin-newrelic@0.3.25-next.0
+ - @backstage/plugin-search-react@0.2.2-next.0
+ - @backstage/plugin-shortcuts@0.2.8-next.0
+ - @backstage/plugin-tech-radar@0.5.14-next.0
+ - @backstage/plugin-techdocs-module-addons-contrib@1.0.2-next.0
+ - @backstage/plugin-user-settings@0.4.6-next.0
+
+## example-backend@0.2.73-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-tech-insights-backend@0.4.2-next.0
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/plugin-scaffolder-backend@1.4.0-next.0
+ - @backstage/plugin-auth-backend@0.14.2-next.0
+ - @backstage/plugin-kubernetes-backend@0.7.0-next.0
+ - @backstage/integration@1.2.2-next.0
+ - @backstage/plugin-azure-devops-backend@0.3.13-next.0
+ - example-app@0.2.73-next.0
+ - @backstage/backend-tasks@0.3.3-next.0
+ - @backstage/plugin-app-backend@0.3.34-next.0
+ - @backstage/plugin-auth-node@0.2.3-next.0
+ - @backstage/plugin-badges-backend@0.1.28-next.0
+ - @backstage/plugin-catalog-backend@1.2.1-next.0
+ - @backstage/plugin-code-coverage-backend@0.1.32-next.0
+ - @backstage/plugin-graphql-backend@0.1.24-next.0
+ - @backstage/plugin-jenkins-backend@0.1.24-next.0
+ - @backstage/plugin-kafka-backend@0.2.27-next.0
+ - @backstage/plugin-permission-backend@0.5.9-next.0
+ - @backstage/plugin-permission-node@0.6.3-next.0
+ - @backstage/plugin-proxy-backend@0.2.28-next.0
+ - @backstage/plugin-rollbar-backend@0.1.31-next.0
+ - @backstage/plugin-scaffolder-backend-module-rails@0.4.2-next.0
+ - @backstage/plugin-search-backend@0.5.4-next.0
+ - @backstage/plugin-search-backend-module-elasticsearch@0.1.6-next.0
+ - @backstage/plugin-search-backend-module-pg@0.3.5-next.0
+ - @backstage/plugin-search-backend-node@0.6.3-next.0
+ - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.18-next.0
+ - @backstage/plugin-tech-insights-node@0.3.2-next.0
+ - @backstage/plugin-techdocs-backend@1.1.3-next.0
+ - @backstage/plugin-todo-backend@0.1.31-next.0
+ - @backstage/catalog-client@1.0.4-next.0
+
+## techdocs-cli-embedded-app@0.2.72-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.0
+ - @backstage/core-components@0.9.6-next.0
+ - @backstage/plugin-techdocs-react@1.0.2-next.0
+ - @backstage/plugin-catalog@1.3.1-next.0
+ - @backstage/core-app-api@1.0.4-next.0
+ - @backstage/cli@0.17.3-next.0
+ - @backstage/plugin-techdocs@1.2.1-next.0
+ - @backstage/app-defaults@1.0.4-next.0
+ - @backstage/integration-react@1.1.2-next.0
+ - @backstage/test-utils@1.1.2-next.0
+
+## @internal/plugin-todo-list@1.0.3-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.0
+
+## @internal/plugin-todo-list-backend@1.0.3-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.0
+ - @backstage/plugin-auth-node@0.2.3-next.0
diff --git a/docs/releases/v1.4.0-next.1-changelog.md b/docs/releases/v1.4.0-next.1-changelog.md
new file mode 100644
index 0000000000..0780178d4d
--- /dev/null
+++ b/docs/releases/v1.4.0-next.1-changelog.md
@@ -0,0 +1,1474 @@
+# Release v1.4.0-next.1
+
+## @backstage/cli@0.18.0-next.1
+
+### Minor Changes
+
+- 96a82d9791: **BREAKING**: Removed the following deprecated package commands:
+
+ - `app:build` - Use `package build` instead
+ - `app:serve` - Use `package start` instead
+ - `backend:build` - Use `package build` instead
+ - `backend:bundle` - Use `package build` instead
+ - `backend:dev` - Use `package start` instead
+ - `plugin:build` - Use `package build` instead
+ - `plugin:serve` - Use `package start` instead
+ - `build` - Use `package build` instead
+ - `lint` - Use `package lint` instead
+ - `prepack` - Use `package prepack` instead
+ - `postpack` - Use `package postpack` instead
+
+ In order to replace these you need to have [migrated to using package roles](https://backstage.io/docs/tutorials/package-role-migration).
+
+### Patch Changes
+
+- 86640214f0: Upgrade `@rollup/plugin-node-resolve` to `^13.0.6`
+- e661242844: Updated dependency `run-script-webpack-plugin` to `^0.1.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/config-loader@1.1.3-next.0
+
+## @backstage/errors@1.1.0-next.0
+
+### Minor Changes
+
+- 6d61b44466: The `ResponseError.fromResponse` now accepts a more narrow response type, in order to avoid incompatibilities between different fetch implementations.
+
+ The `response` property of `ResponseError` has also been narrowed to a new `ConsumedResponse` type that omits all the properties for consuming the body of the response. This is not considered a breaking change as it was always an error to try to consume the body of the response.
+
+## @backstage/plugin-apache-airflow@0.2.0-next.1
+
+### Minor Changes
+
+- 01f976ea72: Exposed DagTableComponent as standalone component + added a prop to get only select DAGs instead of the full list
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+
+## @backstage/plugin-auth-backend@0.15.0-next.1
+
+### Minor Changes
+
+- 9d4040777e: **BREAKING**: Removed all directly exported auth provider factories, option types, and sign-in resolvers. For example: `AwsAlbProviderOptions`, `bitbucketUserIdSignInResolver`, `createGithubProvider`. These are all still accessible via the `providers` export. For example, use `providers.github.create()` rather than `createGithubProvider()`, and `providers.bitbucket.resolvers.userIdMatchingUserEntityAnnotation()` rather than `bitbucketUserIdSignInResolver`.
+
+ **BREAKING**: Removed the exported `AuthProviderFactoryOptions` type as well as the deprecated option fields of the `AuthProviderFactory` callback. This includes the `tokenManager`, `tokenIssuer`, `discovery`, and `catalogApi` fields. Existing usage of these should be replaced with the new utilities in the `resolverContext` field. The deprecated `TokenIssuer` type is now also removed, since it is no longer used.
+
+ **BREAKING**: Removed `getEntityClaims`, use `getDefaultOwnershipEntityRefs` instead.
+
+ **DEPRECATION**: Deprecated `AtlassianAuthProvider` as it was unintentionally exported.
+
+### Patch Changes
+
+- f2cf79d62e: Added an option for the auth backend router to select the algorithm for the JWT token signing keys
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/catalog-client@1.0.4-next.1
+ - @backstage/plugin-auth-node@0.2.3-next.1
+
+## @backstage/plugin-catalog-backend-module-openapi@0.1.0-next.0
+
+### Minor Changes
+
+- 67503d159e: Add basic OpenAPI \\$ref support.
+
+ For more information see [here](https://github.com/backstage/backstage/tree/master/plugins/catalog-backend-module-openapi).
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/plugin-catalog-backend@1.2.1-next.1
+ - @backstage/integration@1.2.2-next.1
+
+## @backstage/plugin-search-backend-module-elasticsearch@0.2.0-next.1
+
+### Minor Changes
+
+- c5af773757: **BREAKING**: In order to remain interoperable with all currently supported
+ deployments of Elasticsearch, this package will now conditionally use either
+ the `@elastic/elasticsearch` or `@opensearch-project/opensearch` client when
+ communicating with your deployed cluster.
+
+ If you do not rely on types exported from this package, or if you do not make
+ use of the `createElasticSearchClientOptions` or `newClient` methods on the
+ `ElasticSearchSearchEngine` class, then upgrading to this version should not
+ require any further action on your part. Everything will continue to work as it
+ always has.
+
+ If you _do_ rely on either of the above methods or any underlying types, some
+ changes may be needed to your custom code. A type guard is now exported by this
+ package (`isOpenSearchCompatible(options)`), which you may use to help clarify
+ which client options are compatible with which client constructors.
+
+ If you are using this package with the `search.elasticsearch.provider` set to
+ `aws`, and you are making use of the `newClient` method in particular, you may
+ wish to start using the `@opensearch-project/opensearch` client in your custom
+ code.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-search-backend-node@0.6.3-next.1
+ - @backstage/plugin-search-common@0.3.6-next.0
+
+## @backstage/plugin-techdocs-backend@1.2.0-next.1
+
+### Minor Changes
+
+- 860765ff45: Added local publishing target directory `config`: `techdocs.publisher.local.publishDirectory`
+
+### Patch Changes
+
+- 726577958f: Add sample headings on the documented component homepage.
+- Updated dependencies
+ - @backstage/plugin-techdocs-node@1.2.0-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/catalog-client@1.0.4-next.1
+ - @backstage/integration@1.2.2-next.1
+ - @backstage/plugin-catalog-common@1.0.4-next.0
+ - @backstage/plugin-permission-common@0.6.3-next.0
+ - @backstage/plugin-search-common@0.3.6-next.0
+
+## @backstage/plugin-techdocs-node@1.2.0-next.1
+
+### Minor Changes
+
+- 860765ff45: Added local publishing target directory `config`: `techdocs.publisher.local.publishDirectory`
+
+### Patch Changes
+
+- a5d73da942: Fix the flag parsing for `legacyCopyReadmeMdToIndexMd` in `techdocs-cli generate` command, and decouple it's logic from the `techdocs-ref` flag.
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/integration@1.2.2-next.1
+ - @backstage/plugin-search-common@0.3.6-next.0
+
+## @backstage/app-defaults@1.0.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-permission-react@0.4.3-next.0
+
+## @backstage/backend-common@0.14.1-next.1
+
+### Patch Changes
+
+- 0fc57887e8: Improve plural handling in logging output for secrets
+- Updated dependencies
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/integration@1.2.2-next.1
+ - @backstage/config-loader@1.1.3-next.0
+
+## @backstage/backend-tasks@0.3.3-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+
+## @backstage/backend-test-utils@0.1.26-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/cli@0.18.0-next.1
+ - @backstage/backend-common@0.14.1-next.1
+
+## @backstage/catalog-client@1.0.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/errors@1.1.0-next.0
+
+## @backstage/catalog-model@1.1.0-next.1
+
+### Patch Changes
+
+- f1dcc6f3c6: Added type predicates for all entity types, e.g. isUserEntity
+- Updated dependencies
+ - @backstage/errors@1.1.0-next.0
+
+## @backstage/config-loader@1.1.3-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.0-next.0
+
+## @backstage/core-components@0.9.6-next.1
+
+### Patch Changes
+
+- 3c440ea77e: Change BackstageIconLinkVertical style to use pallette instead of explicit color
+- 7e115d42f9: Support displaying subtitle text in `SidebarSubmenuItem`
+- Updated dependencies
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/theme@0.2.16-next.0
+
+## @backstage/create-app@0.4.29-next.1
+
+### Patch Changes
+
+- Bumped create-app version.
+
+## @backstage/dev-utils@1.0.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/app-defaults@1.0.4-next.1
+ - @backstage/integration-react@1.1.2-next.1
+ - @backstage/test-utils@1.1.2-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/integration@1.2.2-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.0-next.0
+
+## @backstage/integration-react@1.1.2-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/integration@1.2.2-next.1
+
+## @techdocs/cli@1.1.3-next.1
+
+### Patch Changes
+
+- a5d73da942: Fix the flag parsing for `legacyCopyReadmeMdToIndexMd` in `techdocs-cli generate` command, and decouple it's logic from the `techdocs-ref` flag.
+- Updated dependencies
+ - @backstage/plugin-techdocs-node@1.2.0-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/backend-common@0.14.1-next.1
+
+## @backstage/test-utils@1.1.2-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-permission-common@0.6.3-next.0
+ - @backstage/plugin-permission-react@0.4.3-next.0
+
+## @backstage/theme@0.2.16-next.0
+
+### Patch Changes
+
+- 4c09c09102: Adds optional `htmlFontSize` property and also sets typography design tokens for h5 and h6 in base theme.
+
+## @backstage/plugin-adr@0.1.2-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/integration-react@1.1.2-next.1
+ - @backstage/plugin-adr-common@0.1.2-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+ - @backstage/plugin-search-common@0.3.6-next.0
+ - @backstage/plugin-search-react@0.2.2-next.1
+
+## @backstage/plugin-adr-backend@0.1.2-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/catalog-client@1.0.4-next.1
+ - @backstage/integration@1.2.2-next.1
+ - @backstage/plugin-adr-common@0.1.2-next.1
+ - @backstage/plugin-search-common@0.3.6-next.0
+
+## @backstage/plugin-adr-common@0.1.2-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/integration@1.2.2-next.1
+ - @backstage/plugin-search-common@0.3.6-next.0
+
+## @backstage/plugin-airbrake@0.3.7-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/dev-utils@1.0.4-next.1
+ - @backstage/test-utils@1.1.2-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-allure@0.1.23-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-analytics-module-ga@0.1.18-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/theme@0.2.16-next.0
+
+## @backstage/plugin-api-docs@0.8.7-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/plugin-catalog@1.3.1-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-app-backend@0.3.34-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/config-loader@1.1.3-next.0
+
+## @backstage/plugin-auth-node@0.2.3-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+
+## @backstage/plugin-azure-devops@0.1.23-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-badges@0.2.31-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-badges-backend@0.1.28-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/catalog-client@1.0.4-next.1
+
+## @backstage/plugin-bazaar@0.1.22-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/cli@0.18.0-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/plugin-catalog@1.3.1-next.1
+ - @backstage/catalog-client@1.0.4-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-bitrise@0.1.34-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-catalog@1.3.1-next.1
+
+### Patch Changes
+
+- f1dcc6f3c6: Use entity type predicates from catalog-model
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/catalog-client@1.0.4-next.1
+ - @backstage/integration-react@1.1.2-next.1
+ - @backstage/plugin-catalog-common@1.0.4-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+ - @backstage/plugin-search-common@0.3.6-next.0
+ - @backstage/plugin-search-react@0.2.2-next.1
+
+## @backstage/plugin-catalog-backend@1.2.1-next.1
+
+### Patch Changes
+
+- f1dcc6f3c6: Use entity type predicates from catalog-model
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/catalog-client@1.0.4-next.1
+ - @backstage/integration@1.2.2-next.1
+ - @backstage/plugin-catalog-common@1.0.4-next.0
+ - @backstage/plugin-permission-common@0.6.3-next.0
+ - @backstage/plugin-permission-node@0.6.3-next.1
+ - @backstage/plugin-search-common@0.3.6-next.0
+
+## @backstage/plugin-catalog-backend-module-aws@0.1.7-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/plugin-catalog-backend@1.2.1-next.1
+ - @backstage/backend-tasks@0.3.3-next.1
+ - @backstage/integration@1.2.2-next.1
+
+## @backstage/plugin-catalog-backend-module-azure@0.1.5-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/plugin-catalog-backend@1.2.1-next.1
+ - @backstage/backend-tasks@0.3.3-next.1
+ - @backstage/integration@1.2.2-next.1
+
+## @backstage/plugin-catalog-backend-module-bitbucket@0.2.1-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/plugin-catalog-backend@1.2.1-next.1
+ - @backstage/integration@1.2.2-next.1
+
+## @backstage/plugin-catalog-backend-module-gerrit@0.1.2-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/plugin-catalog-backend@1.2.1-next.1
+ - @backstage/backend-tasks@0.3.3-next.1
+ - @backstage/integration@1.2.2-next.1
+
+## @backstage/plugin-catalog-backend-module-github@0.1.5-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/plugin-catalog-backend@1.2.1-next.1
+ - @backstage/backend-tasks@0.3.3-next.1
+ - @backstage/integration@1.2.2-next.1
+
+## @backstage/plugin-catalog-backend-module-gitlab@0.1.5-next.1
+
+### Patch Changes
+
+- 49ff472c0b: Add the possibility in the `GitlabDiscoveryEntityProvider` to scan the whole project instead of concrete groups. For that, use a configuration like this one, where the group parameter is omitted (not mandatory anymore):
+
+ ```yaml
+ catalog:
+ providers:
+ gitlab:
+ yourProviderId:
+ host: gitlab-host # Identifies one of the hosts set up in the integrations
+ branch: main # Optional. Uses `master` as default
+ entityFilename: catalog-info.yaml # Optional. Defaults to `catalog-info.yaml`
+ ```
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/plugin-catalog-backend@1.2.1-next.1
+ - @backstage/backend-tasks@0.3.3-next.1
+ - @backstage/integration@1.2.2-next.1
+
+## @backstage/plugin-catalog-backend-module-ldap@0.5.1-next.1
+
+### Patch Changes
+
+- fbfbff6bf7: Add possibility to resolve relations by RDN, in addition to UUID and DN
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/plugin-catalog-backend@1.2.1-next.1
+ - @backstage/backend-tasks@0.3.3-next.1
+
+## @backstage/plugin-catalog-common@1.0.4-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-permission-common@0.6.3-next.0
+ - @backstage/plugin-search-common@0.3.6-next.0
+
+## @backstage/plugin-catalog-graph@0.2.19-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/catalog-client@1.0.4-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-catalog-import@0.8.10-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/catalog-client@1.0.4-next.1
+ - @backstage/integration@1.2.2-next.1
+ - @backstage/integration-react@1.1.2-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-catalog-react@1.1.2-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/catalog-client@1.0.4-next.1
+ - @backstage/integration@1.2.2-next.1
+ - @backstage/plugin-catalog-common@1.0.4-next.0
+ - @backstage/plugin-permission-common@0.6.3-next.0
+ - @backstage/plugin-permission-react@0.4.3-next.0
+
+## @backstage/plugin-circleci@0.3.7-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-cloudbuild@0.3.7-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-code-climate@0.1.7-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-code-coverage@0.1.34-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-code-coverage-backend@0.1.32-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/catalog-client@1.0.4-next.1
+ - @backstage/integration@1.2.2-next.1
+
+## @backstage/plugin-codescene@0.1.2-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/theme@0.2.16-next.0
+
+## @backstage/plugin-config-schema@0.1.30-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/theme@0.2.16-next.0
+
+## @backstage/plugin-cost-insights@0.11.29-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/theme@0.2.16-next.0
+
+## @backstage/plugin-dynatrace@0.1.1-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/theme@0.2.16-next.0
+
+## @backstage/plugin-explore@0.3.38-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-firehydrant@0.1.24-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-fossa@0.2.39-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-gcalendar@0.3.3-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/theme@0.2.16-next.0
+
+## @backstage/plugin-gcp-projects@0.3.26-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/theme@0.2.16-next.0
+
+## @backstage/plugin-git-release-manager@0.3.20-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/integration@1.2.2-next.1
+
+## @backstage/plugin-github-actions@0.5.7-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/integration@1.2.2-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-github-deployments@0.1.38-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/integration@1.2.2-next.1
+ - @backstage/integration-react@1.1.2-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-github-pull-requests-board@0.1.1-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/integration@1.2.2-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-gitops-profiles@0.3.25-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/theme@0.2.16-next.0
+
+## @backstage/plugin-gocd@0.1.13-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-graphiql@0.2.39-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/theme@0.2.16-next.0
+
+## @backstage/plugin-home@0.4.23-next.1
+
+### Patch Changes
+
+- a46e317a75: Added support for customizing the time format used in the `HeaderWorldClock` component
+
+ Here's an example of how this can be used in the `HomePage.tsx` found in `\packages\app\src\components\home` to change the clock to be in the 24hr time format:
+
+ ```diff
+ +const timeFormat: Intl.DateTimeFormatOptions = {
+ + hour: '2-digit',
+ + minute: '2-digit',
+ + hour12: false,
+ +};
+
+ export const homePage = (
+
+ } pageTitleOverride="Home">
+ +
+
+
+
+
+
+
+ ```
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/plugin-stack-overflow@0.1.3-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-ilert@0.1.33-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-jenkins@0.7.6-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+ - @backstage/plugin-jenkins-common@0.1.6-next.0
+
+## @backstage/plugin-jenkins-backend@0.1.24-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/catalog-client@1.0.4-next.1
+ - @backstage/plugin-auth-node@0.2.3-next.1
+ - @backstage/plugin-jenkins-common@0.1.6-next.0
+ - @backstage/plugin-permission-common@0.6.3-next.0
+
+## @backstage/plugin-jenkins-common@0.1.6-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-common@1.0.4-next.0
+ - @backstage/plugin-permission-common@0.6.3-next.0
+
+## @backstage/plugin-kafka@0.3.7-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-kafka-backend@0.2.27-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+
+## @backstage/plugin-kubernetes@0.6.7-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-kubernetes-backend@0.7.0-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+
+## @backstage/plugin-lighthouse@0.3.7-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-newrelic@0.3.25-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/theme@0.2.16-next.0
+
+## @backstage/plugin-newrelic-dashboard@0.1.15-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-org@0.5.7-next.1
+
+### Patch Changes
+
+- 1e984b11fc: Render namespaces for teams with subtitles in `MyGroupsSidebarItem`
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-pagerduty@0.5.0-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-periskop@0.1.5-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-permission-backend@0.5.9-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/plugin-auth-node@0.2.3-next.1
+ - @backstage/plugin-permission-common@0.6.3-next.0
+ - @backstage/plugin-permission-node@0.6.3-next.1
+
+## @backstage/plugin-permission-common@0.6.3-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.0-next.0
+
+## @backstage/plugin-permission-node@0.6.3-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/plugin-auth-node@0.2.3-next.1
+ - @backstage/plugin-permission-common@0.6.3-next.0
+
+## @backstage/plugin-permission-react@0.4.3-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-permission-common@0.6.3-next.0
+
+## @backstage/plugin-rollbar@0.4.7-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-scaffolder@1.4.0-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/catalog-client@1.0.4-next.1
+ - @backstage/integration@1.2.2-next.1
+ - @backstage/integration-react@1.1.2-next.1
+ - @backstage/plugin-catalog-common@1.0.4-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+ - @backstage/plugin-permission-react@0.4.3-next.0
+
+## @backstage/plugin-scaffolder-backend@1.4.0-next.1
+
+### Patch Changes
+
+- 801d606909: Improve error messaging when passing in malformed auth
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/plugin-catalog-backend@1.2.1-next.1
+ - @backstage/catalog-client@1.0.4-next.1
+ - @backstage/integration@1.2.2-next.1
+
+## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.2.9-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.4.0-next.1
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/integration@1.2.2-next.1
+
+## @backstage/plugin-scaffolder-backend-module-rails@0.4.2-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.4.0-next.1
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/integration@1.2.2-next.1
+
+## @backstage/plugin-search@0.9.1-next.1
+
+### Patch Changes
+
+- 509c4092f0: To allow people to use a global search context in the search modal, the code for the search modal has been changed to only create a local search context if there is no parent context already defined.
+
+ If you want to continue using a local context even if you define a global one, you will have to wrap the modal in a new local context manually:
+
+ ```tsx
+
+
+
+ ```
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+ - @backstage/plugin-search-common@0.3.6-next.0
+ - @backstage/plugin-search-react@0.2.2-next.1
+
+## @backstage/plugin-search-backend@0.5.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/plugin-auth-node@0.2.3-next.1
+ - @backstage/plugin-permission-common@0.6.3-next.0
+ - @backstage/plugin-permission-node@0.6.3-next.1
+ - @backstage/plugin-search-backend-node@0.6.3-next.1
+ - @backstage/plugin-search-common@0.3.6-next.0
+
+## @backstage/plugin-search-backend-module-pg@0.3.5-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/plugin-search-backend-node@0.6.3-next.1
+ - @backstage/plugin-search-common@0.3.6-next.0
+
+## @backstage/plugin-search-backend-node@0.6.3-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/backend-tasks@0.3.3-next.1
+ - @backstage/plugin-permission-common@0.6.3-next.0
+ - @backstage/plugin-search-common@0.3.6-next.0
+
+## @backstage/plugin-search-common@0.3.6-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-permission-common@0.6.3-next.0
+
+## @backstage/plugin-search-react@0.2.2-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-search-common@0.3.6-next.0
+
+## @backstage/plugin-sentry@0.3.45-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-shortcuts@0.2.8-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/theme@0.2.16-next.0
+
+## @backstage/plugin-sonarqube@0.3.7-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-splunk-on-call@0.3.31-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-stack-overflow@0.1.3-next.1
+
+### Patch Changes
+
+- 52b4f796e3: app-config is now picked up properly.
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/plugin-home@0.4.23-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-search-common@0.3.6-next.0
+
+## @backstage/plugin-stack-overflow-backend@0.1.3-next.0
+
+### Patch Changes
+
+- 52b4f796e3: app-config is now picked up properly.
+- Updated dependencies
+ - @backstage/plugin-search-common@0.3.6-next.0
+
+## @backstage/plugin-tech-insights@0.2.3-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-tech-insights-backend@0.4.2-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/backend-tasks@0.3.3-next.1
+ - @backstage/catalog-client@1.0.4-next.1
+
+## @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.18-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+
+## @backstage/plugin-tech-radar@0.5.14-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/theme@0.2.16-next.0
+
+## @backstage/plugin-techdocs@1.2.1-next.1
+
+### Patch Changes
+
+- 726577958f: Remove the 60% factor from the font size calculation of headers to use the exact size defined in BackstageTheme.
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/integration@1.2.2-next.1
+ - @backstage/integration-react@1.1.2-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+ - @backstage/plugin-search-common@0.3.6-next.0
+ - @backstage/plugin-search-react@0.2.2-next.1
+
+## @backstage/plugin-techdocs-addons-test-utils@1.0.2-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/plugin-catalog@1.3.1-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-techdocs@1.2.1-next.1
+ - @backstage/integration-react@1.1.2-next.1
+ - @backstage/test-utils@1.1.2-next.1
+ - @backstage/plugin-search-react@0.2.2-next.1
+
+## @backstage/plugin-techdocs-module-addons-contrib@1.0.2-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/integration@1.2.2-next.1
+ - @backstage/integration-react@1.1.2-next.1
+
+## @backstage/plugin-todo@0.2.9-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-todo-backend@0.1.31-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/catalog-client@1.0.4-next.1
+ - @backstage/integration@1.2.2-next.1
+
+## @backstage/plugin-user-settings@0.4.6-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/theme@0.2.16-next.0
+
+## @backstage/plugin-vault@0.1.1-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+
+## @backstage/plugin-vault-backend@0.2.0-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/backend-tasks@0.3.3-next.1
+ - @backstage/backend-test-utils@0.1.26-next.1
+
+## @backstage/plugin-xcmetrics@0.2.27-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/theme@0.2.16-next.0
+
+## example-app@0.2.73-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/cli@0.18.0-next.1
+ - @backstage/plugin-apache-airflow@0.2.0-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/plugin-search@0.9.1-next.1
+ - @backstage/plugin-org@0.5.7-next.1
+ - @backstage/plugin-catalog@1.3.1-next.1
+ - @backstage/plugin-home@0.4.23-next.1
+ - @backstage/plugin-stack-overflow@0.1.3-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-techdocs@1.2.1-next.1
+ - @backstage/app-defaults@1.0.4-next.1
+ - @backstage/integration-react@1.1.2-next.1
+ - @backstage/plugin-airbrake@0.3.7-next.1
+ - @backstage/plugin-api-docs@0.8.7-next.1
+ - @backstage/plugin-azure-devops@0.1.23-next.1
+ - @backstage/plugin-badges@0.2.31-next.1
+ - @backstage/plugin-catalog-common@1.0.4-next.0
+ - @backstage/plugin-catalog-graph@0.2.19-next.1
+ - @backstage/plugin-catalog-import@0.8.10-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.1
+ - @backstage/plugin-circleci@0.3.7-next.1
+ - @backstage/plugin-cloudbuild@0.3.7-next.1
+ - @backstage/plugin-code-coverage@0.1.34-next.1
+ - @backstage/plugin-cost-insights@0.11.29-next.1
+ - @backstage/plugin-dynatrace@0.1.1-next.1
+ - @backstage/plugin-explore@0.3.38-next.1
+ - @backstage/plugin-gcalendar@0.3.3-next.1
+ - @backstage/plugin-gcp-projects@0.3.26-next.1
+ - @backstage/plugin-github-actions@0.5.7-next.1
+ - @backstage/plugin-gocd@0.1.13-next.1
+ - @backstage/plugin-graphiql@0.2.39-next.1
+ - @backstage/plugin-jenkins@0.7.6-next.1
+ - @backstage/plugin-kafka@0.3.7-next.1
+ - @backstage/plugin-kubernetes@0.6.7-next.1
+ - @backstage/plugin-lighthouse@0.3.7-next.1
+ - @backstage/plugin-newrelic@0.3.25-next.1
+ - @backstage/plugin-newrelic-dashboard@0.1.15-next.1
+ - @backstage/plugin-pagerduty@0.5.0-next.1
+ - @backstage/plugin-permission-react@0.4.3-next.0
+ - @backstage/plugin-rollbar@0.4.7-next.1
+ - @backstage/plugin-scaffolder@1.4.0-next.1
+ - @backstage/plugin-search-common@0.3.6-next.0
+ - @backstage/plugin-sentry@0.3.45-next.1
+ - @backstage/plugin-shortcuts@0.2.8-next.1
+ - @backstage/plugin-tech-insights@0.2.3-next.1
+ - @backstage/plugin-tech-radar@0.5.14-next.1
+ - @backstage/plugin-techdocs-module-addons-contrib@1.0.2-next.1
+ - @backstage/plugin-todo@0.2.9-next.1
+ - @backstage/plugin-user-settings@0.4.6-next.1
+ - @backstage/plugin-search-react@0.2.2-next.1
+
+## example-backend@0.2.73-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.4.0-next.1
+ - @backstage/plugin-auth-backend@0.15.0-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/plugin-search-backend-module-elasticsearch@0.2.0-next.1
+ - @backstage/plugin-catalog-backend@1.2.1-next.1
+ - @backstage/plugin-techdocs-backend@1.2.0-next.1
+ - example-app@0.2.73-next.1
+ - @backstage/backend-tasks@0.3.3-next.1
+ - @backstage/catalog-client@1.0.4-next.1
+ - @backstage/integration@1.2.2-next.1
+ - @backstage/plugin-app-backend@0.3.34-next.1
+ - @backstage/plugin-auth-node@0.2.3-next.1
+ - @backstage/plugin-badges-backend@0.1.28-next.1
+ - @backstage/plugin-code-coverage-backend@0.1.32-next.1
+ - @backstage/plugin-jenkins-backend@0.1.24-next.1
+ - @backstage/plugin-kafka-backend@0.2.27-next.1
+ - @backstage/plugin-kubernetes-backend@0.7.0-next.1
+ - @backstage/plugin-permission-backend@0.5.9-next.1
+ - @backstage/plugin-permission-common@0.6.3-next.0
+ - @backstage/plugin-permission-node@0.6.3-next.1
+ - @backstage/plugin-scaffolder-backend-module-rails@0.4.2-next.1
+ - @backstage/plugin-search-backend@0.5.4-next.1
+ - @backstage/plugin-search-backend-module-pg@0.3.5-next.1
+ - @backstage/plugin-search-backend-node@0.6.3-next.1
+ - @backstage/plugin-tech-insights-backend@0.4.2-next.1
+ - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.18-next.1
+ - @backstage/plugin-todo-backend@0.1.31-next.1
+
+## techdocs-cli-embedded-app@0.2.72-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/cli@0.18.0-next.1
+ - @backstage/catalog-model@1.1.0-next.1
+ - @backstage/plugin-catalog@1.3.1-next.1
+ - @backstage/theme@0.2.16-next.0
+ - @backstage/plugin-techdocs@1.2.1-next.1
+ - @backstage/app-defaults@1.0.4-next.1
+ - @backstage/integration-react@1.1.2-next.1
+ - @backstage/test-utils@1.1.2-next.1
+
+## @internal/plugin-todo-list@1.0.3-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.6-next.1
+ - @backstage/theme@0.2.16-next.0
+
+## @internal/plugin-todo-list-backend@1.0.3-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.1
+ - @backstage/errors@1.1.0-next.0
+ - @backstage/plugin-auth-node@0.2.3-next.1
+
+## @internal/plugin-todo-list-common@1.0.3-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-permission-common@0.6.3-next.0
diff --git a/docs/releases/v1.4.0-next.2-changelog.md b/docs/releases/v1.4.0-next.2-changelog.md
new file mode 100644
index 0000000000..fe00c648dd
--- /dev/null
+++ b/docs/releases/v1.4.0-next.2-changelog.md
@@ -0,0 +1,1308 @@
+# Release v1.4.0-next.2
+
+## @backstage/catalog-model@1.1.0-next.2
+
+### Minor Changes
+
+- 4cc81372f8: Introduced `GroupDefaultParentEntityPolicy` to set a default group entity parent.
+
+## @backstage/core-components@0.10.0-next.2
+
+### Minor Changes
+
+- 32204fa794: Add `transformLinkUri` and `transformImageUri` to `MarkdownContent`
+
+### Patch Changes
+
+- b4b711bcc2: Fix the EntityLayout header style so that EntityContextMenu button can display in correct shape when user hover on it
+- 15201b1032: Updated dependency `rc-progress` to `3.4.0`.
+- 385389d23c: Updated to remove usage of the `bursts` object in the theme palette
+- Updated dependencies
+ - @backstage/theme@0.2.16-next.1
+
+## @backstage/plugin-catalog@1.4.0-next.2
+
+### Minor Changes
+
+- a274fe38b9: Add hidden title column to catalog and API table to enable filtering by title.
+
+### Patch Changes
+
+- 258057a4b9: Adding ability to customize the "unregister entity" menu item in the entity context menu on the entity page with options 'visible','hidden','disabled'.With this three new options, one can hide the "unregister entity" menu item from the list, disable or keep it enabled.
+
+ The boolean input for "unregister entity" will be deprecated later in favour of the above three options.
+
+- 385389d23c: Updated to remove usage of the `bursts` object in the theme palette
+
+- be26d95141: Added new `EntityProcessingStatusPicker` that will filter for entities with orphans and/or errors.
+
+ If you are using the default Catalog page this picker will be added automatically. For those who have customized their Catalog page you'll need to add this manually by doing something like this:
+
+ ```diff
+ ...
+ import {
+ CatalogFilterLayout,
+ EntityTypePicker,
+ UserListPicker,
+ EntityTagPicker
+ + EntityProcessingStatusPicker,
+ } from '@backstage/plugin-catalog-react';
+ ...
+ export const CustomCatalogPage = ({
+ columns,
+ actions,
+ initiallySelectedFilter = 'owned',
+ }: CatalogPageProps) => {
+ return (
+ ...
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+ ...
+ };
+ ```
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/plugin-search-react@0.2.2-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+ - @backstage/integration-react@1.1.2-next.2
+
+## @backstage/plugin-catalog-backend-module-msgraph@0.4.0-next.1
+
+### Minor Changes
+
+- a145672f0f: Align `msgraph` plugin's entity provider config with other providers. **Deprecated** entity processor as well as previous config.
+
+ You will see warning at the log output until you migrate to the new setup.
+ All deprecated parts will be removed eventually after giving some time to migrate.
+
+ Please find information on how to migrate your current setup to the new one below.
+
+ **Migration Guide:**
+
+ There were two different way on how to use the msgraph plugin: processor or provider.
+
+ Previous registration for the processor:
+
+ ```typescript
+ // packages/backend/src/plugins/catalog.ts
+ builder.addProcessor(
+ MicrosoftGraphOrgReaderProcessor.fromConfig(env.config, {
+ logger: env.logger,
+ // [...]
+ }),
+ );
+ ```
+
+ Previous registration when using the provider:
+
+ ```typescript
+ // packages/backend/src/plugins/catalog.ts
+ builder.addEntityProvider(
+ MicrosoftGraphOrgEntityProvider.fromConfig(env.config, {
+ id: 'https://graph.microsoft.com/v1.0',
+ target: 'https://graph.microsoft.com/v1.0',
+ logger: env.logger,
+ schedule: env.scheduler.createScheduledTaskRunner({
+ frequency: { minutes: 30 },
+ timeout: { minutes: 3 },
+ }),
+ // [...]
+ }),
+ );
+ ```
+
+ Previous configuration as used for both:
+
+ ```yaml
+ # app-config.yaml
+ catalog:
+ processors:
+ microsoftGraphOrg:
+ providers:
+ - target: https://graph.microsoft.com/v1.0
+ # [...]
+ ```
+
+ **Replacement:**
+
+ Please check for the complete documentation of all configuration options (config as well as registration of the provider).
+
+ ```yaml
+ # app-config.yaml
+ catalog:
+ providers:
+ microsoftGraphOrg:
+ # In case you used the deprecated configuration with the entity provider
+ # using the value of `target` will keep the same location key for all
+ providerId: # some stable ID which will be used as part of the location key for all ingested data
+ target: https://graph.microsoft.com/v1.0
+ # [...]
+ ```
+
+ ```typescript
+ // packages/backend/src/plugins/catalog.ts
+ builder.addEntityProvider(
+ MicrosoftGraphOrgEntityProvider.fromConfig(env.config, {
+ logger: env.logger,
+ schedule: env.scheduler.createScheduledTaskRunner({
+ frequency: { minutes: 30 },
+ timeout: { minutes: 3 },
+ }),
+ // [...]
+ }),
+ );
+ ```
+
+ In case you've used multiple entity providers before
+ **and** you had different transformers for each of them
+ you can provide these directly at the one `fromConfig` call
+ by passing a Record with the provider ID as key.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/backend-tasks@0.3.3-next.2
+ - @backstage/plugin-catalog-backend@1.2.1-next.2
+
+## @backstage/plugin-cost-insights-common@0.1.0-next.0
+
+### Minor Changes
+
+- 81dd5ea989: Introduces a new isomorphic @backstage/plugin-cost-insight-common package to contain shared types across all other cost insights packages and modules.
+
+## @backstage/plugin-scaffolder@1.4.0-next.2
+
+### Minor Changes
+
+- d8eb82f447: Add `allowedRepos` `ui:option` to `RepoUrlPicker` component, and move `repoName` field to own component
+
+### Patch Changes
+
+- e2d7b76f43: Upgrade git-url-parse to 12.0.0.
+
+ Motivation for upgrade is transitively upgrading parse-url which is vulnerable
+ to several CVEs detected by Snyk.
+
+ - SNYK-JS-PARSEURL-2935944
+ - SNYK-JS-PARSEURL-2935947
+ - SNYK-JS-PARSEURL-2936249
+
+- 14146703e5: Add `allowArbitraryValues` to `ui:options` in `OwnedEntityPicker`, similar to `allowArbitraryValues` in `EntityPicker`
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/integration@1.2.2-next.2
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+ - @backstage/integration-react@1.1.2-next.2
+
+## @backstage/plugin-scaffolder-backend@1.4.0-next.2
+
+### Minor Changes
+
+- 4baf8a4ece: Update GitLab Merge Request Action to allow source branch to be deleted
+- 2db07887cb: Added two new scaffolder actions: `github:repo:create` and `github:repo:push`
+
+### Patch Changes
+
+- 679b32172e: Updated dependency `knex` to `^2.0.0`.
+
+- e2d7b76f43: Upgrade git-url-parse to 12.0.0.
+
+ Motivation for upgrade is transitively upgrading parse-url which is vulnerable
+ to several CVEs detected by Snyk.
+
+ - SNYK-JS-PARSEURL-2935944
+ - SNYK-JS-PARSEURL-2935947
+ - SNYK-JS-PARSEURL-2936249
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/backend-common@0.14.1-next.2
+ - @backstage/plugin-catalog-backend@1.2.1-next.2
+ - @backstage/integration@1.2.2-next.2
+
+## @backstage/plugin-tech-insights-backend@0.5.0-next.2
+
+### Minor Changes
+
+- 818fa28d71: Allow FactRetrieverRegistry to be injected into buildTechInsightsContext so that we can override default registry implementation.
+
+### Patch Changes
+
+- 679b32172e: Updated dependency `knex` to `^2.0.0`.
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/backend-common@0.14.1-next.2
+ - @backstage/backend-tasks@0.3.3-next.2
+
+## @backstage/app-defaults@1.0.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/theme@0.2.16-next.1
+
+## @backstage/backend-common@0.14.1-next.2
+
+### Patch Changes
+
+- 679b32172e: Updated dependency `knex` to `^2.0.0`.
+
+- e2d7b76f43: Upgrade git-url-parse to 12.0.0.
+
+ Motivation for upgrade is transitively upgrading parse-url which is vulnerable
+ to several CVEs detected by Snyk.
+
+ - SNYK-JS-PARSEURL-2935944
+ - SNYK-JS-PARSEURL-2935947
+ - SNYK-JS-PARSEURL-2936249
+
+- Updated dependencies
+ - @backstage/integration@1.2.2-next.2
+
+## @backstage/backend-tasks@0.3.3-next.2
+
+### Patch Changes
+
+- 679b32172e: Updated dependency `knex` to `^2.0.0`.
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.2
+
+## @backstage/backend-test-utils@0.1.26-next.2
+
+### Patch Changes
+
+- 679b32172e: Updated dependency `knex` to `^2.0.0`.
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.2
+ - @backstage/cli@0.18.0-next.2
+
+## @backstage/cli@0.18.0-next.2
+
+### Patch Changes
+
+- f6b6fb7165: The `test` command now ensures that all IO is flushed before exiting when printing `--help`.
+
+## @backstage/create-app@0.4.29-next.2
+
+### Patch Changes
+
+- f281ad17c0: Adds the ability to define the Backstage app name using a `BACKSTAGE_APP_NAME`
+ environment variable when running `create-app`.
+
+## @backstage/dev-utils@1.0.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+ - @backstage/app-defaults@1.0.4-next.2
+ - @backstage/integration-react@1.1.2-next.2
+
+## @backstage/integration@1.2.2-next.2
+
+### Patch Changes
+
+- e2d7b76f43: Upgrade git-url-parse to 12.0.0.
+
+ Motivation for upgrade is transitively upgrading parse-url which is vulnerable
+ to several CVEs detected by Snyk.
+
+ - SNYK-JS-PARSEURL-2935944
+ - SNYK-JS-PARSEURL-2935947
+ - SNYK-JS-PARSEURL-2936249
+
+## @backstage/integration-react@1.1.2-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/integration@1.2.2-next.2
+
+## @backstage/theme@0.2.16-next.1
+
+### Patch Changes
+
+- ff4f56eb49: **DEPRECATED**: The `bursts` object from `BackstagePaletteAdditions` has been depreciated and will be removed in a future release
+
+ The `genPageTheme` function now includes an optional options object with an optional `fontColor` which defaults to white if not provided.
+
+## @backstage/plugin-adr@0.1.2-next.2
+
+### Patch Changes
+
+- e2d7b76f43: Upgrade git-url-parse to 12.0.0.
+
+ Motivation for upgrade is transitively upgrading parse-url which is vulnerable
+ to several CVEs detected by Snyk.
+
+ - SNYK-JS-PARSEURL-2935944
+ - SNYK-JS-PARSEURL-2935947
+ - SNYK-JS-PARSEURL-2936249
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/plugin-search-react@0.2.2-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+ - @backstage/integration-react@1.1.2-next.2
+
+## @backstage/plugin-airbrake@0.3.7-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+ - @backstage/dev-utils@1.0.4-next.2
+
+## @backstage/plugin-allure@0.1.23-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-analytics-module-ga@0.1.18-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/theme@0.2.16-next.1
+
+## @backstage/plugin-apache-airflow@0.2.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+
+## @backstage/plugin-api-docs@0.8.7-next.2
+
+### Patch Changes
+
+- a274fe38b9: Add hidden title column to catalog and API table to enable filtering by title.
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog@1.4.0-next.2
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-app-backend@0.3.34-next.2
+
+### Patch Changes
+
+- 679b32172e: Updated dependency `knex` to `^2.0.0`.
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.2
+
+## @backstage/plugin-auth-backend@0.15.0-next.2
+
+### Patch Changes
+
+- 8e03db907a: Auth provider now also export createAuthProviderIntegration
+- 679b32172e: Updated dependency `knex` to `^2.0.0`.
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/backend-common@0.14.1-next.2
+
+## @backstage/plugin-azure-devops@0.1.23-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-badges@0.2.31-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-badges-backend@0.1.28-next.2
+
+### Patch Changes
+
+- 58fd5ee9d5: Add missing installation instructions
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/backend-common@0.14.1-next.2
+
+## @backstage/plugin-bazaar@0.1.22-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/plugin-catalog@1.4.0-next.2
+ - @backstage/cli@0.18.0-next.2
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-bazaar-backend@0.1.18-next.1
+
+### Patch Changes
+
+- 679b32172e: Updated dependency `knex` to `^2.0.0`.
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.2
+ - @backstage/backend-test-utils@0.1.26-next.2
+
+## @backstage/plugin-bitrise@0.1.34-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-catalog-backend@1.2.1-next.2
+
+### Patch Changes
+
+- 679b32172e: Updated dependency `knex` to `^2.0.0`.
+
+- e2d7b76f43: Upgrade git-url-parse to 12.0.0.
+
+ Motivation for upgrade is transitively upgrading parse-url which is vulnerable
+ to several CVEs detected by Snyk.
+
+ - SNYK-JS-PARSEURL-2935944
+ - SNYK-JS-PARSEURL-2935947
+ - SNYK-JS-PARSEURL-2936249
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/backend-common@0.14.1-next.2
+ - @backstage/integration@1.2.2-next.2
+
+## @backstage/plugin-catalog-backend-module-openapi@0.1.0-next.1
+
+### Patch Changes
+
+- 4881dc4c84: Updated dependency `openapi-types` to `^12.0.0`.
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/backend-common@0.14.1-next.2
+ - @backstage/plugin-catalog-backend@1.2.1-next.2
+ - @backstage/integration@1.2.2-next.2
+
+## @backstage/plugin-catalog-graph@0.2.19-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-catalog-import@0.8.10-next.2
+
+### Patch Changes
+
+- e2d7b76f43: Upgrade git-url-parse to 12.0.0.
+
+ Motivation for upgrade is transitively upgrading parse-url which is vulnerable
+ to several CVEs detected by Snyk.
+
+ - SNYK-JS-PARSEURL-2935944
+ - SNYK-JS-PARSEURL-2935947
+ - SNYK-JS-PARSEURL-2936249
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/integration@1.2.2-next.2
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+ - @backstage/integration-react@1.1.2-next.2
+
+## @backstage/plugin-catalog-react@1.1.2-next.2
+
+### Patch Changes
+
+- be26d95141: Added new `EntityProcessingStatusPicker` that will filter for entities with orphans and/or errors.
+
+ If you are using the default Catalog page this picker will be added automatically. For those who have customized their Catalog page you'll need to add this manually by doing something like this:
+
+ ```diff
+ ...
+ import {
+ CatalogFilterLayout,
+ EntityTypePicker,
+ UserListPicker,
+ EntityTagPicker
+ + EntityProcessingStatusPicker,
+ } from '@backstage/plugin-catalog-react';
+ ...
+ export const CustomCatalogPage = ({
+ columns,
+ actions,
+ initiallySelectedFilter = 'owned',
+ }: CatalogPageProps) => {
+ return (
+ ...
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+ ...
+ };
+ ```
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/integration@1.2.2-next.2
+
+## @backstage/plugin-circleci@0.3.7-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-cloudbuild@0.3.7-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-code-climate@0.1.7-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-code-coverage@0.1.34-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-code-coverage-backend@0.1.32-next.2
+
+### Patch Changes
+
+- 679b32172e: Updated dependency `knex` to `^2.0.0`.
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/backend-common@0.14.1-next.2
+ - @backstage/integration@1.2.2-next.2
+
+## @backstage/plugin-codescene@0.1.2-next.2
+
+### Patch Changes
+
+- 15201b1032: Updated dependency `rc-progress` to `3.4.0`.
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/theme@0.2.16-next.1
+
+## @backstage/plugin-config-schema@0.1.30-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/theme@0.2.16-next.1
+
+## @backstage/plugin-cost-insights@0.11.29-next.2
+
+### Patch Changes
+
+- 3e032a5de2: Move cost-insights data specific API types (non react) into an @backstage/plugin-cost-insights-common
+ isomorphic package. This allows these types to be shared in any backend packages or other cost-insight
+ modules.
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/plugin-cost-insights-common@0.1.0-next.0
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+
+## @backstage/plugin-dynatrace@0.1.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+
+## @backstage/plugin-explore@0.3.38-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-firehydrant@0.1.24-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-fossa@0.2.39-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-gcalendar@0.3.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/theme@0.2.16-next.1
+
+## @backstage/plugin-gcp-projects@0.3.26-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/theme@0.2.16-next.1
+
+## @backstage/plugin-git-release-manager@0.3.20-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/integration@1.2.2-next.2
+
+## @backstage/plugin-github-actions@0.5.7-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/integration@1.2.2-next.2
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-github-deployments@0.1.38-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/integration@1.2.2-next.2
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+ - @backstage/integration-react@1.1.2-next.2
+
+## @backstage/plugin-github-pull-requests-board@0.1.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/integration@1.2.2-next.2
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-gitops-profiles@0.3.25-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/theme@0.2.16-next.1
+
+## @backstage/plugin-gocd@0.1.13-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-graphiql@0.2.39-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/theme@0.2.16-next.1
+
+## @backstage/plugin-home@0.4.23-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+ - @backstage/plugin-stack-overflow@0.1.3-next.2
+
+## @backstage/plugin-ilert@0.1.33-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-jenkins@0.7.6-next.2
+
+### Patch Changes
+
+- 8747824221: feature: added support for multiple branches to the `JenkinsApi`
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-jenkins-backend@0.1.24-next.2
+
+### Patch Changes
+
+- 8747824221: feature: added support for multiple branches to the `JenkinsApi`
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/backend-common@0.14.1-next.2
+
+## @backstage/plugin-kafka@0.3.7-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-kafka-backend@0.2.27-next.2
+
+### Patch Changes
+
+- 8751667541: Updated dependency `kafkajs` to `^2.0.0`.
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/backend-common@0.14.1-next.2
+
+## @backstage/plugin-kubernetes@0.6.7-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/plugin-kubernetes-common@0.4.0-next.1
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-kubernetes-backend@0.7.0-next.2
+
+### Patch Changes
+
+- 60e5f9fe68: Fixed the lack of `limitranges` as part of the Default Objects to fetch from the kubernetes api
+- Updated dependencies
+ - @backstage/plugin-kubernetes-common@0.4.0-next.1
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/backend-common@0.14.1-next.2
+
+## @backstage/plugin-kubernetes-common@0.4.0-next.1
+
+### Patch Changes
+
+- 60e5f9fe68: Fixed the lack of `limitranges` as part of the Default Objects to fetch from the kubernetes api
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.2
+
+## @backstage/plugin-lighthouse@0.3.7-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-newrelic@0.3.25-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/theme@0.2.16-next.1
+
+## @backstage/plugin-newrelic-dashboard@0.1.15-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-org@0.5.7-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-pagerduty@0.5.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-periskop@0.1.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-rollbar@0.4.7-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-search@0.9.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/plugin-search-react@0.2.2-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-search-backend-module-pg@0.3.5-next.2
+
+### Patch Changes
+
+- 423e3d8e95: **DEPRECATED**: `PgSearchEngine` static `from` has been deprecated and will be removed in a future release. Use static `fromConfig` method to instantiate.
+
+ Added support for highlighting matched terms in search result data
+
+- 679b32172e: Updated dependency `knex` to `^2.0.0`.
+
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.2
+
+## @backstage/plugin-search-react@0.2.2-next.2
+
+### Patch Changes
+
+- 60408ca9d4: Fix search pagination to reset page cursor also when a term is cleared.
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/theme@0.2.16-next.1
+
+## @backstage/plugin-sentry@0.3.45-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-shortcuts@0.2.8-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/theme@0.2.16-next.1
+
+## @backstage/plugin-sonarqube@0.3.7-next.2
+
+### Patch Changes
+
+- 15201b1032: Updated dependency `rc-progress` to `3.4.0`.
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-splunk-on-call@0.3.31-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-stack-overflow@0.1.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-home@0.4.23-next.2
+
+## @backstage/plugin-tech-insights@0.2.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-tech-radar@0.5.14-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/theme@0.2.16-next.1
+
+## @backstage/plugin-techdocs@1.2.1-next.2
+
+### Patch Changes
+
+- e2d7b76f43: Upgrade git-url-parse to 12.0.0.
+
+ Motivation for upgrade is transitively upgrading parse-url which is vulnerable
+ to several CVEs detected by Snyk.
+
+ - SNYK-JS-PARSEURL-2935944
+ - SNYK-JS-PARSEURL-2935947
+ - SNYK-JS-PARSEURL-2936249
+
+- 7739141ab2: Fix: When docs are shown in an entity page under the docs tab the sidebars start overlapping with the header and tabs in the page when you scroll the documentation content.
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/plugin-search-react@0.2.2-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/integration@1.2.2-next.2
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+ - @backstage/integration-react@1.1.2-next.2
+ - @backstage/plugin-techdocs-react@1.0.2-next.1
+
+## @backstage/plugin-techdocs-addons-test-utils@1.0.2-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/plugin-search-react@0.2.2-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-techdocs@1.2.1-next.2
+ - @backstage/plugin-catalog@1.4.0-next.2
+ - @backstage/integration-react@1.1.2-next.2
+ - @backstage/plugin-techdocs-react@1.0.2-next.1
+
+## @backstage/plugin-techdocs-backend@1.2.0-next.2
+
+### Patch Changes
+
+- 679b32172e: Updated dependency `knex` to `^2.0.0`.
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/backend-common@0.14.1-next.2
+ - @backstage/integration@1.2.2-next.2
+ - @backstage/plugin-techdocs-node@1.2.0-next.2
+
+## @backstage/plugin-techdocs-module-addons-contrib@1.0.2-next.2
+
+### Patch Changes
+
+- e2d7b76f43: Upgrade git-url-parse to 12.0.0.
+
+ Motivation for upgrade is transitively upgrading parse-url which is vulnerable
+ to several CVEs detected by Snyk.
+
+ - SNYK-JS-PARSEURL-2935944
+ - SNYK-JS-PARSEURL-2935947
+ - SNYK-JS-PARSEURL-2936249
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/integration@1.2.2-next.2
+ - @backstage/integration-react@1.1.2-next.2
+ - @backstage/plugin-techdocs-react@1.0.2-next.1
+
+## @backstage/plugin-techdocs-node@1.2.0-next.2
+
+### Patch Changes
+
+- e2d7b76f43: Upgrade git-url-parse to 12.0.0.
+
+ Motivation for upgrade is transitively upgrading parse-url which is vulnerable
+ to several CVEs detected by Snyk.
+
+ - SNYK-JS-PARSEURL-2935944
+ - SNYK-JS-PARSEURL-2935947
+ - SNYK-JS-PARSEURL-2936249
+
+- Updated dependencies
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/backend-common@0.14.1-next.2
+ - @backstage/integration@1.2.2-next.2
+
+## @backstage/plugin-techdocs-react@1.0.2-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+
+## @backstage/plugin-todo@0.2.9-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-user-settings@0.4.6-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/theme@0.2.16-next.1
+
+## @backstage/plugin-vault@0.1.1-next.2
+
+### Patch Changes
+
+- 7ee4abdcc9: Added a path notion in addition to secret name to allow to differentiate secrets in sub-paths
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+
+## @backstage/plugin-vault-backend@0.2.0-next.2
+
+### Patch Changes
+
+- 7ee4abdcc9: Added a path notion in addition to secret name to allow to differentiate secrets in sub-paths
+- Updated dependencies
+ - @backstage/backend-common@0.14.1-next.2
+ - @backstage/backend-tasks@0.3.3-next.2
+ - @backstage/backend-test-utils@0.1.26-next.2
+
+## @backstage/plugin-xcmetrics@0.2.27-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/theme@0.2.16-next.1
+
+## example-app@0.2.73-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-cost-insights@0.11.29-next.2
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/plugin-scaffolder@1.4.0-next.2
+ - @backstage/plugin-jenkins@0.7.6-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/plugin-search-react@0.2.2-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-catalog-import@0.8.10-next.2
+ - @backstage/plugin-techdocs@1.2.1-next.2
+ - @backstage/plugin-techdocs-module-addons-contrib@1.0.2-next.2
+ - @backstage/plugin-api-docs@0.8.7-next.2
+ - @backstage/plugin-catalog@1.4.0-next.2
+ - @backstage/cli@0.18.0-next.2
+ - @backstage/plugin-catalog-react@1.1.2-next.2
+ - @backstage/app-defaults@1.0.4-next.2
+ - @backstage/integration-react@1.1.2-next.2
+ - @backstage/plugin-airbrake@0.3.7-next.2
+ - @backstage/plugin-apache-airflow@0.2.0-next.2
+ - @backstage/plugin-azure-devops@0.1.23-next.2
+ - @backstage/plugin-badges@0.2.31-next.2
+ - @backstage/plugin-catalog-graph@0.2.19-next.2
+ - @backstage/plugin-circleci@0.3.7-next.2
+ - @backstage/plugin-cloudbuild@0.3.7-next.2
+ - @backstage/plugin-code-coverage@0.1.34-next.2
+ - @backstage/plugin-dynatrace@0.1.1-next.2
+ - @backstage/plugin-explore@0.3.38-next.2
+ - @backstage/plugin-gcalendar@0.3.3-next.2
+ - @backstage/plugin-gcp-projects@0.3.26-next.2
+ - @backstage/plugin-github-actions@0.5.7-next.2
+ - @backstage/plugin-gocd@0.1.13-next.2
+ - @backstage/plugin-graphiql@0.2.39-next.2
+ - @backstage/plugin-home@0.4.23-next.2
+ - @backstage/plugin-kafka@0.3.7-next.2
+ - @backstage/plugin-kubernetes@0.6.7-next.2
+ - @backstage/plugin-lighthouse@0.3.7-next.2
+ - @backstage/plugin-newrelic@0.3.25-next.2
+ - @backstage/plugin-newrelic-dashboard@0.1.15-next.2
+ - @backstage/plugin-org@0.5.7-next.2
+ - @backstage/plugin-pagerduty@0.5.0-next.2
+ - @backstage/plugin-rollbar@0.4.7-next.2
+ - @backstage/plugin-search@0.9.1-next.2
+ - @backstage/plugin-sentry@0.3.45-next.2
+ - @backstage/plugin-shortcuts@0.2.8-next.2
+ - @backstage/plugin-stack-overflow@0.1.3-next.2
+ - @backstage/plugin-tech-insights@0.2.3-next.2
+ - @backstage/plugin-tech-radar@0.5.14-next.2
+ - @backstage/plugin-techdocs-react@1.0.2-next.1
+ - @backstage/plugin-todo@0.2.9-next.2
+ - @backstage/plugin-user-settings@0.4.6-next.2
+
+## example-backend@0.2.73-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-kubernetes-backend@0.7.0-next.2
+ - @backstage/plugin-tech-insights-backend@0.5.0-next.2
+ - @backstage/plugin-jenkins-backend@0.1.24-next.2
+ - @backstage/plugin-search-backend-module-pg@0.3.5-next.2
+ - @backstage/plugin-scaffolder-backend@1.4.0-next.2
+ - @backstage/plugin-auth-backend@0.15.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/plugin-kafka-backend@0.2.27-next.2
+ - @backstage/backend-common@0.14.1-next.2
+ - @backstage/backend-tasks@0.3.3-next.2
+ - @backstage/plugin-app-backend@0.3.34-next.2
+ - @backstage/plugin-catalog-backend@1.2.1-next.2
+ - @backstage/plugin-code-coverage-backend@0.1.32-next.2
+ - @backstage/plugin-techdocs-backend@1.2.0-next.2
+ - @backstage/plugin-badges-backend@0.1.28-next.2
+ - @backstage/integration@1.2.2-next.2
+ - example-app@0.2.73-next.2
+
+## techdocs-cli-embedded-app@0.2.72-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/catalog-model@1.1.0-next.2
+ - @backstage/theme@0.2.16-next.1
+ - @backstage/plugin-techdocs@1.2.1-next.2
+ - @backstage/plugin-catalog@1.4.0-next.2
+ - @backstage/cli@0.18.0-next.2
+ - @backstage/app-defaults@1.0.4-next.2
+ - @backstage/integration-react@1.1.2-next.2
+ - @backstage/plugin-techdocs-react@1.0.2-next.1
+
+## @internal/plugin-todo-list@1.0.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.10.0-next.2
+ - @backstage/theme@0.2.16-next.1
diff --git a/microsite/data/on-demand/20211117-01.yaml b/microsite/data/on-demand/20211117-1.yaml
similarity index 100%
rename from microsite/data/on-demand/20211117-01.yaml
rename to microsite/data/on-demand/20211117-1.yaml
diff --git a/microsite/data/on-demand/20211118-01.yaml b/microsite/data/on-demand/20211118-1.yaml
similarity index 100%
rename from microsite/data/on-demand/20211118-01.yaml
rename to microsite/data/on-demand/20211118-1.yaml
diff --git a/microsite/data/on-demand/20211215-01.yaml b/microsite/data/on-demand/20211215-1.yaml
similarity index 100%
rename from microsite/data/on-demand/20211215-01.yaml
rename to microsite/data/on-demand/20211215-1.yaml
diff --git a/microsite/data/on-demand/20211216-01.yaml b/microsite/data/on-demand/20211216-1.yaml
similarity index 100%
rename from microsite/data/on-demand/20211216-01.yaml
rename to microsite/data/on-demand/20211216-1.yaml
diff --git a/microsite/data/on-demand/20220216-01.yaml b/microsite/data/on-demand/20220216-1.yaml
similarity index 100%
rename from microsite/data/on-demand/20220216-01.yaml
rename to microsite/data/on-demand/20220216-1.yaml
diff --git a/microsite/data/on-demand/20220223-01.yaml b/microsite/data/on-demand/20220223-1.yaml
similarity index 100%
rename from microsite/data/on-demand/20220223-01.yaml
rename to microsite/data/on-demand/20220223-1.yaml
diff --git a/microsite/data/on-demand/20220518-01.yaml b/microsite/data/on-demand/20220518-1.yaml
similarity index 100%
rename from microsite/data/on-demand/20220518-01.yaml
rename to microsite/data/on-demand/20220518-1.yaml
diff --git a/microsite/data/on-demand/20220525.yaml b/microsite/data/on-demand/20220525-1.yaml
similarity index 100%
rename from microsite/data/on-demand/20220525.yaml
rename to microsite/data/on-demand/20220525-1.yaml
diff --git a/microsite/data/on-demand/20220615-01.yaml b/microsite/data/on-demand/20220615-1.yaml
similarity index 97%
rename from microsite/data/on-demand/20220615-01.yaml
rename to microsite/data/on-demand/20220615-1.yaml
index 8ac660a71c..fb296dd6ce 100644
--- a/microsite/data/on-demand/20220615-01.yaml
+++ b/microsite/data/on-demand/20220615-1.yaml
@@ -1,7 +1,7 @@
---
title: Adopters Community Sessions
date: June 15, 2022
-category: Upcoming
+category: Meetup
description: Adopters Community Session ✨. It's the monthly meetup where we all come together to listen to the latest maintainer updates, learn from each other about adopting, share exciting new demos or discuss any relevant topic like developer effectiveness, developer experience, developer portals, etc.
youtubeUrl: https://youtu.be/aKZnjnE5Wy8
youtubeImgUrl: https://backstage.io/img/b-sessions.png
diff --git a/microsite/data/on-demand/20220622-1.yaml b/microsite/data/on-demand/20220622-1.yaml
index 0bbd53525a..27634609cb 100644
--- a/microsite/data/on-demand/20220622-1.yaml
+++ b/microsite/data/on-demand/20220622-1.yaml
@@ -1,9 +1,9 @@
---
title: Contributor Community Sessions
date: June 22, 2022
-category: Upcoming
+category: Meetup
description: Join the maintainers and contributors for the Contributor Community Sessions
-youtubeUrl: https://youtu.be/aKZnjnE5Wy8
+youtubeUrl: https://youtu.be/E-jWqWXBxUY
youtubeImgUrl: https://backstage.io/img/b-sessions.png
rsvpUrl: https://calendar.google.com/calendar/embed?src=c_qup9gbhn9sqpuao6trttd8mk5s@group.calendar.google.com
eventUrl: https://github.com/backstage/community/issues/49
diff --git a/microsite/data/on-demand/20220720-1.yaml b/microsite/data/on-demand/20220720-1.yaml
new file mode 100644
index 0000000000..a1f51859f4
--- /dev/null
+++ b/microsite/data/on-demand/20220720-1.yaml
@@ -0,0 +1,9 @@
+---
+title: Adopters Community Sessions
+date: July 20, 2022
+category: Upcoming
+description: Adopters Community Session ✨. It's the monthly meetup where we all come together to listen to the latest maintainer updates, learn from each other about adopting, share exciting new demos or discuss any relevant topic like developer effectiveness, developer experience, developer portals, etc.
+youtubeUrl: https://youtu.be/4VFNlPxWcx8
+youtubeImgUrl: https://backstage.io/img/b-sessions.png
+rsvpUrl: https://calendar.google.com/calendar/embed?src=c_qup9gbhn9sqpuao6trttd8mk5s@group.calendar.google.com
+eventUrl: https://github.com/backstage/community/issues/52
diff --git a/microsite/data/on-demand/20220727-1.yaml b/microsite/data/on-demand/20220727-1.yaml
new file mode 100644
index 0000000000..5f7712596f
--- /dev/null
+++ b/microsite/data/on-demand/20220727-1.yaml
@@ -0,0 +1,9 @@
+---
+title: Contributor Community Sessions
+date: July 27, 2022
+category: Upcoming
+description: Join the maintainers and contributors for the Contributor Community Sessions
+youtubeUrl: https://youtu.be/4VFNlPxWcx8
+youtubeImgUrl: https://backstage.io/img/b-sessions.png
+rsvpUrl: https://calendar.google.com/calendar/embed?src=c_qup9gbhn9sqpuao6trttd8mk5s@group.calendar.google.com
+eventUrl: https://github.com/backstage/community/issues/52
diff --git a/microsite/data/plugins/aws-proton.yaml b/microsite/data/plugins/aws-proton.yaml
new file mode 100644
index 0000000000..022b553b24
--- /dev/null
+++ b/microsite/data/plugins/aws-proton.yaml
@@ -0,0 +1,9 @@
+---
+title: AWS Proton
+author: Amazon Web Services
+authorUrl: https://aws.amazon.com/
+category: Infrastructure
+description: Create and view AWS Proton services for your components in Backstage.
+documentation: https://github.com/awslabs/aws-proton-plugins-for-backstage#readme
+iconUrl: https://github.com/awslabs/aws-proton-plugins-for-backstage/blob/main/docs/images/proton-logo.png?raw=true
+npmPackageName: '@aws/aws-proton-plugin-for-backstage'
diff --git a/microsite/data/plugins/dora-metrics.yaml b/microsite/data/plugins/dora-metrics.yaml
new file mode 100644
index 0000000000..b94499e324
--- /dev/null
+++ b/microsite/data/plugins/dora-metrics.yaml
@@ -0,0 +1,9 @@
+---
+title: DORA Metrics
+author: Okay
+authorUrl: https://www.okayhq.com
+category: Metrics
+description: Embed dashboards (like DORA metrics) in your team or service pages from any dev tools (including Github, Gitlab, Jira, Argo, CircleCI, Buildkite, Pagerduty, Rollbar, Sentry, etc).
+documentation: https://github.com/OkayHQ/backstage-plugin
+iconUrl: img/okay.png
+npmPackageName: '@okayhq/backstage-plugin'
diff --git a/microsite/data/plugins/gke-usage.yaml b/microsite/data/plugins/gke-usage.yaml
index e092f84973..9668b18fdf 100644
--- a/microsite/data/plugins/gke-usage.yaml
+++ b/microsite/data/plugins/gke-usage.yaml
@@ -5,7 +5,7 @@ authorUrl: https://bestsellerit.com
category: Discovery
description: This plugin will show you the cost and resource usage of your application within Google Kubernetes Engine (GKE).
documentation: https://github.com/BESTSELLER/backstage-plugin-gkeusage/blob/master/README.md
-iconUrl: https://bestsellerit.com/img/google-container-engine_avatar.svg
+iconUrl: img/gke-logo.png
npmPackageName: '@bestsellerit/backstage-plugin-gkeusage'
tags:
- gke
diff --git a/microsite/data/plugins/harbor.yaml b/microsite/data/plugins/harbor.yaml
index 9023e0c434..f959613d4c 100644
--- a/microsite/data/plugins/harbor.yaml
+++ b/microsite/data/plugins/harbor.yaml
@@ -5,7 +5,7 @@ authorUrl: https://bestsellerit.com
category: Discovery
description: This plugin will show you information about Docker images within the Harbor cloud native registry.
documentation: https://github.com/BESTSELLER/backstage-plugin-harbor/blob/master/README.md
-iconUrl: https://bestsellerit.com/img/terraform-harbor/goharbor.jpeg
+iconUrl: https://raw.githubusercontent.com/cncf/artwork/master/projects/harbor/icon/color/harbor-icon-color.svg
npmPackageName: '@bestsellerit/backstage-plugin-harbor'
tags:
- goharbor
diff --git a/microsite/data/plugins/humanitec.yaml b/microsite/data/plugins/humanitec.yaml
new file mode 100644
index 0000000000..bd5dec9dc6
--- /dev/null
+++ b/microsite/data/plugins/humanitec.yaml
@@ -0,0 +1,11 @@
+---
+title: Humanitec Platform Orchestrator
+author: Frontside
+authorUrl: 'https://frontside.com'
+category: Deployment # A single category e.g. CI, Machine Learning, Services, Monitoring
+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
+iconUrl: img/humanitec-logo.png
+npmPackageName: '@frontside/backstage-plugin-humanitec'
diff --git a/microsite/data/plugins/rootly.yaml b/microsite/data/plugins/rootly.yaml
new file mode 100644
index 0000000000..c1769f637a
--- /dev/null
+++ b/microsite/data/plugins/rootly.yaml
@@ -0,0 +1,9 @@
+---
+title: Rootly
+author: Rootly
+authorUrl: https://rootly.com/
+category: Incident Management
+description: Import your Backstage entities into Rootly services and view incidents & analytics.
+documentation: https://github.com/rootlyhq/backstage-plugin/blob/master/README.md
+iconUrl: https://raw.githubusercontent.com/rootlyhq/backstage-plugin/master/docs/logo.png
+npmPackageName: '@rootly/backstage-plugin'
diff --git a/microsite/data/plugins/stack-overflow.yaml b/microsite/data/plugins/stack-overflow.yaml
new file mode 100644
index 0000000000..0d734446d7
--- /dev/null
+++ b/microsite/data/plugins/stack-overflow.yaml
@@ -0,0 +1,9 @@
+---
+title: Stack Overflow
+author: Spotify
+authorUrl: https://github.com/spotify
+category: Discovery
+description: Provides Stack Overflow specific functionality that can be used in different ways (e.g. for homepage and search) to compose your Backstage App.
+documentation: https://github.com/backstage/backstage/blob/master/plugins/stack-overflow
+iconUrl: img/stack-overflow-logo.svg
+npmPackageName: '@backstage/plugin-stack-overflow'
diff --git a/microsite/pages/en/community.js b/microsite/pages/en/community.js
index 26366b25df..3d79c82f93 100644
--- a/microsite/pages/en/community.js
+++ b/microsite/pages/en/community.js
@@ -8,6 +8,30 @@
const React = require('react');
const Components = require(`${process.cwd()}/core/Components.js`);
const Block = Components.Block;
+const BulletLine = Components.BulletLine;
+
+const PARTNERS = [
+ {
+ name: 'Frontside Software',
+ url: 'https://frontside.com/backstage/',
+ logo: 'img/partner-logo-frontside.png',
+ },
+ {
+ name: 'Roadie',
+ url: 'https://roadie.io/',
+ logo: 'img/partner-logo-roadie.png',
+ },
+ {
+ name: 'ThoughtWorks',
+ url: 'https://www.thoughtworks.com',
+ logo: 'img/partner-logo-thoughtworks.png',
+ },
+ {
+ name: 'VMWare',
+ url: 'https://www.vmware.com',
+ logo: 'img/partner-logo-vmware.png',
+ },
+];
const Background = props => {
const { config: siteConfig } = props;
@@ -17,14 +41,11 @@ const Background = props => {
- Backstage Community
-
-
+ Backstage Community
- What's the use of having fun if you can't share it? Exactly. Join
- the vibrant community around the Backstage project. Be it on
- GitHub, social media, Discord... You'll find a welcoming
- environment. To ensure this, we follow the{' '}
+ Join the vibrant community around Backstage through social media
+ and different meetups. To ensure that you have a welcoming
+ environment, we follow{' '}
{' '}
CNCF Code of Conduct
@@ -32,110 +53,110 @@ const Background = props => {
in everything we do.
-
+
- Main community channels
- - Chat and get support on our{' '}
- Discord
- - Get into contributing with the{' '}
-
- Good First Issues
-
- - Subscribe to the{' '}
-
- Community newsletter
-
- - Join the{' '}
-
- Twitter community
-
-
+
+ Get started in our community!
+
+
+
+
+ Chat and get support on our{' '}
+ Discord
+
+