Merge branch 'backstage:master' into relax-github-transforms
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/core-app-api': patch
|
||||
---
|
||||
|
||||
Fixed a bug that could cause `navigate` analytics events to be misattributed to the plugin mounted on the root route (e.g. the `home` plugin at `/`) when the route that was navigated to wasn't associated with a routable extension.
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-incremental-ingestion': patch
|
||||
'@backstage/plugin-catalog-backend-module-bitbucket-server': patch
|
||||
'@backstage/plugin-catalog-backend-module-bitbucket-cloud': patch
|
||||
'@backstage/plugin-search-backend-module-elasticsearch': patch
|
||||
'@backstage/plugin-catalog-backend-module-puppetdb': patch
|
||||
'@backstage/plugin-catalog-backend-module-msgraph': patch
|
||||
'@backstage/plugin-search-backend-module-techdocs': patch
|
||||
'@backstage/plugin-catalog-backend-module-gerrit': patch
|
||||
'@backstage/plugin-catalog-backend-module-github': patch
|
||||
'@backstage/plugin-catalog-backend-module-gitlab': patch
|
||||
'@backstage/plugin-events-backend-module-aws-sqs': patch
|
||||
'@backstage/plugin-search-backend-module-catalog': patch
|
||||
'@backstage/plugin-search-backend-module-explore': patch
|
||||
'@backstage/plugin-catalog-backend-module-azure': patch
|
||||
'@backstage/plugin-events-backend-module-github': patch
|
||||
'@backstage/plugin-events-backend-module-gitlab': patch
|
||||
'@backstage/plugin-catalog-backend-module-aws': patch
|
||||
'@backstage/plugin-catalog-backend-module-gcp': patch
|
||||
'@backstage/plugin-search-backend-module-pg': patch
|
||||
'@backstage/plugin-azure-devops-backend': patch
|
||||
'@backstage/plugin-kubernetes-backend': patch
|
||||
'@backstage/plugin-lighthouse-backend': patch
|
||||
'@backstage/plugin-permission-backend': patch
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
'@backstage/backend-defaults': patch
|
||||
'@backstage/plugin-airbrake-backend': patch
|
||||
'@backstage/plugin-devtools-backend': patch
|
||||
'@backstage/plugin-periskop-backend': patch
|
||||
'@backstage/plugin-techdocs-backend': patch
|
||||
'@backstage/backend-common': patch
|
||||
'@backstage/plugin-catalog-backend': patch
|
||||
'@backstage/plugin-badges-backend': patch
|
||||
'@backstage/plugin-bazaar-backend': patch
|
||||
'@backstage/plugin-events-backend': patch
|
||||
'@backstage/plugin-search-backend': patch
|
||||
'@backstage/plugin-kafka-backend': patch
|
||||
'@backstage/plugin-proxy-backend': patch
|
||||
'@backstage/plugin-todo-backend': patch
|
||||
'@backstage/plugin-app-backend': patch
|
||||
---
|
||||
|
||||
Use `coreServices.rootConfig` instead of `coreService.config`
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/plugin-search-backend-module-techdocs': patch
|
||||
'@backstage/plugin-search-backend-module-catalog': patch
|
||||
'@backstage/plugin-search-backend-module-explore': patch
|
||||
---
|
||||
|
||||
Ensure that all services are dependency injected into the module instead of taken from options
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/backend-app-api': patch
|
||||
---
|
||||
|
||||
Do not throw in backend.stop, if start failed
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-graph': patch
|
||||
---
|
||||
|
||||
Propagate entity spec to EntityNode so that spec info such as type can be used for graph node customization
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes-backend': patch
|
||||
---
|
||||
|
||||
Fixed a bug where the proxy was not rewriting WebSocket request paths properly.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-playlist': patch
|
||||
---
|
||||
|
||||
Displaying an alert popup each time the Playlist is created or deleted
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
---
|
||||
|
||||
Fix the get entities query in the `MyGroupsPicker` to query the `kind=Group` entities.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/create-app': patch
|
||||
---
|
||||
|
||||
Bumped create-app version.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/create-app': patch
|
||||
---
|
||||
|
||||
Bumped create-app version.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/create-app': patch
|
||||
---
|
||||
|
||||
Bumped create-app version.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-graph': patch
|
||||
---
|
||||
|
||||
Added maximum depth parameter to the catalogGraphParams in CatalogGraphCard.
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/config-loader': minor
|
||||
---
|
||||
|
||||
Loading invalid TypeScript configuration schemas will now throw an error rather than silently being ignored.
|
||||
|
||||
In particular this includes defining any additional types other than `Config` in the schema file, or use of unsupported types such as `Record` or `Partial`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-auth-backend': patch
|
||||
---
|
||||
|
||||
Updated `frameHandler` to return `undefined` when using the redirect flow instead of returning `postMessageReponse` which was causing errors
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
---
|
||||
|
||||
Added examples for the `fs:delete` and `fs:rename` actions
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-graphql-voyager': patch
|
||||
---
|
||||
|
||||
Fix typo in install instructions.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-explore-backend': patch
|
||||
---
|
||||
|
||||
Moved the config example from the "Tools as Code" section to the "Tools as Config" section of the README
|
||||
@@ -0,0 +1,91 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-confluence-to-markdown': patch
|
||||
'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch
|
||||
'@backstage/plugin-events-backend-module-bitbucket-cloud': patch
|
||||
'@backstage/plugin-search-backend-module-elasticsearch': patch
|
||||
'@backstage/plugin-catalog-backend-module-unprocessed': patch
|
||||
'@backstage/plugin-scaffolder-backend-module-sentry': patch
|
||||
'@backstage/plugin-scaffolder-backend-module-yeoman': patch
|
||||
'@backstage/plugin-scaffolder-backend-module-rails': patch
|
||||
'@backstage/plugin-search-backend-module-techdocs': patch
|
||||
'@backstage/plugin-cicd-statistics-module-gitlab': patch
|
||||
'@backstage/plugin-events-backend-module-aws-sqs': patch
|
||||
'@backstage/plugin-search-backend-module-catalog': patch
|
||||
'@backstage/plugin-search-backend-module-explore': patch
|
||||
'@backstage/plugin-events-backend-module-gerrit': patch
|
||||
'@backstage/plugin-events-backend-module-github': patch
|
||||
'@backstage/plugin-events-backend-module-gitlab': patch
|
||||
'@backstage/plugin-events-backend-module-azure': patch
|
||||
'@backstage/plugin-events-backend-test-utils': patch
|
||||
'@backstage/plugin-search-backend-module-pg': patch
|
||||
'@backstage/plugin-entity-feedback-backend': patch
|
||||
'@backstage/backend-openapi-utils': patch
|
||||
'@backstage/plugin-bitbucket-cloud-common': patch
|
||||
'@backstage/plugin-entity-feedback-common': patch
|
||||
'@backstage/plugin-code-coverage-backend': patch
|
||||
'@backstage/plugin-user-settings-backend': patch
|
||||
'@backstage/plugin-analytics-module-ga4': patch
|
||||
'@backstage/plugin-azure-devops-backend': patch
|
||||
'@backstage/plugin-analytics-module-ga': patch
|
||||
'@backstage/plugin-git-release-manager': patch
|
||||
'@backstage/plugin-search-backend-node': patch
|
||||
'@backstage/integration-react': patch
|
||||
'@backstage/plugin-github-deployments': patch
|
||||
'@backstage/plugin-microsoft-calendar': patch
|
||||
'@backstage/plugin-newrelic-dashboard': patch
|
||||
'@backstage/plugin-permission-backend': patch
|
||||
'@backstage/plugin-entity-validation': patch
|
||||
'@backstage/plugin-sonarqube-backend': patch
|
||||
'@backstage/plugin-airbrake-backend': patch
|
||||
'@backstage/plugin-devtools-backend': patch
|
||||
'@backstage/plugin-linguist-backend': patch
|
||||
'@backstage/plugin-periskop-backend': patch
|
||||
'@backstage/plugin-playlist-backend': patch
|
||||
'@backstage/plugin-apollo-explorer': patch
|
||||
'@backstage/plugin-devtools-common': patch
|
||||
'@backstage/plugin-entity-feedback': patch
|
||||
'@backstage/plugin-explore-backend': patch
|
||||
'@backstage/plugin-graphql-voyager': patch
|
||||
'@backstage/plugin-jenkins-backend': patch
|
||||
'@backstage/plugin-linguist-common': patch
|
||||
'@backstage/plugin-playlist-common': patch
|
||||
'@backstage/plugin-scaffolder-node': patch
|
||||
'@backstage/plugin-apache-airflow': patch
|
||||
'@backstage/plugin-bazaar-backend': patch
|
||||
'@backstage/plugin-events-backend': patch
|
||||
'@backstage/plugin-jenkins-common': patch
|
||||
'@backstage/plugin-octopus-deploy': patch
|
||||
'@backstage/plugin-search-backend': patch
|
||||
'@backstage/plugin-stack-overflow': patch
|
||||
'@backstage/plugin-catalog-graph': patch
|
||||
'@backstage/plugin-code-coverage': patch
|
||||
'@backstage/plugin-config-schema': patch
|
||||
'@backstage/plugin-github-issues': patch
|
||||
'@backstage/plugin-nomad-backend': patch
|
||||
'@backstage/plugin-tech-insights': patch
|
||||
'@backstage/plugin-catalog-node': patch
|
||||
'@backstage/plugin-code-climate': patch
|
||||
'@backstage/plugin-events-node': patch
|
||||
'@backstage/plugin-firehydrant': patch
|
||||
'@backstage/cli-node': patch
|
||||
'@backstage/plugin-auth-node': patch
|
||||
'@backstage/plugin-codescene': patch
|
||||
'@backstage/plugin-dynatrace': patch
|
||||
'@backstage/plugin-gcalendar': patch
|
||||
'@backstage/plugin-org-react': patch
|
||||
'@backstage/plugin-shortcuts': patch
|
||||
'@backstage/plugin-xcmetrics': patch
|
||||
'@backstage/plugin-airbrake': patch
|
||||
'@backstage/plugin-periskop': patch
|
||||
'@backstage/plugin-playlist': patch
|
||||
'@backstage/plugin-bitrise': patch
|
||||
'@backstage/plugin-allure': patch
|
||||
'@backstage/plugin-bazaar': patch
|
||||
'@backstage/plugin-ilert': patch
|
||||
'@backstage/plugin-kafka': patch
|
||||
'@backstage/plugin-nomad': patch
|
||||
'@backstage/plugin-adr': patch
|
||||
'@backstage/plugin-org': patch
|
||||
---
|
||||
|
||||
Add package repository and homepage metadata
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-gitlab': patch
|
||||
---
|
||||
|
||||
Added option to skip forked repos in GitlabDiscoveryEntityProvider
|
||||
@@ -0,0 +1,14 @@
|
||||
---
|
||||
'@backstage/plugin-devtools-backend': patch
|
||||
---
|
||||
|
||||
Add DevTools configuration to enable dependency listing to be filtered with custom prefixes. For instance, in your `app-config.yaml`:
|
||||
|
||||
```yaml
|
||||
devTools:
|
||||
info:
|
||||
packagePrefixes:
|
||||
- @backstage/
|
||||
- @roadiehq/backstage-
|
||||
- @spotify/backstage-
|
||||
```
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-linguist-common': patch
|
||||
---
|
||||
|
||||
Exported new LanguageType type alias
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-linguist-backend': patch
|
||||
---
|
||||
|
||||
Fixed bug in LinguistBackendClient.ts file where if the linguistJsOptions is specified and sent over to the linguist-js package it would get changed (another attribute would be added) causing future entities of the batch to fail with an error
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-sonarqube': patch
|
||||
---
|
||||
|
||||
Remove sonarQube card disable class
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-app-node': minor
|
||||
---
|
||||
|
||||
Added the `app` plugin node library, initially providing an extension point that can be used to configure a static fallback handler.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend': minor
|
||||
---
|
||||
|
||||
Support configuring applicable kinds for `AnnotateScmSlugEntityProcessor`
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Reload the frontend when app config changes
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-home-react': patch
|
||||
---
|
||||
|
||||
Make `title` optional when defining the `createCardExtension`
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
---
|
||||
|
||||
Adds examples to a few scaffolder actions.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/backend-test-utils': minor
|
||||
---
|
||||
|
||||
**BREAKING**: Renamed `mockServices.config` to `mockServices.rootConfig`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/backend-app-api': minor
|
||||
---
|
||||
|
||||
**BREAKING**: Renamed `configServiceFactory` to `rootConfigServiceFactory`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/backend-plugin-api': minor
|
||||
---
|
||||
|
||||
**BREAKING**: Renamed `coreServices.config` to `coreServices.rootConfig`.
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-bitbucket-server': patch
|
||||
'@backstage/plugin-catalog-backend-module-bitbucket-cloud': patch
|
||||
'@backstage/plugin-catalog-backend-module-puppetdb': patch
|
||||
'@backstage/plugin-catalog-backend-module-msgraph': patch
|
||||
'@backstage/plugin-catalog-backend-module-gerrit': patch
|
||||
'@backstage/plugin-catalog-backend-module-github': patch
|
||||
'@backstage/plugin-catalog-backend-module-gitlab': patch
|
||||
'@backstage/plugin-events-backend-module-aws-sqs': patch
|
||||
'@backstage/plugin-catalog-backend-module-azure': patch
|
||||
'@backstage/plugin-catalog-backend-module-aws': patch
|
||||
'@backstage/backend-common': patch
|
||||
'@backstage/plugin-jenkins-backend': patch
|
||||
'@backstage/plugin-proxy-backend': patch
|
||||
---
|
||||
|
||||
Fixed invalid configuration schema. The configuration schema may be more strict as a result.
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
'@backstage/core-components': patch
|
||||
'@backstage/plugin-splunk-on-call': patch
|
||||
'@backstage/plugin-xcmetrics': patch
|
||||
'@backstage/plugin-catalog': patch
|
||||
---
|
||||
|
||||
Prefer simple `theme.spacing` without string interpolation
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-confluence-to-markdown': patch
|
||||
---
|
||||
|
||||
Use `fetchContents` directly instead of a `fetchPlainAction`
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-unprocessed': minor
|
||||
---
|
||||
|
||||
**BREAKING**: Fixing typo in exported module. You will have to rename the import to the correct spelling. `UnprocessedEntites` -> `UnprocessedEntities`
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-auth-backend': patch
|
||||
---
|
||||
|
||||
Updated config schema to match what was being used in code
|
||||
+72
-2
@@ -228,7 +228,77 @@
|
||||
"@backstage/plugin-user-settings-backend": "0.1.11",
|
||||
"@backstage/plugin-vault": "0.1.14",
|
||||
"@backstage/plugin-vault-backend": "0.3.3",
|
||||
"@backstage/plugin-xcmetrics": "0.2.40"
|
||||
"@backstage/plugin-xcmetrics": "0.2.40",
|
||||
"@backstage/plugin-analytics-module-newrelic-browser": "0.0.0",
|
||||
"@backstage/plugin-catalog-backend-module-gcp": "0.0.0",
|
||||
"@backstage/plugin-app-node": "0.0.0"
|
||||
},
|
||||
"changesets": []
|
||||
"changesets": [
|
||||
"analytics-millenial-whoop",
|
||||
"angry-beers-relate",
|
||||
"beige-files-reflect",
|
||||
"brown-taxis-develop",
|
||||
"chatty-foxes-buy",
|
||||
"chatty-seahorses-juggle",
|
||||
"chilly-keys-count",
|
||||
"cold-numbers-sleep",
|
||||
"create-app-1690284535",
|
||||
"create-app-1690892926",
|
||||
"create-app-1691503547",
|
||||
"cuddly-colts-repeat",
|
||||
"dirty-chefs-listen",
|
||||
"fluffy-pens-prove",
|
||||
"funny-dancers-deliver",
|
||||
"gold-steaks-thank",
|
||||
"gorgeous-months-doubt",
|
||||
"hot-cats-rush",
|
||||
"hungry-shrimps-care",
|
||||
"khaki-flies-draw",
|
||||
"kind-cougars-allow",
|
||||
"large-badgers-switch",
|
||||
"large-experts-poke",
|
||||
"large-vans-cross",
|
||||
"lazy-pugs-wash",
|
||||
"little-penguins-build",
|
||||
"loud-garlics-press",
|
||||
"mean-squids-relax",
|
||||
"metal-buttons-search",
|
||||
"mighty-lions-search-2",
|
||||
"mighty-lions-search-3",
|
||||
"mighty-lions-search",
|
||||
"neat-coins-raise",
|
||||
"neat-lamps-press",
|
||||
"odd-avocados-buy",
|
||||
"pink-squids-nail",
|
||||
"popular-fans-camp",
|
||||
"quiet-starfishes-kick",
|
||||
"rare-pens-exist",
|
||||
"rich-zoos-occur",
|
||||
"rotten-dolls-sing",
|
||||
"rotten-rabbits-move",
|
||||
"rude-feet-sparkle",
|
||||
"search-donuts-wash",
|
||||
"selfish-coats-shout",
|
||||
"serious-bats-repair",
|
||||
"serious-papayas-shout",
|
||||
"serious-singers-vanish",
|
||||
"seven-cougars-smash",
|
||||
"sharp-months-think",
|
||||
"slimy-kids-jam",
|
||||
"smart-pandas-applaud",
|
||||
"sour-hats-kick",
|
||||
"stale-wombats-talk",
|
||||
"strange-shrimps-mix",
|
||||
"strong-bobcats-unite",
|
||||
"stupid-berries-run",
|
||||
"ten-lies-cheat",
|
||||
"ten-otters-appear",
|
||||
"tender-fireants-cheer",
|
||||
"thin-yaks-hang",
|
||||
"tidy-cobras-scream",
|
||||
"tough-dolphins-care",
|
||||
"tough-lies-float",
|
||||
"unlucky-bags-pump",
|
||||
"wild-timers-sparkle"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-home': patch
|
||||
---
|
||||
|
||||
Now, user can provide a language (optional) as input to receive a greeting in that specific language. Example: `<WelcomeTitle language={['English', 'Spanish']} />`
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Enable to print the config schema not merged with the `--no-merge` flag
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
---
|
||||
|
||||
Updated dependency `esbuild` to `^0.19.0`.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/backend-plugin-api': minor
|
||||
'@backstage/backend-defaults': minor
|
||||
---
|
||||
|
||||
**BREAKING**: Removing shared environments concept from the new experimental backend system.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/backend-plugin-api': patch
|
||||
---
|
||||
|
||||
Added new experimental `featureDiscoveryServiceRef`, available as an `/alpha` export.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-proxy-backend': minor
|
||||
---
|
||||
|
||||
Defining proxy endpoints directly under the root `proxy` configuration key is deprecated. Endpoints should now be declared under `proxy.endpoints` instead. The `skipInvalidProxies` and `reviveConsumedRequestBodies` can now also be configured through static configuration.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-analytics-module-newrelic-browser': patch
|
||||
---
|
||||
|
||||
Introduced the New Relic Browser analytics module. Check out the plugins [README.md](https://github.com/backstage/backstage/tree/master/plugins/analytics-module-newrelic-browser) for more details!
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-search-backend-node': patch
|
||||
---
|
||||
|
||||
Fix Lunr search engine highlight by ignoring invalid metadata positions.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-gitlab': patch
|
||||
---
|
||||
|
||||
Filter Gitlab archived projects through APIs
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/backend-app-api': patch
|
||||
---
|
||||
|
||||
Added new experimental `featureDiscoveryServiceFactory`, available as an `/alpha` export.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/backend-tasks': patch
|
||||
---
|
||||
|
||||
Make `readTaskScheduleDefinitionFromConfig` properly handle bad inputs
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-app-backend': patch
|
||||
---
|
||||
|
||||
Migrated the alpha `appBackend` export to use static configuration and extension points rather than accepting options.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend': minor
|
||||
---
|
||||
|
||||
Added OpenTelemetry spans for catalog processing
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-react': patch
|
||||
---
|
||||
|
||||
Allow specifying screen size when catalog filters are hidden in drawer
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-aws': patch
|
||||
---
|
||||
|
||||
Added option to configure AWS `accountId` in `AwsS3EntityProvider`
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-linguist-backend': minor
|
||||
---
|
||||
|
||||
Adds a processor to the linguist backend which can automatically add language tags to entities
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/backend-test-utils': patch
|
||||
---
|
||||
|
||||
Add needed constants and constructs to support PostgreSQL version 14 as test database
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-home': patch
|
||||
---
|
||||
|
||||
Make sure the widget name is never empty in the `AddWidgetDialog`. If the title was set to "", the entry would contain an empty string. Use the name as a fallback
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes': patch
|
||||
---
|
||||
|
||||
Fix container memory limits
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-node': patch
|
||||
---
|
||||
|
||||
Export `TemplateExample` from the `createTemplateAction` type.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-react': patch
|
||||
---
|
||||
|
||||
Fixed bug in Workflow component by passing a prop `templateName` down to Stepper component.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-devtools': patch
|
||||
---
|
||||
|
||||
Fix readme typo
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-search-backend': patch
|
||||
---
|
||||
|
||||
Add missing `configSchema` to package.json
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-confluence-to-markdown': patch
|
||||
'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch
|
||||
'@backstage/plugin-scaffolder-backend-module-rails': patch
|
||||
---
|
||||
|
||||
Import helpers from the node package instead of the backend package
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-gcp': minor
|
||||
---
|
||||
|
||||
Added GCP catalog plugin with GKE provider
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
'@backstage/plugin-scaffolder-node': patch
|
||||
---
|
||||
|
||||
Deprecated `executeShellCommand`, `RunCommandOptions`, and `fetchContents` from `@backstage/plugin-scaffolder-backend`, since they are useful for Scaffolder modules (who should not be importing from the plugin package itself). You should now import these from `@backstage/plugin-scaffolder-backend-node` instead. `RunCommandOptions` was renamed in the Node package as `ExecuteShellCommandOptions`, for consistency.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog': patch
|
||||
---
|
||||
|
||||
Fixed an issue causing `EntitySwitch` to unmount its children once entity refresh was invoked
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-auth-backend': patch
|
||||
---
|
||||
|
||||
Add frontend visibility to provider objects in `auth` config.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-microsoft-calendar': patch
|
||||
---
|
||||
|
||||
README update - example of apiRef definition and fixed component name
|
||||
+88
-88
@@ -4,91 +4,91 @@
|
||||
# The last matching pattern takes precedence.
|
||||
# https://help.github.com/articles/about-codeowners/
|
||||
|
||||
* @backstage/maintainers
|
||||
yarn.lock @backstage/maintainers @backstage-service
|
||||
*/yarn.lock @backstage/maintainers @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
|
||||
/docs/features/techdocs @backstage/techdocs-maintainers
|
||||
/docs/plugins/integrating-search-into-plugins.md @backstage/discoverability-maintainers
|
||||
/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/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/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/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/search @backstage/discoverability-maintainers
|
||||
/plugins/search-* @backstage/discoverability-maintainers
|
||||
/plugins/sonarqube @backstage/maintainers @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
|
||||
* @backstage/maintainers
|
||||
*/yarn.lock @backstage/maintainers @backstage-service
|
||||
/cypress/src/integration/plugins/techdocs.spec.ts @backstage/techdocs-maintainers
|
||||
/docs/assets/search @backstage/discoverability-maintainers
|
||||
/docs/features/search @backstage/discoverability-maintainers
|
||||
/docs/features/techdocs @backstage/techdocs-maintainers
|
||||
/docs/plugins/integrating-search-into-plugins.md @backstage/discoverability-maintainers
|
||||
/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/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/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/search @backstage/discoverability-maintainers
|
||||
/plugins/search-* @backstage/discoverability-maintainers
|
||||
/plugins/sonarqube @backstage/maintainers @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
|
||||
|
||||
@@ -123,6 +123,8 @@ FireHydrant
|
||||
Firekube
|
||||
Firestore
|
||||
Fiverr
|
||||
Flightcontrol
|
||||
flightcontrol
|
||||
Francesco
|
||||
Frontside
|
||||
gerrit
|
||||
@@ -213,6 +215,7 @@ middleware
|
||||
minikube
|
||||
Minikube
|
||||
Minio
|
||||
misattributed
|
||||
misconfiguration
|
||||
misconfigured
|
||||
mkdocs
|
||||
@@ -404,6 +407,7 @@ unbreak
|
||||
Unconference
|
||||
unicode
|
||||
unmanaged
|
||||
unmount
|
||||
unregister
|
||||
unregistering
|
||||
unregistration
|
||||
|
||||
@@ -56,7 +56,7 @@ jobs:
|
||||
run: ls microsite/build && ls microsite/build/storybook
|
||||
|
||||
- name: Deploy both microsite and storybook to gh-pages
|
||||
uses: JamesIves/github-pages-deploy-action@v4.4.2
|
||||
uses: JamesIves/github-pages-deploy-action@v4.4.3
|
||||
with:
|
||||
branch: gh-pages
|
||||
folder: microsite/build
|
||||
|
||||
@@ -254,3 +254,6 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/
|
||||
| [Celonis](https://celonis.com) | [@georgeyord](https://github.com/georgeyord), [@LauraMoraB](https://github.com/LauraMoraB), [@mariosant](https://github.com/mariosant), [@Rbillon59](https://github.com/Rbillon59) | Internal developer and product portal implementation. |
|
||||
| [Rabobank](https://www.rabobank.com) | [Willem Dekker](https://github.com/wdekker), [Sridhar Gnanasekaran](https://github.com/srid99), [Ruben Ernst](https://github.com/Ruben-E) | At Rabobank, our mission is to make life better for engineers. After exploring various options in the market, we've discovered that Backstage provides the perfect foundation for creating a platform that meets our engineers' needs and helps us achieve our goals. We want to make our engineers happy by offering standardized services, freeing them up to focus on delivering value. Our vision is to create a one-stop platform where engineers can find everything related to software and services. In practice, we're excited about using all the cool features in Backstage, and we're even planning to build our own plugins. |
|
||||
| [JB Hi-Fi](https://www.jbhifi.com.au) | [@bahman](https://github.com/bahman-jb/) | We use Backstage as a central place for all of our components/apis across multiple teams. It helps us to quickly identify the ownership of a component/api, find the related links and have a quick access to CI/CD pipelines. |
|
||||
| [Zenklub](https://www.zenklub.com.br) | [@zenklub](https://github.com/zenklub), [@gioufop](https://github.com/gioufop) | Developer portal, services catalog and centralization of metrics from Grafana Stack and AWS. Furthermore, centralization of documentation and infra details like Tools, Network services and so on. |
|
||||
| [Platzi](https://platzi.com/) | [@juancarestre](https://github.com/juancarestre/), [Engineering at Platzi](https://github.com/PlatziDev/) | Backstage allow our developers to get easily engaged with all the internal components, technical documentations and software templates. All new developers reduce its onboarding time via Backstage, and after a couple of integrations it allowed us to create new components with in a couple of clicks. |
|
||||
| [idealo](https://idealo.de) | [Wanis Fahmy](https://github.com/wanisfahmyDE), [Sajjad Pervaiz](https://github.com/sjvaiz), [Tim Heurich](https://github.com/theurichde) | Backstage is our Internal developer portal. Along with other plugins, We use the software catalog, TechDocs and explore plugins to manage, discover and document our software components and platform products. |
|
||||
|
||||
@@ -42,6 +42,7 @@ Scope: Discoverability within Backstage, including the home page, information ar
|
||||
| Emma Indal | Spotify | BUX | [emmaindal](http://github.com/emmaindal) | emmaindal#7503 |
|
||||
| Raghunandan Balachandran | Spotify | BUX | [soapraj](http://github.com/soapraj) | raghunandanb#1114 |
|
||||
| Renan Mendes Carvalho | Spotify | BUX | [aitherios](http://github.com/aitherios) | aitherios#0593 |
|
||||
| Bailey Brooks | Spotify | BUX | [bailey](http://github.com/bailey) | \_bailey4 |
|
||||
|
||||
### Helm Charts
|
||||
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
[](https://codecov.io/gh/backstage/backstage)
|
||||
[](https://github.com/backstage/backstage/releases)
|
||||
[](https://app.uffizzi.com/ephemeral-environments/backstage/backstage)
|
||||
[](https://bestpractices.coreinfrastructure.org/projects/7678)
|
||||
[](https://securityscorecards.dev/viewer/?uri=github.com/backstage/backstage)
|
||||
|
||||
> 🏖️ The week beginning the 26th of June, some of the maintainers will be taking a well earned Summer Holiday break. We will be slower to respond to issues and PRs during this time. Releases will continue to be shipped weekly. Normal service will resume on the 24th of July. 🏝️
|
||||
|
||||
|
||||
+68
-65
@@ -20,6 +20,8 @@ app:
|
||||
- url: https://discord.gg/backstage-687207715902193673
|
||||
title: '#backstage'
|
||||
|
||||
packageName: example-app
|
||||
|
||||
backend:
|
||||
# Used for enabling authentication, secret is shared by all backend plugins
|
||||
# See https://backstage.io/docs/auth/service-to-service-auth for
|
||||
@@ -49,80 +51,81 @@ backend:
|
||||
|
||||
# See README.md in the proxy-backend plugin for information on the configuration format
|
||||
proxy:
|
||||
'/circleci/api':
|
||||
target: https://circleci.com/api/v1.1
|
||||
headers:
|
||||
Circle-Token: ${CIRCLECI_AUTH_TOKEN}
|
||||
endpoints:
|
||||
'/circleci/api':
|
||||
target: https://circleci.com/api/v1.1
|
||||
headers:
|
||||
Circle-Token: ${CIRCLECI_AUTH_TOKEN}
|
||||
|
||||
'/jenkins/api':
|
||||
target: http://localhost:8080
|
||||
headers:
|
||||
Authorization: ${JENKINS_BASIC_AUTH_HEADER}
|
||||
'/jenkins/api':
|
||||
target: http://localhost:8080
|
||||
headers:
|
||||
Authorization: ${JENKINS_BASIC_AUTH_HEADER}
|
||||
|
||||
'/travisci/api':
|
||||
target: https://api.travis-ci.com
|
||||
changeOrigin: true
|
||||
headers:
|
||||
Authorization: ${TRAVISCI_AUTH_TOKEN}
|
||||
travis-api-version: '3'
|
||||
'/travisci/api':
|
||||
target: https://api.travis-ci.com
|
||||
changeOrigin: true
|
||||
headers:
|
||||
Authorization: ${TRAVISCI_AUTH_TOKEN}
|
||||
travis-api-version: '3'
|
||||
|
||||
'/newrelic/apm/api':
|
||||
target: https://api.newrelic.com/v2
|
||||
headers:
|
||||
X-Api-Key: ${NEW_RELIC_REST_API_KEY}
|
||||
'/newrelic/apm/api':
|
||||
target: https://api.newrelic.com/v2
|
||||
headers:
|
||||
X-Api-Key: ${NEW_RELIC_REST_API_KEY}
|
||||
|
||||
'/newrelic/api':
|
||||
target: https://api.newrelic.com
|
||||
headers:
|
||||
X-Api-Key: ${NEW_RELIC_USER_KEY}
|
||||
'/newrelic/api':
|
||||
target: https://api.newrelic.com
|
||||
headers:
|
||||
X-Api-Key: ${NEW_RELIC_USER_KEY}
|
||||
|
||||
'/pagerduty':
|
||||
target: https://api.pagerduty.com
|
||||
headers:
|
||||
Authorization: Token token=${PAGERDUTY_TOKEN}
|
||||
'/pagerduty':
|
||||
target: https://api.pagerduty.com
|
||||
headers:
|
||||
Authorization: Token token=${PAGERDUTY_TOKEN}
|
||||
|
||||
'/buildkite/api':
|
||||
target: https://api.buildkite.com/v2/
|
||||
headers:
|
||||
Authorization: ${BUILDKITE_TOKEN}
|
||||
'/buildkite/api':
|
||||
target: https://api.buildkite.com/v2/
|
||||
headers:
|
||||
Authorization: ${BUILDKITE_TOKEN}
|
||||
|
||||
'/sentry/api':
|
||||
target: https://sentry.io/api/
|
||||
allowedMethods: ['GET']
|
||||
headers:
|
||||
Authorization: ${SENTRY_TOKEN}
|
||||
'/sentry/api':
|
||||
target: https://sentry.io/api/
|
||||
allowedMethods: ['GET']
|
||||
headers:
|
||||
Authorization: ${SENTRY_TOKEN}
|
||||
|
||||
'/ilert':
|
||||
target: https://api.ilert.com
|
||||
allowedMethods: ['GET', 'POST', 'PUT']
|
||||
allowedHeaders: ['Authorization']
|
||||
headers:
|
||||
Authorization: ${ILERT_AUTH_HEADER}
|
||||
'/ilert':
|
||||
target: https://api.ilert.com
|
||||
allowedMethods: ['GET', 'POST', 'PUT']
|
||||
allowedHeaders: ['Authorization']
|
||||
headers:
|
||||
Authorization: ${ILERT_AUTH_HEADER}
|
||||
|
||||
'/airflow':
|
||||
target: https://your.airflow.instance.com/api/v1
|
||||
headers:
|
||||
Authorization: ${AIRFLOW_BASIC_AUTH_HEADER}
|
||||
'/airflow':
|
||||
target: https://your.airflow.instance.com/api/v1
|
||||
headers:
|
||||
Authorization: ${AIRFLOW_BASIC_AUTH_HEADER}
|
||||
|
||||
'/gocd':
|
||||
target: https://your.gocd.instance.com/go/api
|
||||
allowedMethods: ['GET']
|
||||
allowedHeaders: ['Authorization']
|
||||
headers:
|
||||
Authorization: Basic ${GOCD_AUTH_CREDENTIALS}
|
||||
'/gocd':
|
||||
target: https://your.gocd.instance.com/go/api
|
||||
allowedMethods: ['GET']
|
||||
allowedHeaders: ['Authorization']
|
||||
headers:
|
||||
Authorization: Basic ${GOCD_AUTH_CREDENTIALS}
|
||||
|
||||
'/dynatrace':
|
||||
target: https://your.dynatrace.instance.com/api/v2
|
||||
headers:
|
||||
Authorization: 'Api-Token ${DYNATRACE_ACCESS_TOKEN}'
|
||||
'/dynatrace':
|
||||
target: https://your.dynatrace.instance.com/api/v2
|
||||
headers:
|
||||
Authorization: 'Api-Token ${DYNATRACE_ACCESS_TOKEN}'
|
||||
|
||||
'/stackstorm':
|
||||
target: https://your.stackstorm.instance.com/api
|
||||
headers:
|
||||
St2-Api-Key: ${ST2_API_KEY}
|
||||
'/stackstorm':
|
||||
target: https://your.stackstorm.instance.com/api
|
||||
headers:
|
||||
St2-Api-Key: ${ST2_API_KEY}
|
||||
|
||||
'/puppetdb':
|
||||
target: https://your.puppetdb.instance.com
|
||||
'/puppetdb':
|
||||
target: https://your.puppetdb.instance.com
|
||||
|
||||
organization:
|
||||
name: My Company
|
||||
@@ -211,7 +214,7 @@ integrations:
|
||||
# clientEmail: 'example@example.com'
|
||||
# privateKey: ${GCS_PRIVATE_KEY}
|
||||
awsS3:
|
||||
- host: amazonaws.com
|
||||
- endpoint: ${AWS_S3_ENDPOINT}
|
||||
accessKeyId: ${AWS_ACCESS_KEY_ID}
|
||||
secretAccessKey: ${AWS_SECRET_ACCESS_KEY}
|
||||
|
||||
@@ -352,8 +355,6 @@ auth:
|
||||
metadataUrl: ${AUTH_OIDC_METADATA_URL}
|
||||
clientId: ${AUTH_OIDC_CLIENT_ID}
|
||||
clientSecret: ${AUTH_OIDC_CLIENT_SECRET}
|
||||
authorizationUrl: ${AUTH_OIDC_AUTH_URL}
|
||||
tokenUrl: ${AUTH_OIDC_TOKEN_URL}
|
||||
tokenEndpointAuthMethod: ${AUTH_OIDC_TOKEN_ENDPOINT_AUTH_METHOD} # default='client_secret_basic'
|
||||
tokenSignedResponseAlg: ${AUTH_OIDC_TOKEN_SIGNED_RESPONSE_ALG} # default='RS256'
|
||||
scope: ${AUTH_OIDC_SCOPE} # default='openid profile email'
|
||||
@@ -434,8 +435,10 @@ costInsights:
|
||||
kind: 'PINTS_OF_ICE_CREAM'
|
||||
unit: 'ice cream pint'
|
||||
rate: 5.5
|
||||
pagerduty:
|
||||
|
||||
pagerDuty:
|
||||
eventsBaseUrl: 'https://events.pagerduty.com/v2'
|
||||
|
||||
jenkins:
|
||||
instances:
|
||||
- name: default
|
||||
|
||||
@@ -58,6 +58,7 @@ When using ALB authentication Backstage will only be loaded once the user has su
|
||||
import React from 'react';
|
||||
import { UserIdentity } from '@backstage/core-components';
|
||||
import { SignInPageProps } from '@backstage/core-app-api';
|
||||
import { useApi, configApiRef } from '@backstage/core-plugin-api';
|
||||
|
||||
const SampleSignInComponent: any = (props: SignInPageProps) => {
|
||||
const [error, setError] = React.useState<string | undefined>();
|
||||
@@ -90,8 +91,8 @@ const SampleSignInComponent: any = (props: SignInPageProps) => {
|
||||
},
|
||||
}),
|
||||
);
|
||||
} catch (err) {
|
||||
setError(err.message);
|
||||
} catch (err: any) {
|
||||
setError(err.message as string);
|
||||
}
|
||||
}
|
||||
}, [config]);
|
||||
@@ -135,12 +136,14 @@ export default async function createPlugin({
|
||||
database,
|
||||
config,
|
||||
discovery,
|
||||
tokenManager,
|
||||
}: PluginEnvironment): Promise<Router> {
|
||||
return await createRouter({
|
||||
logger,
|
||||
config,
|
||||
database,
|
||||
discovery,
|
||||
tokenManager,
|
||||
providerFactories: {
|
||||
awsalb: providers.awsAlb.create({
|
||||
authHandler: async ({ fullProfile }) => {
|
||||
@@ -168,25 +171,29 @@ export default async function createPlugin({
|
||||
};
|
||||
},
|
||||
signIn: {
|
||||
resolver: async ({ profile: { email } }, ctx) => {
|
||||
const [id] = email?.split('@') ?? '';
|
||||
// Fetch from an external system that returns entity claims like:
|
||||
// ['user:default/breanna.davison', ...]
|
||||
const userEntityRef = stringifyEntityRef({
|
||||
resolver: async ({ profile }, ctx) => {
|
||||
if (!profile.email) {
|
||||
throw new Error('Profile contained no email');
|
||||
}
|
||||
|
||||
const [id] = profile.email.split('@');
|
||||
if (!id) {
|
||||
throw new Error('Invalid email format');
|
||||
}
|
||||
|
||||
const userRef = stringifyEntityRef({
|
||||
kind: 'User',
|
||||
namespace: DEFAULT_NAMESPACE,
|
||||
name: id,
|
||||
namespace: DEFAULT_NAMESPACE,
|
||||
});
|
||||
|
||||
// Resolve group membership from the Backstage catalog
|
||||
const fullEnt =
|
||||
await ctx.catalogIdentityClient.resolveCatalogMembership({
|
||||
entityRefs: [id].concat([userEntityRef]),
|
||||
logger: ctx.logger,
|
||||
});
|
||||
const token = await ctx.tokenIssuer.issueToken({
|
||||
claims: { sub: userEntityRef, ent: fullEnt },
|
||||
const { token } = await ctx.issueToken({
|
||||
claims: {
|
||||
sub: userRef,
|
||||
ent: [userRef],
|
||||
},
|
||||
});
|
||||
|
||||
return { id, token };
|
||||
},
|
||||
},
|
||||
|
||||
@@ -41,14 +41,18 @@ auth:
|
||||
secret: ${AUTH_SESSION_SECRET}
|
||||
```
|
||||
|
||||
The Auth0 provider is a structure with three configuration keys:
|
||||
The Auth0 provider is a structure with these configuration keys:
|
||||
|
||||
- `clientId`: The Application client ID, found on the Auth0 Application page
|
||||
- `clientSecret`: The Application client secret, found on the Auth0 Application
|
||||
page
|
||||
- `domain`: The Application domain, found on the Auth0 Application page
|
||||
|
||||
Because Auth0 requires a session you need to give the session a secret key.
|
||||
It additionally relies on the following configuration to function:
|
||||
|
||||
- `session.secret`: The session secret is a key used for signing and/or encrypting cookies set by the application to maintain session state. In this case, 'your session secret' should be replaced with a long, complex, and unique string that only your application knows.
|
||||
|
||||
Auth0 requires a session, so you need to give the session a secret key.
|
||||
|
||||
## Optional Configuration
|
||||
|
||||
|
||||
@@ -20,8 +20,10 @@ The provider configuration can be added to your `app-config.yaml` under the root
|
||||
|
||||
```yaml title="app-config.yaml"
|
||||
auth:
|
||||
environment: development
|
||||
providers:
|
||||
oauth2Proxy: {}
|
||||
oauth2Proxy:
|
||||
development: {}
|
||||
```
|
||||
|
||||
Right now no configuration options are supported, but the empty object is needed
|
||||
@@ -58,6 +60,8 @@ providerFactories: {
|
||||
},
|
||||
```
|
||||
|
||||
[An example on how to sign a user in without a matching user](https://github.com/backstage/backstage/blob/master/packages/backend/src/plugins/auth.ts)
|
||||
|
||||
## Adding the provider to the Backstage frontend
|
||||
|
||||
It is recommended to use the `ProxiedSignInPage` for this provider, which is
|
||||
|
||||
@@ -59,7 +59,7 @@ Just like plugins, modules also have access to services and can depend on their
|
||||
|
||||
A detailed explanation of the package architecture can be found in the
|
||||
[Backstage Architecture
|
||||
Overview](../../overview/architecture-overview.md#package-architecture). The
|
||||
Overview](../../overview/architecture-overview/#package-architecture). The
|
||||
most important packages to consider for this system are the following:
|
||||
|
||||
- `plugin-<pluginId>-backend` houses the implementation of the backend plugins
|
||||
|
||||
@@ -37,4 +37,4 @@ At a high level, when you call `createBackend`, it will create a new backend ins
|
||||
|
||||
Underneath the hood, `createBackend` calls `createSpecializedBackend` from `@backstage/backend-app-api` which is responsible for actually creating the backend instance, but with no services or no features. You can think of `createBackend` more of a 'batteries included' approach, and `createSpecializedBackend` a little more low level.
|
||||
|
||||
As mentioned previously there's also the ability to create multiple of these backends in your project so that you can split apart your backend and deploy different backends that can scale independently of each other. For instance you might choose to deploy a backend with only the catalog plugin enabled, and one with just the scaffolder plugin enabled. We've provided some tools to be able to share services and defaults across your backend system, and you can find out more about that in the [shared environments docs](../building-backends/01-index.md#shared-environments).
|
||||
As mentioned previously there's also the ability to create multiple of these backends in your project so that you can split apart your backend and deploy different backends that can scale independently of each other. For instance you might choose to deploy a backend with only the catalog plugin enabled, and one with just the scaffolder plugin enabled.
|
||||
|
||||
@@ -61,11 +61,11 @@ All of these services can be replaced with your own implementations if you need
|
||||
For example, let's say we want to customize the core configuration service to enable remote configuration loading. That would look something like this:
|
||||
|
||||
```ts
|
||||
import { configServiceFactory } from '@backstage/backend-app-api';
|
||||
import { rootConfigServiceFactory } from '@backstage/backend-app-api';
|
||||
|
||||
const backend = createBackend({
|
||||
services: [
|
||||
configServiceFactory({
|
||||
rootConfigServiceFactory({
|
||||
remote: { reloadIntervalSeconds: 60 },
|
||||
}),
|
||||
],
|
||||
@@ -148,35 +148,3 @@ backend.start();
|
||||
```
|
||||
|
||||
We've now split the backend into two separate deployments, but we still need to make sure that they can communicate with each other. This is the hard and somewhat tedious part, as Backstage currently doesn't provide an out of the box solution that solves this. You'll need to manually configure the two backends with custom implementations of the `DiscoveryService` and have them return the correct URLs for each other. Likewise, you'll also need to provide a custom implementation of the `DiscoveryApi` in the frontend, unless you surface the two backends via a proxy that handles the routing instead.
|
||||
|
||||
### Shared Environments
|
||||
|
||||
To make it a bit easier to manage multiple backends, it's possible to create a shared environment that can be used across multiple backends. You would typically house it in a separate package that can be referenced by backends in your monorepo, or published to a package registry for broader use.
|
||||
|
||||
A shared environment contains a set of service implementations that should be used across all backends. These services will override the default ones, but if a service is provided directly to the backend, it will override the one in the shared environment.
|
||||
|
||||
A shared environment is defined using `createSharedEnvironment`. In this example we place it in a new and separate package called `backend-env`:
|
||||
|
||||
```ts
|
||||
// packages/backend-env/src/index.ts
|
||||
import { createSharedEnvironment } from '@backstage/backend-plugin-api';
|
||||
import { customDiscoveryServiceFactory } from './customDiscoveryServiceFactory';
|
||||
|
||||
export const env = createSharedEnvironment({
|
||||
services: [
|
||||
customDiscoveryServiceFactory(), // custom DiscoveryService implementation
|
||||
],
|
||||
});
|
||||
```
|
||||
|
||||
And passed on to backends using the `env` option:
|
||||
|
||||
```ts
|
||||
// packages/backend-b/src/index.ts, imports omitted
|
||||
import { env } from '@internal/backend-env';
|
||||
|
||||
const backend = createBackend({ env });
|
||||
|
||||
backend.add(scaffolderPlugin());
|
||||
backend.start();
|
||||
```
|
||||
|
||||
@@ -37,7 +37,7 @@ describe('myPlugin', () => {
|
||||
|
||||
const { server } = await startTestBackend({
|
||||
features: [myPlugin()],
|
||||
services: [mockServices.config.factory({ data: fakeConfig })],
|
||||
services: [mockServices.rootConfig.factory({ data: fakeConfig })],
|
||||
});
|
||||
|
||||
const response = await request(server).get('/api/example/get-value');
|
||||
|
||||
@@ -183,11 +183,11 @@ There's additional configuration that you can optionally pass to setup the `conf
|
||||
You can configure these additional options by adding an override for the core service when calling `createBackend` like follows:
|
||||
|
||||
```ts
|
||||
import { configServiceFactory } from '@backstage/backend-app-api';
|
||||
import { rootConfigServiceFactory } from '@backstage/backend-app-api';
|
||||
|
||||
const backend = createBackend({
|
||||
services: [
|
||||
configServiceFactory({
|
||||
rootConfigServiceFactory({
|
||||
argv: [
|
||||
'--config',
|
||||
'/backstage/app-config.development.yaml',
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
---
|
||||
id: flightcontrol
|
||||
title: Deploying with Flightcontrol
|
||||
sidebar_label: AWS Fargate via Flightcontrol
|
||||
description: Deploying Backstage to AWS Fargate via Flightcontrol
|
||||
---
|
||||
|
||||
This guide explains how to deploy Backstage to [Flightcontrol](https://www.flightcontrol.dev?ref=backstage), a platform that fully automates deployments to Amazon Web Services (AWS). Flightcontrol supports git-driven and image registry deployments.
|
||||
|
||||
Before you begin, make sure you have a [Flightcontrol account](https://app.flightcontrol.dev/signup?ref=backstage) and a [Github account](https://github.com/login) to follow this guide.
|
||||
|
||||
# Deployment Via Dashboard
|
||||
|
||||
1. Create a new project from the Flightcontrol Dashboard
|
||||
|
||||
2. Select the GitHub repo for your Backstage project
|
||||
|
||||
3. Select `GUI` as the config type:
|
||||
|
||||
4. Then, choose `+ Add Web Server (Fargate)` under Services before entering the following server information:
|
||||
|
||||
| Field Name | Value |
|
||||
| ----------------- | ----------------- |
|
||||
| Build Type | Custom Dockerfile |
|
||||
| Health Check Path | /catalog |
|
||||
| Port | 7007 |
|
||||
|
||||
5. Click `Create Project` and complete any required steps (like linking your AWS account).
|
||||
|
||||
# Deployment via Code
|
||||
|
||||
1. Create a new project from the Flightcontrol Dashboard
|
||||
|
||||
2. Select the GitHub repo for your Backstage project
|
||||
|
||||
3. Select the `flightcontrol.json` Config Type.
|
||||
|
||||
```json filename="flightcontrol.json"
|
||||
{
|
||||
"$schema": "https://app.flightcontrol.dev/schema.json",
|
||||
"environments": [
|
||||
{
|
||||
"id": "backstage",
|
||||
"name": "Backstage",
|
||||
"region": "us-west-2",
|
||||
"source": {
|
||||
"branch": "main"
|
||||
},
|
||||
"services": [
|
||||
{
|
||||
"id": "backstage",
|
||||
"name": "Backstage",
|
||||
"type": "fargate",
|
||||
"buildType": "docker",
|
||||
"dockerfilePath": "Dockerfile",
|
||||
"dockerContext": ".",
|
||||
"healthCheckPath": "/catalog",
|
||||
"cpu": 0.5,
|
||||
"memory": 1,
|
||||
"domain": "backstage.yourapp.com",
|
||||
"port": 7007,
|
||||
"minInstances": 1,
|
||||
"maxInstances": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
# Databases and Redis
|
||||
|
||||
If you need a database or Redis for your Backstage plugins, you can easily add those to your Flightcontrol deployment. For more information, see [the flightcontrol docs](https://www.flightcontrol.dev/docs/guides/flightcontrol/using-code?ref=backstage#redis).
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- [Flightcontrol Documentation](https://www.flightcontrol.dev/docs?ref=backstage)
|
||||
- [Troubleshooting](https://www.flightcontrol.dev/docs/troubleshooting?ref=backstage)
|
||||
@@ -110,7 +110,7 @@ cluster. Valid values are:
|
||||
| `google` | This will use a user's Google access token from the [Google auth provider](https://backstage.io/docs/auth/google/provider) to access the Kubernetes API on GKE clusters. |
|
||||
| `googleServiceAccount` | This will use the Google Cloud service account credentials to access resources in clusters |
|
||||
| `oidc` | This will use [Oidc Tokens](https://kubernetes.io/docs/reference/access-authn-authz/authentication/#openid-connect-tokens) to authenticate to the Kubernetes API. When this is used the `oidcTokenProvider` field should also be set. Please note the cluster must support OIDC, at the time of writing AKS clusters do not support OIDC. |
|
||||
| `serviceAccount` | This will use a Kubernetes [service account](https://kubernetes.io/docs/reference/access-authn-authz/service-accounts-admin/) to access the Kubernetes API. When this is used the `serviceAccountToken` field should also be set. |
|
||||
| `serviceAccount` | This will use a Kubernetes [service account](https://kubernetes.io/docs/reference/access-authn-authz/service-accounts-admin/) to access the Kubernetes API. When this is used the `serviceAccountToken` field should also be set, or else Backstage should be running in-cluster. |
|
||||
|
||||
Check the [Kubernetes Authentication][4] section for additional explanation.
|
||||
|
||||
@@ -127,14 +127,54 @@ CPU/Memory for pods returned by the API server. Defaults to `false`.
|
||||
##### `clusters.\*.serviceAccountToken` (optional)
|
||||
|
||||
The service account token to be used when using the `serviceAccount` auth
|
||||
provider. You could get the service account token with:
|
||||
provider. Note that, unless you have an effective credential rotation procedure
|
||||
in place or have a single Kubernetes cluster running both Backstage and all your
|
||||
services, this auth provider is probably not ideal for production.
|
||||
|
||||
```sh
|
||||
kubectl -n <NAMESPACE> get secret $(kubectl -n <NAMESPACE> get sa <SERVICE_ACCOUNT_NAME> -o=json \
|
||||
| jq -r '.secrets[0].name') -o=json \
|
||||
| jq -r '.data["token"]' \
|
||||
| base64 --decode
|
||||
```
|
||||
Assuming you have already created a service account named `SERVICE_ACCOUNT_NAME`
|
||||
in namespace `NAMESPACE` and it has adequate
|
||||
[permissions](#role-based-access-control), here are some sample procedures to
|
||||
procure a long-lived service account token for use with this provider:
|
||||
|
||||
- On versions of Kubernetes [prior to
|
||||
1.24](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#no-really-you-must-read-this-before-you-upgrade-1),
|
||||
you could get an (automatically-generated) token for a service account with:
|
||||
|
||||
```sh
|
||||
kubectl -n <NAMESPACE> get secret $(kubectl -n <NAMESPACE> get sa <SERVICE_ACCOUNT_NAME> -o=json \
|
||||
| jq -r '.secrets[0].name') -o=json \
|
||||
| jq -r '.data["token"]' \
|
||||
| base64 --decode
|
||||
```
|
||||
|
||||
- For Kubernetes 1.24+, as described in [this
|
||||
guide](https://kubernetes.io/docs/concepts/configuration/secret/#service-account-token-secrets),
|
||||
you can obtain a long-lived token by creating a secret:
|
||||
|
||||
```sh
|
||||
kubectl apply -f - <<EOF
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: <SECRET_NAME>
|
||||
namespace: <NAMESPACE>
|
||||
annotations:
|
||||
kubernetes.io/service-account.name: <SERVICE_ACCOUNT_NAME>
|
||||
type: kubernetes.io/service-account-token
|
||||
EOF
|
||||
```
|
||||
|
||||
waiting for the token controller to populate a token, and retrieving it with:
|
||||
|
||||
```sh
|
||||
kubectl -n <NAMESPACE> get secret <SECRET_NAME> -o go-template='{{.data.token | base64decode}}'
|
||||
```
|
||||
|
||||
If a cluster has `authProvider: serviceAccount` and the `serviceAccountToken`
|
||||
field is omitted, Backstage will ignore the configured URL and certificate data,
|
||||
instead attempting to access the Kubernetes API via an in-cluster client as in
|
||||
[this
|
||||
example](https://github.com/kubernetes-client/javascript/blob/master/examples/in-cluster.js).
|
||||
|
||||
##### `clusters.\*.oidcTokenProvider` (optional)
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ The TechDocs plugin has supported integrations to Search, meaning that it
|
||||
provides a default collator factory ready to be used.
|
||||
|
||||
The purpose of this guide is to walk you through how to register the
|
||||
[DefaultTechDocsCollatorFactory](https://github.com/backstage/backstage/blob/de294ce5c410c9eb56da6870a1fab795268f60e3/plugins/techdocs-backend/src/search/DefaultTechDocsCollatorFactory.ts)
|
||||
[DefaultTechDocsCollatorFactory](https://github.com/backstage/backstage/blob/1adc2c7/plugins/search-backend-module-techdocs/src/collators/DefaultTechDocsCollatorFactory.ts)
|
||||
in your App, so that you can get TechDocs documents indexed.
|
||||
|
||||
If you have been through the
|
||||
@@ -61,10 +61,10 @@ so, you can go ahead and follow this guide - if not, start by going through the
|
||||
getting started guide.
|
||||
|
||||
1. Import the `DefaultTechDocsCollatorFactory` from
|
||||
`@backstage/plugin-techdocs-backend`.
|
||||
`@backstage/plugin-search-backend-module-techdocs`.
|
||||
|
||||
```typescript
|
||||
import { DefaultTechDocsCollatorFactory } from '@backstage/plugin-techdocs-backend';
|
||||
import { DefaultTechDocsCollatorFactory } from '@backstage/plugin-search-backend-module-techdocs';
|
||||
```
|
||||
|
||||
2. If there isn't an existing schedule you'd like to run the collator on, be
|
||||
|
||||
@@ -64,7 +64,7 @@ The recommended approach would be to represent information in catalog-info files
|
||||
|
||||
**Naming strategies:**
|
||||
|
||||
- Ldap: Internal ldap usernames as entity names. e.g., owner: user:myuser or user: my-team-name.
|
||||
- Ldap: Internal ldap usernames as entity names. e.g., owner: user:my-user or user: my-team-name.
|
||||
|
||||
**Ownership strategies:**
|
||||
|
||||
|
||||
@@ -207,5 +207,8 @@ scaffolder backend:
|
||||
| Azure Pipeline Actions | [scaffolder-backend-module-azure-pipelines](https://www.npmjs.com/package/@parfuemerie-douglas/scaffolder-backend-module-azure-pipelines) | [Parfümerie Douglas](https://github.com/Parfuemerie-Douglas) |
|
||||
| Azure Repository Actions | [scaffolder-backend-module-azure-repositories](https://www.npmjs.com/package/@parfuemerie-douglas/scaffolder-backend-module-azure-repositories) | [Parfümerie Douglas](https://github.com/Parfuemerie-Douglas) |
|
||||
| Snyk Import Project | [plugin-scaffolder-backend-module-snyk](https://www.npmjs.com/package/@ma11hewthomas/plugin-scaffolder-backend-module-snyk) | [Matthew Thomas](https://github.com/Ma11hewThomas) |
|
||||
| JSON Merge Actions | [plugin-scaffolder-json-merge-actions](https://www.npmjs.com/package/@mdude2314/backstage-plugin-scaffolder-json-merge-actions) | [Drew Hill](https://github.com/arhill05) |
|
||||
| NPM Actions | [plugin-scaffolder-npm-actions](https://www.npmjs.com/package/@mdude2314/backstage-plugin-scaffolder-npm-actions) | [Drew Hill](https://github.com/arhill05) |
|
||||
| Slack Actions | [plugin-scaffolder-backend-module-slack](https://www.npmjs.com/package/@mdude2314/backstage-plugin-scaffolder-backend-module-slack) | [Drew Hill](https://github.com/arhill05) |
|
||||
|
||||
Have fun! 🚀
|
||||
|
||||
@@ -23,6 +23,7 @@ catalog:
|
||||
host: gitlab-host # Identifies one of the hosts set up in the integrations
|
||||
branch: main # Optional. Used to discover on a specific branch
|
||||
fallbackBranch: main # Optional. Fallback to be used if there is no default branch configured at the Gitlab repository. It is only used, if `branch` is undefined. Uses `master` as default
|
||||
skipForkedRepos: false # Optional. If the project is a fork, skip repository
|
||||
group: example-group # Optional. Group and subgroup (if needed) to look for repositories. If not present the whole instance will be scanned
|
||||
entityFilename: catalog-info.yaml # Optional. Defaults to `catalog-info.yaml`
|
||||
projectPattern: '[\s\S]*' # Optional. Filters found projects based on provided patter. Defaults to `[\s\S]*`, which means to not filter anything
|
||||
|
||||
@@ -66,7 +66,7 @@ By default all internal users are allowed to create and delete entities. If this
|
||||
|
||||
## Scaffolder
|
||||
|
||||
By default, Scaffolding jobs execute directly on the host machine, including any actions defined in the template. Because the Scaffolder templates are considered a more sensitive area it is recommended to control access to create and update templates to trusted parties. Template execution is intended to be secure regardless of input, but we still recommend this additional layer of protection. The string templating is executed in a [node VM sandbox](https://github.com/patriksimek/vm2) to mitigate the possibility of remote code execution attacks.
|
||||
By default, Scaffolding jobs execute directly on the host machine, including any actions defined in the template. Because the Scaffolder templates are considered a more sensitive area it is recommended to control access to create and update templates to trusted parties. Template execution is intended to be secure regardless of input, but we still recommend this additional layer of protection. The string templating is executed in a [node VM sandbox](https://github.com/laverdet/isolated-vm) to mitigate the possibility of remote code execution attacks.
|
||||
|
||||
The Scaffolder often has elevated permissions to for example create repositories in a Github organization. The integrator should therefore be cautious of Scaffolder Templates that for example delete or update existing resources as the user input is typically user defined and can therefore delete or modify resources maliciously or by mistake.
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ their own release cadence and versioning policy.
|
||||
|
||||
## Main Release Line
|
||||
|
||||
Release cadence: Monthly
|
||||
Release cadence: Monthly, specifically on the Tuesday before the third Wednesday of each month. The first release took place in March 2022.
|
||||
|
||||
The main release line in versioned with a major, minor and patch version but
|
||||
does **not** adhere to [semver](https://semver.org). The version format is
|
||||
|
||||
@@ -34,10 +34,11 @@ is a concrete implementation of [AnalyticsApi][analytics-api-type], common
|
||||
integrations are packaged and provided as plugins. Find your analytics tool of
|
||||
choice below.
|
||||
|
||||
| Analytics Tool | Support Status |
|
||||
| ------------------------- | -------------- |
|
||||
| [Google Analytics][ga] | Yes ✅ |
|
||||
| [Google Analytics 4][ga4] | Yes ✅ |
|
||||
| Analytics Tool | Support Status |
|
||||
| ------------------------------------- | -------------- |
|
||||
| [Google Analytics][ga] | Yes ✅ |
|
||||
| [Google Analytics 4][ga4] | Yes ✅ |
|
||||
| [New Relic Browser][newrelic-browser] | Community ✅ |
|
||||
|
||||
To suggest an integration, please [open an issue][add-tool] for the analytics
|
||||
tool your organization uses. Or jump to [Writing Integrations][int-howto] to
|
||||
@@ -45,6 +46,7 @@ learn how to contribute the integration yourself!
|
||||
|
||||
[ga]: https://github.com/backstage/backstage/blob/master/plugins/analytics-module-ga/README.md
|
||||
[ga4]: https://github.com/backstage/backstage/blob/master/plugins/analytics-module-ga4/README.md
|
||||
[newrelic-browser]: https://github.com/backstage/backstage/blob/master/plugins/analytics-module-newrelic-browser/README.md
|
||||
[add-tool]: https://github.com/backstage/backstage/issues/new?assignees=&labels=plugin&template=plugin_template.md&title=%5BAnalytics+Module%5D+THE+ANALYTICS+TOOL+TO+INTEGRATE
|
||||
[int-howto]: #writing-integrations
|
||||
[analytics-api-type]: https://backstage.io/docs/reference/core-plugin-api.analyticsapi
|
||||
|
||||
@@ -36,7 +36,7 @@ Example:
|
||||
```yaml
|
||||
# in app-config.yaml
|
||||
proxy:
|
||||
simple-example: http://simple.example.com:8080
|
||||
/simple-example: http://simple.example.com:8080
|
||||
'/larger-example/v1':
|
||||
target: http://larger.example.com:8080/svc.v1
|
||||
headers:
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -26,7 +26,6 @@ When we set out on this project, we had a few primary goals. First, we intended
|
||||
- Make it easier to create and maintain backend installations.
|
||||
- Align how plugins provide points of customization and how those customizations are installed.
|
||||
- Make it much easier to maintain plugins, in particular keeping the API stable.
|
||||
- Simplify the process of splitting plugins out into separate deployments with shared environments.
|
||||
- Improve the local development and testing experience.
|
||||
|
||||
Prioritizing simplicity is often a guiding principle that we use for designs that span multiple ownership roles. We decide on which parts of the system that we think are the most important to have as simple as possible, or, viewed from the opposite end, where in the system we put necessary complexity. In this case, we optimized for keeping the backend setup as simple as possible, followed by modules and plugins, then libraries, and lastly the framework itself. What this guidance means in practice is that when there is complexity that needs to be added to implement a certain feature, we place as much of it as possible within the framework itself, then libraries, plugins and modules, and if absolutely needed, the backend setup.
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
# prettier-ignore
|
||||
title: "Five common traits of successful Backstage adopters"
|
||||
author: Taras Mankovski, CXO, Frontside
|
||||
---
|
||||
|
||||

|
||||
|
||||
At [Frontside](https://frontside.com/), our goal is to help cloud-native teams create cohesive development experiences. We've been at the Backstage party since the beginning helping companies adopt and extend Backstage to fit the needs of their unique ecosystems.
|
||||
|
||||
Through our experience, we've uncovered five common traits of organizations that have improved developer experience through successful Backstage implementation and adoption. In this blog, we'll dive into these traits with some thoughts on how you can follow their blueprint.
|
||||
|
||||
{/* truncate */}
|
||||
|
||||
## **1) They take a product-centric approach**
|
||||
|
||||
The biggest factor for successful adopters of Backstage is their approach. There is a high correlation of success within organizations that approach building a developer portal like they're building a product. Some organizations will jump straight into solutioning instead of taking their time to identify what the problems are, how they affect users, and how those issues can be addressed.
|
||||
|
||||
The team building out Backstage should assess or work from existing insights on the core challenges that developers are facing in their organization — both qualitative and quantitative data counts here — and connect those issues to a product roadmap with initial use cases and adoption milestones marked. By doing their research in advance, successful orgs have a clear vision of what they want to accomplish with their Backstage instance. They know exactly what goals need to be met and have pressure-tested potential issues and barriers.
|
||||
|
||||
If you've already started your Backstage adoption journey but haven't mapped a Product Requirements Document (or PRD), don't panic! There is always time to do the foundational knowledge-building necessary to deploy something successful.
|
||||
|
||||
## **2) They tie Backstage to a larger platform journey**
|
||||
|
||||
Platform engineering has emerged in response to the growing complexity of cloud-native software architecture. Backstage has a huge role to play in implementing a platform strategy but its part of a larger story. Having buy-in from both higher ups and the teams tasked with platform goals is an essential step in successful Backstage adoption. Without the support at the top, it can be difficult to implement platforming as a priority within your organization.
|
||||
|
||||
And by "the top", we don't necessarily mean your CTO needs to rubber stamp your Backstage POC. But it's important that higher-level Platform goals have been set among VPs and directors with the understanding that a well-constructed developer portal can be the catalyst to achieving not only better developer experience but broader cultural shifts.
|
||||
|
||||
Having this kind of executive buy-in means more than just getting stakeholders on board with a portal build or clearing pathways towards Backstage adoption; it also means ensuring they understand the realities of your organization's journey.
|
||||
|
||||
## **3) They prioritize developer experience**
|
||||
|
||||
Having a dedicated developer experience or DevOps team tasked not only with building out a Backstage instance — but with leading adoption — is another big factor to success.
|
||||
|
||||
Competing platforms are very common at big companies, with many teams doing different things or serving different parts of a business. But developer experience teams usually have a very clear mandate and are often one of the only commonalities between these competing teams. This team should have the bandwidth available to oversee the adoption process from start to finish, and partner with the right folks (research, design, internal comms and marketing) to create an effective adoption plan tailored specifically for a company's needs.
|
||||
|
||||
If you don't have established developer experience resources in place, then the questions the team leading the Backstage work needs to ask are "what are the common problems to be solved at a platform level?" and "once we've proved our initial use cases, how are we internally evangelizing this amongst our competing teams?"
|
||||
|
||||
## **4) They collaborate with other platform teams**
|
||||
|
||||
A developer experience team can not single-handedly transform an organization's development structures, processes, and culture. It requires collaboration with teams responsible for other aspects of the platform. Successful adopters collaborate with other teams to bring them along on the journey of improving developer experience. They use Backstage as an opportunity to foster their inner-source contribution practice by allowing multiple platform teams to contribute plugins to their portal.
|
||||
|
||||
The developer experience team takes on the role of host in that collaborative process. They support other teams in integrating their features into the portal, provide guidance on best practices, and advocate for the needs of developers.
|
||||
|
||||
## **5) They engage, learn, and grow with the community**
|
||||
|
||||
One of the key benefits of building a developer platform based off an open source framework is leveraging the contributions and best practices from the community. The Backstage community is the largest gathering of developer experience practitioners in the world. There are now [thousands of adopters](https://github.com/backstage/backstage/blob/63aa3a65ec05f638ba76c06878d6635194620b34/ADOPTERS.md#L4) with a wealth of experience and best practices to learn from — and they are excited to share!
|
||||
|
||||
By participating in the community, developer experience leaders can learn from their peers at other companies about strategies that work and can keep up with the latest features of the ever-evolving Backstage platform. They're aware of what solutions exist within the open source framework and plugin marketplace as well as what they may need to build in-house.
|
||||
|
||||
In short, successful Backstage adopters engage within the Backstage community and their peer group to find solutions that fit their common challenges as well as their unique needs.
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 57 KiB |
@@ -5,6 +5,6 @@ authorUrl: https://redhat.com
|
||||
category: Discovery
|
||||
description: Synchronize 3scale content into the Backstage catalog.
|
||||
documentation: https://janus-idp.io/plugins/3scale
|
||||
iconUrl: http://janus-idp.io/images/plugins/3scale.svg
|
||||
iconUrl: https://janus-idp.io/images/plugins/3scale.svg
|
||||
npmPackageName: '@janus-idp/backstage-plugin-3scale-backend'
|
||||
addedDate: '2023-05-15'
|
||||
|
||||
@@ -5,6 +5,6 @@ authorUrl: https://redhat.com
|
||||
category: Image
|
||||
description: View container image details from JFrog Artifactory in Backstage.
|
||||
documentation: https://janus-idp.io/plugins/jfrog-artifactory
|
||||
iconUrl: http://janus-idp.io/images/plugins/jfrog-artifactory.svg
|
||||
iconUrl: https://janus-idp.io/images/plugins/jfrog-artifactory.svg
|
||||
npmPackageName: '@janus-idp/backstage-plugin-jfrog-artifactory'
|
||||
addedDate: '2023-05-15'
|
||||
|
||||
@@ -5,6 +5,6 @@ authorUrl: https://redhat.com
|
||||
category: Authentication/Authorization
|
||||
description: Load users and groups from Keycloak, enabling use of multiple authentication providers to be applied to Backstage entities.
|
||||
documentation: https://janus-idp.io/plugins/keycloak
|
||||
iconUrl: http://janus-idp.io/images/plugins/keycloak.svg
|
||||
iconUrl: https://janus-idp.io/images/plugins/keycloak.svg
|
||||
npmPackageName: '@janus-idp/backstage-plugin-keycloak-backend'
|
||||
addedDate: '2023-05-15'
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user