Merge branch 'master' of https://github.com/backstage/backstage into master-code-3
This commit is contained in:
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/create-app': patch
|
||||
---
|
||||
|
||||
Added `MyGroupsSidebarItem` to the sidebar in the `create-app` template
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
'@backstage/backend-plugin-api': patch
|
||||
'@backstage/backend-defaults': patch
|
||||
---
|
||||
|
||||
Added a new Root Health Service which adds new endpoints for health checks.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder': minor
|
||||
---
|
||||
|
||||
Use virtualization with `EntityPicker` as done earlier with `MultiEntityPicker` to fix performance issues with large data sets. `VirtualizedListbox` extracted into reusable component.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-techdocs': patch
|
||||
---
|
||||
|
||||
Fixed an issue that was causing techdocs pages unnecessarily re-render on navigate.
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
'@backstage/backend-test-utils': patch
|
||||
'@backstage/backend-defaults': patch
|
||||
'@backstage/backend-app-api': patch
|
||||
---
|
||||
|
||||
The `ServiceFactoryTest.get` method was deprecated and the `ServiceFactoryTest.getSubject` should be used instead. The `getSubject` method has the same behavior, but has a better method name to indicate that the service instance returned is the subject currently being tested.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-auth-backend-module-atlassian-provider': patch
|
||||
---
|
||||
|
||||
Fix several issues with the Atlassian auth provider (type definition, profile url, profile transformation, scopes)
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/backend-common': patch
|
||||
---
|
||||
|
||||
Deprecate legacy status check factory, handler and types.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-msgraph': patch
|
||||
---
|
||||
|
||||
Adds a dynamic provider for the plugin-catalog-backend-module-msgraph. Configuration is now runtime configurable through the ProviderConfigTransformer.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-techdocs-react': patch
|
||||
---
|
||||
|
||||
Resolved the issue where changes in TechDoc add-ons, including the TextSize add-on, were not reapplying during navigation
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
'@backstage/backend-defaults': minor
|
||||
'@backstage/backend-app-api': minor
|
||||
---
|
||||
|
||||
**BREAKING**: Removed the depreacted `getPath` option from `httpRouterServiceFactory`, as well as the `HttpRouterFactoryOptions` type.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/create-app': patch
|
||||
---
|
||||
|
||||
Bumped create-app version.
|
||||
@@ -1,8 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-ldap': patch
|
||||
'@backstage/backend-plugin-api': patch
|
||||
'@backstage/backend-defaults': patch
|
||||
'@backstage/backend-tasks': patch
|
||||
---
|
||||
|
||||
Fix bug where ISO durations could no longer be used for schedules
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
---
|
||||
|
||||
Updated `catalog:write` scaffolder action to show correct file path location in log message
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-github': patch
|
||||
---
|
||||
|
||||
Fixed bug resulting from missing required owner and repo arguments in `getEnvironmentPublicKey` in action `github:environment:create`.
|
||||
|
||||
Adding environment secrets now works as expected.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/core-components': patch
|
||||
---
|
||||
|
||||
Fixed bug where `<Select>` component with empty string as placeholder gave an error
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-techdocs': patch
|
||||
---
|
||||
|
||||
Improve default sorting of docs table
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-techdocs-backend': patch
|
||||
'@backstage/plugin-techdocs-node': patch
|
||||
---
|
||||
|
||||
Adds extension point for publishers to the techdocs backend
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch
|
||||
'@backstage/plugin-scaffolder-backend-module-gitlab': patch
|
||||
'@backstage/plugin-scaffolder-backend-module-rails': patch
|
||||
---
|
||||
|
||||
Updated configuration instructions
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-bitbucket-server': patch
|
||||
---
|
||||
|
||||
Instead of using hardcoded `targetBranch` now fetch the default branch from Bitbucket repository.
|
||||
This prevents from errors when no `targetBranch` is provided and the default repository branch is different from `master`, for example: `main`.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/create-app': patch
|
||||
---
|
||||
|
||||
Added the Catalog logs module to the `create-app` template
|
||||
@@ -1,15 +0,0 @@
|
||||
---
|
||||
'@backstage/core-app-api': minor
|
||||
'@backstage/frontend-app-api': patch
|
||||
---
|
||||
|
||||
Allow for the disabling of external routes through config, which was rendered impossible after the introduction of default targets.
|
||||
|
||||
```yaml
|
||||
app:
|
||||
routes:
|
||||
bindings:
|
||||
# This has the effect of removing the button for registering new
|
||||
# catalog entities in the scaffolder template list view
|
||||
scaffolder.registerComponent: false
|
||||
```
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-org': patch
|
||||
---
|
||||
|
||||
The `useGetEntities` hook could result in requests to `/api/catalog/entities` where the headers exceed the default maximum Node.js header size of 16KB. The hook logic has been adjusted to batch the requests.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-gitlab': patch
|
||||
---
|
||||
|
||||
The Gitlab configuration supports an additional optional boolean key `catalog.providers.gitlab.<your-org>.restrictUsersToGroup`. Setting this to `true` will make Backstage only import users from the group defined in the `group` key, instead of all users in the organisation (self-hosted) or of the root group (SaaS). It will default to false, keeping the original implementation intact, when not explicitly set.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/backend-test-utils': patch
|
||||
---
|
||||
|
||||
The function `isDockerDisabledForTests` is deprecated and will no longer be exported in the near future as it should only be used internally.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
---
|
||||
|
||||
enable resizing of the task log stream viewer
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-ldap': minor
|
||||
---
|
||||
|
||||
**BREAKING**: `readLdapOrg` and the `LdapProviderConfig` type now always accept arrays of user and group configs, not just single items.
|
||||
|
||||
Added support for single ldap catalog provider to provide list and undefined user and group bindings next to standard single one.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/core-app-api': patch
|
||||
---
|
||||
|
||||
Updated config schema to support app.routes.bindings
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/integration': minor
|
||||
---
|
||||
|
||||
Add support for `token` for `bitbucketCloud` integration
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-react': patch
|
||||
'@backstage/plugin-catalog': patch
|
||||
---
|
||||
|
||||
Support i18n for catalog and catalog-react plugins
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
- remove unused dependencies `winston` and `yn` from the template of backend plugins;
|
||||
- update `msw` to version `2.3.1` in the template of backend plugins;
|
||||
starting with v1 and switching later to v2 is tedious and not straight forward; it's easier to start with v2;
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Updated the scaffolding output message for `plugin-common` in `backstage-cli`. Now, when executing `backstage-cli new` to create a new `plugin-common` package, the output message accurately reflects the action by displaying `Creating common plugin package...` instead of the previous, less accurate `Creating backend plugin...`.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Only bootstrap global-agent if it's actually being used
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Fix issue with CLI that was preventing upgrading from 1.28
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder': minor
|
||||
---
|
||||
|
||||
Use virtualization with `MultiEntityPicker`. Fixes performance issues with large data sets.
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-azure': patch
|
||||
'@backstage/plugin-scaffolder-node': patch
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
---
|
||||
|
||||
Fixed a bug where the `RepoUrlPicker` would still require the `owner` field for `azure`
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
'@backstage/backend-common': patch
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Update default backend plugin created by the cli to use non-deprecated error handling middleware
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
---
|
||||
|
||||
Added a documentation how to use checkpoints
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-bitbucket-cloud': patch
|
||||
'@backstage/plugin-bitbucket-cloud-common': patch
|
||||
---
|
||||
|
||||
Add support for `autocomplete` handler to provide autocomplete options for `RepoUrlPicker`
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-org': patch
|
||||
---
|
||||
|
||||
Added `relationType` property to EntityMembersListCard component that allows for display users related to a group via some other relationship aside from `memberOf`.
|
||||
|
||||
Also, as a side effect, the `relationsType` property has been deprecated in favor of a more accurately named `relationAggregation` property.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-react': patch
|
||||
---
|
||||
|
||||
Make EntityOwnerPicker display metadata.title or spec.profile.displayName for mode=only-owners instead of metadata.name
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-techdocs': patch
|
||||
---
|
||||
|
||||
Fix double scrollbar bug in reader
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-notifications': patch
|
||||
---
|
||||
|
||||
The toolbar on the Notifications page is hidden when there are no listed notifications.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-aws': patch
|
||||
---
|
||||
|
||||
Export `defaultEksClusterEntityTransformer` to allow library consumers to layer additional changes on top of the default transformer.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/backend-common': patch
|
||||
---
|
||||
|
||||
Add dependencies that are needed by cross-imports from backend-defaults
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-techdocs-node': patch
|
||||
---
|
||||
|
||||
Bumps default version of techdocs docker image to latest
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/core-components': patch
|
||||
---
|
||||
|
||||
Modified the `Select` component to take in a `data-testid` parameter ensuring backwards compatibility with default value corresponding to previously hardcoded `data-testid` of "select".
|
||||
@@ -1,30 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-github': patch
|
||||
---
|
||||
|
||||
Adds support for `repository` events.
|
||||
|
||||
The provider adds a subscription to the topic `github.repository`.
|
||||
|
||||
Hereby, it supports events of type `repository` with actions
|
||||
|
||||
- `archived`
|
||||
- `deleted`
|
||||
- `edited`
|
||||
- `renamed`
|
||||
- `transferred`
|
||||
- `unarchived`
|
||||
|
||||
Actions skipped as they don't require entity changes:
|
||||
|
||||
- `created`
|
||||
- `privatized`
|
||||
- `publicized`
|
||||
|
||||
If the config option `validateLocationsExist` is enabled, an API request
|
||||
is necessary and will be executed.
|
||||
This affects the actions `renamed`, `transferred`, and `unarchive`
|
||||
of event type `repository`.
|
||||
|
||||
Catalog entities related to the `GithubEntityProvider` instance will be adjusted
|
||||
according to action and its meaning for them.
|
||||
@@ -1,258 +0,0 @@
|
||||
{
|
||||
"mode": "pre",
|
||||
"tag": "next",
|
||||
"initialVersions": {
|
||||
"example-app": "0.2.98",
|
||||
"@backstage/app-defaults": "1.5.6",
|
||||
"example-app-next": "0.0.12",
|
||||
"app-next-example-plugin": "0.0.12",
|
||||
"example-backend": "0.0.27",
|
||||
"@backstage/backend-app-api": "0.7.6",
|
||||
"@backstage/backend-common": "0.23.0",
|
||||
"@backstage/backend-defaults": "0.3.0",
|
||||
"@backstage/backend-dev-utils": "0.1.4",
|
||||
"@backstage/backend-dynamic-feature-service": "0.2.11",
|
||||
"example-backend-legacy": "0.2.99",
|
||||
"@backstage/backend-openapi-utils": "0.1.12",
|
||||
"@backstage/backend-plugin-api": "0.6.19",
|
||||
"@backstage/backend-tasks": "0.5.24",
|
||||
"@backstage/backend-test-utils": "0.4.0",
|
||||
"@backstage/catalog-client": "1.6.5",
|
||||
"@backstage/catalog-model": "1.5.0",
|
||||
"@backstage/cli": "0.26.7",
|
||||
"@backstage/cli-common": "0.1.14",
|
||||
"@backstage/cli-node": "0.2.6",
|
||||
"@backstage/codemods": "0.1.49",
|
||||
"@backstage/config": "1.2.0",
|
||||
"@backstage/config-loader": "1.8.1",
|
||||
"@backstage/core-app-api": "1.12.6",
|
||||
"@backstage/core-compat-api": "0.2.6",
|
||||
"@backstage/core-components": "0.14.8",
|
||||
"@backstage/core-plugin-api": "1.9.3",
|
||||
"@backstage/create-app": "0.5.16",
|
||||
"@backstage/dev-utils": "1.0.33",
|
||||
"e2e-test": "0.2.17",
|
||||
"@backstage/e2e-test-utils": "0.1.1",
|
||||
"@backstage/errors": "1.2.4",
|
||||
"@backstage/eslint-plugin": "0.1.8",
|
||||
"@backstage/frontend-app-api": "0.7.1",
|
||||
"@backstage/frontend-plugin-api": "0.6.6",
|
||||
"@backstage/frontend-test-utils": "0.1.8",
|
||||
"@backstage/integration": "1.12.0",
|
||||
"@backstage/integration-aws-node": "0.1.12",
|
||||
"@backstage/integration-react": "1.1.28",
|
||||
"@backstage/release-manifests": "0.0.11",
|
||||
"@backstage/repo-tools": "0.9.1",
|
||||
"@techdocs/cli": "1.8.12",
|
||||
"techdocs-cli-embedded-app": "0.2.97",
|
||||
"@backstage/test-utils": "1.5.6",
|
||||
"@backstage/theme": "0.5.6",
|
||||
"@backstage/types": "1.1.1",
|
||||
"@backstage/version-bridge": "1.0.8",
|
||||
"yarn-plugin-backstage": "0.0.1",
|
||||
"@backstage/plugin-api-docs": "0.11.6",
|
||||
"@backstage/plugin-api-docs-module-protoc-gen-doc": "0.1.7",
|
||||
"@backstage/plugin-app-backend": "0.3.68",
|
||||
"@backstage/plugin-app-node": "0.1.19",
|
||||
"@backstage/plugin-app-visualizer": "0.1.7",
|
||||
"@backstage/plugin-auth-backend": "0.22.6",
|
||||
"@backstage/plugin-auth-backend-module-atlassian-provider": "0.2.0",
|
||||
"@backstage/plugin-auth-backend-module-aws-alb-provider": "0.1.11",
|
||||
"@backstage/plugin-auth-backend-module-azure-easyauth-provider": "0.1.2",
|
||||
"@backstage/plugin-auth-backend-module-bitbucket-provider": "0.1.2",
|
||||
"@backstage/plugin-auth-backend-module-cloudflare-access-provider": "0.1.2",
|
||||
"@backstage/plugin-auth-backend-module-gcp-iap-provider": "0.2.14",
|
||||
"@backstage/plugin-auth-backend-module-github-provider": "0.1.16",
|
||||
"@backstage/plugin-auth-backend-module-gitlab-provider": "0.1.16",
|
||||
"@backstage/plugin-auth-backend-module-google-provider": "0.1.16",
|
||||
"@backstage/plugin-auth-backend-module-guest-provider": "0.1.5",
|
||||
"@backstage/plugin-auth-backend-module-microsoft-provider": "0.1.14",
|
||||
"@backstage/plugin-auth-backend-module-oauth2-provider": "0.2.0",
|
||||
"@backstage/plugin-auth-backend-module-oauth2-proxy-provider": "0.1.12",
|
||||
"@backstage/plugin-auth-backend-module-oidc-provider": "0.2.0",
|
||||
"@backstage/plugin-auth-backend-module-okta-provider": "0.0.12",
|
||||
"@backstage/plugin-auth-backend-module-onelogin-provider": "0.1.0",
|
||||
"@backstage/plugin-auth-backend-module-pinniped-provider": "0.1.13",
|
||||
"@backstage/plugin-auth-backend-module-vmware-cloud-provider": "0.2.0",
|
||||
"@backstage/plugin-auth-node": "0.4.14",
|
||||
"@backstage/plugin-auth-react": "0.1.3",
|
||||
"@backstage/plugin-bitbucket-cloud-common": "0.2.20",
|
||||
"@backstage/plugin-catalog": "1.21.0",
|
||||
"@backstage/plugin-catalog-backend": "1.23.0",
|
||||
"@backstage/plugin-catalog-backend-module-aws": "0.3.14",
|
||||
"@backstage/plugin-catalog-backend-module-azure": "0.1.39",
|
||||
"@backstage/plugin-catalog-backend-module-backstage-openapi": "0.2.2",
|
||||
"@backstage/plugin-catalog-backend-module-bitbucket-cloud": "0.2.6",
|
||||
"@backstage/plugin-catalog-backend-module-bitbucket-server": "0.1.33",
|
||||
"@backstage/plugin-catalog-backend-module-gcp": "0.1.20",
|
||||
"@backstage/plugin-catalog-backend-module-gerrit": "0.1.36",
|
||||
"@backstage/plugin-catalog-backend-module-github": "0.6.2",
|
||||
"@backstage/plugin-catalog-backend-module-github-org": "0.1.14",
|
||||
"@backstage/plugin-catalog-backend-module-gitlab": "0.3.18",
|
||||
"@backstage/plugin-catalog-backend-module-gitlab-org": "0.0.2",
|
||||
"@backstage/plugin-catalog-backend-module-incremental-ingestion": "0.4.24",
|
||||
"@backstage/plugin-catalog-backend-module-ldap": "0.6.0",
|
||||
"@backstage/plugin-catalog-backend-module-msgraph": "0.5.27",
|
||||
"@backstage/plugin-catalog-backend-module-openapi": "0.1.37",
|
||||
"@backstage/plugin-catalog-backend-module-puppetdb": "0.1.25",
|
||||
"@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "0.1.17",
|
||||
"@backstage/plugin-catalog-backend-module-unprocessed": "0.4.6",
|
||||
"@backstage/plugin-catalog-common": "1.0.24",
|
||||
"@backstage/plugin-catalog-graph": "0.4.6",
|
||||
"@backstage/plugin-catalog-import": "0.12.0",
|
||||
"@backstage/plugin-catalog-node": "1.12.1",
|
||||
"@backstage/plugin-catalog-react": "1.12.1",
|
||||
"@backstage/plugin-catalog-unprocessed-entities": "0.2.5",
|
||||
"@backstage/plugin-catalog-unprocessed-entities-common": "0.0.2",
|
||||
"@backstage/plugin-config-schema": "0.1.56",
|
||||
"@backstage/plugin-devtools": "0.1.15",
|
||||
"@backstage/plugin-devtools-backend": "0.3.5",
|
||||
"@backstage/plugin-devtools-common": "0.1.10",
|
||||
"@backstage/plugin-events-backend": "0.3.6",
|
||||
"@backstage/plugin-events-backend-module-aws-sqs": "0.3.5",
|
||||
"@backstage/plugin-events-backend-module-azure": "0.2.5",
|
||||
"@backstage/plugin-events-backend-module-bitbucket-cloud": "0.2.5",
|
||||
"@backstage/plugin-events-backend-module-gerrit": "0.2.5",
|
||||
"@backstage/plugin-events-backend-module-github": "0.2.5",
|
||||
"@backstage/plugin-events-backend-module-gitlab": "0.2.5",
|
||||
"@backstage/plugin-events-backend-test-utils": "0.1.29",
|
||||
"@backstage/plugin-events-node": "0.3.5",
|
||||
"@internal/plugin-todo-list": "1.0.28",
|
||||
"@internal/plugin-todo-list-backend": "1.0.28",
|
||||
"@internal/plugin-todo-list-common": "1.0.19",
|
||||
"@backstage/plugin-home": "0.7.5",
|
||||
"@backstage/plugin-home-react": "0.1.14",
|
||||
"@backstage/plugin-kubernetes": "0.11.11",
|
||||
"@backstage/plugin-kubernetes-backend": "0.18.0",
|
||||
"@backstage/plugin-kubernetes-cluster": "0.0.12",
|
||||
"@backstage/plugin-kubernetes-common": "0.8.0",
|
||||
"@backstage/plugin-kubernetes-node": "0.1.13",
|
||||
"@backstage/plugin-kubernetes-react": "0.4.0",
|
||||
"@backstage/plugin-notifications": "0.2.2",
|
||||
"@backstage/plugin-notifications-backend": "0.3.0",
|
||||
"@backstage/plugin-notifications-backend-module-email": "0.1.0",
|
||||
"@backstage/plugin-notifications-common": "0.0.4",
|
||||
"@backstage/plugin-notifications-node": "0.2.0",
|
||||
"@backstage/plugin-org": "0.6.26",
|
||||
"@backstage/plugin-org-react": "0.1.25",
|
||||
"@backstage/plugin-permission-backend": "0.5.43",
|
||||
"@backstage/plugin-permission-backend-module-allow-all-policy": "0.1.16",
|
||||
"@backstage/plugin-permission-common": "0.7.14",
|
||||
"@backstage/plugin-permission-node": "0.7.30",
|
||||
"@backstage/plugin-permission-react": "0.4.23",
|
||||
"@backstage/plugin-proxy-backend": "0.5.0",
|
||||
"@backstage/plugin-scaffolder": "1.21.0",
|
||||
"@backstage/plugin-scaffolder-backend": "1.22.9",
|
||||
"@backstage/plugin-scaffolder-backend-module-azure": "0.1.11",
|
||||
"@backstage/plugin-scaffolder-backend-module-bitbucket": "0.2.9",
|
||||
"@backstage/plugin-scaffolder-backend-module-bitbucket-cloud": "0.1.9",
|
||||
"@backstage/plugin-scaffolder-backend-module-bitbucket-server": "0.1.9",
|
||||
"@backstage/plugin-scaffolder-backend-module-confluence-to-markdown": "0.2.20",
|
||||
"@backstage/plugin-scaffolder-backend-module-cookiecutter": "0.2.43",
|
||||
"@backstage/plugin-scaffolder-backend-module-gerrit": "0.1.11",
|
||||
"@backstage/plugin-scaffolder-backend-module-gitea": "0.1.9",
|
||||
"@backstage/plugin-scaffolder-backend-module-github": "0.3.0",
|
||||
"@backstage/plugin-scaffolder-backend-module-gitlab": "0.4.1",
|
||||
"@backstage/plugin-scaffolder-backend-module-notifications": "0.0.2",
|
||||
"@backstage/plugin-scaffolder-backend-module-rails": "0.4.36",
|
||||
"@backstage/plugin-scaffolder-backend-module-sentry": "0.1.27",
|
||||
"@backstage/plugin-scaffolder-backend-module-yeoman": "0.3.2",
|
||||
"@backstage/plugin-scaffolder-common": "1.5.3",
|
||||
"@backstage/plugin-scaffolder-node": "0.4.5",
|
||||
"@backstage/plugin-scaffolder-node-test-utils": "0.1.5",
|
||||
"@backstage/plugin-scaffolder-react": "1.9.0",
|
||||
"@backstage/plugin-search": "1.4.12",
|
||||
"@backstage/plugin-search-backend": "1.5.10",
|
||||
"@backstage/plugin-search-backend-module-catalog": "0.1.25",
|
||||
"@backstage/plugin-search-backend-module-elasticsearch": "1.5.0",
|
||||
"@backstage/plugin-search-backend-module-explore": "0.1.25",
|
||||
"@backstage/plugin-search-backend-module-pg": "0.5.28",
|
||||
"@backstage/plugin-search-backend-module-stack-overflow-collator": "0.1.12",
|
||||
"@backstage/plugin-search-backend-module-techdocs": "0.1.24",
|
||||
"@backstage/plugin-search-backend-node": "1.2.24",
|
||||
"@backstage/plugin-search-common": "1.2.12",
|
||||
"@backstage/plugin-search-react": "1.7.12",
|
||||
"@backstage/plugin-signals": "0.0.7",
|
||||
"@backstage/plugin-signals-backend": "0.1.5",
|
||||
"@backstage/plugin-signals-node": "0.1.5",
|
||||
"@backstage/plugin-signals-react": "0.0.4",
|
||||
"@backstage/plugin-techdocs": "1.10.6",
|
||||
"@backstage/plugin-techdocs-addons-test-utils": "1.0.33",
|
||||
"@backstage/plugin-techdocs-backend": "1.10.6",
|
||||
"@backstage/plugin-techdocs-module-addons-contrib": "1.1.11",
|
||||
"@backstage/plugin-techdocs-node": "1.12.5",
|
||||
"@backstage/plugin-techdocs-react": "1.2.5",
|
||||
"@backstage/plugin-user-settings": "0.8.7",
|
||||
"@backstage/plugin-user-settings-backend": "0.2.18",
|
||||
"@backstage/plugin-user-settings-common": "0.0.1",
|
||||
"@backstage/plugin-catalog-backend-module-logs": "0.0.0",
|
||||
"@backstage/plugin-scaffolder-backend-module-gcp": "0.0.1-next.1"
|
||||
},
|
||||
"changesets": [
|
||||
"bright-fireants-sit",
|
||||
"bright-panthers-leave",
|
||||
"calm-jeans-ring",
|
||||
"chilly-roses-trade",
|
||||
"clever-waves-judge",
|
||||
"create-app-1719320674",
|
||||
"curvy-teachers-smell",
|
||||
"eighty-games-wink",
|
||||
"eleven-radios-begin",
|
||||
"fair-fans-flow",
|
||||
"fair-pillows-know",
|
||||
"fair-rockets-leave",
|
||||
"fair-spoons-work",
|
||||
"famous-dodos-crash",
|
||||
"fast-pens-smell",
|
||||
"fifty-pumpkins-smell",
|
||||
"friendly-bulldogs-pay",
|
||||
"friendly-experts-fail",
|
||||
"friendly-masks-type",
|
||||
"friendly-oranges-greet",
|
||||
"friendly-stingrays-occur",
|
||||
"funny-laws-tease",
|
||||
"gentle-avocados-obey",
|
||||
"grumpy-wolves-hang",
|
||||
"heavy-moose-pull",
|
||||
"honest-pears-run",
|
||||
"khaki-rivers-obey",
|
||||
"kind-dancers-boil",
|
||||
"light-avocados-worry",
|
||||
"little-games-fail",
|
||||
"metal-jokes-add",
|
||||
"metal-parents-brush",
|
||||
"metal-suits-drum",
|
||||
"moody-llamas-breathe",
|
||||
"neat-dingos-tickle",
|
||||
"new-sheep-arrive",
|
||||
"poor-cheetahs-raise",
|
||||
"rare-peas-dream",
|
||||
"renovate-7b61228",
|
||||
"renovate-ced359b",
|
||||
"rich-bears-march",
|
||||
"selfish-turtles-jog",
|
||||
"serious-kings-trade",
|
||||
"sharp-rice-tickle",
|
||||
"short-flowers-cry",
|
||||
"shy-hounds-battle",
|
||||
"silent-experts-move",
|
||||
"silent-lobsters-tease",
|
||||
"silent-moose-eat",
|
||||
"soft-clocks-bake",
|
||||
"sour-jokes-sneeze",
|
||||
"spotty-crabs-shop",
|
||||
"swift-dots-cough",
|
||||
"ten-dancers-drum",
|
||||
"ten-nails-hear",
|
||||
"ten-pots-walk",
|
||||
"thick-lizards-divide",
|
||||
"thick-moose-decide",
|
||||
"three-carpets-smoke",
|
||||
"tough-lies-mate",
|
||||
"weak-boats-float",
|
||||
"yellow-cows-kick",
|
||||
"young-donuts-swim",
|
||||
"young-fishes-lie",
|
||||
"young-houses-unite"
|
||||
]
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/backend-defaults': patch
|
||||
---
|
||||
|
||||
Repack the package to fix issues with typescript with named exports
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
---
|
||||
|
||||
Updated dependency `esbuild` to `^0.21.0`.
|
||||
@@ -1,11 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-home-react': patch
|
||||
'@backstage/plugin-home': patch
|
||||
'@backstage/plugin-scaffolder-react': patch
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
---
|
||||
|
||||
Updated dependency `@rjsf/utils` to `5.18.5`.
|
||||
Updated dependency `@rjsf/core` to `5.18.5`.
|
||||
Updated dependency `@rjsf/material-ui` to `5.18.5`.
|
||||
Updated dependency `@rjsf/validator-ajv8` to `5.18.5`.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@techdocs/cli': patch
|
||||
---
|
||||
|
||||
Import discovery from backend-defaults instead of backend-common
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/backend-defaults': patch
|
||||
---
|
||||
|
||||
Fixed the routing of the new health check service, the health endpoints should now properly be available at `/.backstage/health/v1/readiness` and `/.backstage/health/v1/liveness`.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend': minor
|
||||
'@backstage/plugin-scaffolder-node': patch
|
||||
---
|
||||
|
||||
Add support for `autocomplete` extension point to provide additional `autocomplete` handlers
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/backend-test-utils': patch
|
||||
---
|
||||
|
||||
Added mock for the Root Health Service in `mockServices`.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes-react': patch
|
||||
---
|
||||
|
||||
Add a namespace label to RolloutDrawer
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-github': minor
|
||||
---
|
||||
|
||||
Adds support for custom tag policies when creating GitHub environments.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes-react': patch
|
||||
---
|
||||
|
||||
Fix the `HTML` markup of the `FixDialog` component, `ul` and `li` are not allowed inside a `p` tag.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Fix a few minor issues with the backend template that were causing failing linting checks in the main repo.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Subpath export `package.json` should be of a unique name to avoid typescript resolution issues
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
The `backendPlugin` and `backendModule` factory now includes a step for automatically adding the new backend plugin/module to the `index.ts` file of the backend.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
---
|
||||
|
||||
Support `catalogFilter` array on `OwnedEntityPicker`
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog': patch
|
||||
---
|
||||
|
||||
Added small notes to AboutCard to discourage customizability PRs
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-notifications-backend': patch
|
||||
---
|
||||
|
||||
Added an option to filter notifications by topic
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-github': patch
|
||||
---
|
||||
|
||||
Added action to enable GitHub Pages on a repo
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-auth-node': patch
|
||||
---
|
||||
|
||||
Fix issues with Atlassian OAuth provider: retrieve the email and photo that were not in arrays but rather in single props.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-react': minor
|
||||
---
|
||||
|
||||
Improve validation error display text in scaffolder
|
||||
@@ -1,9 +0,0 @@
|
||||
---
|
||||
'@backstage/backend-plugin-api': patch
|
||||
---
|
||||
|
||||
All service config types were renamed to option types in order to standardize frontend and backend `create*` function signatures:
|
||||
|
||||
- The `ServiceRefConfig` type was renamed to`ServiceRefOptions`;
|
||||
- The `RootServiceFactoryConfig` type was renamed to `RootServiceFactoryOptions`;
|
||||
- The `PluginServiceFactoryConfig` type was renamed to `PluginServiceFactoryOptions`
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-github': patch
|
||||
---
|
||||
|
||||
Fixed issue with octokit call missing owner and repo when creating environment variables and secrets using github:environment:create action
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-github': patch
|
||||
---
|
||||
|
||||
Adds `requireLastPushApproval` input property to configure Branch Protection Settings in `github:publish` action
|
||||
|
||||
Adds `requireLastPushApproval` input property to configure Branch Protection Settings in `github:repo:push` action
|
||||
@@ -1,8 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-logs': patch
|
||||
---
|
||||
|
||||
Creates a new module to make logging catalog errors simple. This module subscribes to catalog events and logs them.
|
||||
|
||||
See [Backstage documentation](https://backstage.io/docs/features/software-catalog/configuration#subscribing-to-catalog-errors) for details on how to install
|
||||
and configure the plugin.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
'@backstage/backend-app-api': patch
|
||||
'@backstage/backend-common': patch
|
||||
---
|
||||
|
||||
Fixing exporting of classes properly from new packages
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-search': patch
|
||||
---
|
||||
|
||||
Update deps in search api extension to include fetch api
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-gitlab': patch
|
||||
---
|
||||
|
||||
Added support for passing `variables` to `gitlab:pipeline:trigger`
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-gcp': minor
|
||||
'@backstage/plugin-scaffolder-backend': minor
|
||||
'@backstage/plugin-scaffolder-node': patch
|
||||
---
|
||||
|
||||
Serialization of the scaffolder workspace into GCP bucket
|
||||
@@ -1,8 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend': minor
|
||||
'@backstage/backend-test-utils': patch
|
||||
'@backstage/backend-defaults': patch
|
||||
'@backstage/backend-common': patch
|
||||
---
|
||||
|
||||
bumped better-sqlite3 from ^9.0.0 to ^11.0.0
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-notifications-backend-module-email': patch
|
||||
'@backstage/plugin-notifications-common': patch
|
||||
'@backstage/plugin-notifications-node': patch
|
||||
---
|
||||
|
||||
Move notification processor filter parsing to common package
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-react': patch
|
||||
---
|
||||
|
||||
disables rendering of output box if no output is returned
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-node-test-utils': patch
|
||||
---
|
||||
|
||||
Filename and imports correction for mockActionContext.ts
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-react': minor
|
||||
'@backstage/plugin-scaffolder': minor
|
||||
---
|
||||
|
||||
Add support for `bitbucketCloud` autocomplete in `RepoUrlPicker`
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
---
|
||||
|
||||
Fix user entity not being fetched for scaffolder dry runner
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/backend-app-api': patch
|
||||
---
|
||||
|
||||
Fixing issue with `MiddlewareFactory` deprecation wrapping
|
||||
@@ -7,6 +7,7 @@ on:
|
||||
jobs:
|
||||
cron:
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 10
|
||||
steps:
|
||||
- name: Harden Runner
|
||||
uses: step-security/harden-runner@17d0e2bd7d51742c71671bd19fa12bdc9d40a3d6 # v2.8.1
|
||||
|
||||
+1
-1
@@ -99,7 +99,7 @@ You'll see how you get both logs for the frontend `webpack-dev-server` which ser
|
||||
|
||||
Visit <http://localhost:3000> and you should see the bleeding edge of Backstage ready for contributions!
|
||||
|
||||
If you want to get a better understanding of the layout of the repo not that you have a local copy running feel free to review the [Backstage Project Structure](https://backstage.io/docs/getting-started/project-structure) documentation.
|
||||
If you want to get a better understanding of the layout of the repo now that you have a local copy running feel free to review the [Backstage Project Structure](https://backstage.io/docs/getting-started/#general-folder-structure) documentation.
|
||||
|
||||
## Coding Guidelines
|
||||
|
||||
|
||||
@@ -25,8 +25,7 @@ This will only work with the new backend system. There is no support for this in
|
||||
|
||||
Add the `@backstage/plugin-auth-backend-module-guest-provider` to your backend installation.
|
||||
|
||||
```sh
|
||||
# From your Backstage root directory
|
||||
```sh title="From your Backstage root directory"
|
||||
yarn --cwd packages/backend add @backstage/plugin-auth-backend-module-guest-provider
|
||||
```
|
||||
|
||||
|
||||
@@ -190,43 +190,76 @@ If a service defines a default factory, that factory will be used if there is no
|
||||
|
||||
When defining a default factory for a service, it is possible for it to end up with duplicate implementations at runtime. This applies both to any shared root context in your factory, as well as plugin specific instances of your service. This is because package dependency version ranges may not line up perfectly, causing duplicate installations of the same package. This can happen both for two different plugins using the same service, but also across a plugin and its modules. If your service would break in this scenario, you should not define a default factory for it, but instead require that users of your service explicitly install a factory in their backend instance.
|
||||
|
||||
## Service Factory Options
|
||||
## Service Factory Customization
|
||||
|
||||
When declaring a service factory you may also want to make the export the building blocks of the implementation itself. This is to allow for further customization of the service implementation through code, beyond what is possible with static configuration, without the need to re-implement the entire service from scratch. For example, we might export our example `DefaultFooService` class, while moving construction to a static `create` factory method to make it easier to evolve:
|
||||
|
||||
```ts
|
||||
export class DefaultFooService {
|
||||
static create(options: { transform: (foo: string) => string }) {
|
||||
return new DefaultFooService(options.transform ?? (foo) => foo);
|
||||
}
|
||||
|
||||
private constructor(private readonly transform: (foo: string) => string) {}
|
||||
|
||||
foo(foo: string): string {
|
||||
return this.transform(foo);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
By exporting `DefaultFooService` we now make it relatively simple for advanced users of our service to customize the implementation. To do so, they can define their own service factory that uses our provided implementation:
|
||||
|
||||
```ts
|
||||
export const customFooServiceFactory = createServiceFactory({
|
||||
service: fooServiceRef,
|
||||
deps: {},
|
||||
factory() {
|
||||
return DefaultFooService.create({
|
||||
transform: foo => foo.toUpperCase(),
|
||||
});
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
This allows you to provide more advanced options for the service implementation that couldn't be expressed through static configuration. It also gives users of the service implementation access to other services through dependency injection, which can be useful for their customizations.
|
||||
|
||||
## Service Factory Options Pattern
|
||||
|
||||
:::note Note
|
||||
|
||||
This pattern is discouraged, only use it when necessary. If possible you should prefer to make services configurable via static configuration instead.
|
||||
This pattern is discouraged, only use it when necessary. If possible you should prefer to make services configurable via static configuration or re-implementation instead.
|
||||
|
||||
:::
|
||||
|
||||
When declaring a service factory it's possible to include an options callback. This allows you to customize the factory through code when installing it in the backend. For example, this is how you install an explicit factory instance in the backend without any options:
|
||||
In some cases it might be beneficial to allow users of your service factory to pass options to the factory itself, rather than to the service implementation. This can be enabled by also defining the service factory as a function that returns a reconfigured factory. For example:
|
||||
|
||||
```ts
|
||||
const backend = createBackend();
|
||||
|
||||
backend.add(fooServiceFactory());
|
||||
```
|
||||
|
||||
Note that we call `fooServiceFactory` to create the service factory instance. This is because `createServiceFactory` always returns a factory function that creates the actual service factory. To add options to your service factory, you wrap the object passed to `createServiceFactory` in a callback that accepts the desired options. Note that the options must always be optional. For example:
|
||||
|
||||
```ts
|
||||
export interface FooFactoryOptions {
|
||||
const fooServiceFactoryWithOptions = (options?: {
|
||||
transform: (foo: string) => string;
|
||||
}
|
||||
|
||||
export const fooServiceFactory = createServiceFactory(
|
||||
(options?: FooFactoryOptions) => ({
|
||||
}) =>
|
||||
createServiceFactory<FooService>({
|
||||
service: fooServiceRef,
|
||||
deps: {},
|
||||
factory() {
|
||||
return new DefaultFooService(options?.transform);
|
||||
return DefaultFooService.create({
|
||||
transform: options?.transform,
|
||||
});
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
export const fooServiceFactory = Object.assign(
|
||||
fooServiceFactoryWithOptions,
|
||||
fooServiceFactoryWithOptions(),
|
||||
);
|
||||
```
|
||||
|
||||
This lets us use the options to customize the factory implementation in any way we want. From the outside the service factory looks just like before, except that we're now also able to pass options when installing the factory:
|
||||
This makes it possible to use the `fooServiceFactory` directly, as well passing additional options to create a customized factory:
|
||||
|
||||
```ts
|
||||
const backend = createBackend();
|
||||
|
||||
backend.add(fooServiceFactory({ transform: foo => foo.toUpperCase() }));
|
||||
backend.add(fooServiceFactory);
|
||||
// OR
|
||||
backend.add(fooServiceFactory({ transform: foo => foo.toLowerCase() }));
|
||||
```
|
||||
|
||||
This pattern is discouraged due to the inability to access other services through dependency injection. It is however used in a few places in the Backstage framework where the ability to directly pass options without re-implementing the service is very convenient, such as the `mockServices` from `@backstage/backend-test-utils`.
|
||||
|
||||
@@ -1254,7 +1254,6 @@ In order to add your own permission policy you'll need to do the following:
|
||||
|
||||
```ts
|
||||
import { createBackendModule } from '@backstage/backend-plugin-api';
|
||||
import { BackstageIdentityResponse } from '@backstage/plugin-auth-node';
|
||||
import {
|
||||
PolicyDecision,
|
||||
AuthorizeResult,
|
||||
@@ -1262,13 +1261,14 @@ import {
|
||||
import {
|
||||
PermissionPolicy,
|
||||
PolicyQuery,
|
||||
PolicyQueryUser,
|
||||
} from '@backstage/plugin-permission-node';
|
||||
import { policyExtensionPoint } from '@backstage/plugin-permission-node/alpha';
|
||||
|
||||
class CustomPermissionPolicy implements PermissionPolicy {
|
||||
async handle(
|
||||
request: PolicyQuery,
|
||||
user?: BackstageIdentityResponse,
|
||||
user?: PolicyQueryUser,
|
||||
): Promise<PolicyDecision> {
|
||||
// TODO: Add code here that inspects the incoming request and user, and returns AuthorizeResult.ALLOW, AuthorizeResult.DENY, or AuthorizeResult.CONDITIONAL as needed. See the docs at https://backstage.io/docs/permissions/writing-a-policy for more information
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ requests and return mock responses. This lets you stub out remote services
|
||||
rather than the local clients, leading to more thorough and robust tests. You
|
||||
can read more about how it works [in their documentation](https://mswjs.io/).
|
||||
|
||||
The `@backstage/backend-test-utils` package exports a `setupRequestMockHandlers`
|
||||
The `@backstage/backend-test-utils` package exports a `registerMswTestHooks`
|
||||
function which ensures that the correct `jest` lifecycle hooks are invoked to
|
||||
set up and tear down your `msw` instance, and enables the option that completely
|
||||
rejects requests that don't match one of your mock rules. This ensures that your
|
||||
@@ -70,13 +70,13 @@ tests cannot accidentally leak traffic into production from tests.
|
||||
Example:
|
||||
|
||||
```ts
|
||||
import { setupRequestMockHandlers } from '@backstage/backend-test-utils';
|
||||
import { registerMswTestHooks } from '@backstage/backend-test-utils';
|
||||
import { rest } from 'msw';
|
||||
import { setupServer } from 'msw/node';
|
||||
|
||||
describe('read from remote', () => {
|
||||
const worker = setupServer();
|
||||
setupRequestMockHandlers(worker);
|
||||
registerMswTestHooks(worker);
|
||||
|
||||
it('should auth and read successfully', async () => {
|
||||
expect.assertions(1);
|
||||
|
||||
@@ -60,3 +60,34 @@ backend.add(
|
||||
}),
|
||||
);
|
||||
```
|
||||
|
||||
For more advanced customization, there are several APIs from the `@backstage/config-loader` package that allow you to customize the implementation of the config service. The default implementation uses the `ConfigSources.default` method, which has the same options as the `rootConfigServiceFactory` function. You can use these to create your own config service implementation:
|
||||
|
||||
```ts
|
||||
import { ConfigSources } from '@backstage/config-loader';
|
||||
import { createServiceFactory } from '@backstage/backend-plugin-api';
|
||||
|
||||
const backend = createBackend();
|
||||
|
||||
backend.add(
|
||||
createServiceFactory({
|
||||
service: coreServices.rootConfig,
|
||||
deps: {},
|
||||
async factory() {
|
||||
const source = ConfigSources.default({
|
||||
argv: [
|
||||
'--config',
|
||||
'/backstage/app-config.development.yaml',
|
||||
'--config',
|
||||
'/backstage/app-config.yaml',
|
||||
],
|
||||
remote: { reloadIntervalSeconds: 60 },
|
||||
});
|
||||
console.log(`Loading config from ${source}`);
|
||||
return await ConfigSources.toConfig(source);
|
||||
},
|
||||
}),
|
||||
);
|
||||
```
|
||||
|
||||
You can also use other config source such as `StaticConfigSource` and combine them with other sources using `ConfigSources.merge(...)`. You can also create your own config source by implementing the `ConfigSource` interface.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
id: root-health
|
||||
title: Root Health Service
|
||||
sidebar_label: Health
|
||||
sidebar_label: Root Health
|
||||
description: Documentation for the Health service
|
||||
---
|
||||
|
||||
|
||||
@@ -173,8 +173,7 @@ To create the Backend module, run `yarn new`, select `backend-module`. Then fill
|
||||
|
||||
This will create a new package at `plugins/kubernetes-backend-module-pinniped`. We are going to need also the `@backstage/plugin-kubernetes-node` and `@backstage/plugin-kubernetes-common` dependencies, the `@backstage/plugin-kubernetes-node` houses the [kubernetesAuthStrategyExtensionPoint](https://github.com/backstage/backstage/blob/ebe7afad9d19f279469168ca0d4feceb92c1ad36/plugins/kubernetes-node/src/extensions.ts#L77) and a [Pinniped Helper](https://github.com/backstage/backstage/blob/ebe7afad9d19f279469168ca0d4feceb92c1ad36/plugins/kubernetes-node/src/auth/PinnipedHelper.ts#L53) class.
|
||||
|
||||
```bash
|
||||
# From your Backstage root directory
|
||||
```bash title="From your Backstage root directory"
|
||||
yarn --cwd plugins/kubernetes-backend-module-pinniped add @backstage/plugin-kubernetes-node
|
||||
yarn --cwd plugins/kubernetes-backend-module-pinniped add @backstage/plugin-kubernetes-common
|
||||
```
|
||||
|
||||
@@ -15,8 +15,7 @@ If you haven't setup Backstage already, read the
|
||||
The first step is to add the Kubernetes frontend plugin to your Backstage
|
||||
application.
|
||||
|
||||
```bash
|
||||
# From your Backstage root directory
|
||||
```bash title="From your Backstage root directory"
|
||||
yarn --cwd packages/app add @backstage/plugin-kubernetes
|
||||
```
|
||||
|
||||
@@ -53,8 +52,7 @@ work.
|
||||
Navigate to `packages/backend` of your Backstage app, and install the
|
||||
`@backstage/plugin-kubernetes-backend` package.
|
||||
|
||||
```bash
|
||||
# From your Backstage root directory
|
||||
```bash title="From your Backstage root directory"
|
||||
yarn --cwd packages/backend add @backstage/plugin-kubernetes-backend
|
||||
```
|
||||
|
||||
@@ -109,8 +107,7 @@ To get the Kubernetes plugin install using the New Backend System you will need
|
||||
|
||||
Run this command to add the package:
|
||||
|
||||
```bash
|
||||
# From your Backstage root directory
|
||||
```bash title="From your Backstage root directory"
|
||||
yarn --cwd packages/backend add @backstage/plugin-kubernetes-backend
|
||||
```
|
||||
|
||||
|
||||
@@ -60,7 +60,6 @@ This feature assumes your backstage instance has enabled the [permissions framew
|
||||
A sample policy like:
|
||||
|
||||
```typescript
|
||||
import { BackstageIdentityResponse } from '@backstage/plugin-auth-node';
|
||||
import {
|
||||
AuthorizeResult,
|
||||
PolicyDecision,
|
||||
@@ -68,12 +67,13 @@ import {
|
||||
import {
|
||||
PermissionPolicy,
|
||||
PolicyQuery,
|
||||
PolicyQueryUser,
|
||||
} from '@backstage/plugin-permission-node';
|
||||
|
||||
class KubernetesDenyAllProxyEndpointPolicy implements PermissionPolicy {
|
||||
async handle(
|
||||
request: PolicyQuery,
|
||||
user?: BackstageIdentityResponse,
|
||||
user?: PolicyQueryUser,
|
||||
): Promise<PolicyDecision> {
|
||||
if (request.permission.name === 'kubernetes.proxy') {
|
||||
return {
|
||||
|
||||
@@ -16,8 +16,7 @@ If you haven't setup Backstage already, start
|
||||
|
||||
## Adding Search to the Frontend
|
||||
|
||||
```bash
|
||||
# From your Backstage root directory
|
||||
```bash title="From your Backstage root directory"
|
||||
yarn --cwd packages/app add @backstage/plugin-search @backstage/plugin-search-react
|
||||
```
|
||||
|
||||
@@ -133,8 +132,7 @@ For more information about using `Root.tsx`, please see
|
||||
|
||||
Add the following plugins into your backend app:
|
||||
|
||||
```bash
|
||||
# From your Backstage root directory
|
||||
```bash title="From your Backstage root directory"
|
||||
yarn --cwd packages/backend add @backstage/plugin-search-backend @backstage/plugin-search-backend-node
|
||||
```
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ action is logged for further investigation.
|
||||
### Local File (`type: file`) Configurations
|
||||
|
||||
In addition to url locations, you can use the `file` location type to bring in content from the local file system. You should only use this for local development, test setups, and example data, not for production data.
|
||||
You are also not able to use placeholders in them like `$text`. You can however reference other files relative to the current file. See the full [catalog example data set here](https://github.com/backstage/backstage/tree/master/packages/catalog-model/examples) for an extensive example.
|
||||
You are also not able to use placeholders in them like `$text`, `$json` or `$yaml`. You can however reference other files relative to the current file. See the full [catalog example data set here](https://github.com/backstage/backstage/tree/master/packages/catalog-model/examples) for an extensive example.
|
||||
|
||||
Here is an example pulling in the `all.yaml` file from the examples folder. Note the use of `../../` to go up two levels from the current execution path of the backend. This is typically `packages/backend/`.
|
||||
|
||||
@@ -184,8 +184,7 @@ Catalog errors are published to the [events plugin](https://github.com/backstage
|
||||
|
||||
The first step is to add the events backend plugin to your Backstage application. Navigate to your Backstage application directory and add the plugin package.
|
||||
|
||||
```ts
|
||||
# From your Backstage root directory
|
||||
```ts title="From your Backstage root directory"
|
||||
yarn --cwd packages/backend add @backstage/plugin-events-backend
|
||||
```
|
||||
|
||||
@@ -201,8 +200,7 @@ If you want to log catalog errors you can install the `@backstage/plugin-catalog
|
||||
|
||||
Install the catalog logs module.
|
||||
|
||||
```ts
|
||||
# From your Backstage root directory
|
||||
```ts title="From your Backstage root directory"
|
||||
yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-logs
|
||||
```
|
||||
|
||||
|
||||
@@ -66,14 +66,14 @@ import {
|
||||
class ExamplePermissionPolicy implements PermissionPolicy {
|
||||
async handle(
|
||||
request: PolicyQuery,
|
||||
user?: BackstageIdentityResponse,
|
||||
user?: PolicyQueryUser,
|
||||
): Promise<PolicyDecision> {
|
||||
/* highlight-add-start */
|
||||
if (
|
||||
isPermission(request.permission, templateParameterReadPermission) ||
|
||||
isPermission(request.permission, templateStepReadPermission)
|
||||
) {
|
||||
if (user?.identity.userEntityRef === 'user:default/spiderman')
|
||||
if (user?.info.userEntityRef === 'user:default/spiderman')
|
||||
return createScaffolderTemplateConditionalDecision(request.permission, {
|
||||
not: scaffolderTemplateConditions.hasTag({ tag: 'secret' }),
|
||||
});
|
||||
@@ -109,11 +109,11 @@ import {
|
||||
class ExamplePermissionPolicy implements PermissionPolicy {
|
||||
async handle(
|
||||
request: PolicyQuery,
|
||||
user?: BackstageIdentityResponse,
|
||||
user?: PolicyQueryUser,
|
||||
): Promise<PolicyDecision> {
|
||||
/* highlight-add-start */
|
||||
if (isPermission(request.permission, actionExecutePermission)) {
|
||||
if (user?.identity.userEntityRef === 'user:default/spiderman') {
|
||||
if (user?.info.userEntityRef === 'user:default/spiderman') {
|
||||
return createScaffolderActionConditionalDecision(request.permission, {
|
||||
not: scaffolderActionConditions.hasActionId({
|
||||
actionId: 'debug:log',
|
||||
@@ -147,11 +147,11 @@ import {
|
||||
class ExamplePermissionPolicy implements PermissionPolicy {
|
||||
async handle(
|
||||
request: PolicyQuery,
|
||||
user?: BackstageIdentityResponse,
|
||||
user?: PolicyQueryUser,
|
||||
): Promise<PolicyDecision> {
|
||||
/* highlight-add-start */
|
||||
if (isPermission(request.permission, actionExecutePermission)) {
|
||||
if (user?.identity.userEntityRef === 'user:default/spiderman') {
|
||||
if (user?.info.userEntityRef === 'user:default/spiderman') {
|
||||
return createScaffolderActionConditionalDecision(request.permission, {
|
||||
not: {
|
||||
allOf: [
|
||||
@@ -190,25 +190,25 @@ import {
|
||||
class ExamplePermissionPolicy implements PermissionPolicy {
|
||||
async handle(
|
||||
request: PolicyQuery,
|
||||
user?: BackstageIdentityResponse,
|
||||
user?: PolicyQueryUser,
|
||||
): Promise<PolicyDecision> {
|
||||
/* highlight-add-start */
|
||||
if (isPermission(request.permission, taskCreatePermission)) {
|
||||
if (user?.identity.userEntityRef === 'user:default/spiderman') {
|
||||
if (user?.info.userEntityRef === 'user:default/spiderman') {
|
||||
return {
|
||||
result: AuthorizeResult.ALLOW,
|
||||
};
|
||||
}
|
||||
}
|
||||
if (isPermission(request.permission, taskCancelPermission)) {
|
||||
if (user?.identity.userEntityRef === 'user:default/spiderman') {
|
||||
if (user?.info.userEntityRef === 'user:default/spiderman') {
|
||||
return {
|
||||
result: AuthorizeResult.ALLOW,
|
||||
};
|
||||
}
|
||||
}
|
||||
if (isPermission(request.permission, taskReadPermission)) {
|
||||
if (user?.identity.userEntityRef === 'user:default/spiderman') {
|
||||
if (user?.info.userEntityRef === 'user:default/spiderman') {
|
||||
return {
|
||||
result: AuthorizeResult.ALLOW,
|
||||
};
|
||||
@@ -239,7 +239,6 @@ Instead of the changes in `permission.ts` noted in the above example you will ma
|
||||
|
||||
```ts title="packages/backend/src/index.ts"
|
||||
import { createBackendModule } from '@backstage/backend-plugin-api';
|
||||
import { BackstageIdentityResponse } from '@backstage/plugin-auth-node';
|
||||
import {
|
||||
PolicyDecision,
|
||||
AuthorizeResult,
|
||||
@@ -247,13 +246,14 @@ import {
|
||||
import {
|
||||
PermissionPolicy,
|
||||
PolicyQuery,
|
||||
PolicyQueryUser,
|
||||
} from '@backstage/plugin-permission-node';
|
||||
import { policyExtensionPoint } from '@backstage/plugin-permission-node/alpha';
|
||||
|
||||
class ExamplePermissionPolicy implements PermissionPolicy {
|
||||
async handle(
|
||||
request: PolicyQuery,
|
||||
user?: BackstageIdentityResponse,
|
||||
user?: PolicyQueryUser,
|
||||
): Promise<PolicyDecision> {
|
||||
// Various scaffolder permission checks ...
|
||||
|
||||
|
||||
@@ -24,8 +24,7 @@ There are also several modules available for various SCM tools:
|
||||
|
||||
Here's how to add an action module, first you need to run this command:
|
||||
|
||||
```sh
|
||||
# From your Backstage root directory
|
||||
```sh title="From your Backstage root directory"
|
||||
yarn --cwd packages/backend add @backstage/plugin-scaffolder-backend-module-github
|
||||
```
|
||||
|
||||
|
||||
@@ -21,8 +21,7 @@ The first step is to add the TechDocs plugin to your Backstage application.
|
||||
Navigate to your new Backstage application directory. And then to your
|
||||
`packages/app` directory, and install the `@backstage/plugin-techdocs` package.
|
||||
|
||||
```bash
|
||||
# From your Backstage root directory
|
||||
```bash title="From your Backstage root directory"
|
||||
yarn --cwd packages/app add @backstage/plugin-techdocs
|
||||
```
|
||||
|
||||
@@ -106,8 +105,7 @@ That's it! Now, we need the TechDocs Backend plugin for the frontend to work.
|
||||
Navigate to `packages/backend` of your Backstage app, and install the
|
||||
`@backstage/plugin-techdocs-backend` package.
|
||||
|
||||
```bash
|
||||
# From your Backstage root directory
|
||||
```bash title="From your Backstage root directory"
|
||||
yarn --cwd packages/backend add @backstage/plugin-techdocs-backend
|
||||
```
|
||||
|
||||
@@ -199,8 +197,7 @@ To install TechDocs when using the New Backend system you will need to do the fo
|
||||
|
||||
Navigate to `packages/backend` of your Backstage app, and install the `@backstage/plugin-techdocs-backend` package.
|
||||
|
||||
```bash
|
||||
# From your Backstage root directory
|
||||
```bash title="From your Backstage root directory"
|
||||
yarn --cwd packages/backend add @backstage/plugin-techdocs-backend
|
||||
```
|
||||
|
||||
|
||||
@@ -73,8 +73,7 @@ to install and configure the client.
|
||||
Go to the root directory of your freshly installed Backstage
|
||||
App. Run the following to install the PostgreSQL client into your backend:
|
||||
|
||||
```bash
|
||||
# From your Backstage root directory
|
||||
```bash title="From your Backstage root directory"
|
||||
yarn --cwd packages/backend add pg
|
||||
```
|
||||
|
||||
|
||||
@@ -21,8 +21,7 @@ to an entity in the software catalog.
|
||||
|
||||
1. Add the plugin's npm package to the repo:
|
||||
|
||||
```bash
|
||||
# From your Backstage root directory
|
||||
```bash title="From your Backstage root directory"
|
||||
yarn --cwd packages/app add @circleci/backstage-plugin
|
||||
```
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user