Merge branch 'backstage:master' into feat/techdocs-azurite-support
@@ -0,0 +1,60 @@
|
||||
---
|
||||
'@backstage/plugin-api-docs-module-protoc-gen-doc': patch
|
||||
'@backstage/plugin-catalog-unprocessed-entities': patch
|
||||
'@backstage/plugin-github-pull-requests-board': patch
|
||||
'@backstage/integration-react': patch
|
||||
'@backstage/plugin-github-deployments': patch
|
||||
'@backstage/plugin-microsoft-calendar': patch
|
||||
'@backstage/plugin-newrelic-dashboard': patch
|
||||
'@backstage/plugin-entity-validation': patch
|
||||
'@backstage/plugin-apollo-explorer': patch
|
||||
'@backstage/plugin-gitops-profiles': patch
|
||||
'@backstage/plugin-graphql-voyager': patch
|
||||
'@backstage/plugin-apache-airflow': patch
|
||||
'@backstage/plugin-github-actions': patch
|
||||
'@backstage/plugin-octopus-deploy': patch
|
||||
'@backstage/plugin-splunk-on-call': patch
|
||||
'@backstage/plugin-config-schema': patch
|
||||
'@backstage/plugin-github-issues': patch
|
||||
'@backstage/plugin-azure-devops': patch
|
||||
'@backstage/plugin-code-climate': patch
|
||||
'@backstage/plugin-gcp-projects': patch
|
||||
'@backstage/plugin-azure-sites': patch
|
||||
'@backstage/plugin-firehydrant': patch
|
||||
'@backstage/plugin-cloudbuild': patch
|
||||
'@backstage/plugin-home-react': patch
|
||||
'@backstage/plugin-lighthouse': patch
|
||||
'@backstage/plugin-tech-radar': patch
|
||||
'@backstage/plugin-codescene': patch
|
||||
'@backstage/plugin-dynatrace': patch
|
||||
'@backstage/plugin-gcalendar': patch
|
||||
'@backstage/plugin-org-react': patch
|
||||
'@backstage/plugin-shortcuts': patch
|
||||
'@backstage/plugin-sonarqube': patch
|
||||
'@backstage/plugin-xcmetrics': patch
|
||||
'@backstage/plugin-airbrake': patch
|
||||
'@backstage/plugin-circleci': patch
|
||||
'@backstage/plugin-graphiql': patch
|
||||
'@backstage/plugin-linguist': patch
|
||||
'@backstage/plugin-newrelic': patch
|
||||
'@backstage/plugin-opencost': patch
|
||||
'@backstage/plugin-periskop': patch
|
||||
'@backstage/plugin-playlist': patch
|
||||
'@backstage/plugin-puppetdb': patch
|
||||
'@backstage/plugin-bitrise': patch
|
||||
'@backstage/plugin-jenkins': patch
|
||||
'@backstage/plugin-rollbar': patch
|
||||
'@backstage/plugin-allure': patch
|
||||
'@backstage/plugin-badges': patch
|
||||
'@backstage/plugin-bazaar': patch
|
||||
'@backstage/plugin-sentry': patch
|
||||
'@backstage/plugin-fossa': patch
|
||||
'@backstage/plugin-ilert': patch
|
||||
'@backstage/plugin-kafka': patch
|
||||
'@backstage/plugin-nomad': patch
|
||||
'@backstage/plugin-vault': patch
|
||||
'@backstage/plugin-todo': patch
|
||||
'@backstage/plugin-org': patch
|
||||
---
|
||||
|
||||
Moved `@types/react` to be a regular dependency
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend': patch
|
||||
---
|
||||
|
||||
Fix to the `limit` parameter on entity queries.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes-backend': patch
|
||||
'@backstage/plugin-kubernetes-common': patch
|
||||
---
|
||||
|
||||
Add AWS Annotations to Kubernetes Cluster Resource
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog': patch
|
||||
---
|
||||
|
||||
Added title to props for `Has<kind>Cards`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/create-app': patch
|
||||
---
|
||||
|
||||
Bumped create-app version.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-auth-backend': patch
|
||||
---
|
||||
|
||||
Migrated the GitLab auth provider to be implemented using the new `@backstage/plugin-auth-backend-module-gitlab-provider` module.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Added the ability to create a plain backend module with the `new` command.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-auth-backend': patch
|
||||
---
|
||||
|
||||
Added `authPlugin` export for the new backend system. The plugin does not include any built-in auth providers, they must instead be added by installing additional modules, for example `authModuleGoogleProvider` from `@backstage/plugin-auth-backend-module-google-provider`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-code-coverage-backend': patch
|
||||
---
|
||||
|
||||
Added support for LCOV coverage reports
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-auth-backend-module-gcp-iap-provider': minor
|
||||
---
|
||||
|
||||
New module for `@backstage/plugin-auth-backend` that adds a GCP IAP auth provider.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog': patch
|
||||
---
|
||||
|
||||
Fixed an issue where `EntitySwitch` was preventing the display of entity errors.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-techdocs': patch
|
||||
---
|
||||
|
||||
Fixed bug in styles that caused next and previous links in footer to overlap page content.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/core-components': patch
|
||||
---
|
||||
|
||||
Fixed an issue causing `StructuredMetadataTable` to crash in case metadata contained `null` values.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
---
|
||||
|
||||
Add examples for `publish:github` and `publish:gitlab` scaffolder actions.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-azure': patch
|
||||
---
|
||||
|
||||
Improve consistency of results from the `AzureDevOpsEntityProvider`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-entity-feedback': patch
|
||||
---
|
||||
|
||||
Improve README to note that Backstage identity is required to be configured
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-auth-node': patch
|
||||
---
|
||||
|
||||
The `BackstageIdentityResponse` interface now has an optional `expiresInSeconds` field that can be used to signal session expiration. The `prepareBackstageIdentityResponse` utility will now also read the expiration from the provided token, and include it in the response.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/core-app-api': minor
|
||||
---
|
||||
|
||||
Fixed two bugs in how the `OAuth2Session` type represents the underlying data. The `expiresAt` and `backstageIdentity` are now both optional, since that's what they are in practice. This is not considered a breaking change since it was effectively a bug in the modelling of the state that this type represents, and the type was not used in any other external contract.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/integration': patch
|
||||
---
|
||||
|
||||
Additional fix for Gitiles auth links
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-auth-backend': patch
|
||||
---
|
||||
|
||||
Deprecated several exports that are now available from `@backstage/plugin-auth-node` instead.
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-azure': patch
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
'@backstage/backend-common': patch
|
||||
---
|
||||
|
||||
Use `DefaultAzureDevOpsCredentialsProvider` to retrieve credentials for Azure DevOps.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend': patch
|
||||
---
|
||||
|
||||
Fixed a link to the frontend Backstage plugin that had pointed to itself.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
---
|
||||
|
||||
Fixed the plugin and module ID of the alpha `catalogModuleTemplateKind` export.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/core-app-api': minor
|
||||
---
|
||||
|
||||
The `OAuth` class which is used by all OAuth providers will now consider both the session expiration of both the Backstage identity as well as the upstream identity provider, and refresh the session with either of them is about to expire.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-auth-backend-module-gitlab-provider': minor
|
||||
---
|
||||
|
||||
New module for `@backstage/plugin-auth-backend` that adds a GitLab auth provider.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-azure': patch
|
||||
---
|
||||
|
||||
Remove duplications from Azure search before committing the new locations to the catalog.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-auth-backend': patch
|
||||
---
|
||||
|
||||
Added the ability to disable the built-in auth providers by passing `disableDefaultProviderFactories` to `createRouter`.
|
||||
@@ -0,0 +1,14 @@
|
||||
---
|
||||
'@backstage/plugin-search-react': minor
|
||||
'@backstage/plugin-search': minor
|
||||
---
|
||||
|
||||
The SearchPage component can now be configured via app-config.yaml with default query parameters to define how it behaves when it is first loaded or reset. Check out the following example:
|
||||
|
||||
```yaml
|
||||
search:
|
||||
query:
|
||||
pageLimit: 50
|
||||
```
|
||||
|
||||
Acceptable values for `pageLimit` are `10`, `25`, `50` or `100`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-linguist-backend': patch
|
||||
---
|
||||
|
||||
When creating the router using `createRouterFromConfig` or using the plugin for the new backend system the `linguist.useSourceLocation` configuration is now optional.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-code-coverage': patch
|
||||
---
|
||||
|
||||
Use fetchApi to ensure authorization is used when fetching code-coverage data
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-auth-backend': patch
|
||||
---
|
||||
|
||||
The algorithm used when generating Backstage tokens can be configured via `auth.identityTokenAlgorithm`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/backend-test-utils': patch
|
||||
---
|
||||
|
||||
Extended `mockService` to also include mocked variants, for example `mockServices.lifecycle.mock()`. The returned mocked implementation will have a `factory` property which is a service factory for itself. You can also pass a partial implementation of the service to the mock function to use a mock implementation of specific methods.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/integration': patch
|
||||
---
|
||||
|
||||
Gitiles: Fixed auth prefix issue
|
||||
@@ -0,0 +1,28 @@
|
||||
---
|
||||
'@backstage/plugin-auth-node': minor
|
||||
---
|
||||
|
||||
Introduced a new system for building auth providers for `@backstage/plugin-auth-backend`, which both increases the amount of code re-use across providers, and also works better with the new backend system.
|
||||
|
||||
Many existing types have been moved from `@backstage/plugin-auth-backend` in order to avoid a direct dependency on the plugin from modules.
|
||||
|
||||
Auth provider integrations are now primarily implemented through a pattern of creating "authenticators", which are in turn specific to each kind of integrations. Initially there are two types: `createOAuthAuthenticator` and `createProxyAuthenticator`. These come paired with functions that let you create the corresponding route handlers, `createOAuthRouteHandlers` and `createProxyAuthRouteHandlers`, as well as provider factories, `createOAuthProviderFactory` and `createProxyAuthProviderFactory`. This new authenticator pattern allows the sign-in logic to be separated from the auth integration logic, allowing it to be completely re-used across all providers of the same kind.
|
||||
|
||||
The new provider factories also implement a new declarative way to configure sign-in resolvers, rather than configuration through code. Sign-in resolvers can now be configured through the `resolvers` configuration key, where the first resolver that provides an identity will be used, for example:
|
||||
|
||||
```yaml
|
||||
auth:
|
||||
providers:
|
||||
google:
|
||||
development:
|
||||
clientId: ...
|
||||
clientSecret: ...
|
||||
signIn:
|
||||
resolvers:
|
||||
- resolver: emailMatchingUserEntityAnnotation
|
||||
- resolver: emailLocalPartMatchingUserEntityName
|
||||
```
|
||||
|
||||
These configurable resolvers are created with a new `createSignInResolverFactory` function, which creates a sign-in resolver factory, optionally with an options schema that will be used both when configuring the sign-in resolver through configuration and code.
|
||||
|
||||
The internal helpers from `@backstage/plugin-auth-backend` that were used to implement auth providers using passport strategies have now also been made available as public API, through `PassportHelpers` and `PassportOAuthAuthenticatorHelper`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-entity-feedback-backend': patch
|
||||
---
|
||||
|
||||
Improve backend logging if method calls fail
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/core-plugin-api': minor
|
||||
---
|
||||
|
||||
Added the optional `expiresAt` field that may now be part of a `BackstageIdentityResponse`.
|
||||
@@ -0,0 +1,286 @@
|
||||
{
|
||||
"mode": "pre",
|
||||
"tag": "next",
|
||||
"initialVersions": {
|
||||
"example-app": "0.2.86",
|
||||
"@backstage/app-defaults": "1.4.2",
|
||||
"example-backend": "0.2.86",
|
||||
"@backstage/backend-app-api": "0.5.0",
|
||||
"@backstage/backend-common": "0.19.2",
|
||||
"@backstage/backend-defaults": "0.2.0",
|
||||
"@backstage/backend-dev-utils": "0.1.1",
|
||||
"example-backend-next": "0.0.14",
|
||||
"@backstage/backend-openapi-utils": "0.0.3",
|
||||
"@backstage/backend-plugin-api": "0.6.0",
|
||||
"@backstage/backend-tasks": "0.5.5",
|
||||
"@backstage/backend-test-utils": "0.2.0",
|
||||
"@backstage/catalog-client": "1.4.3",
|
||||
"@backstage/catalog-model": "1.4.1",
|
||||
"@backstage/cli": "0.22.10",
|
||||
"@backstage/cli-common": "0.1.12",
|
||||
"@backstage/cli-node": "0.1.3",
|
||||
"@backstage/codemods": "0.1.45",
|
||||
"@backstage/config": "1.0.8",
|
||||
"@backstage/config-loader": "1.4.0",
|
||||
"@backstage/core-app-api": "1.9.1",
|
||||
"@backstage/core-components": "0.13.4",
|
||||
"@backstage/core-plugin-api": "1.5.3",
|
||||
"@backstage/create-app": "0.5.4",
|
||||
"@backstage/dev-utils": "1.0.18",
|
||||
"e2e-test": "0.2.6",
|
||||
"@backstage/errors": "1.2.1",
|
||||
"@backstage/eslint-plugin": "0.1.3",
|
||||
"@backstage/integration": "1.6.0",
|
||||
"@backstage/integration-aws-node": "0.1.5",
|
||||
"@backstage/integration-react": "1.1.16",
|
||||
"@backstage/release-manifests": "0.0.9",
|
||||
"@backstage/repo-tools": "0.3.3",
|
||||
"@techdocs/cli": "1.4.5",
|
||||
"techdocs-cli-embedded-app": "0.2.85",
|
||||
"@backstage/test-utils": "1.4.2",
|
||||
"@backstage/theme": "0.4.1",
|
||||
"@backstage/types": "1.1.0",
|
||||
"@backstage/version-bridge": "1.0.4",
|
||||
"@backstage/plugin-adr": "0.6.4",
|
||||
"@backstage/plugin-adr-backend": "0.3.6",
|
||||
"@backstage/plugin-adr-common": "0.2.12",
|
||||
"@backstage/plugin-airbrake": "0.3.21",
|
||||
"@backstage/plugin-airbrake-backend": "0.2.21",
|
||||
"@backstage/plugin-allure": "0.1.37",
|
||||
"@backstage/plugin-analytics-module-ga": "0.1.32",
|
||||
"@backstage/plugin-analytics-module-ga4": "0.1.3",
|
||||
"@backstage/plugin-analytics-module-newrelic-browser": "0.0.1",
|
||||
"@backstage/plugin-apache-airflow": "0.2.14",
|
||||
"@backstage/plugin-api-docs": "0.9.7",
|
||||
"@backstage/plugin-api-docs-module-protoc-gen-doc": "0.1.2",
|
||||
"@backstage/plugin-apollo-explorer": "0.1.14",
|
||||
"@backstage/plugin-app-backend": "0.3.48",
|
||||
"@backstage/plugin-app-node": "0.1.0",
|
||||
"@backstage/plugin-auth-backend": "0.18.6",
|
||||
"@backstage/plugin-auth-node": "0.2.17",
|
||||
"@backstage/plugin-azure-devops": "0.3.3",
|
||||
"@backstage/plugin-azure-devops-backend": "0.3.27",
|
||||
"@backstage/plugin-azure-devops-common": "0.3.0",
|
||||
"@backstage/plugin-azure-sites": "0.1.10",
|
||||
"@backstage/plugin-azure-sites-backend": "0.1.10",
|
||||
"@backstage/plugin-azure-sites-common": "0.1.0",
|
||||
"@backstage/plugin-badges": "0.2.45",
|
||||
"@backstage/plugin-badges-backend": "0.2.3",
|
||||
"@backstage/plugin-bazaar": "0.2.12",
|
||||
"@backstage/plugin-bazaar-backend": "0.2.11",
|
||||
"@backstage/plugin-bitbucket-cloud-common": "0.2.9",
|
||||
"@backstage/plugin-bitrise": "0.1.48",
|
||||
"@backstage/plugin-catalog": "1.12.1",
|
||||
"@backstage/plugin-catalog-backend": "1.12.0",
|
||||
"@backstage/plugin-catalog-backend-module-aws": "0.2.3",
|
||||
"@backstage/plugin-catalog-backend-module-azure": "0.1.19",
|
||||
"@backstage/plugin-catalog-backend-module-bitbucket": "0.2.15",
|
||||
"@backstage/plugin-catalog-backend-module-bitbucket-cloud": "0.1.15",
|
||||
"@backstage/plugin-catalog-backend-module-bitbucket-server": "0.1.13",
|
||||
"@backstage/plugin-catalog-backend-module-gcp": "0.1.0",
|
||||
"@backstage/plugin-catalog-backend-module-gerrit": "0.1.16",
|
||||
"@backstage/plugin-catalog-backend-module-github": "0.3.3",
|
||||
"@backstage/plugin-catalog-backend-module-gitlab": "0.2.4",
|
||||
"@backstage/plugin-catalog-backend-module-incremental-ingestion": "0.4.1",
|
||||
"@backstage/plugin-catalog-backend-module-ldap": "0.5.15",
|
||||
"@backstage/plugin-catalog-backend-module-msgraph": "0.5.7",
|
||||
"@backstage/plugin-catalog-backend-module-openapi": "0.1.14",
|
||||
"@backstage/plugin-catalog-backend-module-puppetdb": "0.1.5",
|
||||
"@backstage/plugin-catalog-backend-module-unprocessed": "0.2.0",
|
||||
"@backstage/plugin-catalog-common": "1.0.15",
|
||||
"@internal/plugin-catalog-customized": "0.0.13",
|
||||
"@backstage/plugin-catalog-graph": "0.2.33",
|
||||
"@backstage/plugin-catalog-graphql": "0.3.22",
|
||||
"@backstage/plugin-catalog-import": "0.9.11",
|
||||
"@backstage/plugin-catalog-node": "1.4.1",
|
||||
"@backstage/plugin-catalog-react": "1.8.1",
|
||||
"@backstage/plugin-catalog-unprocessed-entities": "0.1.2",
|
||||
"@backstage/plugin-cicd-statistics": "0.1.23",
|
||||
"@backstage/plugin-cicd-statistics-module-gitlab": "0.1.17",
|
||||
"@backstage/plugin-circleci": "0.3.21",
|
||||
"@backstage/plugin-cloudbuild": "0.3.21",
|
||||
"@backstage/plugin-code-climate": "0.1.21",
|
||||
"@backstage/plugin-code-coverage": "0.2.14",
|
||||
"@backstage/plugin-code-coverage-backend": "0.2.14",
|
||||
"@backstage/plugin-codescene": "0.1.16",
|
||||
"@backstage/plugin-config-schema": "0.1.44",
|
||||
"@backstage/plugin-cost-insights": "0.12.10",
|
||||
"@backstage/plugin-cost-insights-common": "0.1.1",
|
||||
"@backstage/plugin-devtools": "0.1.3",
|
||||
"@backstage/plugin-devtools-backend": "0.1.3",
|
||||
"@backstage/plugin-devtools-common": "0.1.3",
|
||||
"@backstage/plugin-dynatrace": "7.0.1",
|
||||
"@backstage/plugin-entity-feedback": "0.2.4",
|
||||
"@backstage/plugin-entity-feedback-backend": "0.1.6",
|
||||
"@backstage/plugin-entity-feedback-common": "0.1.2",
|
||||
"@backstage/plugin-entity-validation": "0.1.6",
|
||||
"@backstage/plugin-events-backend": "0.2.9",
|
||||
"@backstage/plugin-events-backend-module-aws-sqs": "0.2.3",
|
||||
"@backstage/plugin-events-backend-module-azure": "0.1.10",
|
||||
"@backstage/plugin-events-backend-module-bitbucket-cloud": "0.1.10",
|
||||
"@backstage/plugin-events-backend-module-gerrit": "0.1.10",
|
||||
"@backstage/plugin-events-backend-module-github": "0.1.10",
|
||||
"@backstage/plugin-events-backend-module-gitlab": "0.1.10",
|
||||
"@backstage/plugin-events-backend-test-utils": "0.1.10",
|
||||
"@backstage/plugin-events-node": "0.2.9",
|
||||
"@internal/plugin-todo-list": "1.0.16",
|
||||
"@internal/plugin-todo-list-backend": "1.0.16",
|
||||
"@internal/plugin-todo-list-common": "1.0.12",
|
||||
"@backstage/plugin-explore": "0.4.7",
|
||||
"@backstage/plugin-explore-backend": "0.0.10",
|
||||
"@backstage/plugin-explore-common": "0.0.1",
|
||||
"@backstage/plugin-explore-react": "0.0.30",
|
||||
"@backstage/plugin-firehydrant": "0.2.5",
|
||||
"@backstage/plugin-fossa": "0.2.53",
|
||||
"@backstage/plugin-gcalendar": "0.3.17",
|
||||
"@backstage/plugin-gcp-projects": "0.3.40",
|
||||
"@backstage/plugin-git-release-manager": "0.3.34",
|
||||
"@backstage/plugin-github-actions": "0.6.2",
|
||||
"@backstage/plugin-github-deployments": "0.1.52",
|
||||
"@backstage/plugin-github-issues": "0.2.10",
|
||||
"@backstage/plugin-github-pull-requests-board": "0.1.15",
|
||||
"@backstage/plugin-gitops-profiles": "0.3.39",
|
||||
"@backstage/plugin-gocd": "0.1.27",
|
||||
"@backstage/plugin-graphiql": "0.2.53",
|
||||
"@backstage/plugin-graphql-backend": "0.1.38",
|
||||
"@backstage/plugin-graphql-voyager": "0.1.6",
|
||||
"@backstage/plugin-home": "0.5.5",
|
||||
"@backstage/plugin-home-react": "0.1.2",
|
||||
"@backstage/plugin-ilert": "0.2.10",
|
||||
"@backstage/plugin-jenkins": "0.8.3",
|
||||
"@backstage/plugin-jenkins-backend": "0.2.3",
|
||||
"@backstage/plugin-jenkins-common": "0.1.18",
|
||||
"@backstage/plugin-kafka": "0.3.21",
|
||||
"@backstage/plugin-kafka-backend": "0.2.41",
|
||||
"@backstage/plugin-kubernetes": "0.10.0",
|
||||
"@backstage/plugin-kubernetes-backend": "0.11.3",
|
||||
"@backstage/plugin-kubernetes-common": "0.6.5",
|
||||
"@backstage/plugin-lighthouse": "0.4.6",
|
||||
"@backstage/plugin-lighthouse-backend": "0.2.4",
|
||||
"@backstage/plugin-lighthouse-common": "0.1.2",
|
||||
"@backstage/plugin-linguist": "0.1.6",
|
||||
"@backstage/plugin-linguist-backend": "0.4.0",
|
||||
"@backstage/plugin-linguist-common": "0.1.1",
|
||||
"@backstage/plugin-microsoft-calendar": "0.1.6",
|
||||
"@backstage/plugin-newrelic": "0.3.39",
|
||||
"@backstage/plugin-newrelic-dashboard": "0.2.14",
|
||||
"@backstage/plugin-nomad": "0.1.2",
|
||||
"@backstage/plugin-nomad-backend": "0.1.2",
|
||||
"@backstage/plugin-octopus-deploy": "0.2.3",
|
||||
"@backstage/plugin-org": "0.6.11",
|
||||
"@backstage/plugin-org-react": "0.1.10",
|
||||
"@backstage/plugin-pagerduty": "0.6.2",
|
||||
"@backstage/plugin-periskop": "0.1.19",
|
||||
"@backstage/plugin-periskop-backend": "0.1.19",
|
||||
"@backstage/plugin-permission-backend": "0.5.23",
|
||||
"@backstage/plugin-permission-common": "0.7.7",
|
||||
"@backstage/plugin-permission-node": "0.7.11",
|
||||
"@backstage/plugin-permission-react": "0.4.14",
|
||||
"@backstage/plugin-playlist": "0.1.13",
|
||||
"@backstage/plugin-playlist-backend": "0.3.4",
|
||||
"@backstage/plugin-playlist-common": "0.1.9",
|
||||
"@backstage/plugin-proxy-backend": "0.3.0",
|
||||
"@backstage/plugin-puppetdb": "0.1.4",
|
||||
"@backstage/plugin-rollbar": "0.4.21",
|
||||
"@backstage/plugin-rollbar-backend": "0.1.45",
|
||||
"@backstage/plugin-scaffolder": "1.14.2",
|
||||
"@backstage/plugin-scaffolder-backend": "1.16.0",
|
||||
"@backstage/plugin-scaffolder-backend-module-confluence-to-markdown": "0.2.1",
|
||||
"@backstage/plugin-scaffolder-backend-module-cookiecutter": "0.2.24",
|
||||
"@backstage/plugin-scaffolder-backend-module-gitlab": "0.2.3",
|
||||
"@backstage/plugin-scaffolder-backend-module-rails": "0.4.17",
|
||||
"@backstage/plugin-scaffolder-backend-module-sentry": "0.1.8",
|
||||
"@backstage/plugin-scaffolder-backend-module-yeoman": "0.2.21",
|
||||
"@backstage/plugin-scaffolder-common": "1.4.0",
|
||||
"@backstage/plugin-scaffolder-node": "0.2.0",
|
||||
"@backstage/plugin-scaffolder-react": "1.5.2",
|
||||
"@backstage/plugin-search": "1.3.4",
|
||||
"@backstage/plugin-search-backend": "1.4.0",
|
||||
"@backstage/plugin-search-backend-module-catalog": "0.1.4",
|
||||
"@backstage/plugin-search-backend-module-elasticsearch": "1.3.3",
|
||||
"@backstage/plugin-search-backend-module-explore": "0.1.4",
|
||||
"@backstage/plugin-search-backend-module-pg": "0.5.9",
|
||||
"@backstage/plugin-search-backend-module-techdocs": "0.1.4",
|
||||
"@backstage/plugin-search-backend-node": "1.2.4",
|
||||
"@backstage/plugin-search-common": "1.2.5",
|
||||
"@backstage/plugin-search-react": "1.6.4",
|
||||
"@backstage/plugin-sentry": "0.5.6",
|
||||
"@backstage/plugin-shortcuts": "0.3.13",
|
||||
"@backstage/plugin-sonarqube": "0.7.2",
|
||||
"@backstage/plugin-sonarqube-backend": "0.2.2",
|
||||
"@backstage/plugin-sonarqube-react": "0.1.7",
|
||||
"@backstage/plugin-splunk-on-call": "0.4.10",
|
||||
"@backstage/plugin-stack-overflow": "0.1.19",
|
||||
"@backstage/plugin-stack-overflow-backend": "0.2.4",
|
||||
"@backstage/plugin-stackstorm": "0.1.5",
|
||||
"@backstage/plugin-tech-insights": "0.3.13",
|
||||
"@backstage/plugin-tech-insights-backend": "0.5.14",
|
||||
"@backstage/plugin-tech-insights-backend-module-jsonfc": "0.1.32",
|
||||
"@backstage/plugin-tech-insights-common": "0.2.11",
|
||||
"@backstage/plugin-tech-insights-node": "0.4.6",
|
||||
"@backstage/plugin-tech-radar": "0.6.7",
|
||||
"@backstage/plugin-techdocs": "1.6.6",
|
||||
"@backstage/plugin-techdocs-addons-test-utils": "1.0.17",
|
||||
"@backstage/plugin-techdocs-backend": "1.6.5",
|
||||
"@backstage/plugin-techdocs-module-addons-contrib": "1.0.16",
|
||||
"@backstage/plugin-techdocs-node": "1.7.4",
|
||||
"@backstage/plugin-techdocs-react": "1.1.9",
|
||||
"@backstage/plugin-todo": "0.2.23",
|
||||
"@backstage/plugin-todo-backend": "0.2.0",
|
||||
"@backstage/plugin-user-settings": "0.7.6",
|
||||
"@backstage/plugin-user-settings-backend": "0.1.12",
|
||||
"@backstage/plugin-vault": "0.1.15",
|
||||
"@backstage/plugin-vault-backend": "0.3.4",
|
||||
"@backstage/plugin-xcmetrics": "0.2.41",
|
||||
"@backstage/plugin-auth-backend-module-gcp-iap-provider": "0.0.0",
|
||||
"@backstage/plugin-auth-backend-module-github-provider": "0.0.0",
|
||||
"@backstage/plugin-auth-backend-module-google-provider": "0.0.0",
|
||||
"@backstage/plugin-opencost": "0.1.0"
|
||||
},
|
||||
"changesets": [
|
||||
"calm-cups-smile",
|
||||
"catalog-everybody-to-the-limit",
|
||||
"chilly-parrots-yell",
|
||||
"create-app-1692704146",
|
||||
"cyan-roses-relate",
|
||||
"dirty-carrots-notice",
|
||||
"dirty-years-travel",
|
||||
"dry-wasps-occur",
|
||||
"dull-tables-joke",
|
||||
"eight-radios-listen",
|
||||
"empty-rings-type",
|
||||
"fair-paws-flash",
|
||||
"few-nails-smile",
|
||||
"fresh-candles-warn",
|
||||
"great-chairs-swim",
|
||||
"healthy-tools-count",
|
||||
"hungry-dots-design",
|
||||
"late-cows-turn",
|
||||
"lazy-rice-rule",
|
||||
"lovely-years-sniff",
|
||||
"mean-carpets-provide",
|
||||
"mighty-crabs-cheat",
|
||||
"new-sheep-cover",
|
||||
"nice-forks-remain",
|
||||
"ninety-news-visit",
|
||||
"old-geese-drive",
|
||||
"orange-houses-fly",
|
||||
"pink-cups-rescue",
|
||||
"poor-years-appear",
|
||||
"popular-readers-allow",
|
||||
"renovate-76185f9",
|
||||
"repo-p-lisa",
|
||||
"repo-tools-boo-descriptions",
|
||||
"repo-tools-ci-toldya-so",
|
||||
"six-wolves-admire",
|
||||
"slow-ducks-hunt",
|
||||
"slow-queens-visit",
|
||||
"smart-islands-jog",
|
||||
"strange-frogs-count",
|
||||
"sweet-hairs-complain",
|
||||
"sweet-pens-hunt",
|
||||
"warm-llamas-bake",
|
||||
"warm-panthers-lick",
|
||||
"yellow-trains-protect"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-cost-insights': patch
|
||||
---
|
||||
|
||||
Updated dependency `@types/pluralize` to `^0.0.30`.
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/repo-tools': patch
|
||||
---
|
||||
|
||||
The `generate-catalog-info` command now uses the first listed `CODEOWNER` as Component owner when initially
|
||||
creating the `catalog-info.yaml` file. It continues to allow any one listed `CODEOWNER` when updating
|
||||
entity metadata.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/repo-tools': patch
|
||||
---
|
||||
|
||||
Fixed a bug with the `generate-catalog-info` command that could cause the `--dry-run` flag to indicate changes to files when no changes would actually be made if the command were run without the flag.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/repo-tools': patch
|
||||
---
|
||||
|
||||
Added a `--ci` flag to the `generate-catalog-info` command. This flag behaves similarly to the same flag on `api-reports`: if `catalog-info.yaml` files would have been added or modified, then the process exits with status code `1`, and instructions are printed.
|
||||
@@ -0,0 +1,23 @@
|
||||
---
|
||||
'@backstage/integration': minor
|
||||
---
|
||||
|
||||
Added `AzureDevOpsCredentialsProvider` to support multiple Azure DevOps organizations and **deprecated** `AzureIntegrationConfig.credential` and `AzureIntegrationConfig.token` in favour of `AzureIntegrationConfig.credentials`. You can now use specific credentials for different Azure DevOps (Server) organizations by specifying the `organizations` field on a credential:
|
||||
|
||||
```yaml
|
||||
integrations:
|
||||
azure:
|
||||
- host: dev.azure.com
|
||||
credentials:
|
||||
- organizations:
|
||||
- my-org
|
||||
- my-other-org
|
||||
clientId: ${AZURE_CLIENT_ID}
|
||||
clientSecret: ${AZURE_CLIENT_SECRET}
|
||||
tenantId: ${AZURE_TENANT_ID}
|
||||
- organizations:
|
||||
- yet-another-org
|
||||
personalAccessToken: ${PERSONAL_ACCESS_TOKEN}
|
||||
```
|
||||
|
||||
See the [Azure integration documentation](https://backstage.io/docs/integrations/azure/locations) for more information.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Added support for the `dev/index` entry point for backend plugins and modules.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-opencost': minor
|
||||
---
|
||||
|
||||
New OpenCost plugin provides an port of the latest OpenCost UI to Backstage with updated dependencies. The plugin's README covers installation and configuration
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend': patch
|
||||
---
|
||||
|
||||
Fix OpenAPI schema for the facets endpoint
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/core-components': patch
|
||||
---
|
||||
|
||||
Add loading indicator to Table
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-auth-backend-module-google-provider': minor
|
||||
---
|
||||
|
||||
New module for `@backstage/plugin-auth-backend` that adds a Google auth provider.
|
||||
@@ -0,0 +1,24 @@
|
||||
---
|
||||
'@backstage/config-loader': minor
|
||||
---
|
||||
|
||||
Deep visibility now also applies to values that are not covered by the configuration schema.
|
||||
|
||||
For example, given the following configuration schema:
|
||||
|
||||
```ts
|
||||
// plugins/a/config.schema.ts
|
||||
export interface Config {
|
||||
/** @deepVisibility frontend */
|
||||
a?: unknown;
|
||||
}
|
||||
|
||||
// plugins/a/config.schema.ts
|
||||
export interface Config {
|
||||
a?: {
|
||||
b?: string;
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
All values under `a` are now visible to the frontend, while previously only `a` and `a/b` would've been visible.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/config-loader': patch
|
||||
---
|
||||
|
||||
Do not unnecessarily notify subscribers when no-op updates to config happen
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-auth-backend-module-github-provider': minor
|
||||
---
|
||||
|
||||
New module for `@backstage/plugin-auth-backend` that adds a GitHub auth provider.
|
||||
@@ -0,0 +1,13 @@
|
||||
---
|
||||
'@backstage/plugin-code-coverage-backend': patch
|
||||
'@backstage/plugin-tech-insights-backend': patch
|
||||
'@backstage/plugin-linguist-backend': patch
|
||||
'@backstage/backend-common': patch
|
||||
'@backstage/plugin-catalog-backend': patch
|
||||
'@backstage/backend-tasks': patch
|
||||
'@backstage/plugin-app-backend': patch
|
||||
'@backstage/plugin-bazaar-backend': patch
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
---
|
||||
|
||||
Changes needed to support MySQL
|
||||
@@ -4,8 +4,10 @@
|
||||
# The last matching pattern takes precedence.
|
||||
# https://help.github.com/articles/about-codeowners/
|
||||
|
||||
* @backstage/maintainers
|
||||
*/yarn.lock @backstage/maintainers @backstage-service
|
||||
* @backstage/maintainers @backstage/reviewers
|
||||
yarn.lock @backstage/maintainers @backstage/reviewers @backstage-service
|
||||
*/yarn.lock @backstage/maintainers @backstage/reviewers @backstage-service
|
||||
/.changeset/*.md
|
||||
/cypress/src/integration/plugins/techdocs.spec.ts @backstage/techdocs-maintainers
|
||||
/docs/assets/search @backstage/discoverability-maintainers
|
||||
/docs/features/search @backstage/discoverability-maintainers
|
||||
@@ -14,81 +16,67 @@
|
||||
/packages/cli/src/commands/onboard @backstage/sharks
|
||||
/packages/techdocs-cli @backstage/techdocs-maintainers
|
||||
/packages/techdocs-cli-embedded-app @backstage/techdocs-maintainers
|
||||
/plugins/adr @backstage/maintainers @kuangp
|
||||
/plugins/adr-* @backstage/maintainers @kuangp
|
||||
/plugins/allure @backstage/maintainers @deepak-bhardwaj-ps
|
||||
/plugins/analytics-module-newrelic-browser @backstage/maintainers @jmezach
|
||||
/plugins/apache-airflow @backstage/maintainers @cmpadden
|
||||
/plugins/api-docs @backstage/maintainers @backstage/sda-se-reviewers
|
||||
/plugins/azure-devops @backstage/maintainers @marleypowell @awanlin
|
||||
/plugins/azure-devops-backend @backstage/maintainers @marleypowell @awanlin
|
||||
/plugins/azure-devops-common @backstage/maintainers @marleypowell @awanlin
|
||||
/plugins/bitbucket-cloud-common @backstage/maintainers @pjungermann
|
||||
/plugins/bitrise @backstage/maintainers @backstage/sda-se-reviewers
|
||||
/plugins/catalog @backstage/maintainers @backstage/catalog-maintainers
|
||||
/plugins/catalog-* @backstage/maintainers @backstage/catalog-maintainers
|
||||
/plugins/catalog-backend-module-aws @backstage/maintainers @backstage/catalog-maintainers @pjungermann
|
||||
/plugins/catalog-backend-module-bitbucket-cloud @backstage/maintainers @backstage/catalog-maintainers @pjungermann
|
||||
/plugins/catalog-backend-module-msgraph @backstage/maintainers @backstage/catalog-maintainers @pjungermann
|
||||
/plugins/catalog-backend-module-puppetdb @backstage/maintainers @backstage/catalog-maintainers @tdabasinskas
|
||||
/plugins/catalog-graph @backstage/maintainers @backstage/catalog-maintainers @backstage/sda-se-reviewers
|
||||
/plugins/circleci @backstage/maintainers @adamdmharvey
|
||||
/plugins/cloudbuild @backstage/maintainers @trivago/ebarrios
|
||||
/plugins/code-coverage @backstage/maintainers @alde @nissayeva
|
||||
/plugins/code-coverage-backend @backstage/maintainers @alde @nissayeva
|
||||
/plugins/cost-insights @backstage/maintainers @backstage/silver-lining
|
||||
/plugins/cost-insights-* @backstage/maintainers @backstage/silver-lining
|
||||
/plugins/devtools @backstage/maintainers @awanlin
|
||||
/plugins/devtools-backend @backstage/maintainers @awanlin
|
||||
/plugins/devtools-common @backstage/maintainers @awanlin
|
||||
/plugins/entity-feedback @backstage/maintainers @kuangp
|
||||
/plugins/entity-feedback-* @backstage/maintainers @kuangp
|
||||
/plugins/events-backend @backstage/maintainers @pjungermann
|
||||
/plugins/events-backend-module-aws-sqs @backstage/maintainers @pjungermann
|
||||
/plugins/events-backend-module-azure @backstage/maintainers @pjungermann
|
||||
/plugins/events-backend-module-bitbucket-cloud @backstage/maintainers @pjungermann
|
||||
/plugins/events-backend-module-gerrit @backstage/maintainers @pjungermann
|
||||
/plugins/events-backend-module-github @backstage/maintainers @pjungermann
|
||||
/plugins/events-backend-module-gitlab @backstage/maintainers @pjungermann
|
||||
/plugins/events-backend-test-utils @backstage/maintainers @pjungermann
|
||||
/plugins/events-node @backstage/maintainers @pjungermann
|
||||
/plugins/explore @backstage/maintainers @backstage/sda-se-reviewers
|
||||
/plugins/explore-react @backstage/maintainers @backstage/sda-se-reviewers
|
||||
/plugins/fossa @backstage/maintainers @backstage/sda-se-reviewers
|
||||
/plugins/gcalendar @backstage/maintainers @szubster @ptychu @kielosz @alexrybch
|
||||
/plugins/git-release-manager @backstage/maintainers @erikengervall
|
||||
/plugins/adr @backstage/maintainers @backstage/reviewers @kuangp
|
||||
/plugins/adr-* @backstage/maintainers @backstage/reviewers @kuangp
|
||||
/plugins/api-docs @backstage/maintainers @backstage/reviewers @backstage/sda-se-reviewers
|
||||
/plugins/azure-devops @backstage/maintainers @backstage/reviewers @awanlin
|
||||
/plugins/azure-devops-backend @backstage/maintainers @backstage/reviewers @awanlin
|
||||
/plugins/azure-devops-common @backstage/maintainers @backstage/reviewers @awanlin
|
||||
/plugins/bitbucket-cloud-common @backstage/maintainers @backstage/reviewers @pjungermann
|
||||
/plugins/bitrise @backstage/maintainers @backstage/reviewers @backstage/sda-se-reviewers
|
||||
/plugins/catalog @backstage/maintainers @backstage/reviewers @backstage/catalog-maintainers
|
||||
/plugins/catalog-* @backstage/maintainers @backstage/reviewers @backstage/catalog-maintainers
|
||||
/plugins/catalog-backend-module-aws @backstage/maintainers @backstage/reviewers @backstage/catalog-maintainers @pjungermann
|
||||
/plugins/catalog-backend-module-bitbucket-cloud @backstage/maintainers @backstage/reviewers @backstage/catalog-maintainers @pjungermann
|
||||
/plugins/catalog-backend-module-msgraph @backstage/maintainers @backstage/reviewers @backstage/catalog-maintainers @pjungermann
|
||||
/plugins/catalog-backend-module-puppetdb @backstage/maintainers @backstage/reviewers @backstage/catalog-maintainers
|
||||
/plugins/catalog-graph @backstage/maintainers @backstage/reviewers @backstage/catalog-maintainers @backstage/sda-se-reviewers
|
||||
/plugins/circleci @backstage/maintainers @backstage/reviewers @adamdmharvey
|
||||
/plugins/code-coverage @backstage/maintainers @backstage/reviewers @alde
|
||||
/plugins/code-coverage-backend @backstage/maintainers @backstage/reviewers @alde
|
||||
/plugins/cost-insights @backstage/maintainers @backstage/reviewers @backstage/silver-lining
|
||||
/plugins/cost-insights-* @backstage/maintainers @backstage/reviewers @backstage/silver-lining
|
||||
/plugins/devtools @backstage/maintainers @backstage/reviewers @awanlin
|
||||
/plugins/devtools-backend @backstage/maintainers @backstage/reviewers @awanlin
|
||||
/plugins/devtools-common @backstage/maintainers @backstage/reviewers @awanlin
|
||||
/plugins/entity-feedback @backstage/maintainers @backstage/reviewers @kuangp
|
||||
/plugins/entity-feedback-* @backstage/maintainers @backstage/reviewers @kuangp
|
||||
/plugins/events-backend @backstage/maintainers @backstage/reviewers @pjungermann
|
||||
/plugins/events-backend-module-aws-sqs @backstage/maintainers @backstage/reviewers @pjungermann
|
||||
/plugins/events-backend-module-azure @backstage/maintainers @backstage/reviewers @pjungermann
|
||||
/plugins/events-backend-module-bitbucket-cloud @backstage/maintainers @backstage/reviewers @pjungermann
|
||||
/plugins/events-backend-module-gerrit @backstage/maintainers @backstage/reviewers @pjungermann
|
||||
/plugins/events-backend-module-github @backstage/maintainers @backstage/reviewers @pjungermann
|
||||
/plugins/events-backend-module-gitlab @backstage/maintainers @backstage/reviewers @pjungermann
|
||||
/plugins/events-backend-test-utils @backstage/maintainers @backstage/reviewers @pjungermann
|
||||
/plugins/events-node @backstage/maintainers @backstage/reviewers @pjungermann
|
||||
/plugins/explore @backstage/maintainers @backstage/reviewers @backstage/sda-se-reviewers
|
||||
/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/ilert @backstage/maintainers @yacut
|
||||
/plugins/jenkins @backstage/maintainers @timja
|
||||
/plugins/jenkins-backend @backstage/maintainers @timja
|
||||
/plugins/kafka @backstage/maintainers @nirga @andrewthauer
|
||||
/plugins/kafka-backend @backstage/maintainers @nirga @andrewthauer
|
||||
/plugins/kubernetes @backstage/maintainers @backstage/kubernetes-maintainers
|
||||
/plugins/kubernetes-* @backstage/maintainers @backstage/kubernetes-maintainers
|
||||
/plugins/linguist @backstage/maintainers @awanlin
|
||||
/plugins/linguist-backend @backstage/maintainers @awanlin
|
||||
/plugins/linguist-common @backstage/maintainers @awanlin
|
||||
/plugins/microsoft-calendar @backstage/maintainers @abhay-soni-developer @NishkarshRaj
|
||||
/plugins/newrelic-dashboard @backstage/maintainers @mufaddal7
|
||||
/plugins/kafka @backstage/maintainers @backstage/reviewers @andrewthauer
|
||||
/plugins/kafka-backend @backstage/maintainers @backstage/reviewers @andrewthauer
|
||||
/plugins/kubernetes @backstage/maintainers @backstage/reviewers @backstage/kubernetes-maintainers
|
||||
/plugins/kubernetes-* @backstage/maintainers @backstage/reviewers @backstage/kubernetes-maintainers
|
||||
/plugins/linguist @backstage/maintainers @backstage/reviewers @awanlin
|
||||
/plugins/linguist-backend @backstage/maintainers @backstage/reviewers @awanlin
|
||||
/plugins/linguist-common @backstage/maintainers @backstage/reviewers @awanlin
|
||||
/plugins/permission-* @backstage/permission-maintainers
|
||||
/plugins/playlist @backstage/maintainers @kuangp
|
||||
/plugins/playlist-* @backstage/maintainers @kuangp
|
||||
/plugins/puppetdb @backstage/maintainers @tdabasinskas
|
||||
/plugins/rollbar @backstage/maintainers @andrewthauer
|
||||
/plugins/rollbar-backend @backstage/maintainers @andrewthauer
|
||||
/plugins/scaffolder-backend-module-rails @backstage/maintainers @angeliski
|
||||
/plugins/scaffolder-backend-module-yeoman @backstage/maintainers @pawelmitka
|
||||
/plugins/playlist @backstage/maintainers @backstage/reviewers @kuangp
|
||||
/plugins/playlist-* @backstage/maintainers @backstage/reviewers @kuangp
|
||||
/plugins/rollbar @backstage/maintainers @backstage/reviewers @andrewthauer
|
||||
/plugins/rollbar-backend @backstage/maintainers @backstage/reviewers @andrewthauer
|
||||
/plugins/search @backstage/discoverability-maintainers
|
||||
/plugins/search-* @backstage/discoverability-maintainers
|
||||
/plugins/sonarqube @backstage/maintainers @backstage/sda-se-reviewers
|
||||
/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/sda-se-reviewers
|
||||
/tech-insights-backend @backstage/maintainers @xantier @iain-b
|
||||
/tech-insights-backend-module-jsonfc @backstage/maintainers @xantier @iain-b
|
||||
/tech-insights-tech-insights-common @backstage/maintainers @xantier @iain-b
|
||||
/tech-insights-tech-insights-node @backstage/maintainers @xantier @iain-b
|
||||
yarn.lock @backstage/maintainers @backstage-service
|
||||
/plugins/user-settings-backend @backstage/maintainers @backstage/reviewers @backstage/sda-se-reviewers
|
||||
/plugins/tech-insights-backend @backstage/maintainers @backstage/reviewers @xantier
|
||||
/plugins/tech-insights-backend-module-jsonfc @backstage/maintainers @backstage/reviewers @xantier
|
||||
/plugins/tech-insights-tech-insights-common @backstage/maintainers @backstage/reviewers @xantier
|
||||
/plugins/tech-insights-tech-insights-node @backstage/maintainers @backstage/reviewers @xantier
|
||||
|
||||
@@ -280,3 +280,7 @@ gocd:
|
||||
|
||||
permission:
|
||||
enabled: true
|
||||
|
||||
search:
|
||||
query:
|
||||
pageLimit: 50
|
||||
|
||||
@@ -30,7 +30,7 @@ jobs:
|
||||
--remote-repo-url=https://github.com/backstage/backstage
|
||||
env:
|
||||
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
|
||||
NODE_OPTIONS: --max-old-space-size=4096
|
||||
NODE_OPTIONS: --max-old-space-size=7168
|
||||
|
||||
# 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.
|
||||
@@ -45,7 +45,7 @@ jobs:
|
||||
--sarif-file-output=snyk.sarif
|
||||
env:
|
||||
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
|
||||
NODE_OPTIONS: --max-old-space-size=4096
|
||||
NODE_OPTIONS: --max-old-space-size=7168
|
||||
- name: Upload Snyk report
|
||||
uses: github/codeql-action/upload-sarif@v2
|
||||
with:
|
||||
|
||||
@@ -27,3 +27,11 @@ jobs:
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }}
|
||||
HUSKY: '0'
|
||||
|
||||
- name: Discord notification
|
||||
if: ${{ failure() }}
|
||||
uses: Ilshidur/action-discord@0.3.2
|
||||
env:
|
||||
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
|
||||
with:
|
||||
args: 'Version Packages Sync Failed https://github.com/{{GITHUB_REPOSITORY}}/actions/runs/{{GITHUB_RUN_ID}}'
|
||||
|
||||
@@ -4,6 +4,8 @@ on:
|
||||
types: [opened, synchronize, reopened, closed]
|
||||
paths-ignore:
|
||||
- 'microsite/**'
|
||||
- 'storybook/**'
|
||||
- 'contrib/**'
|
||||
- '*.md'
|
||||
|
||||
jobs:
|
||||
|
||||
@@ -90,10 +90,15 @@ Team: @backstage/techdocs-maintainers
|
||||
|
||||
Scope: The TechDocs plugin and related tooling
|
||||
|
||||
| Name | Organization | Team | GitHub | Discord |
|
||||
| ------------------------ | ------------ | ------------ | ------------------------------------------------ | ------------------ |
|
||||
| Morgan Bentell | Spotify | Pulp Fiction | [agentbellnorm](http://github.com/agentbellnorm) | morganbentell#9030 |
|
||||
| Raghunandan Balachandran | Spotify | Pulp Fiction | [soapraj](http://github.com/soapraj) | raghunandanb#1114 |
|
||||
| Name | Organization | Team | GitHub | Discord |
|
||||
| ------------------------ | ------------ | ------- | ------------------------------------------------- | ------------------- |
|
||||
| Alex Lorenzi | Spotify | ProTean | [AlexLorenzi](https://github.com/AlexLorenzi) | `alexlorenzi` |
|
||||
| Bond Yan | Spotify | ProTean | [byan1197](https://github.com/byan1197) | `bondify` |
|
||||
| Jackson Chen | Spotify | ProTean | [PeaWarrior](https://github.com/PeaWarrior) | `jacksonc#3322` |
|
||||
| John Philip | Spotify | ProTean | [johnphilip283](https://github.com/johnphilip283) | `john_philip#2399` |
|
||||
| Morgan Bentell | Spotify | ProTean | [agentbellnorm](http://github.com/agentbellnorm) | `morganbentell` |
|
||||
| Raghunandan Balachandran | Spotify | BUX | [soapraj](http://github.com/soapraj) | `raghunandanb#1114` |
|
||||
| Sydney Achinger | Spotify | ProTean | [squid-ney](https://github.com/squid-ney) | - |
|
||||
|
||||
## Incubating Project Areas
|
||||
|
||||
|
||||
@@ -20,6 +20,14 @@ When reviewing pull requests it's important to consider our [versioning policy a
|
||||
|
||||
One other thing to keep in mind, especially when merging pull requests, is where in the release cycle we're currently at. In particular you want to avoid merging any large or risky changes towards the end of each release cycle. If there is a change that is ready to be merged, but you want to hold off until the next main line release, then you can label it with the `merge-after-release` label.
|
||||
|
||||
## Configuration
|
||||
|
||||
Pull requests that have [configuration related](https://backstage.io/docs/conf/defining) changes or additions need some extra consideration.
|
||||
|
||||
- Every configuration field consumed by code should have a corresponding `config.d.ts` declaration.
|
||||
- Carefully consider the `@visibility` of configuration fields in the schema. The default is `backend`. Take extra care that sensitive/secret fields are marked as `@visibility secret` so that they don't accidentally leak. Also ensure that fields that the frontend wants to consume are marked as `@visibility frontend`, otherwise they can't be sent to the browser at all.
|
||||
- Check that the `config.d.ts` is mentioned in the consuming package's `package.json` as illustrated [in the docs](https://backstage.io/docs/conf/defining). Otherwise it won't get packaged and picked up by the runtime.
|
||||
|
||||
## Changesets
|
||||
|
||||
We use changesets to track changes in all published packages. Changesets both define what should go into the changelog of each package, but also what kind of version bump should be done for the next release.
|
||||
@@ -52,6 +60,7 @@ Some things that changeset should NOT contain are:
|
||||
- Information related to a different package.
|
||||
- A large amount of content, consider for example a separate migration guide instead, either in the package README or [./docs/](./docs/), and then link to that instead.
|
||||
- Documentation - changesets can describe new features, but it should not be relied on for documenting them. Documentation should either be placed in [TSDoc](https://tsdoc.org) comments, package README, or [./docs/](./docs/).
|
||||
- Diffs of internal code, for example mirroring what the pull request changes _inside_ a plugin rather than public surfaces. This is not of interest to the reader of a package changelog. Sometimes, however, a small and concise diff can be used in a changeset to illustrate changes that the user will have to make in _their own_ Backstage installation as part of an upgrade, specifically when breaking changes are made to a package.
|
||||
|
||||
### When is a changeset needed?
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ In the AWS console, configure ALB Authentication:
|
||||
- Select `OIDC` under `Authenticate`
|
||||
- Set `Issuer` to `https://login.microsoftonline.com/{TENANT_ID}/v2.0`, replacing `{TENANT_ID}` with the value of `Directory (tenant) ID` of the AAD App.
|
||||
- Set `Authorization endpoint` to `https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0/authorize`, replacing `{TENANT_ID}` with the value of `Directory (tenant) ID` of the AAD App.
|
||||
- Set `Token endpoint` to `https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0/authorize`, replacing `{TENANT_ID}` with the value of `Directory (tenant) ID` of the AAD App.
|
||||
- Set `Token endpoint` to `https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0/token`, replacing `{TENANT_ID}` with the value of `Directory (tenant) ID` of the AAD App.
|
||||
- Set `User info endpoint` to `https://graph.microsoft.com/oidc/userinfo`
|
||||
- Set `Client ID` to the AAD App `Application (client) Id`
|
||||
- Set `Client secret` to the AAD APP `client secret`
|
||||
|
||||
@@ -15,35 +15,35 @@ There are multiple ways to contribute to making Backstage more accessible, you'l
|
||||
If your plugin lives in the [Backstage main repository](https://github.com/backstage/backstage/) you can modify the [urls in the Lighthouse config](https://github.com/backstage/backstage/blob/39ba2284d73885b7ca8290cb38e2b1e4d983c8d6/lighthouserc.js#L19-L34) to run the Lighthouse checks on urls where your plugin exists as well. E.g.
|
||||
|
||||
```diff
|
||||
ci: {
|
||||
collect: {
|
||||
url: [
|
||||
ci: {
|
||||
collect: {
|
||||
url: [
|
||||
/** Software Catalog */
|
||||
'http://localhost:3000/catalog',
|
||||
'http://localhost:3000/catalog-import',
|
||||
'http://localhost:3000/catalog/default/component/backstage',
|
||||
...
|
||||
+ /** Your plugin paths */
|
||||
+ 'http://localhost:3000/your-plugin-path,
|
||||
/** Software Catalog */
|
||||
'http://localhost:3000/catalog',
|
||||
'http://localhost:3000/catalog-import',
|
||||
'http://localhost:3000/catalog/default/component/backstage',
|
||||
],
|
||||
settings: {
|
||||
...
|
||||
],
|
||||
settings: {
|
||||
...
|
||||
},
|
||||
...
|
||||
},
|
||||
assert: {
|
||||
},
|
||||
...
|
||||
},
|
||||
},
|
||||
},
|
||||
assert: {
|
||||
...
|
||||
},
|
||||
},
|
||||
```
|
||||
|
||||
To make sure the [Accessibility Github workflow](https://github.com/backstage/backstage/blob/master/.github/workflows/verify_accessibility.yml) is running when changes are made to your plugin folders, modify the [list of paths](https://github.com/backstage/backstage/blob/10759b6ad2561bd86183ad940256f9a309c7a6b0/.github/workflows/verify_accessibility.yml#L7-L16).
|
||||
To make sure the [Accessibility GitHub workflow](https://github.com/backstage/backstage/blob/master/.github/workflows/verify_accessibility.yml) is running when changes are made to your plugin folders, modify the [list of paths](https://github.com/backstage/backstage/blob/10759b6ad2561bd86183ad940256f9a309c7a6b0/.github/workflows/verify_accessibility.yml#L7-L16).
|
||||
|
||||
### Run the Lighthouse CLI locally when developing new features
|
||||
|
||||
If you want to use the Lighthouse CLI and run the checks based on the config you can use the following command:
|
||||
|
||||
```
|
||||
```shell
|
||||
yarn dlx @lhci/cli@0.11.x autorun
|
||||
```
|
||||
|
||||
|
||||
@@ -85,6 +85,8 @@ declare a dependency on the plugin package itself. This is to avoid a direct
|
||||
dependency and potentially cause duplicate installations of the plugin package,
|
||||
while duplicate installations of library packages should always be supported.
|
||||
|
||||
To create a Backend module, run `yarn new`, select `backend-module`, and fill out the rest of the prompts. This will create a new package at `plugins/<pluginId>-backend-module-<moduleId>`.
|
||||
|
||||
The following is an example of how to create a module that adds a new processor
|
||||
using the `catalogProcessingExtensionPoint`:
|
||||
|
||||
|
||||
@@ -118,7 +118,7 @@ describe('MyDatabaseClass', () => {
|
||||
// "physical" databases to test against is much costlier than creating the
|
||||
// "logical" databases within them that the individual tests use.
|
||||
const databases = TestDatabases.create({
|
||||
ids: ['POSTGRES_13', 'POSTGRES_9', 'SQLITE_3'],
|
||||
ids: ['POSTGRES_13', 'POSTGRES_9', 'SQLITE_3', 'MYSQL_8'],
|
||||
});
|
||||
|
||||
// Just an example of how to conveniently bundle up the setup code
|
||||
|
||||
@@ -23,9 +23,9 @@ compound reference structure.
|
||||
|
||||
## String References
|
||||
|
||||
This is the most common alternative, that is used in almost all circumstances.
|
||||
This is the most common alternative and is used in almost all circumstances.
|
||||
|
||||
The string is on the form `[<kind>:][<namespace>/]<name>`, that is, it is
|
||||
The string is of the form `[<kind>:][<namespace>/]<name>`. That is, it is
|
||||
composed of between one and three parts in this specific order, without any
|
||||
additional encoding:
|
||||
|
||||
|
||||
@@ -19,10 +19,10 @@ Using a service principal:
|
||||
integrations:
|
||||
azure:
|
||||
- host: dev.azure.com
|
||||
credential:
|
||||
clientId: ${CLIENT_ID}
|
||||
clientSecret: ${CLIENT_SECRET}
|
||||
tenantId: ${TENANT_ID}
|
||||
credentials:
|
||||
- clientId: ${AZURE_CLIENT_ID}
|
||||
clientSecret: ${AZURE_CLIENT_SECRET}
|
||||
tenantId: ${AZURE_TENANT_ID}
|
||||
```
|
||||
|
||||
Using a managed identity:
|
||||
@@ -31,8 +31,8 @@ Using a managed identity:
|
||||
integrations:
|
||||
azure:
|
||||
- host: dev.azure.com
|
||||
credential:
|
||||
clientId: ${CLIENT_ID}
|
||||
credentials:
|
||||
- clientId: ${AZURE_CLIENT_ID}
|
||||
```
|
||||
|
||||
Using a personal access token (PAT):
|
||||
@@ -41,24 +41,54 @@ Using a personal access token (PAT):
|
||||
integrations:
|
||||
azure:
|
||||
- host: dev.azure.com
|
||||
token: ${AZURE_TOKEN}
|
||||
credentials:
|
||||
- personalAccessToken: ${PERSONAL_ACCESS_TOKEN}
|
||||
```
|
||||
|
||||
You can use specific credentials for different Azure DevOps organizations by specifying the `organizations` field on the credential:
|
||||
|
||||
```yaml
|
||||
integrations:
|
||||
azure:
|
||||
- host: dev.azure.com
|
||||
credentials:
|
||||
- organizations:
|
||||
- my-org
|
||||
- my-other-org
|
||||
clientId: ${AZURE_CLIENT_ID}
|
||||
clientSecret: ${AZURE_CLIENT_SECRET}
|
||||
tenantId: ${AZURE_TENANT_ID}
|
||||
- organizations:
|
||||
- another-org
|
||||
clientId: ${AZURE_CLIENT_ID}
|
||||
- organizations:
|
||||
- yet-another-org
|
||||
personalAccessToken: ${PERSONAL_ACCESS_TOKEN}
|
||||
```
|
||||
|
||||
If you do not specify the `organizations` field the credential will be used for all organizations for which no other credential is configured.
|
||||
|
||||
> Note: An Azure DevOps provider is added automatically at startup for
|
||||
> convenience, so you only need to list it if you want to supply a
|
||||
> [token](https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate),
|
||||
> [personalAccessToken](https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate),
|
||||
> a [service principal](https://learn.microsoft.com/en-us/azure/devops/integrate/get-started/authentication/service-principal-managed-identity),
|
||||
> or a [managed identity](https://learn.microsoft.com/en-us/azure/devops/integrate/get-started/authentication/service-principal-managed-identity)
|
||||
|
||||
The configuration is a structure with these elements:
|
||||
|
||||
- `host`: The DevOps host; only `dev.azure.com` is supported.
|
||||
- `token` (optional): A personal access token as expected by Azure DevOps.
|
||||
- `credential`: (optional): A service principal or managed identity
|
||||
- `credentials`: (optional): A service principal, managed identity, or personal access token
|
||||
|
||||
The `credentials` element is a structure with these elements:
|
||||
|
||||
- `organizations`: (optional): A list of organizations for which this credential should be used. If not specified the credential will be used for all organizations for which no other credential is configured.
|
||||
- `clientId`: The client ID of the service principal or managed identity (required for service principal and managed identities)
|
||||
- `clientSecret`: The client secret of the service principal (required for service principal)
|
||||
- `tenantId`: The tenant ID of the service principal (required for service principal)
|
||||
- `personalAccessToken`: The personal access token (required for personal access token)
|
||||
|
||||
> Note:
|
||||
>
|
||||
> - `token` and `credential` are mutually exclusive.
|
||||
> - You cannot use a service principal or managed identity for Azure DevOps Server (on-premises) organizations
|
||||
> - You can only use a service principal or managed identity for Azure AD backed Azure DevOps organizations
|
||||
> - The token should just be provided as the raw token generated by Azure DevOps using the format `raw_token` with no base64 encoding. Formatting and base64'ing is handled by dependent libraries handling the Azure DevOps API
|
||||
> - You can only specify one credential per host without any organizations specified
|
||||
> - The personal access token should just be provided as the raw token generated by Azure DevOps using the format `raw_token` with no base64 encoding. Formatting and base64'ing is handled by dependent libraries handling the Azure DevOps API
|
||||
|
||||
@@ -37,7 +37,7 @@ You can access the currently selected entity using the backstage api
|
||||
import { useEntity } from '@backstage/plugin-catalog-react';
|
||||
|
||||
export const MyPluginEntityContent = () => {
|
||||
const { entity, loading, error, refresh } = useEntity();
|
||||
const entity = useEntity();
|
||||
|
||||
// Do something with the entity data...
|
||||
};
|
||||
|
||||
@@ -18,6 +18,22 @@ PR is merged. This is typically done every Tuesday around noon CET.
|
||||
**This emergency release process is intended only for the Backstage
|
||||
maintainers.**
|
||||
|
||||
Given one or more PRs towards master that we want to create a patch release for, run the following script from the repo root:
|
||||
|
||||
```bash
|
||||
./scripts/patch-release-for-pr.js <pr-number> <pr-number-2> ...
|
||||
```
|
||||
|
||||
Wait until the script has finished executing, at the end of the output you will find a link of the format `https://github.com/backstage/backstage/compare/patch/...`. Open this link in your browser to create a PR for the patch release. Finish the sentence "This release fixes an issue where..." and create the PR.
|
||||
|
||||
Once the PR has been approved and merged, the patch release will be automatically created. The patch release is complete when a notification has been posted to Discord in the `#announcements` channel. Keep an eye on "Deploy Packages" workflow and re-trigger if it fails. It is safe to re-trigger any part of this workflow, including the release step.
|
||||
|
||||
If the above process fails, you can fall back to the manual process documented below.
|
||||
|
||||
### Old Process
|
||||
|
||||
This is the old and manual process that we used before the patch script, provided here as a reference:
|
||||
|
||||
For this example we will be using the `@backstage/plugin-foo` package as an
|
||||
example and assume that it is currently version `6.5.0` in the master branch.
|
||||
|
||||
|
||||
@@ -32,6 +32,17 @@ module.exports = {
|
||||
'http://localhost:3000/create/templates/default/react-ssr-template',
|
||||
/** Search */
|
||||
'http://localhost:3000/search',
|
||||
/** Miscellaneous */
|
||||
'http://localhost:3000/settings',
|
||||
/** plugin-devtools */
|
||||
'http://localhost:3000/devtools',
|
||||
'http://localhost:3000/devtools/config',
|
||||
/** plugin-explore */
|
||||
'http://localhost:3000/explore',
|
||||
'http://localhost:3000/explore/groups',
|
||||
'http://localhost:3000/explore/tools',
|
||||
/** plugin-tech-radar */
|
||||
'http://localhost:3000/tech-radar',
|
||||
],
|
||||
settings: {
|
||||
onlyCategories: ['accessibility'],
|
||||
|
||||
@@ -0,0 +1,206 @@
|
||||
---
|
||||
# prettier-ignore
|
||||
title: "Expedia Group shares Backstage proof of value metrics 2.0"
|
||||
author: Guillermo Manzo, Expedia Group
|
||||
authorURL: https://www.linkedin.com/in/guillermomanzo
|
||||
---
|
||||
|
||||

|
||||
|
||||
_Editor's Note: In this post, Expedia Group provides a follow-up to their initial Q4 2021 [post on how they measure Backstage proof of value](https://backstage.spotify.com/blog/measuring-backstage-proof-of-value-at-expedia/).
|
||||
We're grateful to the Expedia Group team for sharing their processes, revised proof of value metrics, and adaptations to their approach over time in hopes of providing a successful framework for the rest of the Backstage community._
|
||||
|
||||
[Expedia Group's](https://expediagroup.com) mission is to power global travel for everyone, everywhere.
|
||||
This vision is made possible through Expedia Group's massive platform, which connects 168 million loyalty members, 50 thousand B2B partners, 3 million properties and 500 airlines, car rentals and cruise lines across the globe. In short, the scale of our platform is enormous, which means that we need to scale our engineering capabilities as well so we can continue to provide seamless experiences to our travelers and partners.
|
||||
|
||||
{/* truncate */}
|
||||
|
||||
In August 2020, we adopted Backstage to enhance our foundational platform capabilities and reduce developer friction in the process. Its framework proved scalable for us and as EG's platform evolved, so did our application of Backstage. Since our [initial share about our Backstage deployment](https://backstage.spotify.com/blog/measuring-backstage-proof-of-value-at-expedia/), we've continued to follow our process of:
|
||||
|
||||
- Syncing Expedia Group's internal Developer Journey phases by key DevOps processes and Software Delivery Life Cycle (SDLC) milestones (POC, Alpha, Beta, etc).
|
||||
- Identifying Developer Jobs to be Done (JTBD) by our Internal Developer Journey phases
|
||||
- Aligning developer JTBD's to proof of value (PoV) metrics.
|
||||
|
||||
In the diagram below, you can see how we distilled these processes into Backstage PoV metrics.
|
||||
|
||||

|
||||
|
||||
To ground ourselves in the evolving developer and Backstage landscape at Expedia Group, we constantly ask ourselves, "How can we continue to show the value of Backstage to our customers and the Developer Community?" To fully answer this question, we adapted our initial proof of value metrics to reinforce our alignment to the current landscape of the Expedia Group developer journey.
|
||||
|
||||
## Expedia Group proof of value metrics 2.0
|
||||
|
||||
We are excited to share our PoV metrics because it affirms our investment in Backstage for Expedia Group's Backstage users and provides a compelling metrics-based answer on why more organizations should consider adopting it.
|
||||
|
||||
As our Backstage application matured, we updated our PoV metrics and aligned our 2023 roadmap to reflect these changes. Below, we highlight key wins from 2022 and outline our long-term vision for each metric.
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>PoV Metric</th>
|
||||
<th>Description</th>
|
||||
<th>2022 Key Win(s)</th>
|
||||
<th>Long-Term Vision</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>"Ship on Day One" / onboarding metrics</td>
|
||||
<td>
|
||||
<p>
|
||||
A metric used to determine an engineer's readiness to develop at EG
|
||||
during their onboarding process.
|
||||
</p>
|
||||
<p>
|
||||
It measures the time from first commit to deploying code in
|
||||
production, using a "Hello World Template"
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<ul>
|
||||
<li>
|
||||
850+ engineers went through the “Ship on Day One” Bootcamp when
|
||||
first joining Expedia Group
|
||||
</li>
|
||||
<li>
|
||||
We had a success rate of ~95% of engineers completing bootcamp on
|
||||
first try
|
||||
</li>
|
||||
<li>7,000+ components created or onboarded</li>
|
||||
<li>4-min average per app creation/onboarding</li>
|
||||
</ul>
|
||||
</td>
|
||||
<td>
|
||||
<ul>
|
||||
<li>
|
||||
Develop full onboarding curriculum coverage for all critical
|
||||
capabilities offered within EG - Example: performance and quality
|
||||
management, pipeline management, etc.
|
||||
</li>
|
||||
<li>
|
||||
Create an end-to-end guided tour of the EG Developer Journey w/
|
||||
functional training
|
||||
</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Reduce context switching through integration with core EG capabilities
|
||||
</td>
|
||||
<td>
|
||||
Through plugins, tool integration, reduces context-switching as
|
||||
engineers will not need to toggle between multiple tools
|
||||
</td>
|
||||
<td>
|
||||
<ul>
|
||||
<li>
|
||||
15%+ of internal developer tools are integrated within Backstage,
|
||||
reducing the amount of context-switching needed
|
||||
</li>
|
||||
<li>
|
||||
4000+ unique users using Backstage for ~20 min on average a day.
|
||||
</li>
|
||||
</ul>
|
||||
</td>
|
||||
<td>
|
||||
<ul>
|
||||
<li>
|
||||
End-to-end integration with EG paved road tools and Backstage to
|
||||
support increased developer productivity
|
||||
</li>
|
||||
<li>
|
||||
Drive broader adoption to have all EG employees using Backstage to
|
||||
manage their SDLC and to build internal UIs using plugins
|
||||
</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Improve search results relevance</td>
|
||||
<td>
|
||||
Intuitive search capabilities to surface relevant Backstage content like
|
||||
TechDocs, entities, tools, etc.
|
||||
</td>
|
||||
<td>
|
||||
<ul>
|
||||
<li>Enabled global search functionality throughout Backstage</li>
|
||||
<li>
|
||||
<p>Contributed to the open source Backstage Search platform</p>
|
||||
</li>
|
||||
</ul>
|
||||
</td>
|
||||
<td>
|
||||
<ul>
|
||||
<li>Engine optimization/ranking improvement</li>
|
||||
<li>Visualize key search metrics to support improvements</li>
|
||||
<li>Chat + AI integration with chat-based interfaces</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Technical documentation reach</td>
|
||||
<td>
|
||||
Number of developers leveraging TechDocs for all services within EG
|
||||
</td>
|
||||
<td>
|
||||
<ul>
|
||||
<li>500+ services tied with TechDocs</li>
|
||||
<li>50,000+ average monthly TechDoc views</li>
|
||||
</ul>
|
||||
</td>
|
||||
<td>
|
||||
<ul>
|
||||
<li>
|
||||
All Backstage entities leveraging TechDocs to enable a centralized
|
||||
documentation portal integrated with the Software Catalog
|
||||
</li>
|
||||
<li>
|
||||
Quality/governance and gamification to support users and
|
||||
contributors
|
||||
</li>
|
||||
<li>
|
||||
More TechDocs and mkdocs add-ons to compliment the core capabilities
|
||||
and drive usability of documentation on Backstage
|
||||
</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Developer Experience community engagement</td>
|
||||
<td>Enhance Backstage through community engagement</td>
|
||||
<td>
|
||||
<ul>
|
||||
<li>
|
||||
Diverse contributions to Backstage open source focused on search and
|
||||
discovery - 10+
|
||||
</li>
|
||||
<li>Community engagement through internal case studies, and blogs</li>
|
||||
</ul>
|
||||
</td>
|
||||
<td>
|
||||
<ul>
|
||||
<li>
|
||||
Continuous contributions to open-source Backstage, focused on plugin
|
||||
administration, driving documentation adoption, and improved UX
|
||||
around core capabilities
|
||||
</li>
|
||||
<li>
|
||||
Strategic community engagements to enhance the platform's usability
|
||||
and long-term confidence in adopting Backstage
|
||||
</li>
|
||||
<li>
|
||||
Event participation and storytelling around EG's Backstage journey
|
||||
</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
## YMMV: Your Metrics May Vary!
|
||||
|
||||
Measuring the value of Backstage will vary depending on your organization's needs and priorities. As an early adopter of Backstage, we hope the Expedia Group PoV metrics provide a helpful framework for understanding how Backstage can be used to improve developer productivity, collaboration, and knowledge sharing.
|
||||
|
||||
We look forward to sharing future updates with the community as we continue to embrace a continuous improvement approach to Backstage. If you missed it, you can read about where we started in our [initial proof of value metrics](https://backstage.spotify.com/blog/measuring-backstage-proof-of-value-at-expedia/) back in 2021.
|
||||
|
||||
_Read more about Expedia's tech journey on [their Medium Blog](https://medium.com/expedia-group-tech)_
|
||||
|
After Width: | Height: | Size: 144 KiB |
|
After Width: | Height: | Size: 103 KiB |
@@ -4,7 +4,7 @@ author: Solo.io
|
||||
authorUrl: https://solo.io
|
||||
category: Infrastructure
|
||||
description: View, test, and manage your Gloo Platform Portal APIs through our Backstage plugin.
|
||||
documentation: https://github.com/solo-io/dev-portal-backstage-public#readme
|
||||
documentation: https://github.com/solo-io/backstage-plugins-overview#readme
|
||||
iconUrl: /img/solo-io-glooy-circle.png.webp
|
||||
npmPackageName: '@solo.io/dev-portal-backstage-plugin'
|
||||
addedDate: '2023-05-19'
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
"@types/react": "^17",
|
||||
"@types/react-dom": "^17"
|
||||
},
|
||||
"version": "1.17.0",
|
||||
"version": "1.18.0-next.0",
|
||||
"dependencies": {
|
||||
"@backstage/errors": "workspace:^",
|
||||
"@manypkg/get-packages": "^1.1.3"
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
# @backstage/app-defaults
|
||||
|
||||
## 1.4.3-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/core-app-api@1.10.0-next.0
|
||||
- @backstage/core-plugin-api@1.6.0-next.0
|
||||
- @backstage/core-components@0.13.5-next.0
|
||||
- @backstage/theme@0.4.1
|
||||
- @backstage/plugin-permission-react@0.4.15-next.0
|
||||
|
||||
## 1.4.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/app-defaults",
|
||||
"description": "Provides the default wiring of a Backstage App",
|
||||
"version": "1.4.2",
|
||||
"version": "1.4.3-next.0",
|
||||
"publishConfig": {
|
||||
"access": "public",
|
||||
"main": "dist/index.esm.js",
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
module.exports = require('@backstage/cli/config/eslint-factory')(__dirname);
|
||||
@@ -0,0 +1,3 @@
|
||||
# example-app-next
|
||||
|
||||
This package is an example of a Backstage application.
|
||||
@@ -0,0 +1,108 @@
|
||||
app:
|
||||
packages: 'all' # ✨
|
||||
extensions:
|
||||
- core.router
|
||||
- graphiql.page:
|
||||
config:
|
||||
path: /
|
||||
|
||||
# - core.signInPage:
|
||||
# props:
|
||||
# provider:
|
||||
# id: google
|
||||
# title: Google
|
||||
# message: Sign In using Google
|
||||
# apiRef: googleAuthApiRef # ???
|
||||
|
||||
# - core.nav:
|
||||
# config:
|
||||
# logo: assets/logo.png
|
||||
# layout:
|
||||
# - label: Search
|
||||
# icon: search
|
||||
# to: /search
|
||||
# items:
|
||||
# - point: search
|
||||
# - type: divider
|
||||
# - label: Menu
|
||||
# icon: menu
|
||||
# items:
|
||||
# - label: Home
|
||||
# icon: home
|
||||
# to: /catalog
|
||||
# - label: Create...
|
||||
# icon: create
|
||||
# to: /create
|
||||
# - type: divider
|
||||
# - type: scroll-wrapper
|
||||
# items:
|
||||
# - label: Tech Radar
|
||||
# icon: map
|
||||
# to: /tech-radar
|
||||
# - label: GraphiQL
|
||||
# icon: graphiql
|
||||
# to: /graphiql
|
||||
# - type: divider
|
||||
# - point: shortcuts
|
||||
# - type: space
|
||||
# - type: divider
|
||||
# - label: Settings
|
||||
# icon: avatar
|
||||
# to: /settings
|
||||
# items:
|
||||
# - point: settings
|
||||
# - core.nav/search: '@backstage/plugin-search#SidebarSearchModal'
|
||||
# - core.nav/shortcuts:
|
||||
# use: '@backstage/plugin-shortcuts#Shortcuts'
|
||||
# config:
|
||||
# allowExternalLinks: true
|
||||
# - core.nav/settings: '@backstage/plugin-user-settings#SidebarSettings'
|
||||
|
||||
# - core.pages.index:
|
||||
# at:
|
||||
# point: core.routes
|
||||
# config:
|
||||
# path: /
|
||||
# use: 'react-router-dom#Navigate'
|
||||
# config:
|
||||
# to: /catalog
|
||||
|
||||
# - scaffolder.page:
|
||||
# config:
|
||||
# groups:
|
||||
# - title: Recommended
|
||||
# filter:
|
||||
# entity.metadata.tags: recommended
|
||||
# - scaffolder.page/fields: '@backstage/plugin-scaffolder#LowerCaseValuePickerFieldExtension'
|
||||
# - scaffolder.page/layout: '@backstage/plugin-scaffolder#TwoColumnLayout'
|
||||
|
||||
# - search.page/content: 'app#customSearchPage' # custom search page from somewhere
|
||||
|
||||
# - user-settings.page.routes.advanced:
|
||||
# at:
|
||||
# point: user-settings.page/routes
|
||||
# config:
|
||||
# title: Advanced
|
||||
# path: /advanced
|
||||
# use: '@backstage/plugin-user-settings#AdvancedSettings'
|
||||
|
||||
# - entity.card.orphanWarning
|
||||
# - entity.card.processingErrors
|
||||
# - entity.card.about
|
||||
# - entity.card.catalogGraph
|
||||
# - entity.card.pagerDuty
|
||||
# - entity.card.links
|
||||
# - entity.card.labels
|
||||
# - entity.card.githubInsightsLanguages
|
||||
# - entity.card.githubInsightsReleases
|
||||
# - entity.card.githubInsightsReadme:
|
||||
# config:
|
||||
# maxHeight: 350 # Throwing this config in to have an example, but in practice rely on default
|
||||
# - entity.card.subcomponentsCard
|
||||
# - entity.card.userProfile
|
||||
# - entity.card.ownership
|
||||
# - entity.card.likeDislikeRatings
|
||||
# - entity.content.dependsOnComponents
|
||||
# - entity.content.codeInsights
|
||||
# - entity.content.todo
|
||||
# - entity.content.feedbackResponse
|
||||
|
After Width: | Height: | Size: 69 KiB |
@@ -0,0 +1,143 @@
|
||||
{
|
||||
"name": "example-app-next",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"backstage": {
|
||||
"role": "frontend"
|
||||
},
|
||||
"bundled": true,
|
||||
"dependencies": {
|
||||
"@backstage/app-defaults": "workspace:^",
|
||||
"@backstage/catalog-model": "workspace:^",
|
||||
"@backstage/cli": "workspace:^",
|
||||
"@backstage/config": "workspace:^",
|
||||
"@backstage/core-app-api": "workspace:^",
|
||||
"@backstage/core-components": "workspace:^",
|
||||
"@backstage/core-plugin-api": "workspace:^",
|
||||
"@backstage/frontend-app-api": "workspace:^",
|
||||
"@backstage/frontend-plugin-api": "workspace:^",
|
||||
"@backstage/integration-react": "workspace:^",
|
||||
"@backstage/plugin-adr": "workspace:^",
|
||||
"@backstage/plugin-airbrake": "workspace:^",
|
||||
"@backstage/plugin-apache-airflow": "workspace:^",
|
||||
"@backstage/plugin-api-docs": "workspace:^",
|
||||
"@backstage/plugin-azure-devops": "workspace:^",
|
||||
"@backstage/plugin-azure-sites": "workspace:^",
|
||||
"@backstage/plugin-badges": "workspace:^",
|
||||
"@backstage/plugin-catalog-common": "workspace:^",
|
||||
"@backstage/plugin-catalog-graph": "workspace:^",
|
||||
"@backstage/plugin-catalog-import": "workspace:^",
|
||||
"@backstage/plugin-catalog-react": "workspace:^",
|
||||
"@backstage/plugin-catalog-unprocessed-entities": "workspace:^",
|
||||
"@backstage/plugin-circleci": "workspace:^",
|
||||
"@backstage/plugin-cloudbuild": "workspace:^",
|
||||
"@backstage/plugin-code-coverage": "workspace:^",
|
||||
"@backstage/plugin-cost-insights": "workspace:^",
|
||||
"@backstage/plugin-devtools": "workspace:^",
|
||||
"@backstage/plugin-dynatrace": "workspace:^",
|
||||
"@backstage/plugin-entity-feedback": "workspace:^",
|
||||
"@backstage/plugin-explore": "workspace:^",
|
||||
"@backstage/plugin-gcalendar": "workspace:^",
|
||||
"@backstage/plugin-gcp-projects": "workspace:^",
|
||||
"@backstage/plugin-github-actions": "workspace:^",
|
||||
"@backstage/plugin-gocd": "workspace:^",
|
||||
"@backstage/plugin-graphiql": "workspace:^",
|
||||
"@backstage/plugin-home": "workspace:^",
|
||||
"@backstage/plugin-jenkins": "workspace:^",
|
||||
"@backstage/plugin-kafka": "workspace:^",
|
||||
"@backstage/plugin-kubernetes": "workspace:^",
|
||||
"@backstage/plugin-lighthouse": "workspace:^",
|
||||
"@backstage/plugin-linguist": "workspace:^",
|
||||
"@backstage/plugin-linguist-common": "workspace:^",
|
||||
"@backstage/plugin-microsoft-calendar": "workspace:^",
|
||||
"@backstage/plugin-newrelic": "workspace:^",
|
||||
"@backstage/plugin-newrelic-dashboard": "workspace:^",
|
||||
"@backstage/plugin-octopus-deploy": "workspace:^",
|
||||
"@backstage/plugin-org": "workspace:^",
|
||||
"@backstage/plugin-pagerduty": "workspace:^",
|
||||
"@backstage/plugin-permission-react": "workspace:^",
|
||||
"@backstage/plugin-playlist": "workspace:^",
|
||||
"@backstage/plugin-puppetdb": "workspace:^",
|
||||
"@backstage/plugin-rollbar": "workspace:^",
|
||||
"@backstage/plugin-scaffolder": "workspace:^",
|
||||
"@backstage/plugin-scaffolder-react": "workspace:^",
|
||||
"@backstage/plugin-search": "workspace:^",
|
||||
"@backstage/plugin-search-common": "workspace:^",
|
||||
"@backstage/plugin-search-react": "workspace:^",
|
||||
"@backstage/plugin-sentry": "workspace:^",
|
||||
"@backstage/plugin-shortcuts": "workspace:^",
|
||||
"@backstage/plugin-stack-overflow": "workspace:^",
|
||||
"@backstage/plugin-stackstorm": "workspace:^",
|
||||
"@backstage/plugin-tech-insights": "workspace:^",
|
||||
"@backstage/plugin-tech-radar": "workspace:^",
|
||||
"@backstage/plugin-techdocs": "workspace:^",
|
||||
"@backstage/plugin-techdocs-module-addons-contrib": "workspace:^",
|
||||
"@backstage/plugin-techdocs-react": "workspace:^",
|
||||
"@backstage/plugin-todo": "workspace:^",
|
||||
"@backstage/plugin-user-settings": "workspace:^",
|
||||
"@backstage/theme": "workspace:^",
|
||||
"@internal/plugin-catalog-customized": "workspace:^",
|
||||
"@material-ui/core": "^4.12.2",
|
||||
"@material-ui/icons": "^4.9.1",
|
||||
"@material-ui/lab": "4.0.0-alpha.61",
|
||||
"@octokit/rest": "^19.0.3",
|
||||
"@oriflame/backstage-plugin-score-card": "^0.7.0",
|
||||
"@roadiehq/backstage-plugin-buildkite": "^2.0.8",
|
||||
"@roadiehq/backstage-plugin-github-insights": "^2.0.5",
|
||||
"@roadiehq/backstage-plugin-github-pull-requests": "^2.2.7",
|
||||
"@roadiehq/backstage-plugin-travis-ci": "^2.0.5",
|
||||
"history": "^5.0.0",
|
||||
"lodash": "^4.17.21",
|
||||
"prop-types": "^15.7.2",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2",
|
||||
"react-router": "^6.3.0",
|
||||
"react-router-dom": "^6.3.0",
|
||||
"react-use": "^17.2.4",
|
||||
"zen-observable": "^0.10.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/test-utils": "workspace:^",
|
||||
"@testing-library/cypress": "^9.0.0",
|
||||
"@testing-library/dom": "^8.0.0",
|
||||
"@testing-library/jest-dom": "^5.10.1",
|
||||
"@testing-library/react": "^12.1.3",
|
||||
"@testing-library/user-event": "^14.0.0",
|
||||
"@types/jquery": "^3.3.34",
|
||||
"@types/node": "^16.11.26",
|
||||
"@types/react": "*",
|
||||
"@types/react-dom": "*",
|
||||
"@types/zen-observable": "^0.8.0",
|
||||
"cross-env": "^7.0.0",
|
||||
"cypress": "^10.0.0",
|
||||
"eslint-plugin-cypress": "^2.10.3",
|
||||
"start-server-and-test": "^1.10.11"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "backstage-cli package start --config ../../app-config.yaml --config app-config.yaml",
|
||||
"build": "backstage-cli package build",
|
||||
"clean": "backstage-cli package clean",
|
||||
"test": "backstage-cli package test",
|
||||
"lint": "backstage-cli package lint",
|
||||
"test:e2e": "start-server-and-test start http://localhost:3000 cy:dev",
|
||||
"test:e2e:ci": "start-server-and-test start http://localhost:3000 cy:run",
|
||||
"cy:dev": "cypress open",
|
||||
"cy:run": "cypress run"
|
||||
},
|
||||
"browserslist": {
|
||||
"production": [
|
||||
">0.2%",
|
||||
"not dead",
|
||||
"not op_mini all"
|
||||
],
|
||||
"development": [
|
||||
"last 1 chrome version",
|
||||
"last 1 firefox version",
|
||||
"last 1 safari version"
|
||||
]
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
],
|
||||
"license": "Apache-2.0"
|
||||
}
|
||||
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 39 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 883 B |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 15 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" id="favicon" viewBox="0 0 337.46 428.5"><title>Backstage favicon</title><style>#favicon path{fill:#121212}@media (prefers-color-scheme:dark){#favicon path{fill:#7df3e1}}</style><path d="M303,166.05a80.69,80.69,0,0,0,13.45-10.37c.79-.77,1.55-1.53,2.3-2.3a83.12,83.12,0,0,0,7.93-9.38A63.69,63.69,0,0,0,333,133.23a48.58,48.58,0,0,0,4.35-16.4c1.49-19.39-10-38.67-35.62-54.22L198.56,0,78.3,115.23,0,190.25l108.6,65.91a111.59,111.59,0,0,0,57.76,16.41c24.92,0,48.8-8.8,66.42-25.69,19.16-18.36,25.52-42.12,13.7-61.87a49.22,49.22,0,0,0-6.8-8.87A89.17,89.17,0,0,0,259,178.29h.15a85.08,85.08,0,0,0,31-5.79A80.88,80.88,0,0,0,303,166.05ZM202.45,225.86c-19.32,18.51-50.4,21.23-75.7,5.9L51.61,186.15l67.45-64.64,76.41,46.38C223,184.58,221.49,207.61,202.45,225.86Zm8.93-82.22-70.65-42.89L205.14,39,274.51,81.1c25.94,15.72,29.31,37,10.55,55A60.69,60.69,0,0,1,211.38,143.64Zm29.86,190c-19.57,18.75-46.17,29.09-74.88,29.09a123.73,123.73,0,0,1-64.1-18.2L0,282.52v24.67L108.6,373.1a111.6,111.6,0,0,0,57.76,16.42c24.92,0,48.8-8.81,66.42-25.69,12.88-12.34,20-27.13,19.68-41.49v-1.79A87.27,87.27,0,0,1,241.24,333.68Zm0-39c-19.57,18.75-46.17,29.08-74.88,29.08a123.81,123.81,0,0,1-64.1-18.19L0,243.53v24.68l108.6,65.91a111.6,111.6,0,0,0,57.76,16.42c24.92,0,48.8-8.81,66.42-25.69,12.88-12.34,20-27.13,19.68-41.5v-1.78A87.27,87.27,0,0,1,241.24,294.7Zm0-39c-19.57,18.76-46.17,29.09-74.88,29.09a123.81,123.81,0,0,1-64.1-18.19L0,204.55v24.68l108.6,65.91a111.59,111.59,0,0,0,57.76,16.41c24.92,0,48.8-8.8,66.42-25.68,12.88-12.35,20-27.13,19.68-41.5v-1.82A86.09,86.09,0,0,1,241.24,255.71Zm83.7,25.74a94.15,94.15,0,0,1-60.2,25.86h0V334a81.6,81.6,0,0,0,51.74-22.37c14-13.38,21.14-28.11,21-42.64v-2.19A94.92,94.92,0,0,1,324.94,281.45Zm-83.7,91.21c-19.57,18.76-46.17,29.09-74.88,29.09a123.73,123.73,0,0,1-64.1-18.2L0,321.5v24.68l108.6,65.9a111.6,111.6,0,0,0,57.76,16.42c24.92,0,48.8-8.8,66.42-25.69,12.88-12.34,20-27.13,19.68-41.49v-1.79A86.29,86.29,0,0,1,241.24,372.66ZM327,162.45c-.68.69-1.35,1.38-2.05,2.06a94.37,94.37,0,0,1-10.64,8.65,91.35,91.35,0,0,1-11.6,7,94.53,94.53,0,0,1-26.24,8.71,97.69,97.69,0,0,1-14.16,1.57c.5,1.61.9,3.25,1.25,4.9a53.27,53.27,0,0,1,1.14,12V217h.05a84.41,84.41,0,0,0,25.35-5.55,81,81,0,0,0,26.39-16.82c.8-.77,1.5-1.56,2.26-2.34a82.08,82.08,0,0,0,7.93-9.38A63.76,63.76,0,0,0,333,172.17a48.55,48.55,0,0,0,4.32-16.45c.09-1.23.2-2.47.19-3.7V150q-1.08,1.54-2.25,3.09A96.73,96.73,0,0,1,327,162.45Zm0,77.92c-.69.7-1.31,1.41-2,2.1a94.2,94.2,0,0,1-60.2,25.86h0l0,26.67h0a81.6,81.6,0,0,0,51.74-22.37A73.51,73.51,0,0,0,333,250.13a48.56,48.56,0,0,0,4.32-16.44c.09-1.24.2-2.47.19-3.71v-2.19c-.74,1.07-1.46,2.15-2.27,3.21A95.68,95.68,0,0,1,327,240.37Zm0-39c-.69.7-1.31,1.41-2,2.1a93.18,93.18,0,0,1-10.63,8.65,91.63,91.63,0,0,1-11.63,7,95.47,95.47,0,0,1-37.94,10.18h0V256h0a81.65,81.65,0,0,0,51.74-22.37c.8-.77,1.5-1.56,2.26-2.34a82.08,82.08,0,0,0,7.93-9.38A63.76,63.76,0,0,0,333,211.15a48.56,48.56,0,0,0,4.32-16.44c.09-1.24.2-2.48.19-3.71v-2.2c-.74,1.08-1.46,2.16-2.27,3.22A95.68,95.68,0,0,1,327,201.39Z"/></svg>
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
@@ -0,0 +1,98 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="theme-color" content="#000000" />
|
||||
<meta
|
||||
name="description"
|
||||
content="Backstage is an open platform for building developer portals"
|
||||
/>
|
||||
<link rel="apple-touch-icon" href="<%= publicPath %>/logo192.png" />
|
||||
<!--
|
||||
manifest.json provides metadata used when your web app is installed on a
|
||||
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
|
||||
-->
|
||||
<link
|
||||
rel="manifest"
|
||||
href="<%= publicPath %>/manifest.json"
|
||||
crossorigin="use-credentials"
|
||||
/>
|
||||
<link rel="icon" href="<%= publicPath %>/favicon.ico" />
|
||||
<link rel="shortcut icon" href="<%= publicPath %>/favicon.ico" />
|
||||
<link
|
||||
rel="apple-touch-icon"
|
||||
sizes="180x180"
|
||||
href="<%= publicPath %>/apple-touch-icon.png"
|
||||
/>
|
||||
<link
|
||||
rel="icon"
|
||||
type="image/png"
|
||||
sizes="32x32"
|
||||
href="<%= publicPath %>/favicon-32x32.png"
|
||||
/>
|
||||
<link
|
||||
rel="icon"
|
||||
type="image/png"
|
||||
sizes="16x16"
|
||||
href="<%= publicPath %>/favicon-16x16.png"
|
||||
/>
|
||||
<link
|
||||
rel="mask-icon"
|
||||
href="<%= publicPath %>/safari-pinned-tab.svg"
|
||||
color="#5bbad5"
|
||||
/>
|
||||
<title><%= config.getString('app.title') %></title>
|
||||
|
||||
<% if (config.has('app.datadogRum')) { %>
|
||||
<script>
|
||||
(function (h, o, u, n, d) {
|
||||
h = h[d] = h[d] || {
|
||||
q: [],
|
||||
onReady: function (c) {
|
||||
h.q.push(c);
|
||||
},
|
||||
};
|
||||
d = o.createElement(u);
|
||||
d.async = 1;
|
||||
d.src = n;
|
||||
n = o.getElementsByTagName(u)[0];
|
||||
n.parentNode.insertBefore(d, n);
|
||||
})(
|
||||
window,
|
||||
document,
|
||||
'script',
|
||||
'https://www.datadoghq-browser-agent.com/datadog-rum-v3.js',
|
||||
'DD_RUM',
|
||||
);
|
||||
DD_RUM.onReady(function () {
|
||||
DD_RUM.init({
|
||||
clientToken: '<%= config.getString("app.datadogRum.clientToken") %>',
|
||||
applicationId:
|
||||
'<%= config.getString("app.datadogRum.applicationId") %>',
|
||||
site: '<%= config.getOptionalString("app.datadogRum.site") || "datadoghq.com" %>',
|
||||
service: 'backstage',
|
||||
env: '<%= config.getString("app.datadogRum.env") %>',
|
||||
sampleRate: 100,
|
||||
trackInteractions: true,
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<% } %>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||
<div id="root"></div>
|
||||
<!--
|
||||
This HTML file is a template.
|
||||
If you open it directly in the browser, you will see an empty page.
|
||||
|
||||
You can add webfonts, meta tags, or analytics to this file.
|
||||
The build step will place the bundled scripts into the <body> tag.
|
||||
|
||||
To begin the development, run `yarn start`.
|
||||
To create a production bundle, use `yarn build`.
|
||||
-->
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"short_name": "Backstage",
|
||||
"name": "Backstage",
|
||||
"icons": [
|
||||
{
|
||||
"src": "favicon.ico",
|
||||
"sizes": "48x48",
|
||||
"type": "image/png"
|
||||
}
|
||||
],
|
||||
"start_url": "./index.html",
|
||||
"display": "standalone",
|
||||
"theme_color": "#000000",
|
||||
"background_color": "#ffffff"
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
# https://www.robotstxt.org/robotstxt.html
|
||||
User-agent: *
|
||||
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="682.667" height="682.667" preserveAspectRatio="xMidYMid meet" version="1.0" viewBox="0 0 512 512"><metadata>Created by potrace 1.11, written by Peter Selinger 2001-2013</metadata><g fill="#000" stroke="none"><path d="M492 4610 c-4 -3 -8 -882 -7 -1953 l0 -1948 850 2 c898 1 945 3 1118 49 505 134 823 531 829 1037 2 136 -9 212 -44 323 -40 125 -89 218 -163 310 -35 43 -126 128 -169 157 -22 15 -43 30 -46 33 -12 13 -131 70 -188 91 l-64 22 60 28 c171 77 317 224 403 404 64 136 92 266 91 425 -5 424 -245 770 -642 923 -79 30 -105 39 -155 50 -11 3 -38 10 -60 15 -22 6 -60 13 -85 17 -25 3 -58 9 -75 12 -36 8 -1643 11 -1653 3z m1497 -743 c236 -68 352 -254 305 -486 -26 -124 -110 -224 -232 -277 -92 -40 -151 -46 -439 -49 l-283 -3 -1 27 c-1 36 -1 760 0 790 l1 23 298 -5 c226 -4 310 -9 351 -20z m-82 -1538 c98 -3 174 -19 247 -52 169 -78 257 -212 258 -395 0 -116 -36 -221 -100 -293 -64 -72 -192 -135 -314 -155 -23 -3 -181 -7 -350 -8 l-308 -2 -1 26 c-6 210 1 874 9 879 9 5 366 6 559 0z" transform="translate(0.000000,512.000000) scale(0.100000,-0.100000)"/><path d="M4160 1789 c-275 -24 -499 -263 -503 -536 -1 -115 21 -212 66 -292 210 -369 697 -402 950 -65 77 103 110 199 111 329 0 50 -6 113 -13 140 -16 58 -62 155 -91 193 -33 43 -122 132 -132 132 -5 0 -26 11 -46 25 -85 56 -219 85 -342 74z" transform="translate(0.000000,512.000000) scale(0.100000,-0.100000)"/></g></svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
* Copyright 2020 The Backstage Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import React from 'react';
|
||||
import { renderWithEffects } from '@backstage/test-utils';
|
||||
|
||||
describe('App', () => {
|
||||
it('should render', async () => {
|
||||
process.env = {
|
||||
NODE_ENV: 'test',
|
||||
APP_CONFIG: [
|
||||
{
|
||||
data: {
|
||||
app: {
|
||||
title: 'Test',
|
||||
support: { url: 'http://localhost:7007/support' },
|
||||
},
|
||||
backend: { baseUrl: 'http://localhost:7007' },
|
||||
lighthouse: {
|
||||
baseUrl: 'http://localhost:3003',
|
||||
},
|
||||
techdocs: {
|
||||
storageUrl: 'http://localhost:7007/api/techdocs/static/docs',
|
||||
},
|
||||
},
|
||||
context: 'test',
|
||||
},
|
||||
] as any,
|
||||
};
|
||||
|
||||
const { default: App } = await import('./App');
|
||||
const rendered = await renderWithEffects(<App />);
|
||||
expect(rendered.baseElement).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,113 @@
|
||||
/*
|
||||
* Copyright 2023 The Backstage Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { graphiqlPlugin as legacyGraphiqlPlugin } from '@backstage/plugin-graphiql';
|
||||
import { createApp as createLegacyApp } from '@backstage/app-defaults';
|
||||
import { createApp } from '@backstage/frontend-app-api';
|
||||
import { graphiqlPlugin } from './examples/graphiqlPlugin';
|
||||
|
||||
/*
|
||||
|
||||
# Notes
|
||||
|
||||
TODO:
|
||||
- proper createApp
|
||||
- connect extensions and plugins, provide method?
|
||||
- higher level API for creating standard extensions + higher order framework API for creating those?
|
||||
- extension config schema + validation
|
||||
- figure out how to resolve configured extension ref to runtime value, e.g. '@backstage/plugin-graphiql#GraphiqlPage'
|
||||
- make sure all shorthands work + tests
|
||||
- figure out package structure / how to ship, frontend-plugin-api/frontend-app-api
|
||||
- figure out routing, useRouteRef in the new system
|
||||
- Legacy plugins / interop
|
||||
- dynamic updates, runtime API
|
||||
|
||||
*/
|
||||
|
||||
/* core */
|
||||
|
||||
// const discoverPackages = async () => {
|
||||
// // stub for now, deferring package discovery til later
|
||||
// return ['@backstage/plugin-graphiql'];
|
||||
// };
|
||||
|
||||
/* graphiql package */
|
||||
|
||||
/* app.tsx */
|
||||
|
||||
const app = createApp({
|
||||
plugins: [graphiqlPlugin],
|
||||
// bindRoutes({ bind }) {
|
||||
// bind(catalogPlugin.externalRoutes, {
|
||||
// createComponent: scaffolderPlugin.routes.root,
|
||||
// });
|
||||
// bind(scaffolderPlugin.externalRoutes, {
|
||||
// registerComponent: catalogImportPlugin.routes.importPage,
|
||||
// });
|
||||
// },
|
||||
});
|
||||
|
||||
const legacyApp = createLegacyApp({ plugins: [legacyGraphiqlPlugin] });
|
||||
|
||||
export default legacyApp.createRoot(app.createRoot());
|
||||
|
||||
// const routes = (
|
||||
// <FlatRoutes>
|
||||
// {/* <Route path="/" element={<Navigate to="catalog" />} />
|
||||
// <Route path="/catalog" element={<CatalogIndexPage />} />
|
||||
// <Route
|
||||
// path="/catalog/:namespace/:kind/:name"
|
||||
// element={<CatalogEntityPage />}
|
||||
// >
|
||||
// <EntityLayout>
|
||||
// <EntityLayout.Route path="/" title="Overview">
|
||||
// <Grid container spacing={3} alignItems="stretch">
|
||||
// <Grid item md={6} xs={12}>
|
||||
// <EntityAboutCard variant="gridItem" />
|
||||
// </Grid>
|
||||
|
||||
// <Grid item md={4} xs={12}>
|
||||
// <EntityLinksCard />
|
||||
// </Grid>
|
||||
// </Grid>
|
||||
// </EntityLayout.Route>
|
||||
|
||||
// <EntityLayout.Route path="/todos" title="TODOs">
|
||||
// <EntityTodoContent />
|
||||
// </EntityLayout.Route>
|
||||
// </EntityLayout>
|
||||
// </Route>
|
||||
// <Route
|
||||
// path="/catalog-import"
|
||||
// element={
|
||||
// <CatalogImportPage />
|
||||
// }
|
||||
// /> */}
|
||||
// {/* <Route
|
||||
// path="/tech-radar"
|
||||
// element={<TechRadarPage width={1500} height={800} />}
|
||||
// /> */}
|
||||
// <Route path="/graphiql" element={<GraphiQLPage />} />
|
||||
// </FlatRoutes>
|
||||
// );
|
||||
|
||||
// export default app.createRoot(
|
||||
// <>
|
||||
// {/* <AlertDisplay transientTimeoutMs={2500} />
|
||||
// <OAuthRequestDialog /> */}
|
||||
// <AppRouter>{routes}</AppRouter>
|
||||
// </>,
|
||||
// );
|
||||
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright 2023 The Backstage Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import React from 'react';
|
||||
import {
|
||||
createExtension,
|
||||
createPlugin,
|
||||
coreExtensionData,
|
||||
} from '@backstage/frontend-plugin-api';
|
||||
import { Router as GraphiQLPage } from '@backstage/plugin-graphiql';
|
||||
|
||||
export const GraphiqlPageExtension = createExtension({
|
||||
output: {
|
||||
component: coreExtensionData.reactComponent,
|
||||
path: coreExtensionData.routePath,
|
||||
},
|
||||
factory({ bind, config }) {
|
||||
bind.component(() => {
|
||||
return <GraphiQLPage />;
|
||||
});
|
||||
// TODO: In need of schemas and type safety
|
||||
bind.path((config as { path: string }).path);
|
||||
},
|
||||
});
|
||||
|
||||
export const graphiqlPlugin = createPlugin({
|
||||
id: 'graphiql',
|
||||
defaultExtensionInstances: [
|
||||
{
|
||||
id: 'graphiql.page',
|
||||
at: 'core.router/routes',
|
||||
extension: GraphiqlPageExtension,
|
||||
config: { path: '/graphiql' },
|
||||
},
|
||||
],
|
||||
});
|
||||
@@ -0,0 +1,22 @@
|
||||
/*
|
||||
* Copyright 2020 The Backstage Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import '@backstage/cli/asset-types';
|
||||
import React from 'react';
|
||||
import ReactDOM from 'react-dom';
|
||||
import App from './App';
|
||||
|
||||
ReactDOM.render(<App />, document.getElementById('root'));
|
||||
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
* Copyright 2020 The Backstage Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
// jest-dom adds custom jest matchers for asserting on DOM nodes.
|
||||
// allows you to do things like:
|
||||
// expect(element).toHaveTextContent(/react/i)
|
||||
// learn more: https://github.com/testing-library/jest-dom
|
||||
import '@testing-library/jest-dom';
|
||||
@@ -1,5 +1,80 @@
|
||||
# example-app
|
||||
|
||||
## 0.2.87-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-unprocessed-entities@0.1.3-next.0
|
||||
- @backstage/integration-react@1.1.18-next.0
|
||||
- @backstage/plugin-microsoft-calendar@0.1.7-next.0
|
||||
- @backstage/plugin-newrelic-dashboard@0.2.16-next.0
|
||||
- @backstage/plugin-apache-airflow@0.2.15-next.0
|
||||
- @backstage/plugin-github-actions@0.6.4-next.0
|
||||
- @backstage/plugin-octopus-deploy@0.2.5-next.0
|
||||
- @backstage/plugin-azure-devops@0.3.5-next.0
|
||||
- @backstage/plugin-gcp-projects@0.3.41-next.0
|
||||
- @backstage/plugin-azure-sites@0.1.12-next.0
|
||||
- @backstage/plugin-cloudbuild@0.3.23-next.0
|
||||
- @backstage/plugin-lighthouse@0.4.8-next.0
|
||||
- @backstage/plugin-tech-radar@0.6.8-next.0
|
||||
- @backstage/plugin-dynatrace@7.0.3-next.0
|
||||
- @backstage/plugin-gcalendar@0.3.18-next.0
|
||||
- @backstage/plugin-shortcuts@0.3.14-next.0
|
||||
- @backstage/plugin-airbrake@0.3.23-next.0
|
||||
- @backstage/plugin-circleci@0.3.23-next.0
|
||||
- @backstage/plugin-graphiql@0.2.54-next.0
|
||||
- @backstage/plugin-linguist@0.1.8-next.0
|
||||
- @backstage/plugin-newrelic@0.3.40-next.0
|
||||
- @backstage/plugin-playlist@0.1.15-next.0
|
||||
- @backstage/plugin-puppetdb@0.1.6-next.0
|
||||
- @backstage/plugin-jenkins@0.8.5-next.0
|
||||
- @backstage/plugin-rollbar@0.4.23-next.0
|
||||
- @backstage/plugin-badges@0.2.47-next.0
|
||||
- @backstage/plugin-sentry@0.5.8-next.0
|
||||
- @backstage/plugin-kafka@0.3.23-next.0
|
||||
- @backstage/plugin-nomad@0.1.4-next.0
|
||||
- @backstage/plugin-todo@0.2.25-next.0
|
||||
- @backstage/plugin-org@0.6.13-next.0
|
||||
- @backstage/cli@0.22.12-next.0
|
||||
- @backstage/plugin-techdocs@1.6.8-next.0
|
||||
- @backstage/plugin-entity-feedback@0.2.6-next.0
|
||||
- @backstage/core-app-api@1.10.0-next.0
|
||||
- @backstage/plugin-code-coverage@0.2.16-next.0
|
||||
- @backstage/core-plugin-api@1.6.0-next.0
|
||||
- @backstage/plugin-cost-insights@0.12.12-next.0
|
||||
- @backstage/core-components@0.13.5-next.0
|
||||
- @backstage/plugin-adr@0.6.6-next.0
|
||||
- @backstage/plugin-catalog-import@0.9.13-next.0
|
||||
- @backstage/plugin-scaffolder@1.14.4-next.0
|
||||
- @backstage/plugin-techdocs-module-addons-contrib@1.0.18-next.0
|
||||
- @backstage/plugin-home@0.5.7-next.0
|
||||
- @backstage/plugin-pagerduty@0.6.4-next.0
|
||||
- @backstage/plugin-stack-overflow@0.1.20-next.0
|
||||
- @backstage/plugin-api-docs@0.9.10-next.0
|
||||
- @internal/plugin-catalog-customized@0.0.14-next.0
|
||||
- @backstage/plugin-catalog-graph@0.2.35-next.0
|
||||
- @backstage/plugin-explore@0.4.9-next.0
|
||||
- @backstage/plugin-scaffolder-react@1.5.4-next.0
|
||||
- @backstage/app-defaults@1.4.3-next.0
|
||||
- @backstage/catalog-model@1.4.1
|
||||
- @backstage/config@1.0.8
|
||||
- @backstage/theme@0.4.1
|
||||
- @backstage/plugin-catalog-common@1.0.15
|
||||
- @backstage/plugin-catalog-react@1.8.3-next.0
|
||||
- @backstage/plugin-devtools@0.1.4-next.0
|
||||
- @backstage/plugin-gocd@0.1.29-next.0
|
||||
- @backstage/plugin-kubernetes@0.10.2-next.0
|
||||
- @backstage/plugin-linguist-common@0.1.1
|
||||
- @backstage/plugin-permission-react@0.4.15-next.0
|
||||
- @backstage/plugin-search@1.3.6-next.0
|
||||
- @backstage/plugin-search-common@1.2.5
|
||||
- @backstage/plugin-search-react@1.6.5-next.0
|
||||
- @backstage/plugin-stackstorm@0.1.6-next.0
|
||||
- @backstage/plugin-tech-insights@0.3.15-next.0
|
||||
- @backstage/plugin-techdocs-react@1.1.10-next.0
|
||||
- @backstage/plugin-user-settings@0.7.8-next.0
|
||||
|
||||
## 0.2.86
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "example-app",
|
||||
"version": "0.2.86",
|
||||
"version": "0.2.87-next.0",
|
||||
"private": true,
|
||||
"backstage": {
|
||||
"role": "frontend"
|
||||
|
||||
@@ -1,5 +1,22 @@
|
||||
# @backstage/backend-app-api
|
||||
|
||||
## 0.5.2-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-auth-node@0.3.0-next.0
|
||||
- @backstage/backend-common@0.19.4-next.0
|
||||
- @backstage/config-loader@1.5.0-next.0
|
||||
- @backstage/backend-tasks@0.5.7-next.0
|
||||
- @backstage/backend-plugin-api@0.6.2-next.0
|
||||
- @backstage/cli-common@0.1.12
|
||||
- @backstage/cli-node@0.1.3
|
||||
- @backstage/config@1.0.8
|
||||
- @backstage/errors@1.2.1
|
||||
- @backstage/types@1.1.0
|
||||
- @backstage/plugin-permission-node@0.7.13-next.0
|
||||
|
||||
## 0.5.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/backend-app-api",
|
||||
"description": "Core API used by Backstage backend apps",
|
||||
"version": "0.5.0",
|
||||
"version": "0.5.2-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"publishConfig": {
|
||||
|
||||