Merge branch 'master' of https://github.com/backstage/backstage into fix-redirect-error-handling
Signed-off-by: Stephen Glass <stephen@stephen.glass>
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-github': patch
|
||||
---
|
||||
|
||||
Added examples for github:environment:create action and improve its test cases
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/create-app': patch
|
||||
---
|
||||
|
||||
Added the Kubernetes plugin to `create-app`
|
||||
@@ -0,0 +1,18 @@
|
||||
---
|
||||
'@backstage/plugin-auth-backend-module-cloudflare-access-provider': patch
|
||||
'@backstage/plugin-auth-backend-module-vmware-cloud-provider': patch
|
||||
'@backstage/plugin-auth-backend-module-atlassian-provider': patch
|
||||
'@backstage/plugin-auth-backend-module-bitbucket-provider': patch
|
||||
'@backstage/plugin-auth-backend-module-microsoft-provider': patch
|
||||
'@backstage/plugin-auth-backend-module-onelogin-provider': patch
|
||||
'@backstage/plugin-auth-backend-module-aws-alb-provider': patch
|
||||
'@backstage/plugin-auth-backend-module-gcp-iap-provider': patch
|
||||
'@backstage/plugin-auth-backend-module-github-provider': patch
|
||||
'@backstage/plugin-auth-backend-module-gitlab-provider': patch
|
||||
'@backstage/plugin-auth-backend-module-google-provider': patch
|
||||
'@backstage/plugin-auth-backend-module-oauth2-provider': patch
|
||||
'@backstage/plugin-auth-backend-module-oidc-provider': patch
|
||||
'@backstage/plugin-auth-backend-module-okta-provider': patch
|
||||
---
|
||||
|
||||
Add `signIn` to authentication provider configuration schema
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Add frontend-dynamic-container role to eslint config factory
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/plugin-events-backend-module-aws-sqs': patch
|
||||
'@backstage/plugin-catalog-backend-module-aws': patch
|
||||
'@backstage/backend-common': patch
|
||||
---
|
||||
|
||||
Setup user agent header for AWS sdk clients, this enables users to better track API calls made from Backstage to AWS APIs through things like CloudTrail.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-notifications': patch
|
||||
---
|
||||
|
||||
Add examples for notification:send scaffolder action & improve related tests
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Use ES2022 in CLI bundler
|
||||
@@ -0,0 +1,27 @@
|
||||
---
|
||||
'@backstage/frontend-plugin-api': patch
|
||||
---
|
||||
|
||||
Introduce a new way to encapsulate extension kinds that replaces the extension creator pattern with `createExtensionBlueprint`
|
||||
|
||||
This allows the creation of extension instances with the following pattern:
|
||||
|
||||
```tsx
|
||||
// create the extension blueprint which is used to create instances
|
||||
const EntityCardBlueprint = createExtensionBlueprint({
|
||||
kind: 'entity-card',
|
||||
attachTo: { id: 'test', input: 'default' },
|
||||
output: [coreExtensionData.reactElement],
|
||||
factory(params: { text: string }) {
|
||||
return [coreExtensionData.reactElement(<h1>{params.text}</h1>)];
|
||||
},
|
||||
});
|
||||
|
||||
// create an instance of the extension blueprint with params
|
||||
const testExtension = EntityCardBlueprint.make({
|
||||
name: 'foo',
|
||||
params: {
|
||||
text: 'Hello World',
|
||||
},
|
||||
});
|
||||
```
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-react': patch
|
||||
'@backstage/plugin-search-react': patch
|
||||
'@backstage/plugin-home': patch
|
||||
---
|
||||
|
||||
Updated alpha definitions of extension data references.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/frontend-plugin-api': patch
|
||||
---
|
||||
|
||||
The `ExtensionBoundary` now by default infers whether it's routable from whether it outputs a route path.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/core-components': patch
|
||||
---
|
||||
|
||||
Move the `Link` component to the `RoutedTabs` instead of the `HeaderTabs` component
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-react': patch
|
||||
---
|
||||
|
||||
Correct `EntityDisplayName`'s icon alignment with the text.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-react': patch
|
||||
---
|
||||
|
||||
Add ability to customise form fields in the UI by exposing `uiSchema` and `formContext` in `FormProps`
|
||||
@@ -0,0 +1,18 @@
|
||||
---
|
||||
'@backstage/frontend-plugin-api': patch
|
||||
---
|
||||
|
||||
Added a new `IconBundleBlueprint` that lets you create icon bundle extensions that can be installed in an App in order to override or add new app icons.
|
||||
|
||||
```tsx
|
||||
import { IconBundleBlueprint } from '@backstage/frontend-plugin-api';
|
||||
|
||||
const exampleIconBundle = IconBundleBlueprint.make({
|
||||
name: 'example-bundle',
|
||||
params: {
|
||||
icons: {
|
||||
user: MyOwnUserIcon,
|
||||
},
|
||||
},
|
||||
});
|
||||
```
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/frontend-app-api': patch
|
||||
---
|
||||
|
||||
Support icon overriding with the new `IconBundleBlueprint` API.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-rails': patch
|
||||
---
|
||||
|
||||
Add examples for fetch:rails scaffolder action & improve related tests
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/backend-defaults': patch
|
||||
---
|
||||
|
||||
The `createHealthRouter` utility that allows you to create a health check router is now exported via `@backstage/backend-defaults/rootHttpRouter`.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/frontend-test-utils': patch
|
||||
'@backstage/frontend-app-api': patch
|
||||
---
|
||||
|
||||
Added support for v2 extensions, which declare their inputs and outputs without using a data map.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-gitlab': patch
|
||||
---
|
||||
|
||||
Allow the `createGitlabProjectVariableAction` to use oauth tokens
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Updated default backend plugin to use `RootConfigService` instead of `Config`. This also removes the dependency on `@backstage/config` as it's no longer used.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend': patch
|
||||
'@backstage/plugin-catalog-node': patch
|
||||
---
|
||||
|
||||
Added setAllowedLocationTypes while introducing a new extension point called CatalogLocationsExtensionPoint
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-react': minor
|
||||
---
|
||||
|
||||
Add scaffolder option to display object items in separate rows on review page
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-graph': patch
|
||||
---
|
||||
|
||||
Memoize entity graph nodes when applying an `entityFilter` to prevent repeated redraws
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
The experimental module federation build now has the ability to force the use of development versions of `react` and `react-dom` by setting the `FORCE_REACT_DEVELOPMENT` flag.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-msgraph': patch
|
||||
---
|
||||
|
||||
Added option to ingest groups based on their group membership in Azure Entra ID
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes': patch
|
||||
---
|
||||
|
||||
Adds support for Backstage's new frontend system, available via the `/alpha` sub-path export.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-react': patch
|
||||
---
|
||||
|
||||
Internal refactor to remove unnecessary `routable` prop in the implementation of the `createEntityContentExtension` alpha export.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-techdocs-node': patch
|
||||
---
|
||||
|
||||
Update `patchMkdocsYmlPrebuild` to modify `repo_url` and `edit_uri` independently.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-react': patch
|
||||
---
|
||||
|
||||
support `ajv-errors` for scaffolder validation to allow for customizing the error messages
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/config-loader': patch
|
||||
---
|
||||
|
||||
The `env` option of `ConfigSources.default` now correctly allows undefined members.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-devtools-backend': patch
|
||||
---
|
||||
|
||||
Removed unused code for lockfile analysis.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-auth-backend-module-microsoft-provider': patch
|
||||
---
|
||||
|
||||
Updated the Microsoft authenticator to accurately define required scopes, but to also omit the required and additional scopes when requesting resource scopes.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/integration': minor
|
||||
'@backstage/backend-defaults': patch
|
||||
---
|
||||
|
||||
Updated `GitlabUrlReader.readUrl` and `GitlabUrlReader.readTree` to accept a user-provided token, supporting both bearer and private tokens.
|
||||
@@ -0,0 +1,14 @@
|
||||
---
|
||||
'@backstage/backend-common': patch
|
||||
---
|
||||
|
||||
The remaining exports in the package have now been deprecated:
|
||||
|
||||
- `cacheToPluginCacheManager`
|
||||
- `createLegacyAuthAdapters`
|
||||
- `LegacyCreateRouter`
|
||||
- `legacyPlugin`
|
||||
- `loggerToWinstonLogger`
|
||||
- `makeLegacyPlugin`
|
||||
|
||||
Users of these export should fully [migrate to the new backend system](https://backstage.io/docs/backend-system/building-backends/migrating).
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-search-backend-module-pg': patch
|
||||
---
|
||||
|
||||
Removing `@backstage/backend-app-api` dependency
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Remove usage of deprecated functionality from @backstage/config-loader
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend': patch
|
||||
---
|
||||
|
||||
Preserve default `allowedLocationTypes` when `setAllowedLocationTypes()` of `CatalogLocationsExtensionPoint` is not called.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-react': patch
|
||||
---
|
||||
|
||||
Fix extra divider displayed on user list picker component
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-gitlab': patch
|
||||
---
|
||||
|
||||
Added test cases for gitlab:issue:edit examples
|
||||
@@ -0,0 +1,242 @@
|
||||
{
|
||||
"mode": "pre",
|
||||
"tag": "next",
|
||||
"initialVersions": {
|
||||
"example-app": "0.2.99",
|
||||
"@backstage/app-defaults": "1.5.8",
|
||||
"example-app-next": "0.0.13",
|
||||
"app-next-example-plugin": "0.0.13",
|
||||
"example-backend": "0.0.28",
|
||||
"@backstage/backend-app-api": "0.8.0",
|
||||
"@backstage/backend-common": "0.23.3",
|
||||
"@backstage/backend-defaults": "0.4.0",
|
||||
"@backstage/backend-dev-utils": "0.1.4",
|
||||
"@backstage/backend-dynamic-feature-service": "0.2.15",
|
||||
"example-backend-legacy": "0.2.100",
|
||||
"@backstage/backend-openapi-utils": "0.1.15",
|
||||
"@backstage/backend-plugin-api": "0.7.0",
|
||||
"@backstage/backend-tasks": "0.5.27",
|
||||
"@backstage/backend-test-utils": "0.4.4",
|
||||
"@backstage/catalog-client": "1.6.5",
|
||||
"@backstage/catalog-model": "1.5.0",
|
||||
"@backstage/cli": "0.26.11",
|
||||
"@backstage/cli-common": "0.1.14",
|
||||
"@backstage/cli-node": "0.2.7",
|
||||
"@backstage/codemods": "0.1.49",
|
||||
"@backstage/config": "1.2.0",
|
||||
"@backstage/config-loader": "1.8.1",
|
||||
"@backstage/core-app-api": "1.14.0",
|
||||
"@backstage/core-compat-api": "0.2.7",
|
||||
"@backstage/core-components": "0.14.9",
|
||||
"@backstage/core-plugin-api": "1.9.3",
|
||||
"@backstage/create-app": "0.5.17",
|
||||
"@backstage/dev-utils": "1.0.35",
|
||||
"e2e-test": "0.2.18",
|
||||
"@backstage/e2e-test-utils": "0.1.1",
|
||||
"@backstage/errors": "1.2.4",
|
||||
"@backstage/eslint-plugin": "0.1.8",
|
||||
"@backstage/frontend-app-api": "0.7.3",
|
||||
"@backstage/frontend-plugin-api": "0.6.7",
|
||||
"@backstage/frontend-test-utils": "0.1.10",
|
||||
"@backstage/integration": "1.13.0",
|
||||
"@backstage/integration-aws-node": "0.1.12",
|
||||
"@backstage/integration-react": "1.1.29",
|
||||
"@backstage/release-manifests": "0.0.11",
|
||||
"@backstage/repo-tools": "0.9.4",
|
||||
"@techdocs/cli": "1.8.16",
|
||||
"techdocs-cli-embedded-app": "0.2.98",
|
||||
"@backstage/test-utils": "1.5.8",
|
||||
"@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.7",
|
||||
"@backstage/plugin-api-docs-module-protoc-gen-doc": "0.1.7",
|
||||
"@backstage/plugin-app-backend": "0.3.71",
|
||||
"@backstage/plugin-app-node": "0.1.22",
|
||||
"@backstage/plugin-app-visualizer": "0.1.8",
|
||||
"@backstage/plugin-auth-backend": "0.22.9",
|
||||
"@backstage/plugin-auth-backend-module-atlassian-provider": "0.2.3",
|
||||
"@backstage/plugin-auth-backend-module-aws-alb-provider": "0.1.14",
|
||||
"@backstage/plugin-auth-backend-module-azure-easyauth-provider": "0.1.5",
|
||||
"@backstage/plugin-auth-backend-module-bitbucket-provider": "0.1.5",
|
||||
"@backstage/plugin-auth-backend-module-cloudflare-access-provider": "0.1.5",
|
||||
"@backstage/plugin-auth-backend-module-gcp-iap-provider": "0.2.17",
|
||||
"@backstage/plugin-auth-backend-module-github-provider": "0.1.19",
|
||||
"@backstage/plugin-auth-backend-module-gitlab-provider": "0.1.19",
|
||||
"@backstage/plugin-auth-backend-module-google-provider": "0.1.19",
|
||||
"@backstage/plugin-auth-backend-module-guest-provider": "0.1.8",
|
||||
"@backstage/plugin-auth-backend-module-microsoft-provider": "0.1.17",
|
||||
"@backstage/plugin-auth-backend-module-oauth2-provider": "0.2.3",
|
||||
"@backstage/plugin-auth-backend-module-oauth2-proxy-provider": "0.1.15",
|
||||
"@backstage/plugin-auth-backend-module-oidc-provider": "0.2.3",
|
||||
"@backstage/plugin-auth-backend-module-okta-provider": "0.0.15",
|
||||
"@backstage/plugin-auth-backend-module-onelogin-provider": "0.1.3",
|
||||
"@backstage/plugin-auth-backend-module-pinniped-provider": "0.1.16",
|
||||
"@backstage/plugin-auth-backend-module-vmware-cloud-provider": "0.2.3",
|
||||
"@backstage/plugin-auth-node": "0.4.17",
|
||||
"@backstage/plugin-auth-react": "0.1.4",
|
||||
"@backstage/plugin-bitbucket-cloud-common": "0.2.21",
|
||||
"@backstage/plugin-catalog": "1.21.1",
|
||||
"@backstage/plugin-catalog-backend": "1.24.0",
|
||||
"@backstage/plugin-catalog-backend-module-aws": "0.3.17",
|
||||
"@backstage/plugin-catalog-backend-module-azure": "0.1.42",
|
||||
"@backstage/plugin-catalog-backend-module-backstage-openapi": "0.2.5",
|
||||
"@backstage/plugin-catalog-backend-module-bitbucket-cloud": "0.2.9",
|
||||
"@backstage/plugin-catalog-backend-module-bitbucket-server": "0.1.36",
|
||||
"@backstage/plugin-catalog-backend-module-gcp": "0.1.23",
|
||||
"@backstage/plugin-catalog-backend-module-gerrit": "0.1.39",
|
||||
"@backstage/plugin-catalog-backend-module-github": "0.6.5",
|
||||
"@backstage/plugin-catalog-backend-module-github-org": "0.1.17",
|
||||
"@backstage/plugin-catalog-backend-module-gitlab": "0.3.21",
|
||||
"@backstage/plugin-catalog-backend-module-gitlab-org": "0.0.5",
|
||||
"@backstage/plugin-catalog-backend-module-incremental-ingestion": "0.4.27",
|
||||
"@backstage/plugin-catalog-backend-module-ldap": "0.7.0",
|
||||
"@backstage/plugin-catalog-backend-module-logs": "0.0.1",
|
||||
"@backstage/plugin-catalog-backend-module-msgraph": "0.5.30",
|
||||
"@backstage/plugin-catalog-backend-module-openapi": "0.1.40",
|
||||
"@backstage/plugin-catalog-backend-module-puppetdb": "0.1.28",
|
||||
"@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "0.1.20",
|
||||
"@backstage/plugin-catalog-backend-module-unprocessed": "0.4.9",
|
||||
"@backstage/plugin-catalog-common": "1.0.25",
|
||||
"@backstage/plugin-catalog-graph": "0.4.7",
|
||||
"@backstage/plugin-catalog-import": "0.12.1",
|
||||
"@backstage/plugin-catalog-node": "1.12.4",
|
||||
"@backstage/plugin-catalog-react": "1.12.2",
|
||||
"@backstage/plugin-catalog-unprocessed-entities": "0.2.6",
|
||||
"@backstage/plugin-catalog-unprocessed-entities-common": "0.0.3",
|
||||
"@backstage/plugin-config-schema": "0.1.57",
|
||||
"@backstage/plugin-devtools": "0.1.16",
|
||||
"@backstage/plugin-devtools-backend": "0.3.8",
|
||||
"@backstage/plugin-devtools-common": "0.1.11",
|
||||
"@backstage/plugin-events-backend": "0.3.9",
|
||||
"@backstage/plugin-events-backend-module-aws-sqs": "0.3.8",
|
||||
"@backstage/plugin-events-backend-module-azure": "0.2.8",
|
||||
"@backstage/plugin-events-backend-module-bitbucket-cloud": "0.2.8",
|
||||
"@backstage/plugin-events-backend-module-gerrit": "0.2.8",
|
||||
"@backstage/plugin-events-backend-module-github": "0.2.8",
|
||||
"@backstage/plugin-events-backend-module-gitlab": "0.2.8",
|
||||
"@backstage/plugin-events-backend-test-utils": "0.1.32",
|
||||
"@backstage/plugin-events-node": "0.3.8",
|
||||
"@internal/plugin-todo-list": "1.0.29",
|
||||
"@internal/plugin-todo-list-backend": "1.0.29",
|
||||
"@internal/plugin-todo-list-common": "1.0.20",
|
||||
"@backstage/plugin-home": "0.7.7",
|
||||
"@backstage/plugin-home-react": "0.1.15",
|
||||
"@backstage/plugin-kubernetes": "0.11.12",
|
||||
"@backstage/plugin-kubernetes-backend": "0.18.3",
|
||||
"@backstage/plugin-kubernetes-cluster": "0.0.13",
|
||||
"@backstage/plugin-kubernetes-common": "0.8.1",
|
||||
"@backstage/plugin-kubernetes-node": "0.1.16",
|
||||
"@backstage/plugin-kubernetes-react": "0.4.1",
|
||||
"@backstage/plugin-notifications": "0.2.3",
|
||||
"@backstage/plugin-notifications-backend": "0.3.3",
|
||||
"@backstage/plugin-notifications-backend-module-email": "0.1.3",
|
||||
"@backstage/plugin-notifications-common": "0.0.5",
|
||||
"@backstage/plugin-notifications-node": "0.2.3",
|
||||
"@backstage/plugin-org": "0.6.27",
|
||||
"@backstage/plugin-org-react": "0.1.26",
|
||||
"@backstage/plugin-permission-backend": "0.5.46",
|
||||
"@backstage/plugin-permission-backend-module-allow-all-policy": "0.1.19",
|
||||
"@backstage/plugin-permission-common": "0.8.0",
|
||||
"@backstage/plugin-permission-node": "0.8.0",
|
||||
"@backstage/plugin-permission-react": "0.4.24",
|
||||
"@backstage/plugin-proxy-backend": "0.5.3",
|
||||
"@backstage/plugin-scaffolder": "1.23.0",
|
||||
"@backstage/plugin-scaffolder-backend": "1.23.0",
|
||||
"@backstage/plugin-scaffolder-backend-module-azure": "0.1.14",
|
||||
"@backstage/plugin-scaffolder-backend-module-bitbucket": "0.2.12",
|
||||
"@backstage/plugin-scaffolder-backend-module-bitbucket-cloud": "0.1.12",
|
||||
"@backstage/plugin-scaffolder-backend-module-bitbucket-server": "0.1.12",
|
||||
"@backstage/plugin-scaffolder-backend-module-confluence-to-markdown": "0.2.23",
|
||||
"@backstage/plugin-scaffolder-backend-module-cookiecutter": "0.2.46",
|
||||
"@backstage/plugin-scaffolder-backend-module-gcp": "0.1.0",
|
||||
"@backstage/plugin-scaffolder-backend-module-gerrit": "0.1.14",
|
||||
"@backstage/plugin-scaffolder-backend-module-gitea": "0.1.12",
|
||||
"@backstage/plugin-scaffolder-backend-module-github": "0.4.0",
|
||||
"@backstage/plugin-scaffolder-backend-module-gitlab": "0.4.4",
|
||||
"@backstage/plugin-scaffolder-backend-module-notifications": "0.0.5",
|
||||
"@backstage/plugin-scaffolder-backend-module-rails": "0.4.39",
|
||||
"@backstage/plugin-scaffolder-backend-module-sentry": "0.1.30",
|
||||
"@backstage/plugin-scaffolder-backend-module-yeoman": "0.3.6",
|
||||
"@backstage/plugin-scaffolder-common": "1.5.4",
|
||||
"@backstage/plugin-scaffolder-node": "0.4.8",
|
||||
"@backstage/plugin-scaffolder-node-test-utils": "0.1.9",
|
||||
"@backstage/plugin-scaffolder-react": "1.10.0",
|
||||
"@backstage/plugin-search": "1.4.14",
|
||||
"@backstage/plugin-search-backend": "1.5.14",
|
||||
"@backstage/plugin-search-backend-module-catalog": "0.1.28",
|
||||
"@backstage/plugin-search-backend-module-elasticsearch": "1.5.3",
|
||||
"@backstage/plugin-search-backend-module-explore": "0.1.28",
|
||||
"@backstage/plugin-search-backend-module-pg": "0.5.32",
|
||||
"@backstage/plugin-search-backend-module-stack-overflow-collator": "0.1.15",
|
||||
"@backstage/plugin-search-backend-module-techdocs": "0.1.27",
|
||||
"@backstage/plugin-search-backend-node": "1.2.27",
|
||||
"@backstage/plugin-search-common": "1.2.13",
|
||||
"@backstage/plugin-search-react": "1.7.13",
|
||||
"@backstage/plugin-signals": "0.0.8",
|
||||
"@backstage/plugin-signals-backend": "0.1.8",
|
||||
"@backstage/plugin-signals-node": "0.1.8",
|
||||
"@backstage/plugin-signals-react": "0.0.4",
|
||||
"@backstage/plugin-techdocs": "1.10.7",
|
||||
"@backstage/plugin-techdocs-addons-test-utils": "1.0.35",
|
||||
"@backstage/plugin-techdocs-backend": "1.10.9",
|
||||
"@backstage/plugin-techdocs-module-addons-contrib": "1.1.12",
|
||||
"@backstage/plugin-techdocs-node": "1.12.8",
|
||||
"@backstage/plugin-techdocs-react": "1.2.6",
|
||||
"@backstage/plugin-user-settings": "0.8.9",
|
||||
"@backstage/plugin-user-settings-backend": "0.2.21",
|
||||
"@backstage/plugin-user-settings-common": "0.0.1"
|
||||
},
|
||||
"changesets": [
|
||||
"blue-pumas-cheer",
|
||||
"bright-trainers-brake",
|
||||
"chilly-trains-sleep",
|
||||
"cool-insects-remember",
|
||||
"cuddly-zebras-crash",
|
||||
"dry-squids-tap",
|
||||
"dull-ghosts-double",
|
||||
"early-trees-dance",
|
||||
"eighty-mirrors-flow",
|
||||
"flat-plums-grow",
|
||||
"forty-ties-agree",
|
||||
"forty-ties-disagree",
|
||||
"friendly-feet-refuse",
|
||||
"gentle-dryers-smile",
|
||||
"grumpy-owls-suffer",
|
||||
"heavy-numbers-love",
|
||||
"hip-hairs-exist",
|
||||
"late-games-protect",
|
||||
"light-pianos-exercise",
|
||||
"little-bulldogs-guess",
|
||||
"little-suns-fly",
|
||||
"mighty-dolls-retire",
|
||||
"modern-parrots-protect",
|
||||
"neat-gifts-join",
|
||||
"new-scissors-try",
|
||||
"nice-peas-retire",
|
||||
"nine-cherries-decide",
|
||||
"nine-glasses-nail",
|
||||
"ninety-icons-smile",
|
||||
"pink-gorillas-brake",
|
||||
"plenty-tools-exist",
|
||||
"rich-mugs-dress",
|
||||
"selfish-bees-think",
|
||||
"six-rats-kick",
|
||||
"slow-toes-jog",
|
||||
"small-spoons-shout",
|
||||
"soft-gorillas-refuse",
|
||||
"spotty-planets-accept",
|
||||
"strange-papayas-beg",
|
||||
"strong-otters-compete",
|
||||
"stupid-dots-relate",
|
||||
"swift-kings-sparkle",
|
||||
"thirty-paws-hope",
|
||||
"tiny-oranges-pretend",
|
||||
"tough-lies-repair",
|
||||
"violet-jokes-wave",
|
||||
"wicked-bobcats-teach",
|
||||
"wild-eggs-exist",
|
||||
"witty-bears-behave"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
---
|
||||
'@backstage/frontend-plugin-api': patch
|
||||
---
|
||||
|
||||
Extensions have been changed to be declared with an array of inputs and outputs, rather than a map of named data refs. This change was made to reduce confusion around the role of the input and output names, as well as enable more powerful APIs for overriding extensions.
|
||||
|
||||
An extension that was previously declared like this:
|
||||
|
||||
```tsx
|
||||
const exampleExtension = createExtension({
|
||||
name: 'example',
|
||||
inputs: {
|
||||
items: createExtensionInput({
|
||||
element: coreExtensionData.reactElement,
|
||||
}),
|
||||
},
|
||||
output: {
|
||||
element: coreExtensionData.reactElement,
|
||||
},
|
||||
factory({ inputs }) {
|
||||
return {
|
||||
element: (
|
||||
<div>
|
||||
Example
|
||||
{inputs.items.map(item => {
|
||||
return <div>{item.output.element}</div>;
|
||||
})}
|
||||
</div>
|
||||
),
|
||||
};
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
Should be migrated to the following:
|
||||
|
||||
```tsx
|
||||
const exampleExtension = createExtension({
|
||||
name: 'example',
|
||||
inputs: {
|
||||
items: createExtensionInput([coreExtensionData.reactElement]),
|
||||
},
|
||||
output: [coreExtensionData.reactElement],
|
||||
factory({ inputs }) {
|
||||
return [
|
||||
coreExtensionData.reactElement(
|
||||
<div>
|
||||
Example
|
||||
{inputs.items.map(item => {
|
||||
return <div>{item.get(coreExtensionData.reactElement)}</div>;
|
||||
})}
|
||||
</div>,
|
||||
),
|
||||
];
|
||||
},
|
||||
});
|
||||
```
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-gitlab': patch
|
||||
---
|
||||
|
||||
Adds new optional `excludeRepos` configuration option to the Gitlab catalog provider.
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/config-loader': patch
|
||||
---
|
||||
|
||||
Add boolean `allowMissingDefaultConfig` option to `ConfigSources.default` and
|
||||
`ConfigSources.defaultForTargets`, which results in omission of a ConfigSource
|
||||
for the default app-config.yaml configuration file if it's not present.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/create-app': patch
|
||||
---
|
||||
|
||||
Updated dockerfile and `app-config.production.yaml` to make it easier to get started with example data
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Switched the target from `'ES2022'` to `'es2022'` for better compatibility with older versions of `swc`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-gitlab': patch
|
||||
---
|
||||
|
||||
Added test cases for gitlab:projectAccessToken:create example
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-home': patch
|
||||
---
|
||||
|
||||
Fixed a bug on the WelcomeTitle component where the welcome message wasn't correct when the language was set to Spanish
|
||||
@@ -0,0 +1,13 @@
|
||||
---
|
||||
'@backstage/cli': minor
|
||||
---
|
||||
|
||||
**BREAKING**: The lockfile (`yarn.lock`) dependency analysis and mutations have been removed from several commands.
|
||||
|
||||
The `versions:bump` command will no longer attempt to bump and deduplicate dependencies by modifying the lockfile, it will only update `package.json` files.
|
||||
|
||||
The `versions:check` command has been removed, since its only purpose was verification and mutation of the lockfile. We recommend using the `yarn dedupe` command instead, or the `yarn-deduplicate` package if you're using Yarn classic.
|
||||
|
||||
The check that was built into the `package start` command has been removed, it will no longer warn about lockfile mismatches.
|
||||
|
||||
The packages in the Backstage ecosystem handle package duplications much better now than when these CLI features were first introduced, so the need for these features has diminished. By removing them, we drastically reduce the integration between the Backstage CLI and Yarn, making it much easier to add support for other package managers in the future.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/backend-test-utils': patch
|
||||
---
|
||||
|
||||
The default services for `startTestBackend` and `ServiceFactoryTester` now includes the Root Health Service.
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
'@backstage/plugin-notifications-backend-module-email': minor
|
||||
---
|
||||
|
||||
**BREAKING** Following `NotificationTemplateRenderer` methods now return a Promise and **must** be awaited: `getSubject`, `getText` and `getHtml`.
|
||||
|
||||
Required changes and example usage:
|
||||
|
||||
```diff
|
||||
import { notificationsEmailTemplateExtensionPoint } from '@backstage/plugin-notifications-backend-module-email';
|
||||
import { Notification } from '@backstage/plugin-notifications-common';
|
||||
+import { getNotificationSubject, getNotificationTextContent, getNotificationHtmlContent } from 'my-notification-processing-library`
|
||||
export const notificationsModuleEmailDecorator = createBackendModule({
|
||||
pluginId: 'notifications',
|
||||
moduleId: 'email.templates',
|
||||
register(reg) {
|
||||
reg.registerInit({
|
||||
deps: {
|
||||
emailTemplates: notificationsEmailTemplateExtensionPoint,
|
||||
},
|
||||
async init({ emailTemplates }) {
|
||||
emailTemplates.setTemplateRenderer({
|
||||
- getSubject(notification) {
|
||||
+ async getSubject(notification) {
|
||||
- return `New notification from ${notification.source}`;
|
||||
+ const subject = await getNotificationSubject(notification);
|
||||
+ return `New notification from ${subject}`;
|
||||
},
|
||||
- getText(notification) {
|
||||
+ async getText(notification) {
|
||||
- return notification.content;
|
||||
+ const text = await getNotificationTextContent(notification);
|
||||
+ return text;
|
||||
},
|
||||
- getHtml(notification) {
|
||||
+ async getHtml(notification) {
|
||||
- return `<p>${notification.content}</p>`;
|
||||
+ const html = await getNotificationHtmlContent(notification);
|
||||
+ return html;
|
||||
},
|
||||
});
|
||||
},
|
||||
});
|
||||
},
|
||||
});
|
||||
```
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
---
|
||||
|
||||
Cleaned up codebase of RepoUrlPicker
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-gitlab': patch
|
||||
---
|
||||
|
||||
Added test cases for gitlab:pipeline:trigger examples
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Add support for dynamic plugins via the EXPERIMENTAL_MODULE_FEDERATION environment variable when running `yarn start`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch
|
||||
---
|
||||
|
||||
Add examples for `fetch:cookiecutter` scaffolder action & improve related tests
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/frontend-plugin-api': patch
|
||||
---
|
||||
|
||||
Added support to be able to define `zod` config schema in Blueprints, with built in schema merging from the Blueprint and the extension instances.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-aws': patch
|
||||
---
|
||||
|
||||
`AwsOrganizationCloudAccountProcessor` configuration field `roleArn` is deprecated in favor of new field `accountId`
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/backend-plugin-api': patch
|
||||
---
|
||||
|
||||
fix typo in `getPluginRequestToken` comments
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
---
|
||||
|
||||
Fix scaffolder action `catalog:write` to write to directories that don't already exist
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/core-app-api': patch
|
||||
---
|
||||
|
||||
The request to delete the session cookie when running the app in protected mode is now done with a plain `fetch` rather than `FetchApi`. This fixes a bug where the app would immediately try to sign-in again when removing the cookie during logout.
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
'@backstage/frontend-plugin-api': patch
|
||||
---
|
||||
|
||||
Extension data references can now be defined in a way that encapsulates the ID string in the type, in addition to the data type itself. The old way of creating extension data references is deprecated and will be removed in a future release.
|
||||
|
||||
For example, the following code:
|
||||
|
||||
```ts
|
||||
export const myExtension = createExtensionDataRef<MyType>('my-plugin.my-data');
|
||||
```
|
||||
|
||||
Should be updated to the following:
|
||||
|
||||
```ts
|
||||
export const myExtension = createExtensionDataRef<MyType>().with({
|
||||
id: 'my-plugin.my-data',
|
||||
});
|
||||
```
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
---
|
||||
|
||||
Fix issue with `RepoUrlPicker` not refreshing the credentials for a different host
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Fix for `repo build --all` not properly detecting the experimental public entry point.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-auth-react': patch
|
||||
---
|
||||
|
||||
feat: Hide visibility of CookieAuthRedirect
|
||||
@@ -0,0 +1,10 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-gitlab': patch
|
||||
---
|
||||
|
||||
Add custom action for merge request: **auto**
|
||||
|
||||
The **Auto** action selects the committed action between _create_ and _update_.
|
||||
|
||||
The **Auto** action fetches files using the **/projects/repository/tree endpoint**.
|
||||
After fetching, it checks if the file exists locally and in the repository. If it does, it chooses **update**; otherwise, it chooses **create**.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/integration': patch
|
||||
---
|
||||
|
||||
Updated functions for `getHarnessEditContentsUrl`, `getHarnessFileContentsUrl`, `getHarnessArchiveUrl`, `getHarnessLatestCommitUrl` and `parseHarnessUrl` to handle account and org level urls
|
||||
@@ -0,0 +1,14 @@
|
||||
---
|
||||
'@backstage/frontend-plugin-api': patch
|
||||
'@backstage/frontend-test-utils': patch
|
||||
'@backstage/frontend-app-api': patch
|
||||
'@backstage/core-compat-api': patch
|
||||
'@backstage/plugin-catalog-react': patch
|
||||
'@backstage/plugin-user-settings': patch
|
||||
'@backstage/plugin-search-react': patch
|
||||
'@backstage/plugin-techdocs': patch
|
||||
'@backstage/plugin-catalog': patch
|
||||
'@backstage/plugin-search': patch
|
||||
---
|
||||
|
||||
Added config input type to the extensions
|
||||
+7
-9
@@ -9,10 +9,10 @@ yarn.lock @backstage/maintainers @backst
|
||||
*/yarn.lock @backstage/maintainers @backstage-service
|
||||
/.changeset/*.md
|
||||
/beps/0001-notifications-system @backstage/maintainers @backstage/notifications-maintainers
|
||||
/docs/assets/search @backstage/discoverability-maintainers
|
||||
/docs/features/search @backstage/discoverability-maintainers
|
||||
/docs/assets/search @backstage/search-maintainers
|
||||
/docs/features/search @backstage/search-maintainers
|
||||
/docs/features/techdocs @backstage/techdocs-maintainers
|
||||
/docs/plugins/integrating-search-into-plugins.md @backstage/discoverability-maintainers
|
||||
/docs/plugins/integrating-search-into-plugins.md @backstage/search-maintainers
|
||||
/packages/cli/src/commands/onboard @backstage/sharks
|
||||
/packages/backend-openapi-utils @backstage/maintainers @backstage/reviewers @backstage/openapi-tooling-maintainers
|
||||
/packages/techdocs-cli @backstage/techdocs-maintainers
|
||||
@@ -50,8 +50,8 @@ yarn.lock @backstage/maintainers @backst
|
||||
/plugins/explore-react @backstage/maintainers @backstage/reviewers @backstage/sda-se-reviewers
|
||||
/plugins/fossa @backstage/maintainers @backstage/reviewers @backstage/sda-se-reviewers
|
||||
/plugins/git-release-manager @backstage/maintainers @backstage/reviewers @erikengervall
|
||||
/plugins/home @backstage/discoverability-maintainers
|
||||
/plugins/home-* @backstage/discoverability-maintainers
|
||||
/plugins/home @backstage/home-maintainers
|
||||
/plugins/home-* @backstage/home-maintainers
|
||||
/plugins/kafka @backstage/maintainers @backstage/reviewers @andrewthauer
|
||||
/plugins/kafka-backend @backstage/maintainers @backstage/reviewers @andrewthauer
|
||||
/plugins/kubernetes @backstage/kubernetes-maintainers
|
||||
@@ -70,13 +70,11 @@ yarn.lock @backstage/maintainers @backst
|
||||
/plugins/rollbar-backend @backstage/maintainers @backstage/reviewers @andrewthauer
|
||||
/plugins/scaffolder @backstage/maintainers @backstage/reviewers @backstage/scaffolder-maintainers
|
||||
/plugins/scaffolder-* @backstage/maintainers @backstage/reviewers @backstage/scaffolder-maintainers
|
||||
/plugins/search @backstage/discoverability-maintainers
|
||||
/plugins/search-* @backstage/discoverability-maintainers
|
||||
/plugins/search @backstage/search-maintainers
|
||||
/plugins/search-* @backstage/search-maintainers
|
||||
/plugins/signals @backstage/maintainers @backstage/notifications-maintainers
|
||||
/plugins/signals-* @backstage/maintainers @backstage/notifications-maintainers
|
||||
/plugins/sonarqube @backstage/maintainers @backstage/reviewers @backstage/sda-se-reviewers
|
||||
/plugins/stack-overflow @backstage/discoverability-maintainers
|
||||
/plugins/stack-overflow-backend @backstage/discoverability-maintainers
|
||||
/plugins/techdocs @backstage/techdocs-maintainers
|
||||
/plugins/techdocs-* @backstage/techdocs-maintainers
|
||||
/plugins/user-settings-backend @backstage/maintainers @backstage/reviewers @backstage/sda-se-reviewers
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
area:techdocs:
|
||||
- '/(techdocs|tech-docs|tech docs)/i'
|
||||
area:discoverability:
|
||||
area:search:
|
||||
- '/search/i'
|
||||
area:events:
|
||||
- '/events/i'
|
||||
|
||||
+5
-1
@@ -4,7 +4,11 @@ area:catalog:
|
||||
- plugins/catalog/**/*
|
||||
- plugins/catalog-*/**/*
|
||||
- packages/catalog-*/**/*
|
||||
area:discoverability: # search + home
|
||||
area:home:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- plugins/home/**/*
|
||||
area:search:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- plugins/search/**/*
|
||||
|
||||
@@ -7,6 +7,7 @@ ADRs
|
||||
airbrake
|
||||
Airbrake
|
||||
Airbrakes
|
||||
ajv
|
||||
Alaria
|
||||
Alef
|
||||
allowlisted
|
||||
@@ -84,7 +85,9 @@ debounce
|
||||
Debounce
|
||||
debuggability
|
||||
declaratively
|
||||
deduplicate
|
||||
deduplicated
|
||||
deduplication
|
||||
deliverables
|
||||
denormalized
|
||||
dependabot
|
||||
|
||||
@@ -27,7 +27,7 @@ jobs:
|
||||
run: git fetch --depth 1 origin ${{ github.base_ref }}
|
||||
|
||||
- name: setup-node
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
|
||||
with:
|
||||
node-version: 18.x
|
||||
registry-url: https://registry.npmjs.org/
|
||||
|
||||
@@ -35,7 +35,7 @@ jobs:
|
||||
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
|
||||
- name: use node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
@@ -71,7 +71,7 @@ jobs:
|
||||
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
|
||||
- name: use node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
@@ -216,7 +216,7 @@ jobs:
|
||||
run: git fetch origin ${{ github.event.pull_request.base.ref }}
|
||||
|
||||
- name: use node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
|
||||
@@ -31,7 +31,7 @@ jobs:
|
||||
ref: ${{ github.event.client_payload.version && env.RELEASE_VERSION || github.ref }}
|
||||
|
||||
- name: use node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
|
||||
@@ -31,7 +31,7 @@ jobs:
|
||||
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
|
||||
- name: use node.js 18.x
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
|
||||
with:
|
||||
node-version: 18.x
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
|
||||
@@ -22,7 +22,7 @@ jobs:
|
||||
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
|
||||
- name: use node.js 18.x
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
|
||||
with:
|
||||
node-version: 18.x
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
|
||||
@@ -77,7 +77,7 @@ jobs:
|
||||
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
|
||||
- name: use node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
@@ -161,7 +161,7 @@ jobs:
|
||||
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
|
||||
- name: use node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
|
||||
@@ -67,6 +67,6 @@ jobs:
|
||||
|
||||
# Upload the results to GitHub's code scanning dashboard.
|
||||
- name: 'Upload to code-scanning'
|
||||
uses: github/codeql-action/upload-sarif@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10
|
||||
uses: github/codeql-action/upload-sarif@5cf07d8b700b67e235fbb65cbc84f69c0cf10464 # v3.25.14
|
||||
with:
|
||||
sarif_file: results.sarif
|
||||
|
||||
@@ -20,7 +20,7 @@ jobs:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: use node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
|
||||
@@ -19,7 +19,7 @@ jobs:
|
||||
ref: v${{ github.event.client_payload.version }}
|
||||
|
||||
- name: use node.js 18.x
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
|
||||
with:
|
||||
node-version: 18.x
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
|
||||
@@ -19,7 +19,7 @@ jobs:
|
||||
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
|
||||
- name: use node.js 18.x
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
|
||||
with:
|
||||
node-version: 18.x
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
@@ -29,7 +29,7 @@ jobs:
|
||||
cache-prefix: ${{ runner.os }}-v18.x
|
||||
|
||||
- name: Create Snyk report
|
||||
uses: snyk/actions/node@d406fd286b663eb8c6f8adcced4f7bcd199c0a3f # master
|
||||
uses: snyk/actions/node@6312a53377a551c0258438bf25fb8f378afbc977 # master
|
||||
continue-on-error: true # Snyk CLI exits with error when vulnerabilities are found
|
||||
with:
|
||||
args: >
|
||||
|
||||
@@ -31,7 +31,7 @@ jobs:
|
||||
|
||||
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
- name: Monitor and Synchronize Snyk Policies
|
||||
uses: snyk/actions/node@d406fd286b663eb8c6f8adcced4f7bcd199c0a3f # master
|
||||
uses: snyk/actions/node@6312a53377a551c0258438bf25fb8f378afbc977 # master
|
||||
with:
|
||||
command: monitor
|
||||
args: >
|
||||
@@ -46,7 +46,7 @@ jobs:
|
||||
# Above we run the `monitor` command, this runs the `test` command which is
|
||||
# the one that generates the SARIF report that we can upload to GitHub.
|
||||
- name: Create Snyk report
|
||||
uses: snyk/actions/node@d406fd286b663eb8c6f8adcced4f7bcd199c0a3f # master
|
||||
uses: snyk/actions/node@6312a53377a551c0258438bf25fb8f378afbc977 # master
|
||||
continue-on-error: true # To make sure that SARIF upload gets called
|
||||
with:
|
||||
args: >
|
||||
@@ -58,6 +58,6 @@ jobs:
|
||||
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
|
||||
NODE_OPTIONS: --max-old-space-size=7168
|
||||
- name: Upload Snyk report
|
||||
uses: github/codeql-action/upload-sarif@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10
|
||||
uses: github/codeql-action/upload-sarif@5cf07d8b700b67e235fbb65cbc84f69c0cf10464 # v3.25.14
|
||||
with:
|
||||
sarif_file: snyk.sarif
|
||||
|
||||
@@ -26,7 +26,7 @@ jobs:
|
||||
|
||||
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
- name: Use Node.js 18.x
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
|
||||
with:
|
||||
node-version: 18.x
|
||||
- name: yarn install
|
||||
|
||||
@@ -55,7 +55,7 @@ jobs:
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10
|
||||
uses: github/codeql-action/init@5cf07d8b700b67e235fbb65cbc84f69c0cf10464 # v3.25.14
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
@@ -66,7 +66,7 @@ jobs:
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10
|
||||
uses: github/codeql-action/autobuild@5cf07d8b700b67e235fbb65cbc84f69c0cf10464 # v3.25.14
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
@@ -80,4 +80,4 @@ jobs:
|
||||
# make release
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10
|
||||
uses: github/codeql-action/analyze@5cf07d8b700b67e235fbb65cbc84f69c0cf10464 # v3.25.14
|
||||
|
||||
@@ -29,7 +29,7 @@ jobs:
|
||||
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
|
||||
- name: use node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
|
||||
@@ -53,7 +53,7 @@ jobs:
|
||||
git config --global user.name 'GitHub e2e user'
|
||||
|
||||
- name: use node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
|
||||
@@ -50,7 +50,7 @@ jobs:
|
||||
git config --global user.name 'GitHub e2e user'
|
||||
|
||||
- name: use node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
|
||||
@@ -31,7 +31,7 @@ jobs:
|
||||
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
|
||||
- name: use node.js 18.x
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
|
||||
with:
|
||||
node-version: 18.x
|
||||
- uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5
|
||||
|
||||
@@ -22,7 +22,7 @@ jobs:
|
||||
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
|
||||
- name: Use Node.js 18.x
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
|
||||
with:
|
||||
node-version: 18.x
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ jobs:
|
||||
fetch-depth: 0 # Required to retrieve git history
|
||||
|
||||
- name: use node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
|
||||
@@ -36,7 +36,7 @@ jobs:
|
||||
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
|
||||
- name: use node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
|
||||
@@ -274,3 +274,4 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/
|
||||
| [Grupo OLX](https://www.olx.com.br/) | [@marciorgb](https://github.com/marciorgb), [@jeffbraga](https://github.com/jeffbraga), [@rogerfernandes](https://github.com/rogerfernandes), [@stockrt](https://github.com/stockrt) | At Grupo OLX, we are using Backstage to reduce friction and enhance developer autonomy by creating Golden Paths, which automate previously manual processes. Additionally, Backstage's catalog integrates various views of our organizational structure and workflows, offering a comprehensive overview of how different components interconnect. |
|
||||
| [DPG Media](https://www.dpgmediagroup.com) | [@benjidotsh](https://github.com/benjidotsh), [@lvstb](https://github.com/lvstb), [@ssliman](https://github.com/ssliman), [@edewel-beep](https://github.com/edewel-beep) | Access to infrastructure, documentation and internal tooling |
|
||||
| [Baloise](https://www.baloise.ch) | [@dweber019](https://github.com/dweber019), [@mikevader](https://github.com/mikevader) | We are using Backstage as internal developer protal for use cases like software catalog, documentation, infrastructure. |
|
||||
| [Cigna](https://www.cigna.com/) / [Evernorth](https://www.evernorth.com/) | [@raphtalia](https://github.com/raphtalia), [Devon Paluso](mailto:Devon.Paluso@evernorth.com), [Bryan Rego](mailto:Bryan.Rego@evernorth.com), [Ian Skillings](mailto:Ian.Skillings@evernorth.com) | Internal developer portal providing TechDocs, software templates, centralized secret management, with information consolidation from ServiceNow, Okta, GitHub, GitLab, and WebEx. |
|
||||
|
||||
@@ -32,11 +32,11 @@ Scope: The catalog plugin and catalog model
|
||||
| Patrik Oldsberg | Spotify | Cubic Belugas | [Rugvip](https://github.com/Rugvip) | `Rugvip#0019` |
|
||||
| Vincenzo Scamporlino | Spotify | Cubic Belugas | [vinzscam](http://github.com/vinzscam) | `vinzscam#6944` |
|
||||
|
||||
### Discoverability
|
||||
### Home
|
||||
|
||||
Team: @backstage/discoverability-maintainers
|
||||
Team: @backstage/home-maintainers
|
||||
|
||||
Scope: Discoverability within Backstage, including the home page, information architecture, and search
|
||||
Scope: The Backstage home page and information architecture
|
||||
|
||||
| Name | Organization | Team | GitHub | Discord |
|
||||
| ------------------------ | ------------ | -------------- | ---------------------------------------- | ----------------- |
|
||||
@@ -46,6 +46,18 @@ Scope: Discoverability within Backstage, including the home page, information ar
|
||||
| Raghunandan Balachandran | Spotify | Infinite Buck$ | [soapraj](http://github.com/soapraj) | raghunandanb#1114 |
|
||||
| Bailey Brooks | Spotify | Infinite Buck$ | [bailey](http://github.com/bailey) | \_bailey4 |
|
||||
|
||||
### Search
|
||||
|
||||
Team: @backstage/search-maintainers
|
||||
|
||||
Scope: The Backstage Search plugin
|
||||
|
||||
| Name | Organization | Team | GitHub | Discord |
|
||||
| ------------------------ | ------------ | -------------- | --------------------------------------------- | ----------------- |
|
||||
| Emma Indal | Spotify | Infinite Buck$ | [emmaindal](http://github.com/emmaindal) | emmaindal#7503 |
|
||||
| Raghunandan Balachandran | Spotify | Infinite Buck$ | [soapraj](http://github.com/soapraj) | raghunandanb#1114 |
|
||||
| Alex Lorenzi | Spotify | ProTean | [AlexLorenzi](https://github.com/AlexLorenzi) | alexlorenzi |
|
||||
|
||||
### Helm Charts
|
||||
|
||||
Team: @backstage/helm-chart-maintainers
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Plugin Metadata
|
||||
status: implementable
|
||||
status: implemented
|
||||
authors:
|
||||
- '@Rugvip'
|
||||
owners:
|
||||
@@ -10,16 +10,8 @@ project-areas:
|
||||
creation-date: yyyy-mm-dd
|
||||
---
|
||||
|
||||
<!--
|
||||
**Note:** When your BEP is complete, all these pre-existing comments should be removed
|
||||
|
||||
When editing BEPs, aim for tightly-scoped, single-topic PRs to keep discussions focused. If you disagree with what is already in a document, open a new PR with suggested changes.
|
||||
-->
|
||||
|
||||
# BEP: Plugin Metadata
|
||||
|
||||
<!-- Before merging the initial BEP PR, create a feature issue and update the below link. You can wait with this step until the BEP is ready to be merged. -->
|
||||
|
||||
[**Discussion Issue**](https://github.com/backstage/backstage/issues/25076)
|
||||
|
||||
- [Summary](#summary)
|
||||
|
||||
Executable
BIN
Binary file not shown.
|
After Width: | Height: | Size: 52 KiB |
+1
-6
@@ -12,12 +12,7 @@ access to external resources.
|
||||
|
||||
:::note Note
|
||||
|
||||
Identity management and the Sign-In page in Backstage is NOT a method for blocking
|
||||
access for unauthorized users. The identity system only serves to provide a personalized
|
||||
experience and access to a Backstage Identity Token, which can be passed to backend plugins.
|
||||
This also means that your Backstage backend APIs are by default unauthenticated.
|
||||
Thus, if your Backstage instance is exposed to the Internet, anyone can access
|
||||
information in the Backstage. You can learn more [here](../overview/threat-model.md#integrator-responsibilities).
|
||||
Identity management and the Sign-In page in Backstage will only block external access when using the new backend system, without setting `backend.auth.dangerouslyDisableDefaultAuthPolicy` in configuration. Even so, the frontend bundle is not protected from external access, protecting it requires the use of the [experimental public entry point](https://backstage.io/docs/tutorials/enable-public-entry/). You can learn more about this in the [Threat Model](../overview/threat-model.md#operator-responsibilities).
|
||||
|
||||
:::
|
||||
|
||||
|
||||
@@ -67,8 +67,6 @@ auth:
|
||||
clientSecret: ${AZURE_CLIENT_SECRET}
|
||||
tenantId: ${AZURE_TENANT_ID}
|
||||
domainHint: ${AZURE_TENANT_ID}
|
||||
additionalScopes:
|
||||
- Mail.Send
|
||||
signIn:
|
||||
resolvers:
|
||||
# typically you would pick one of these
|
||||
@@ -86,7 +84,7 @@ The Microsoft provider is a structure with three mandatory configuration keys:
|
||||
Leave blank if your app registration is multi tenant.
|
||||
When specified, this reduces login friction for users with accounts in multiple tenants by automatically filtering away accounts from other tenants.
|
||||
For more details, see [Home Realm Discovery](https://learn.microsoft.com/en-us/azure/active-directory/manage-apps/home-realm-discovery-policy)
|
||||
- `additionalScopes` (optional): List of scopes for the App Registration. The default and mandatory value is ['user.read'].
|
||||
- `additionalScopes` (optional): List of scopes for the App Registration, to be requested in addition to the required ones.
|
||||
|
||||
### Resolvers
|
||||
|
||||
|
||||
@@ -497,7 +497,7 @@ catalog:
|
||||
providers:
|
||||
githubOrg:
|
||||
- id: production
|
||||
githubUrl: 'https://github.com',
|
||||
githubUrl: 'https://github.com'
|
||||
orgs: ['backstage']
|
||||
schedule:
|
||||
frequency: PT30M
|
||||
@@ -536,8 +536,8 @@ catalog:
|
||||
providers:
|
||||
githubOrg:
|
||||
- id: production
|
||||
githubUrl: 'https://github.com',
|
||||
orgs: ['org-a', 'org-b'],
|
||||
githubUrl: 'https://github.com'
|
||||
orgs: ['org-a', 'org-b']
|
||||
schedule:
|
||||
frequency: PT30M
|
||||
timeout: PT15M
|
||||
|
||||
+15
-10
@@ -92,11 +92,14 @@ RUN tar xzf skeleton.tar.gz && rm skeleton.tar.gz
|
||||
RUN --mount=type=cache,target=/home/node/.cache/yarn,sharing=locked,uid=1000,gid=1000 \
|
||||
yarn install --frozen-lockfile --production --network-timeout 300000
|
||||
|
||||
# This will include the examples, if you don't need these simply remove this line
|
||||
COPY --chown=node:node examples ./examples
|
||||
|
||||
# Then copy the rest of the backend bundle, along with any other files we might want.
|
||||
COPY --chown=node:node packages/backend/dist/bundle.tar.gz app-config*.yaml ./
|
||||
RUN tar xzf bundle.tar.gz && rm bundle.tar.gz
|
||||
|
||||
CMD ["node", "packages/backend", "--config", "app-config.yaml"]
|
||||
CMD ["node", "packages/backend", "--config", "app-config.yaml", "--config", "app-config.production.yaml"]
|
||||
```
|
||||
|
||||
For more details on how the `backend:bundle` command and the `skeleton.tar.gz`
|
||||
@@ -251,12 +254,15 @@ RUN --mount=type=cache,target=/home/node/.cache/yarn,sharing=locked,uid=1000,gid
|
||||
COPY --from=build --chown=node:node /app/packages/backend/dist/bundle/ ./
|
||||
|
||||
# Copy any other files that we need at runtime
|
||||
COPY --chown=node:node app-config.yaml ./
|
||||
COPY --chown=node:node app-config*.yaml ./
|
||||
|
||||
# This will include the examples, if you don't need these simply remove this line
|
||||
COPY --chown=node:node examples ./examples
|
||||
|
||||
# This switches many Node.js dependencies to production mode.
|
||||
ENV NODE_ENV production
|
||||
|
||||
CMD ["node", "packages/backend", "--config", "app-config.yaml"]
|
||||
CMD ["node", "packages/backend", "--config", "app-config.yaml", "--config", "app-config.production.yaml"]
|
||||
```
|
||||
|
||||
Note that a newly created Backstage app will typically not have a `plugins/`
|
||||
@@ -277,6 +283,7 @@ packages/*/dist
|
||||
packages/*/node_modules
|
||||
plugins/*/dist
|
||||
plugins/*/node_modules
|
||||
*.local.yaml
|
||||
```
|
||||
|
||||
Once you have added both the `Dockerfile` and `.dockerignore` to the root of
|
||||
@@ -312,14 +319,12 @@ first step in doing so is to remove the `app-backend` plugin from the backend
|
||||
package, which is done as follows:
|
||||
|
||||
1. Delete `packages/backend/src/plugins/app.ts`
|
||||
2. Remove the following lines from `packages/backend/src/index.ts`:
|
||||
```tsx
|
||||
import app from './plugins/app';
|
||||
// ...
|
||||
const appEnv = useHotMemoize(module, () => createEnv('app'));
|
||||
// ...
|
||||
.addRouter('', await app(appEnv));
|
||||
2. Remove the following line from `packages/backend/src/index.ts`:
|
||||
|
||||
```ts
|
||||
backend.add(import('@backstage/plugin-app-backend/alpha'));
|
||||
```
|
||||
|
||||
3. Remove the `@backstage/plugin-app-backend` and the app package dependency
|
||||
(e.g. `app`) from `packages/backend/package.json`. If you don't remove the
|
||||
app package dependency the app will still be built and bundled with the
|
||||
|
||||
+101
-34
@@ -5,40 +5,37 @@ sidebar_label: Heroku
|
||||
description: How to deploy Backstage to Heroku
|
||||
---
|
||||
|
||||
Heroku is a Platform as a Service (PaaS) designed to handle application
|
||||
deployment in a hands-off way. Heroku supports container deployment of Docker
|
||||
images, a natural fit for Backstage.
|
||||
Heroku is a Platform as a Service (PaaS) designed to simplify application deployment.
|
||||
|
||||
## Configuring the CLI
|
||||
## Create App
|
||||
|
||||
First, install the
|
||||
[heroku-cli](https://devcenter.heroku.com/articles/heroku-cli) and login:
|
||||
Starting with an existing Backstage app or follow the [getting started guide](https://backstage.io/docs/getting-started/) to create a new one.
|
||||
|
||||
Install the
|
||||
[Heroku CLI](https://devcenter.heroku.com/articles/heroku-cli) and create a new Heroku app:
|
||||
|
||||
```shell
|
||||
$ heroku login
|
||||
cd your-app/
|
||||
heroku apps:create <your-app>
|
||||
```
|
||||
|
||||
If you have not yet created a project through the Heroku interface, you can create it through the CLI.
|
||||
## Domain
|
||||
|
||||
Get Heroku app URL:
|
||||
|
||||
```shell
|
||||
$ heroku create <your-app>
|
||||
heroku domains -a <your-app>
|
||||
<your-app-123>.herokuapp.com
|
||||
```
|
||||
|
||||
You _might_ also need to set your Heroku app's stack to `container`:
|
||||
|
||||
```bash
|
||||
$ heroku stack:set container -a <your-app>
|
||||
```
|
||||
|
||||
Configuring your `app-config.yaml`:
|
||||
The core [app-backend plugin](https://www.npmjs.com/package/@backstage/plugin-app-backend) allows a single Heroku app to serve the frontend and backend. To make this work you need to update the `baseUrl` and `port` in `app-config.production.yaml`:
|
||||
|
||||
```yaml
|
||||
app:
|
||||
# Should be the same as backend.baseUrl when using the `app-backend` plugin
|
||||
baseUrl: https://<your-app>.herokuapp.com
|
||||
baseUrl: https://<your-app-123>.herokuapp.com
|
||||
|
||||
backend:
|
||||
baseUrl: https://<your-app>.herokuapp.com
|
||||
baseUrl: https://<your-app-123>.herokuapp.com
|
||||
listen:
|
||||
port:
|
||||
$env: PORT
|
||||
@@ -46,28 +43,98 @@ backend:
|
||||
# https://devcenter.heroku.com/articles/dynos#web-dynos
|
||||
```
|
||||
|
||||
> Make sure your file is being copied into your container in the `Dockerfile`.
|
||||
## Build Script
|
||||
|
||||
Before building the Docker image, run the [backstage host build commands](https://backstage.io/docs/deployment/docker#host-build). They must be run whenever you are going to publish a new image.
|
||||
Add a build script in `package.json` to compile frontend during deployment:
|
||||
|
||||
Heroku runs a container registry on `registry.heroku.com`. To push Backstage
|
||||
Docker images, log in to the container registry also:
|
||||
```json
|
||||
"scripts": {
|
||||
"build": "yarn build:backend --config ../../app-config.yaml --config ../../app-config.production.yaml"
|
||||
```
|
||||
|
||||
## Start Command
|
||||
|
||||
Create a [Procfile](https://devcenter.heroku.com/articles/procfile) in the app's root:
|
||||
|
||||
```shell
|
||||
$ heroku container:login
|
||||
echo "web: yarn workspace backend start --config ../../app-config.yaml --config ../../app-config.production.yaml" > Procfile
|
||||
```
|
||||
|
||||
## Push and deploy a Docker image
|
||||
## Database
|
||||
|
||||
Now we can push a Backstage [Docker image](docker.md) to Heroku's container
|
||||
registry and release it to the `web` worker:
|
||||
Provision a [Heroku Postgres](https://elements.heroku.com/addons/heroku-postgresql) database:
|
||||
|
||||
```bash
|
||||
$ docker image build . -f packages/backend/Dockerfile --tag registry.heroku.com/<your-app>/web
|
||||
|
||||
$ docker push registry.heroku.com/<your-app>/web
|
||||
|
||||
$ heroku container:release web -a <your-app>
|
||||
```shell
|
||||
heroku addons:create heroku-postgresql -a <your-app>
|
||||
```
|
||||
|
||||
Now you should have Backstage up and running! 🎉
|
||||
Update `database` in `app-config.production.yaml`:
|
||||
|
||||
```yaml
|
||||
backend:
|
||||
database:
|
||||
client: pg
|
||||
pluginDivisionMode: schema
|
||||
ensureExists: false
|
||||
ensureSchemaExists: true
|
||||
connection: ${DATABASE_URL}
|
||||
```
|
||||
|
||||
Allow postgres self-signed certificates:
|
||||
|
||||
```shell
|
||||
heroku config:set PGSSLMODE=no-verify -a <your-app>
|
||||
```
|
||||
|
||||
## Deployment
|
||||
|
||||
Commit changes and push to Heroku to build and deploy:
|
||||
|
||||
```shell
|
||||
git add Procfile && git commit -am "configure heroku"
|
||||
git push heroku main
|
||||
```
|
||||
|
||||
View the app in the browser:
|
||||
|
||||
```shell
|
||||
heroku open -a <your-app>
|
||||
```
|
||||
|
||||
View logs:
|
||||
|
||||
```shell
|
||||
heroku logs -a <your-app>
|
||||
```
|
||||
|
||||
## Docker
|
||||
|
||||
As an alternative to git deploys, Heroku also [supports container images](https://devcenter.heroku.com/articles/container-registry-and-runtime).
|
||||
|
||||
Login to Heroku's container registry:
|
||||
|
||||
```shell
|
||||
heroku container:login
|
||||
```
|
||||
|
||||
Configure the Heroku app to run a container image:
|
||||
|
||||
```shell
|
||||
heroku stack:set container -a <your-app>
|
||||
```
|
||||
|
||||
Locally run the [host build commands](https://backstage.io/docs/deployment/docker/#host-build), they must be run whenever you are going to publish a new image:
|
||||
|
||||
```shell
|
||||
yarn install --frozen-lockfile
|
||||
yarn tsc
|
||||
yarn build:backend --config ../../app-config.yaml --config ../../app-config.production.yaml
|
||||
```
|
||||
|
||||
Build, push, and release the container image to the `web` dyno:
|
||||
|
||||
```shell
|
||||
docker image build . -f packages/backend/Dockerfile --tag registry.heroku.com/<your-app>/web
|
||||
docker push registry.heroku.com/<your-app>/web
|
||||
heroku container:release web -a <your-app>
|
||||
```
|
||||
|
||||
@@ -58,6 +58,20 @@ catalog:
|
||||
target: ../../examples/all.yaml
|
||||
```
|
||||
|
||||
:::note
|
||||
There might be cases where you need to test some `file` configurations in a Docker container. In a case like this, as the backend is serving the frontend in a default setup, the path would be from the root. Also, you need to **make sure to copy your files into your container**.
|
||||
|
||||
Using the example above that would look like this:
|
||||
|
||||
```yaml
|
||||
catalog:
|
||||
locations:
|
||||
- type: file
|
||||
target: ./examples/all.yaml
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
### Integration Processors
|
||||
|
||||
Integrations may simply provide a mechanism to handle `url` location type for an
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user