Merge remote-tracking branch 'origin/master' into feature/add-commit-hash-for-scaffolder
Signed-off-by: Lukas Fruntke (external expert on behalf of DB Netz) <lukas.fruntke-extern@deutschebahn.com>
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes-backend': patch
|
||||
---
|
||||
|
||||
Updated kubernetes config schema to match available options
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes-backend': minor
|
||||
---
|
||||
|
||||
Plugins that instantiate the `KubernetesProxy` must now provide a parameter of the type `KubernetesProxyOptions` which includes providing a `KubernetesAuthTranslator`. The `KubernetesBuilder` now builds its own `KubernetesAuthTranslatorMap` that it provides to the `KubernetesProxy`. The `DispatchingKubernetesAuthTranslator` expects a `KubernetesTranslatorMap` to be provided as a parameter. The `KubernetesBuilder` now has a method called `setAuthTranslatorMap` which allows integrators to bring their own `KubernetesAuthTranslator's` to the `KubernetesPlugin`.
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
'@backstage/backend-common': patch
|
||||
---
|
||||
|
||||
Support commit hashes at `GithubUrlReader.readTree/search` additionally to branch names.
|
||||
|
||||
Additionally, this will reduce the number of API calls from 2 to 1 for retrieving the "repo details"
|
||||
for all cases besides when the default branch has to be resolved and used
|
||||
(e.g., repo URL without any branch or commit hash).
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/cli-node': minor
|
||||
---
|
||||
|
||||
Introduced the new `@backstage/cli-node` package, which provides utilities for use across Backstage CLIs.
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes': minor
|
||||
---
|
||||
|
||||
refactor kubernetes error detection to make way for proposed solutions
|
||||
|
||||
**BREAKING**: `DetectedError` now appears once per Kubernetes resource per error instead of for all resources which have that error, `namespace` and `name` fields are now in `sourceRef` object `message` is now a `string` instead of a `string[]`. `ErrorDetectableKind` has been removed.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-azure': patch
|
||||
'@backstage/plugin-catalog-backend': patch
|
||||
---
|
||||
|
||||
Use the `LocationSpec` type from the `catalog-common` package in place of the deprecated `LocationSpec` from the `catalog-node` package.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
When building a backend package with dependencies any `--config <path>` options will now be forwarded to any dependent app package builds, unless the build script in the app package already contains a `--config` option.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/plugin-bazaar-backend': patch
|
||||
'@backstage/plugin-bazaar': patch
|
||||
---
|
||||
|
||||
Added the `docs` parameter (optional) to link the project documentation
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-react': patch
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
---
|
||||
|
||||
`scaffolder/next`: Bump `@rjsf/*` dependencies to 5.5.2
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend': patch
|
||||
---
|
||||
|
||||
Updates and moves OpenAPI spec to `src/schema/openapi.yaml` and uses `ApiRouter` type from `@backstage/backend-openapi-utils` to handle automatic types from the OpenAPI spec file.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/create-app': patch
|
||||
---
|
||||
|
||||
Bumped create-app version.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-code-coverage-backend': patch
|
||||
---
|
||||
|
||||
Bump `xml2js` from 0.4.23 to 0.5.0
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/catalog-client': patch
|
||||
---
|
||||
|
||||
Fixed bug in `queryEntities` of `CatalogClient` where the `sortField` is supposed to be changed to `orderField`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-permission-node': patch
|
||||
---
|
||||
|
||||
Introduced alpha export of the `policyExtensionPoint` for use in the new backend system.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-permission-backend': patch
|
||||
---
|
||||
|
||||
Introduced alpha export of the `permissionPlugin` for use in the new backend system, along with a `permissionModuleAllowAllPolicy` that can be used to allow all requests.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
---
|
||||
|
||||
Fix some hard-coded white font colors in scaffolder
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Internal refactor to move many internal utilities to the new `@backstage/cli-node` package.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/repo-tools': minor
|
||||
---
|
||||
|
||||
Adding two new commands to support OpenAPI spec writing, `schema:openapi:generate` to generate the Typescript file that `@backstage/backend-openapi-utils` needs for typing and `schema:openapi:verify` to verify that this file exists and matches your `src/schema/openapi.yaml` file.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-react': patch
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
---
|
||||
|
||||
Accessibility issues identified using lighthouse fixed.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-puppetdb': minor
|
||||
---
|
||||
|
||||
Initial version of [PuppetDB plugin](https://github.com/backstage/backstage/blob/master/plugins/puppetdb/README.md).
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-explore': patch
|
||||
---
|
||||
|
||||
Extracted generic `CatalogKindExploreContent` component so that it is easy to show any component kinds in their own tab in the explore page.
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/plugin-lighthouse-backend': minor
|
||||
---
|
||||
|
||||
Lighthouse backend plugin can now use an authenticated catalog backend API.
|
||||
|
||||
- Breaking \* You must now pass the `tokenManager` to the lighthouse `createScheduler`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-sonarqube': patch
|
||||
---
|
||||
|
||||
amend getSecurityHotspotsUrl to conditionally remove project path if sonarqube is self hosted
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-vault': patch
|
||||
---
|
||||
|
||||
Use `fetchApi` instead of raw `fetch` in order to pass auth header if necessary.
|
||||
@@ -0,0 +1,16 @@
|
||||
---
|
||||
'@backstage/plugin-auth-backend': patch
|
||||
---
|
||||
|
||||
The `microsoft` (i.e. Azure) auth provider now supports negotiating tokens for
|
||||
Azure resources besides Microsoft Graph (e.g. AKS, Virtual Machines, Machine
|
||||
Learning Services, etc.). When the `/frame/handler` endpoint is called with an
|
||||
authorization code for a non-Microsoft Graph scope, the user profile will not be
|
||||
fetched. Similarly no user profile or photo data will be fetched by the backend
|
||||
if the `/refresh` endpoint is called with the `scope` query parameter strictly
|
||||
containing scopes for resources besides Microsoft Graph.
|
||||
|
||||
Furthermore, the `offline_access` scope will be requested by default, even when
|
||||
it is not mentioned in the argument to `getAccessToken`. This means that any
|
||||
Azure access token can be automatically refreshed, even if the user has not
|
||||
signed in via Azure.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-techdocs-node': minor
|
||||
---
|
||||
|
||||
Use the latest version `v.1.2.0` of the spotify/techdocs docker image as default
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-react': patch
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
---
|
||||
|
||||
bug: Invert `templateFilter` predicate to align with `Array.filter`
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-adr': minor
|
||||
---
|
||||
|
||||
Use `fetchApi` instead of raw `fetch` in order to pass auth header if necessary.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/plugin-adr-common': patch
|
||||
'@backstage/plugin-adr': patch
|
||||
---
|
||||
|
||||
use path attribute to fetch files instead of name and update the UI to navigate over subdirectories
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-playlist': patch
|
||||
---
|
||||
|
||||
Added config properties to change dynamically the group noun for all the components in the UI
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-react': minor
|
||||
---
|
||||
|
||||
Attempt to load entity owner names in the EntityOwnerPicker through the `by-refs` endpoint. If `spec.profile.displayName` or `metadata.title` are populated, we now attempt to show those before showing the `humanizeEntityRef`'d version.
|
||||
|
||||
**BREAKING**: `EntityOwnerFilter` now uses the full entity ref instead of the `humanizeEntityRef`. If you rely on `EntityOwnerFilter.values` or the `queryParameters.owners` of `useEntityList`, you will need to adjust your code like the following.
|
||||
|
||||
```tsx
|
||||
const { queryParameters: { owners } } = useEntityList();
|
||||
// or
|
||||
const { filter: { owners } } = useEntityList();
|
||||
|
||||
// Instead of,
|
||||
if (owners.some(ref => ref === humanizeEntityRef(myEntity))) ...
|
||||
|
||||
// You'll need to use,
|
||||
if (owners.some(ref => ref === stringifyEntityRef(myEntity))) ...
|
||||
```
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-react': patch
|
||||
---
|
||||
|
||||
Add an indication that the validators are running when clicking `next` on each step of the form.
|
||||
+62
-3
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"mode": "pre",
|
||||
"mode": "exit",
|
||||
"tag": "next",
|
||||
"initialVersions": {
|
||||
"example-app": "0.2.81",
|
||||
@@ -216,22 +216,45 @@
|
||||
"@backstage/plugin-scaffolder-backend-module-confluence-to-markdown": "0.0.0",
|
||||
"@backstage/plugin-search-backend-module-catalog": "0.0.0",
|
||||
"@backstage/plugin-search-backend-module-explore": "0.0.0",
|
||||
"@backstage/plugin-search-backend-module-techdocs": "0.0.0"
|
||||
"@backstage/plugin-search-backend-module-techdocs": "0.0.0",
|
||||
"@backstage/backend-openapi-utils": "0.0.0",
|
||||
"@backstage/cli-node": "0.0.0"
|
||||
},
|
||||
"changesets": [
|
||||
"afraid-horses-argue",
|
||||
"all-my-auth-wanna-ride-today",
|
||||
"blue-walls-drop",
|
||||
"bright-hats-compare",
|
||||
"bright-pumpkins-bake",
|
||||
"calm-geese-obey",
|
||||
"calm-otters-destroy",
|
||||
"chatty-coats-thank",
|
||||
"clean-dolls-search",
|
||||
"clean-items-draw",
|
||||
"clean-teachers-thank",
|
||||
"clever-lizards-whisper",
|
||||
"cold-seahorses-greet",
|
||||
"create-app-1679405836",
|
||||
"create-app-1681222813",
|
||||
"curly-boats-trade",
|
||||
"curly-jobs-kneel",
|
||||
"curly-steaks-mate",
|
||||
"curvy-rocks-guess",
|
||||
"dependabot-ff5881d",
|
||||
"eight-trainers-smoke",
|
||||
"eleven-bats-tease",
|
||||
"eleven-coats-refuse",
|
||||
"fair-roses-stare",
|
||||
"famous-beds-break",
|
||||
"famous-beds-repair",
|
||||
"famous-olives-try",
|
||||
"fast-gorillas-approve",
|
||||
"fast-snakes-buy",
|
||||
"flat-ways-compete",
|
||||
"forty-adults-divide",
|
||||
"forty-days-tell",
|
||||
"forty-gorillas-help",
|
||||
"fresh-lions-compete",
|
||||
"fresh-schools-fly",
|
||||
"funny-pots-hide",
|
||||
"funny-rivers-grin",
|
||||
@@ -242,54 +265,90 @@
|
||||
"heavy-colts-wash",
|
||||
"hungry-lies-cry",
|
||||
"hungry-monkeys-reply",
|
||||
"itchy-ads-sit",
|
||||
"itchy-kiwis-unite",
|
||||
"khaki-cars-drum",
|
||||
"khaki-doors-compare",
|
||||
"khaki-guests-turn",
|
||||
"late-waves-march",
|
||||
"lazy-apples-destroy",
|
||||
"lazy-monkeys-worry",
|
||||
"long-gorillas-remain",
|
||||
"many-eggs-press",
|
||||
"mean-rice-beg",
|
||||
"mighty-lamps-cross",
|
||||
"mighty-tips-flow",
|
||||
"modern-snakes-check",
|
||||
"nasty-nails-appear",
|
||||
"neat-donkeys-work",
|
||||
"neat-pears-argue",
|
||||
"new-pigs-jam",
|
||||
"odd-grapes-double",
|
||||
"odd-plums-bake",
|
||||
"old-cougars-sit",
|
||||
"olive-cycles-join",
|
||||
"olive-months-talk",
|
||||
"orange-rabbits-jam",
|
||||
"perfect-deers-add",
|
||||
"plenty-eels-listen",
|
||||
"poor-cars-fold",
|
||||
"poor-horses-approve",
|
||||
"popular-parents-crash",
|
||||
"popular-radios-visit",
|
||||
"pretty-carpets-cross",
|
||||
"rare-seals-decide",
|
||||
"renovate-179fa0e",
|
||||
"renovate-3e8a992",
|
||||
"renovate-8010f99",
|
||||
"renovate-a9116b7",
|
||||
"renovate-c574b04",
|
||||
"rotten-carrots-cheer",
|
||||
"serious-items-walk",
|
||||
"seven-gifts-fetch",
|
||||
"shaggy-crews-carry",
|
||||
"short-panthers-float",
|
||||
"silent-nails-bake",
|
||||
"silly-adults-accept",
|
||||
"six-jobs-hear",
|
||||
"sixty-insects-visit",
|
||||
"slimy-scissors-play",
|
||||
"slow-ravens-destroy",
|
||||
"smart-crabs-dream",
|
||||
"soft-roses-cover",
|
||||
"sour-buttons-collect",
|
||||
"sour-dragons-cheat",
|
||||
"sour-laws-walk",
|
||||
"spicy-carrots-argue",
|
||||
"stale-cobras-beg",
|
||||
"stale-files-sniff",
|
||||
"stale-paws-sparkle",
|
||||
"strong-crews-repeat",
|
||||
"stupid-laws-play",
|
||||
"sweet-eels-hunt",
|
||||
"swift-meals-live",
|
||||
"tall-chairs-explain",
|
||||
"tall-meals-dress",
|
||||
"tall-oranges-own",
|
||||
"ten-hounds-bathe",
|
||||
"ten-mayflies-beam",
|
||||
"tender-parrots-fry",
|
||||
"tender-terms-return",
|
||||
"thick-forks-prove",
|
||||
"thin-spoons-prove",
|
||||
"thirty-crabs-tell",
|
||||
"tiny-apes-scream",
|
||||
"tough-cameras-beam",
|
||||
"tricky-beans-knock",
|
||||
"twelve-parrots-camp",
|
||||
"twelve-vans-sell",
|
||||
"unlucky-snakes-smile",
|
||||
"warm-buses-switch",
|
||||
"weak-oranges-give",
|
||||
"weak-turtles-arrive",
|
||||
"wet-lamps-happen",
|
||||
"wise-garlics-camp",
|
||||
"witty-berries-love",
|
||||
"witty-points-visit"
|
||||
"witty-points-visit",
|
||||
"yellow-candles-kiss"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
---
|
||||
|
||||
Updated the alpha `scaffolderPlugin` to not require options.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-react': patch
|
||||
---
|
||||
|
||||
Updated dependency `@rjsf/core-v5` to `npm:@rjsf/core@5.5.2`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Updated dependency `@swc/helpers` to `^0.5.0`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
---
|
||||
|
||||
Stripped entity types and namespace before passing to GitHub API
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-search-backend-module-elasticsearch': patch
|
||||
---
|
||||
|
||||
fix ElasticSearch throwing error when index is missing
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/plugin-org': patch
|
||||
---
|
||||
|
||||
Added `entityLimit` to change the limit of entities displayed in the ownership boxes.
|
||||
|
||||
[StoryBook Example for Ownership Card](https://backstage.io/storybook/?path=/story/plugins-org-ownership-card--default)
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-auth-backend': patch
|
||||
---
|
||||
|
||||
Add common identify resolvers for `oidc` auth provider.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend': patch
|
||||
---
|
||||
|
||||
Fixed bug in the `DefaultCatalogProcessingEngine` where entities that contained multiple different types of relations for the same source entity would not properly trigger stitching for that source entity.
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
'@backstage/core-app-api': minor
|
||||
---
|
||||
|
||||
The `AuthConnector` interface now supports specifying a set of scopes when
|
||||
refreshing a session. The `DefaultAuthConnector` implementation passes the
|
||||
`scope` query parameter to the auth-backend plugin appropriately. The
|
||||
`RefreshingAuthSessionManager` passes any scopes in its `GetSessionRequest`
|
||||
appropriately.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes': patch
|
||||
---
|
||||
|
||||
fixes a bug where an empty authorization header was provided to the proxy endpoint when a cluster had a server-side auth provider
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend': minor
|
||||
---
|
||||
|
||||
Allow for a commit message to differ from the PR title when publishing a GitHub pull request.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-react': patch
|
||||
---
|
||||
|
||||
Reverted the check if the selected options list is different than the query parameters list before invoking `setSelectedOptions` method. This was preventing updating list items when a query string was already present in the URL when loading the page.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-shortcuts': patch
|
||||
---
|
||||
|
||||
Added the Analytics event in the save handler of AddShortcut and EditShortcut
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-auth-backend': patch
|
||||
---
|
||||
|
||||
Export Azure Easy Auth provider so it can actually be used.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend': minor
|
||||
---
|
||||
|
||||
Add monorepo support to CodeOwnersProccesor.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/catalog-model': minor
|
||||
---
|
||||
|
||||
Modified the regex for DNS label validation to support IDN domains
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-react': patch
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
---
|
||||
|
||||
`scaffolder/next`: bump `rjsf` dependencies to `5.5.0`
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes': patch
|
||||
---
|
||||
|
||||
`KubernetesBackendClient` now requires a `kubernetesAuthProvidersApi` value to be provided. `KubernetesApi` interface now has a proxy method requirement.
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/plugin-events-backend': patch
|
||||
---
|
||||
|
||||
Export `DefaultEventBroker` to allow decoupling of the catalog and events backends in the `example-backend`.
|
||||
|
||||
Please look at `plugins/events-backend/README.md` for the currently advised way to set up the event backend and catalog providers.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-techdocs': patch
|
||||
---
|
||||
|
||||
Fix a bug in sub-path navigation due to double addition of a sub-path if one was set up in `app.baseUrl`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/backend-openapi-utils': patch
|
||||
---
|
||||
|
||||
New plugin! Primary focus is to support types on `Router`s in backend packages. Developers can use the `ApiRouter` from this package in their packages to support a typed experience based on their OpenAPI specs. The `ApiRouter` supports request bodies, response bodies, query parameters and path parameters, as well as full path-based context of the above. This means no more guessing on an endpoint like `req.post('/not-my-route', (req, res)=>{res.send(req.body.badparam)})`. Typescript would catch `/not-my-route`, `req.body.badparam`, `res.send(req.body.badparam)`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-stack-overflow-backend': minor
|
||||
---
|
||||
|
||||
Adding support for v2.3 API and PAT authentication
|
||||
@@ -0,0 +1,21 @@
|
||||
---
|
||||
'@backstage/core-components': minor
|
||||
---
|
||||
|
||||
**BREAKING:** Removing `Tabs` component from `core-components` as it is neither used in the core Backstage app nor in the monorepo plugins. If you are using this component in your instance please consider replacing it with the [Material UI `Tabs`](https://v4.mui.com/components/tabs/#tabs) component like the following:
|
||||
|
||||
```diff
|
||||
- <Tabs
|
||||
- tabs={[{
|
||||
- icon: <AccessAlarmIcon />,
|
||||
- content: <div>Label</div>,
|
||||
- }]}
|
||||
- />
|
||||
|
||||
+ <Tabs>
|
||||
+ <Tab
|
||||
+ label = "Label"
|
||||
+ icon = { <AccessAlarmIcon /> }
|
||||
+ />
|
||||
+ </Tabs>
|
||||
```
|
||||
+8
-7
@@ -26,13 +26,13 @@ yarn.lock @backstage/maintainers @back
|
||||
/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-core
|
||||
/plugins/catalog-* @backstage/maintainers @backstage/catalog-core
|
||||
/plugins/catalog-backend-module-aws @backstage/maintainers @backstage/catalog-core @pjungermann
|
||||
/plugins/catalog-backend-module-bitbucket-cloud @backstage/maintainers @backstage/catalog-core @pjungermann
|
||||
/plugins/catalog-backend-module-msgraph @backstage/maintainers @backstage/catalog-core @pjungermann
|
||||
/plugins/catalog-backend-module-puppetdb @backstage/maintainers @backstage/catalog-core @tdabasinskas
|
||||
/plugins/catalog-graph @backstage/maintainers @backstage/catalog-core @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
|
||||
@@ -67,6 +67,7 @@ yarn.lock @backstage/maintainers @back
|
||||
/plugins/newrelic-dashboard @backstage/maintainers @mufaddal7
|
||||
/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
|
||||
|
||||
@@ -92,6 +92,9 @@ jobs:
|
||||
- name: verify api reference
|
||||
run: node scripts/verify-api-reference.js
|
||||
|
||||
- name: verify openapi yaml file matches generated ts file
|
||||
run: yarn backstage-repo-tools schema:openapi:verify
|
||||
|
||||
- name: verify doc links
|
||||
run: node scripts/verify-links.js
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ jobs:
|
||||
if: ${{ github.event.workflow_run.conclusion == 'success' }}
|
||||
outputs:
|
||||
compose-file-cache-key: ${{ env.COMPOSE_FILE_HASH }}
|
||||
git-ref: ${{ env.GIT_REF }}
|
||||
pr-number: ${{ env.PR_NUMBER }}
|
||||
steps:
|
||||
- name: 'Download artifacts'
|
||||
@@ -67,10 +68,15 @@ jobs:
|
||||
id: pr
|
||||
run: echo "PR_NUMBER=${{ fromJSON(env.EVENT_JSON).number }}" >> $GITHUB_ENV
|
||||
|
||||
- name: Read Git Ref From Event Object
|
||||
id: ref
|
||||
run: echo "GIT_REF=${{ fromJSON(env.EVENT_JSON).pull_request.head.sha }}" >> $GITHUB_ENV
|
||||
|
||||
- name: DEBUG - Print Job Outputs
|
||||
if: ${{ runner.debug }}
|
||||
run: |
|
||||
echo "PR number: ${{ env.PR_NUMBER }}"
|
||||
echo "Git Ref: ${{ env.GIT_REF }}"
|
||||
echo "Compose file hash: ${{ env.COMPOSE_FILE_HASH }}"
|
||||
cat event.json
|
||||
|
||||
@@ -85,8 +91,9 @@ jobs:
|
||||
# and this reusable workflow will delete the preview deployment.
|
||||
compose-file-cache-key: ${{ needs.cache-compose-file.outputs.compose-file-cache-key }}
|
||||
compose-file-cache-path: docker-compose.rendered.yml
|
||||
server: https://app.uffizzi.com
|
||||
git-ref: ${{ needs.cache-compose-file.outputs.git-ref }}
|
||||
pr-number: ${{ needs.cache-compose-file.outputs.pr-number }}
|
||||
server: https://app.uffizzi.com
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
name: Verify Accessibility Core features
|
||||
on:
|
||||
pull_request:
|
||||
branches: [master]
|
||||
paths:
|
||||
- 'plugins/catalog/**'
|
||||
- 'plugins/techdocs/**'
|
||||
- 'plugins/scaffolder/**'
|
||||
- 'plugins/search/**'
|
||||
|
||||
jobs:
|
||||
lhci:
|
||||
name: Lighthouse
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Use Node.js 16.x
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 16.x
|
||||
- name: yarn install
|
||||
uses: backstage/actions/yarn-install@v0.6.3
|
||||
with:
|
||||
cache-prefix: ${{ runner.os }}-16.x
|
||||
- name: run Lighthouse CI
|
||||
run: |
|
||||
npm install -g @lhci/cli@0.11.x
|
||||
lhci autorun
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
@@ -152,3 +152,7 @@ tsconfig.tmp.json
|
||||
|
||||
# vscode database functionality support files
|
||||
*.session.sql
|
||||
|
||||
# Lighthouse CI Reports
|
||||
**/.lighthouseci/*
|
||||
!**/.lighthouseci/scripts
|
||||
@@ -0,0 +1,11 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = async (browser, context) => {
|
||||
// launch browser for LHCI
|
||||
const page = await browser.newPage();
|
||||
await page.goto('http://localhost:3000');
|
||||
await page.evaluate(() => {
|
||||
localStorage.setItem('@backstage/core:SignInPage:provider', 'guest');
|
||||
});
|
||||
await page.goto('http://localhost:3000');
|
||||
};
|
||||
@@ -237,3 +237,9 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/
|
||||
| [Comcast](https://comcast.github.io/) | [Ryan Emerle](https://github.com/remerle) | Developer portal enabling discovery of products, services, and documentation throughout the enterprise to ultimately reduce friction and improve time-to-market. |
|
||||
| [Syntasso](https://www.syntasso.io/) | [@syntassodev](https://github.com/syntassodev) | Backstage is used as a optional UI for the [Kratix project](https://kratix.io), a framework for building platforms.
|
||||
| [Bankdata](https://www.bankdata.dk) | [Thomas Grønbæk](https://www.linkedin.com/in/thomas-grønbæk/) | We are assessing Backstage as our internal developer portal @Bankdata. Goal is to reduce cognitive load and friction for developers and thereby improving developer experience, onboarding and productivity. Expect use of Software Catalog for discoverability and ownership, Tech Docs and Software Templates to integrate tooling and best practices.
|
||||
| [B3](https://www.b3.com.br/) | [Marcos Rodrigues](https://www.linkedin.com/in/marcos-rodrigues-cloud/) | B3 (Brazilian Stock Exchange) will implement a self-service platform focused on software development based on Backstage. The tool will primarily focus on product development and software engineering teams, as well as professionals from other areas who are also involved in software delivery. The new platform will function as a portal where teams can access tools, codes, and templates that have already been tested and are available, serving as building blocks for the development of new solutions. |
|
||||
| [Porto](https://www.portoseguro.com.br/) | [Camilo Alessandro](https://www.linkedin.com/in/camilo-alessandro/) | Porto (Brazilian insurance company) Centralized developer portal with software catalog, application templates, maturity radar, component taxonomy standardization, and automation in the integration with DevSecOps processes. |
|
||||
| [Einride](https://github.com/einride) | [@odsod](https://github.com/odsod/) | We use Backstage to create a great developer experience across Einride's entire software stack - from autonomous and electric vehicles to cloud systems - and we've developed a [Backstage Go SDK](https://github.com/einride/backstage-go) for interfacing with Backstage from our Go tooling.
|
||||
| [Chartboost](https://www.chartboost.com)| [@brucearctor](https://github.com/brucearctor), [@ArtemChekunov](https://github.com/ArtemChekunov) | We are building our internal develper portal on top of Backstage.|
|
||||
| [Quantum Metric](https://www.quantummetric.com/) | [Eric Irwin](https://www.linkedin.com/in/ericirwin1124/) | Backstage is used within our Developer Experience Platform (DXP) in order to increase self-service, standardization and discoverability across our Engineering teams. |
|
||||
| [VodafoneZiggo](https://www.vodafoneziggo.nl/) | [Peter Macdonald](https://github.com/Parsifal-M) | We use Backstage as our go-to platform for managing our internal tools and services. With Backstage, we can easily discover and access all the services we need to do our work, whether it's deploying code, managing infrastructure, or accessing documentation. We appreciate the standardized, consistent interface and the ability to easily create custom plugins to integrate with our existing workflows. Overall, Backstage is streamlining our internal operations and helps us work more efficiently as a team. |
|
||||
|
||||
@@ -20,9 +20,14 @@ These are the separate project areas of Backstage, each with their own project a
|
||||
|
||||
Team: @backstage/catalog-maintainers
|
||||
|
||||
| Name | Organization | Team | GitHub | Discord |
|
||||
| ---- | ------------ | --------- | ---------------------------- | ------- |
|
||||
| TBD | Spotify | Chipmunks | [TBD](http://github.com/TBD) | - |
|
||||
Scope: The catalog plugin and catalog model
|
||||
|
||||
| Name | Organization | Team | GitHub | Discord |
|
||||
| -------------- | ------------ | --------- | ---------------------------------------- | ---------------- |
|
||||
| Rickard Dybeck | Spotify | Chipmunks | [alde](http://github.com/alde) | rdybeck#8083 |
|
||||
| Mike Blockley | Spotify | Chipmunks | [mikeyhc](http://github.com/mikeyhc) | mikey-spot#5363 |
|
||||
| Elon Jefferson | Spotify | Chipmunks | [Edje-C](http://github.com/Edje-C) | elon-spotty#6086 |
|
||||
| Nurit Izrailov | Spotify | Chipmunks | [nuritizra](http://github.com/nuritizra) | - |
|
||||
|
||||
### Discoverability
|
||||
|
||||
@@ -82,21 +87,24 @@ Scope: The TechDocs plugin and related tooling
|
||||
|
||||
## Organization Members
|
||||
|
||||
| Name | Organization | GitHub | Discord |
|
||||
| ------------------------------ | ------------------------- | ----------------------------------------------- | ------------------------------ |
|
||||
| Adam Harvey | Cisco | [adamdmharvey](https://github.com/adamdmharvey) | `adamharvey#3739` |
|
||||
| Andre Wanlin | Keyloop | [awanlin](https://github.com/awanlin) | `Ahhhndre#3095` |
|
||||
| Andrew Thauer | Wealthsimple | [andrewthauer](https://github.com/andrewthauer) | `andrewthauer#3060` |
|
||||
| Brian Fletcher | RoadieHQ | [punkle](https://github.com/punkle) | `Brian Fletcher#7051` |
|
||||
| Carlos Esteban Lopez Jaramillo | VMWare | [luchillo17](https://github.com/luchillo17) | `luchillo17#8777` |
|
||||
| David Tuite | Roadie | [dtuite](https://github.com/dtuite) | `David Tuite (roadie.io)#1010` |
|
||||
| Himanshu Mishra | Harness.io | [OrkoHunter](https://github.com/OrkoHunter) | `OrkoHunter#1520` |
|
||||
| Jamie Klassen | VMware | [jamieklassen](https://github.com/jamieklassen) | `jamieklassen#3047` |
|
||||
| Jussi Hallila | Roadie | [Xantier](https://github.com/Xantier) | `Xantier#0086` |
|
||||
| Mark Avery | Cvent | [webark](https://github.com/webark) | `webark#8471` |
|
||||
| Patrick Jungermann | Bonial International GmbH | [pjungermann](https://github.com/pjungermann) | `pjungermann#6933` |
|
||||
| Phil Kuang | FactSet Research Systems | [kuangp](https://github.com/kuangp) | `pkuang#3202` |
|
||||
| Taras Mankovski | Frontside | [taras](https://github.com/taras) | `tarasm#1256` |
|
||||
| Name | Organization | GitHub | Discord |
|
||||
| ------------------------------ | ------------------------- | ----------------------------------------------------- | ------------------------------ |
|
||||
| Adam Harvey | Cisco | [adamdmharvey](https://github.com/adamdmharvey) | `adamharvey#3739` |
|
||||
| Andre Wanlin | Keyloop | [awanlin](https://github.com/awanlin) | `Ahhhndre#3095` |
|
||||
| Andrew Thauer | Wealthsimple | [andrewthauer](https://github.com/andrewthauer) | `andrewthauer#3060` |
|
||||
| Brian Fletcher | Roadie.io | [punkle](https://github.com/punkle) | `Brian Fletcher#7051` |
|
||||
| Carlos Esteban Lopez Jaramillo | VMWare | [luchillo17](https://github.com/luchillo17) | `luchillo17#8777` |
|
||||
| David Tuite | Roadie.io | [dtuite](https://github.com/dtuite) | `David Tuite (roadie.io)#1010` |
|
||||
| Himanshu Mishra | Harness.io | [OrkoHunter](https://github.com/OrkoHunter) | `OrkoHunter#1520` |
|
||||
| Irma Solakovic | Roadie.io | [Irma12](https://github.com/Irma12) | `Irma#7629` |
|
||||
| Jamie Klassen | VMware | [jamieklassen](https://github.com/jamieklassen) | `jamieklassen#3047` |
|
||||
| Jorge Lainfiesta | Roadie.io | [jorgelainfiesta](https://github.com/jorgelainfiesta) | `jorgel#8733` |
|
||||
| Jussi Hallila | Roadie.io | [Xantier](https://github.com/Xantier) | `Xantier#0086` |
|
||||
| Mark Avery | Cvent | [webark](https://github.com/webark) | `webark#8471` |
|
||||
| Miklós Kiss | Roadie.io | [kissmikijr](https://github.com/kissmikijr) | `Miklos#7416` |
|
||||
| Patrick Jungermann | Bonial International GmbH | [pjungermann](https://github.com/pjungermann) | `pjungermann#6933` |
|
||||
| Phil Kuang | FactSet Research Systems | [kuangp](https://github.com/kuangp) | `pkuang#3202` |
|
||||
| Taras Mankovski | Frontside | [taras](https://github.com/taras) | `tarasm#1256` |
|
||||
|
||||
## Emeritus Core Maintainers
|
||||
|
||||
|
||||
@@ -123,6 +123,9 @@ proxy:
|
||||
headers:
|
||||
St2-Api-Key: ${ST2_API_KEY}
|
||||
|
||||
'/puppetdb':
|
||||
target: https://your.puppetdb.instance.com
|
||||
|
||||
organization:
|
||||
name: My Company
|
||||
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
---
|
||||
id: azure-easy-auth
|
||||
id: easy-auth
|
||||
title: Azure EasyAuth Provider
|
||||
sidebar_label: Azure EasyAuth
|
||||
sidebar_label: Azure Easy Auth
|
||||
description: Adding Azure's EasyAuth Proxy as an authentication provider in Backstage
|
||||
---
|
||||
|
||||
The Backstage `core-plugin-api` package comes with a Microsoft authentication provider that can authenticate users using Azure Active Directory for PaaS service hosted in Azure that support Easy Auth, such as Azure App Services.
|
||||
|
||||
## Backstage Changes
|
||||
|
||||
Add the following into your `app-config.yaml` or `app-config.production.yaml` file
|
||||
|
||||
@@ -37,10 +37,6 @@ The required steps in the host build are to install dependencies with
|
||||
`yarn install`, generate type definitions using `yarn tsc`, and build the backend
|
||||
package with `yarn build:backend`.
|
||||
|
||||
> NOTE: If you created your app prior to 2021-02-18, follow the
|
||||
> [migration step](https://github.com/backstage/backstage/releases/tag/release-2021-02-18)
|
||||
> to move from `backend:build` to `backend:bundle`.
|
||||
|
||||
In a CI workflow it might look something like this:
|
||||
|
||||
```bash
|
||||
@@ -50,7 +46,8 @@ yarn install --frozen-lockfile
|
||||
yarn tsc
|
||||
|
||||
# Build the backend, which bundles it all up into the packages/backend/dist folder.
|
||||
yarn build:backend
|
||||
# The configuration files here should match the one you use inside the Dockerfile below.
|
||||
yarn build:backend --config app-config.yaml
|
||||
```
|
||||
|
||||
Once the host build is complete, we are ready to build our image. The following
|
||||
|
||||
@@ -14,42 +14,16 @@ Kubernetes backend plugin's proxy endpoint to allow them to make arbitrary
|
||||
requests to the [REST
|
||||
API](https://kubernetes.io/docs/reference/using-api/api-concepts/).
|
||||
|
||||
Here is a snippet fetching namespaces from a cluster configured with the
|
||||
`google` [auth provider](https://backstage.io/docs/features/kubernetes/configuration#clustersauthprovider):
|
||||
Here is a snippet fetching namespaces using the `KubernetesBackendClient` library
|
||||
|
||||
```typescript
|
||||
import {
|
||||
discoveryApiRef,
|
||||
googleAuthApiRef,
|
||||
useApi,
|
||||
identityApiRef,
|
||||
} from '@backstage/core-plugin-api';
|
||||
import { useApi } from '@backstage/core-plugin-api';
|
||||
import { kubernetesApiRef } from '@backstage/plugin-kubernetes';
|
||||
|
||||
const CLUSTER_NAME = ''; // use a known cluster name
|
||||
|
||||
// get a bearer token from Google
|
||||
const googleAuthApi = useApi(googleAuthApiRef);
|
||||
const token = await googleAuthApi.getAccessToken(
|
||||
'https://www.googleapis.com/auth/cloud-platform',
|
||||
);
|
||||
|
||||
// get a backstage ID token
|
||||
const identityApi = useApi(identityApiRef);
|
||||
const { token: userToken } = await identityApi.getCredentials();
|
||||
|
||||
const discoveryApi = useApi(discoveryApiRef);
|
||||
const kubernetesBaseUrl = await discoveryApi.getBaseUrl('kubernetes');
|
||||
const kubernetesProxyEndpoint = `${kubernetesBaseUrl}/proxy`;
|
||||
|
||||
// fetch namespaces
|
||||
await fetch(`${kubernetesProxyEndpoint}/api/v1/namespaces`, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Backstage-Kubernetes-Cluster': CLUSTER_NAME,
|
||||
'Backstage-Kubernetes-Authorization': `Bearer ${token}`,
|
||||
Authorization: `Bearer ${userToken}`,
|
||||
},
|
||||
});
|
||||
const kubernetesApi = useApi(kubernetesApiRef);
|
||||
await kubernetesApi.proxy(CLUSTER_NAME, '/api/v1/namespaces');
|
||||
```
|
||||
|
||||
## How it works
|
||||
@@ -69,15 +43,9 @@ Overall, the only changes to each request are:
|
||||
- the endpoint's base URL prefix is stripped.
|
||||
- the `Backstage-Kubernetes-Authorization` header becomes the `Authorization` header that is used when forwarding the request.
|
||||
|
||||
## Authentication
|
||||
The proxy expects a `KubernetesAuthTranslator` to be provided that is used to decorate all requests with `Auth` by default. It does this by supplying a `serviceAccountToken` field into `clusterDetails` using the defined `authProvider` in `clusterDetails`.
|
||||
|
||||
Until some security and permission decisions are made (see [this
|
||||
conversation](https://github.com/backstage/backstage/pull/13026/files#r1029376939)
|
||||
for context), contributors consuming the proxy endpoint in their plugin code are
|
||||
responsible for negotiating their own bearer token out-of-band. This requires
|
||||
knowing some auth details about the cluster being contacted -- in practice, only
|
||||
clusters with [client side auth
|
||||
providers](https://backstage.io/docs/features/kubernetes/authentication#client-side-providers) can reasonably be reached.
|
||||
## Authentication
|
||||
|
||||
The proxy has no provisions for mTLS, so it cannot be used to connect to
|
||||
clusters using the [x509 Client
|
||||
|
||||
@@ -400,12 +400,8 @@ follows.
|
||||
// ...
|
||||
"relations": [
|
||||
{
|
||||
"target": {
|
||||
"kind": "group",
|
||||
"namespace": "default",
|
||||
"name": "dev.infra"
|
||||
},
|
||||
"type": "ownedBy"
|
||||
"type": "ownedBy",
|
||||
"targetRef": "group:default/dev.infra"
|
||||
}
|
||||
],
|
||||
"spec": {
|
||||
@@ -417,11 +413,11 @@ follows.
|
||||
|
||||
The fields of a relation are:
|
||||
|
||||
| Field | Type | Description |
|
||||
| ---------- | ------ | -------------------------------------------------------------------------------- |
|
||||
| `target` | Object | A complete [compound reference](references.md) to the other end of the relation. |
|
||||
| `type` | String | The type of relation FROM a source entity TO the target entity. |
|
||||
| `metadata` | Object | Reserved for future use. |
|
||||
| Field | Type | Description |
|
||||
| ----------- | ------ | -------------------------------------------------------------------------- |
|
||||
| `targetRef` | String | A full [entity reference](references.md) to the other end of the relation. |
|
||||
| `type` | String | The type of relation FROM a source entity TO the target entity. |
|
||||
| `metadata` | Object | Reserved for future use. |
|
||||
|
||||
Entity descriptor YAML files are not supposed to contain this field. Instead,
|
||||
catalog processors analyze the entity descriptor data and its surroundings, and
|
||||
|
||||
@@ -67,7 +67,7 @@ The parameters available are:
|
||||
|
||||
- **`host:`** _(optional)_ Leave empty for Cloud hosted, otherwise set to your self-hosted instance host.
|
||||
- **`organization:`** Your Organization slug (or Collection for on-premise users). Required.
|
||||
- **`project:`** _(optional)_ Your project slug. Wildcards are supported as show on the examples above. If not set, all projects will be searched. For a project name containing spaces, use both single and double quotes as in `project: '"My Project Name"'`.
|
||||
- **`project:`** _(required)_ Your project slug. Wildcards are supported as shown on the examples above. Using '\*' will search all projects. For a project name containing spaces, use both single and double quotes as in `project: '"My Project Name"'`.
|
||||
- **`repository:`** _(optional)_ The repository name. Wildcards are supported as show on the examples above. If not set, all repositories will be searched.
|
||||
- **`path:`** _(optional)_ Where to find catalog-info.yaml files. Defaults to /catalog-info.yaml.
|
||||
- **`branch:`** _(optional)_ The branch name to use.
|
||||
|
||||
@@ -76,36 +76,37 @@ Additionally, you need to decide how you want to receive events from external so
|
||||
|
||||
Set up your provider
|
||||
|
||||
```ts title="packages/backend/src/plugins/catalogEventBasedProviders.ts"
|
||||
```ts title="packages/backend/src/plugins/catalog.ts"
|
||||
import { CatalogBuilder } from '@backstage/plugin-catalog-backend';
|
||||
/* highlight-add-start */
|
||||
import { CatalogClient } from '@backstage/catalog-client';
|
||||
import { BitbucketCloudEntityProvider } from '@backstage/plugin-catalog-backend-module-bitbucket-cloud';
|
||||
/* highlight-add-end */
|
||||
import { EntityProvider } from '@backstage/plugin-catalog-node';
|
||||
import { EventSubscriber } from '@backstage/plugin-events-node';
|
||||
|
||||
import { ScaffolderEntitiesProcessor } from '@backstage/plugin-scaffolder-backend';
|
||||
import { Router } from 'express';
|
||||
import { PluginEnvironment } from '../types';
|
||||
|
||||
export default async function createCatalogEventBasedProviders(
|
||||
/* highlight-remove-next-line */
|
||||
_: PluginEnvironment,
|
||||
/* highlight-add-next-line */
|
||||
export default async function createPlugin(
|
||||
env: PluginEnvironment,
|
||||
): Promise<Array<EntityProvider & EventSubscriber>> {
|
||||
const providers: Array<
|
||||
(EntityProvider & EventSubscriber) | Array<EntityProvider & EventSubscriber>
|
||||
> = [];
|
||||
// add your event-based entity providers here
|
||||
): Promise<Router> {
|
||||
const builder = await CatalogBuilder.create(env);
|
||||
builder.addProcessor(new ScaffolderEntitiesProcessor());
|
||||
/* highlight-add-start */
|
||||
providers.push(
|
||||
BitbucketCloudEntityProvider.fromConfig(env.config, {
|
||||
const bitbucketCloudProvider = BitbucketCloudEntityProvider.fromConfig(
|
||||
env.config,
|
||||
{
|
||||
catalogApi: new CatalogClient({ discoveryApi: env.discovery }),
|
||||
logger: env.logger,
|
||||
scheduler: env.scheduler,
|
||||
tokenManager: env.tokenManager,
|
||||
}),
|
||||
},
|
||||
);
|
||||
env.eventBroker.subscribe(bitbucketCloudProvider);
|
||||
builder.addEntityProvider(bitbucketCloudProvider);
|
||||
/* highlight-add-end */
|
||||
return providers.flat();
|
||||
const { processingEngine, router } = await builder.build();
|
||||
await processingEngine.start();
|
||||
return router;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -69,37 +69,36 @@ Additionally, you need to decide how you want to receive events from external so
|
||||
|
||||
Set up your provider
|
||||
|
||||
```ts title="packages/backend/src/plugins/catalogEventBasedProviders.ts"
|
||||
```ts title="packages/backend/src/plugins/catalog.ts"
|
||||
import { CatalogBuilder } from '@backstage/plugin-catalog-backend';
|
||||
/* highlight-add-next-line */
|
||||
import { GithubEntityProvider } from '@backstage/plugin-catalog-backend-module-github';
|
||||
import { EntityProvider } from '@backstage/plugin-catalog-node';
|
||||
import { EventSubscriber } from '@backstage/plugin-events-node';
|
||||
import { ScaffolderEntitiesProcessor } from '@backstage/plugin-scaffolder-backend';
|
||||
import { Router } from 'express';
|
||||
import { PluginEnvironment } from '../types';
|
||||
export default async function createCatalogEventBasedProviders(
|
||||
/* highlight-remove-next-line */
|
||||
_: PluginEnvironment,
|
||||
/* highlight-add-next-line */
|
||||
|
||||
export default async function createPlugin(
|
||||
env: PluginEnvironment,
|
||||
): Promise<Array<EntityProvider & EventSubscriber>> {
|
||||
const providers: Array<
|
||||
(EntityProvider & EventSubscriber) | Array<EntityProvider & EventSubscriber>
|
||||
> = [];
|
||||
// add your event-based entity providers here
|
||||
): Promise<Router> {
|
||||
const builder = await CatalogBuilder.create(env);
|
||||
builder.addProcessor(new ScaffolderEntitiesProcessor());
|
||||
/* highlight-add-start */
|
||||
providers.push(
|
||||
GithubEntityProvider.fromConfig(env.config, {
|
||||
logger: env.logger,
|
||||
// optional: alternatively, use scheduler with schedule defined in app-config.yaml
|
||||
schedule: env.scheduler.createScheduledTaskRunner({
|
||||
frequency: { minutes: 30 },
|
||||
timeout: { minutes: 3 },
|
||||
}),
|
||||
// optional: alternatively, use schedule
|
||||
scheduler: env.scheduler,
|
||||
const githubProvider = GithubEntityProvider.fromConfig(env.config, {
|
||||
logger: env.logger,
|
||||
// optional: alternatively, use scheduler with schedule defined in app-config.yaml
|
||||
schedule: env.scheduler.createScheduledTaskRunner({
|
||||
frequency: { minutes: 30 },
|
||||
timeout: { minutes: 3 },
|
||||
}),
|
||||
);
|
||||
// optional: alternatively, use schedule
|
||||
scheduler: env.scheduler,
|
||||
});
|
||||
env.eventBroker.subscribe(githubProvider);
|
||||
builder.addEntityProvider(demoProvider);
|
||||
/* highlight-add-end */
|
||||
return providers.flat();
|
||||
const { processingEngine, router } = await builder.build();
|
||||
await processingEngine.start();
|
||||
return router;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -79,25 +79,21 @@ Additionally, you need to decide how you want to receive events from external so
|
||||
|
||||
Set up your provider
|
||||
|
||||
```ts title="packages/backend/src/plugins/catalogEventBasedProviders.ts"
|
||||
```ts title="packages/backend/src/plugins/catalog.ts"
|
||||
import { CatalogBuilder } from '@backstage/plugin-catalog-backend';
|
||||
/* highlight-add-next-line */
|
||||
import { GithubOrgEntityProvider } from '@backstage/plugin-catalog-backend-module-github';
|
||||
import { EntityProvider } from '@backstage/plugin-catalog-node';
|
||||
import { EventSubscriber } from '@backstage/plugin-events-node';
|
||||
import { ScaffolderEntitiesProcessor } from '@backstage/plugin-scaffolder-backend';
|
||||
import { Router } from 'express';
|
||||
import { PluginEnvironment } from '../types';
|
||||
export default async function createCatalogEventBasedProviders(
|
||||
/* highlight-remove-next-line */
|
||||
_: PluginEnvironment,
|
||||
/* highlight-add-next-line */
|
||||
|
||||
export default async function createPlugin(
|
||||
env: PluginEnvironment,
|
||||
): Promise<Array<EntityProvider & EventSubscriber>> {
|
||||
const providers: Array<
|
||||
(EntityProvider & EventSubscriber) | Array<EntityProvider & EventSubscriber>
|
||||
> = [];
|
||||
// add your event-based entity providers here
|
||||
): Promise<Router> {
|
||||
const builder = await CatalogBuilder.create(env);
|
||||
builder.addProcessor(new ScaffolderEntitiesProcessor());
|
||||
/* highlight-add-start */
|
||||
providers.push(
|
||||
GithubOrgEntityProvider.fromConfig(env.config, {
|
||||
const githubOrgProvider = GithubOrgEntityProvider.fromConfig(env.config, {
|
||||
id: 'production',
|
||||
orgUrl: 'https://github.com/backstage',
|
||||
logger: env.logger,
|
||||
@@ -105,10 +101,12 @@ export default async function createCatalogEventBasedProviders(
|
||||
frequency: { minutes: 60 },
|
||||
timeout: { minutes: 15 },
|
||||
}),
|
||||
}),
|
||||
);
|
||||
env.eventBroker.subscribe(githubOrgProvider);
|
||||
builder.addEntityProvider(githubOrgProvider);
|
||||
/* highlight-add-end */
|
||||
return providers.flat();
|
||||
const { processingEngine, router } = await builder.build();
|
||||
await processingEngine.start();
|
||||
return router;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -91,7 +91,7 @@ This enables decisions based on characteristics of the resource, but it's import
|
||||
Install the missing module:
|
||||
|
||||
```bash
|
||||
$ yarn workspace @internal/plugin-todo-list-backend add @backstage/plugin-permission-node zod@~3.18.0
|
||||
$ yarn workspace @internal/plugin-todo-list-backend add @backstage/plugin-permission-node zod
|
||||
```
|
||||
|
||||
Create a new `plugins/todo-list-backend/src/service/rules.ts` file and append the following code:
|
||||
|
||||
@@ -184,9 +184,10 @@ export async function createRouter(
|
||||
options: RouterOptions,
|
||||
): Promise<express.Router> {
|
||||
const router = Router();
|
||||
const { identity } = options;
|
||||
|
||||
router.post('/example', async (req, res) => {
|
||||
const identity = await identity.getIdentity({ request: req });
|
||||
const userIdentity = await identity.getIdentity({ request: req });
|
||||
...
|
||||
});
|
||||
```
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,60 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
module.exports = {
|
||||
ci: {
|
||||
collect: {
|
||||
url: [
|
||||
/** Software Catalog */
|
||||
'http://localhost:3000/catalog',
|
||||
'http://localhost:3000/catalog-import',
|
||||
'http://localhost:3000/catalog/default/component/backstage',
|
||||
/** TechDocs */
|
||||
'http://localhost:3000/docs',
|
||||
'http://localhost:3000/docs/default/component/backstage',
|
||||
/** Software Templates */
|
||||
'http://localhost:3000/create',
|
||||
'http://localhost:3000/create/tasks',
|
||||
'http://localhost:3000/create/actions',
|
||||
'http://localhost:3000/create/edit',
|
||||
'http://localhost:3000/create/templates/default/react-ssr-template',
|
||||
/** Search */
|
||||
'http://localhost:3000/search',
|
||||
],
|
||||
settings: {
|
||||
onlyCategories: ['accessibility'],
|
||||
// need to disable storage reset because of auth
|
||||
disableStorageReset: true,
|
||||
output: ['html', 'json'],
|
||||
outputPath: './.lighthouseci/reports',
|
||||
preset: 'desktop',
|
||||
},
|
||||
startServerCommand: 'yarn dev',
|
||||
startServerReadyTimeout: 600000,
|
||||
numberOfRuns: 1,
|
||||
puppeteerScript: './.lighthouseci/scripts/guest-auth.js',
|
||||
startServerReadyPattern: 'Listening on :7007',
|
||||
},
|
||||
assert: {
|
||||
assertions: {
|
||||
'categories:performance': 'off',
|
||||
'categories:pwa': 'off',
|
||||
'categories:best-practices': 'off',
|
||||
'categories:seo': 'off',
|
||||
'categories:accessibility': ['error', { minScore: 0.85 }],
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,10 @@
|
||||
---
|
||||
title: API Spectral Linter
|
||||
author: dweber019
|
||||
authorUrl: https://github.com/dweber019
|
||||
category: Linting
|
||||
description: API Spectral Linter is a quality assurance tool that checks the compliance of API's specifications Spectral rule sets.
|
||||
documentation: https://github.com/dweber019/backstage-plugin-api-docs-spectral-linter
|
||||
iconUrl: https://raw.githubusercontent.com/dweber019/backstage-plugin-api-docs-spectral-linter/main/plugins/api-docs-spectral-linter/docs/pluginIcon.png
|
||||
npmPackageName: '@dweber019/backstage-plugin-api-docs-spectral-linter'
|
||||
addedDate: '2023-03-27'
|
||||
@@ -0,0 +1,10 @@
|
||||
---
|
||||
title: Bulletin Board
|
||||
author: v-ngu
|
||||
authorUrl: https://github.com/v-ngu
|
||||
category: Discovery
|
||||
description: Share interesting ideas, news and links with your teammates within Backstage.
|
||||
documentation: https://github.com/v-ngu/backstage-plugin-bulletin-board
|
||||
iconUrl: /img/bulletin-board.png
|
||||
npmPackageName: 'backstage-plugin-bulletin-board'
|
||||
addedDate: '2023-04-01'
|
||||
@@ -0,0 +1,12 @@
|
||||
---
|
||||
title: Microcks
|
||||
author: Microcks
|
||||
authorUrl: https://microcks.io
|
||||
category: Discovery
|
||||
description: Import API definitions (OpenAPI, AsyncAPI, gRPC) from Microcks instances, linking to their mock endpoints and test results.
|
||||
documentation: https://github.com/microcks/microcks-backstage-provider
|
||||
iconUrl: https://microcks.io/images/microcks-logo-blue.png
|
||||
npmPackageName: '@microcks/microcks-backstage-provider'
|
||||
tags:
|
||||
- mock
|
||||
addedDate: '2023-04-06'
|
||||
@@ -6,7 +6,6 @@ description: |
|
||||
The plugin integrates with your Microsoft Calendar.
|
||||
It displays all your calendars and events in it.
|
||||
documentation: https://github.com/backstage/backstage/tree/master/plugins/microsoft-calendar
|
||||
iconUrl: /img/outlook-statusneo.png
|
||||
npmPackageName: '@backstage/plugin-microsoft-calendar'
|
||||
tags:
|
||||
- Microsoft
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
title: Microsoft Forms
|
||||
author: ZcMander
|
||||
authorUrl: https://github.com/zcmander
|
||||
category: Productivity
|
||||
description: Embed a form into the entity page with ease!
|
||||
documentation: https://github.com/zcmander/backstage-plugin-msforms
|
||||
iconUrl: /img/microsoft-forms.png
|
||||
npmPackageName: '@zcmander/backstage-plugin-msforms'
|
||||
tags:
|
||||
- Microsoft
|
||||
- forms
|
||||
addedDate: '2023-04-11'
|
||||
@@ -0,0 +1,13 @@
|
||||
---
|
||||
title: PuppetDB
|
||||
author: TDabasinskas
|
||||
authorUrl: https://github.com/tdabasinskas
|
||||
category: Configuration Management
|
||||
description: Visualize resource information and Puppet facts from PuppetDB.
|
||||
documentation: https://github.com/backstage/backstage/blob/master/plugins/puppetdb/README.md
|
||||
iconUrl: /img/puppet.png
|
||||
npmPackageName: '@backstage/plugin-puppetdb'
|
||||
tags:
|
||||
- puppet
|
||||
- puppetdb
|
||||
addedDate: '2023-04-06'
|
||||
@@ -32,7 +32,7 @@
|
||||
"@docusaurus/core": "2.4.0",
|
||||
"@docusaurus/plugin-client-redirects": "^2.3.1",
|
||||
"@docusaurus/preset-classic": "2.4.0",
|
||||
"@swc/core": "^1.3.36",
|
||||
"@swc/core": "^1.3.46",
|
||||
"clsx": "^1.1.1",
|
||||
"docusaurus-plugin-sass": "^0.2.3",
|
||||
"prism-react-renderer": "^1.3.5",
|
||||
|
||||
@@ -277,15 +277,16 @@
|
||||
"items": [
|
||||
"auth/auth0/provider",
|
||||
"auth/atlassian/provider",
|
||||
"auth/bitbucket/provider",
|
||||
"auth/microsoft/provider",
|
||||
"auth/microsoft/easy-auth",
|
||||
"auth/bitbucket/provider",
|
||||
"auth/github/provider",
|
||||
"auth/gitlab/provider",
|
||||
"auth/google/provider",
|
||||
"auth/google/gcp-iap-auth",
|
||||
"auth/okta/provider",
|
||||
"auth/onelogin/provider",
|
||||
"auth/oauth2-proxy/provider"
|
||||
"auth/oauth2-proxy/provider",
|
||||
"auth/onelogin/provider"
|
||||
]
|
||||
},
|
||||
"auth/identity-resolver",
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 9.2 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 34 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 63 KiB |
+50
-45
@@ -2624,90 +2624,92 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-darwin-arm64@npm:1.3.42":
|
||||
version: 1.3.42
|
||||
resolution: "@swc/core-darwin-arm64@npm:1.3.42"
|
||||
"@swc/core-darwin-arm64@npm:1.3.50":
|
||||
version: 1.3.50
|
||||
resolution: "@swc/core-darwin-arm64@npm:1.3.50"
|
||||
conditions: os=darwin & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-darwin-x64@npm:1.3.42":
|
||||
version: 1.3.42
|
||||
resolution: "@swc/core-darwin-x64@npm:1.3.42"
|
||||
"@swc/core-darwin-x64@npm:1.3.50":
|
||||
version: 1.3.50
|
||||
resolution: "@swc/core-darwin-x64@npm:1.3.50"
|
||||
conditions: os=darwin & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-arm-gnueabihf@npm:1.3.42":
|
||||
version: 1.3.42
|
||||
resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.42"
|
||||
"@swc/core-linux-arm-gnueabihf@npm:1.3.50":
|
||||
version: 1.3.50
|
||||
resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.50"
|
||||
conditions: os=linux & cpu=arm
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-arm64-gnu@npm:1.3.42":
|
||||
version: 1.3.42
|
||||
resolution: "@swc/core-linux-arm64-gnu@npm:1.3.42"
|
||||
"@swc/core-linux-arm64-gnu@npm:1.3.50":
|
||||
version: 1.3.50
|
||||
resolution: "@swc/core-linux-arm64-gnu@npm:1.3.50"
|
||||
conditions: os=linux & cpu=arm64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-arm64-musl@npm:1.3.42":
|
||||
version: 1.3.42
|
||||
resolution: "@swc/core-linux-arm64-musl@npm:1.3.42"
|
||||
"@swc/core-linux-arm64-musl@npm:1.3.50":
|
||||
version: 1.3.50
|
||||
resolution: "@swc/core-linux-arm64-musl@npm:1.3.50"
|
||||
conditions: os=linux & cpu=arm64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-x64-gnu@npm:1.3.42":
|
||||
version: 1.3.42
|
||||
resolution: "@swc/core-linux-x64-gnu@npm:1.3.42"
|
||||
"@swc/core-linux-x64-gnu@npm:1.3.50":
|
||||
version: 1.3.50
|
||||
resolution: "@swc/core-linux-x64-gnu@npm:1.3.50"
|
||||
conditions: os=linux & cpu=x64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-x64-musl@npm:1.3.42":
|
||||
version: 1.3.42
|
||||
resolution: "@swc/core-linux-x64-musl@npm:1.3.42"
|
||||
"@swc/core-linux-x64-musl@npm:1.3.50":
|
||||
version: 1.3.50
|
||||
resolution: "@swc/core-linux-x64-musl@npm:1.3.50"
|
||||
conditions: os=linux & cpu=x64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-win32-arm64-msvc@npm:1.3.42":
|
||||
version: 1.3.42
|
||||
resolution: "@swc/core-win32-arm64-msvc@npm:1.3.42"
|
||||
"@swc/core-win32-arm64-msvc@npm:1.3.50":
|
||||
version: 1.3.50
|
||||
resolution: "@swc/core-win32-arm64-msvc@npm:1.3.50"
|
||||
conditions: os=win32 & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-win32-ia32-msvc@npm:1.3.42":
|
||||
version: 1.3.42
|
||||
resolution: "@swc/core-win32-ia32-msvc@npm:1.3.42"
|
||||
"@swc/core-win32-ia32-msvc@npm:1.3.50":
|
||||
version: 1.3.50
|
||||
resolution: "@swc/core-win32-ia32-msvc@npm:1.3.50"
|
||||
conditions: os=win32 & cpu=ia32
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-win32-x64-msvc@npm:1.3.42":
|
||||
version: 1.3.42
|
||||
resolution: "@swc/core-win32-x64-msvc@npm:1.3.42"
|
||||
"@swc/core-win32-x64-msvc@npm:1.3.50":
|
||||
version: 1.3.50
|
||||
resolution: "@swc/core-win32-x64-msvc@npm:1.3.50"
|
||||
conditions: os=win32 & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core@npm:^1.3.36":
|
||||
version: 1.3.42
|
||||
resolution: "@swc/core@npm:1.3.42"
|
||||
"@swc/core@npm:^1.3.46":
|
||||
version: 1.3.50
|
||||
resolution: "@swc/core@npm:1.3.50"
|
||||
dependencies:
|
||||
"@swc/core-darwin-arm64": 1.3.42
|
||||
"@swc/core-darwin-x64": 1.3.42
|
||||
"@swc/core-linux-arm-gnueabihf": 1.3.42
|
||||
"@swc/core-linux-arm64-gnu": 1.3.42
|
||||
"@swc/core-linux-arm64-musl": 1.3.42
|
||||
"@swc/core-linux-x64-gnu": 1.3.42
|
||||
"@swc/core-linux-x64-musl": 1.3.42
|
||||
"@swc/core-win32-arm64-msvc": 1.3.42
|
||||
"@swc/core-win32-ia32-msvc": 1.3.42
|
||||
"@swc/core-win32-x64-msvc": 1.3.42
|
||||
"@swc/core-darwin-arm64": 1.3.50
|
||||
"@swc/core-darwin-x64": 1.3.50
|
||||
"@swc/core-linux-arm-gnueabihf": 1.3.50
|
||||
"@swc/core-linux-arm64-gnu": 1.3.50
|
||||
"@swc/core-linux-arm64-musl": 1.3.50
|
||||
"@swc/core-linux-x64-gnu": 1.3.50
|
||||
"@swc/core-linux-x64-musl": 1.3.50
|
||||
"@swc/core-win32-arm64-msvc": 1.3.50
|
||||
"@swc/core-win32-ia32-msvc": 1.3.50
|
||||
"@swc/core-win32-x64-msvc": 1.3.50
|
||||
peerDependencies:
|
||||
"@swc/helpers": ^0.5.0
|
||||
dependenciesMeta:
|
||||
"@swc/core-darwin-arm64":
|
||||
optional: true
|
||||
@@ -2729,7 +2731,10 @@ __metadata:
|
||||
optional: true
|
||||
"@swc/core-win32-x64-msvc":
|
||||
optional: true
|
||||
checksum: 5c28c03ee6a4e1f630c4a519b56d7e23a0102f70fad977a3ab144a3da96231cf4849e473cdc9ee7be6b9266ba0838d0bc0b6b3575a75540f302befe96cc9606e
|
||||
peerDependenciesMeta:
|
||||
"@swc/helpers":
|
||||
optional: true
|
||||
checksum: 63364c0bf6f395a57b576c4f7c5f79542a7c018c7bcc121e1bccdb157ca3ead97ee30920cf5ec6e93b0bd58e0145cb388721d7862ede867927137a437b4ef21a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -3732,7 +3737,7 @@ __metadata:
|
||||
"@docusaurus/plugin-client-redirects": ^2.3.1
|
||||
"@docusaurus/preset-classic": 2.4.0
|
||||
"@spotify/prettier-config": ^14.0.0
|
||||
"@swc/core": ^1.3.36
|
||||
"@swc/core": ^1.3.46
|
||||
"@tsconfig/docusaurus": ^1.0.6
|
||||
"@types/webpack-env": ^1.18.0
|
||||
clsx: ^1.1.1
|
||||
|
||||
@@ -6,6 +6,7 @@ edit_uri: edit/master/docs
|
||||
plugins:
|
||||
- techdocs-core
|
||||
|
||||
# For sidebar navigation on https://backstage.io/, see `microsite/sidebars.json`
|
||||
nav:
|
||||
- Overview:
|
||||
- What is Backstage?: 'overview/what-is-backstage.md'
|
||||
|
||||
+1
-1
@@ -47,7 +47,7 @@
|
||||
"@types/react": "^17",
|
||||
"@types/react-dom": "^17"
|
||||
},
|
||||
"version": "1.13.0-next.1",
|
||||
"version": "1.13.0-next.3",
|
||||
"dependencies": {
|
||||
"@backstage/errors": "workspace:^",
|
||||
"@manypkg/get-packages": "^1.1.3"
|
||||
|
||||
@@ -1,5 +1,27 @@
|
||||
# @backstage/app-defaults
|
||||
|
||||
## 1.3.0-next.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/core-app-api@1.7.0-next.3
|
||||
- @backstage/core-components@0.13.0-next.3
|
||||
- @backstage/core-plugin-api@1.5.1-next.1
|
||||
- @backstage/theme@0.2.19-next.0
|
||||
- @backstage/plugin-permission-react@0.4.12-next.1
|
||||
|
||||
## 1.3.0-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/core-components@0.12.6-next.2
|
||||
- @backstage/core-plugin-api@1.5.1-next.1
|
||||
- @backstage/core-app-api@1.7.0-next.2
|
||||
- @backstage/theme@0.2.19-next.0
|
||||
- @backstage/plugin-permission-react@0.4.12-next.1
|
||||
|
||||
## 1.3.0-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/app-defaults",
|
||||
"description": "Provides the default wiring of a Backstage App",
|
||||
"version": "1.3.0-next.1",
|
||||
"version": "1.3.0-next.3",
|
||||
"publishConfig": {
|
||||
"access": "public",
|
||||
"main": "dist/index.esm.js",
|
||||
|
||||
@@ -1,5 +1,143 @@
|
||||
# example-app
|
||||
|
||||
## 0.2.82-next.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-kubernetes@0.8.0-next.3
|
||||
- @backstage/plugin-scaffolder@1.13.0-next.3
|
||||
- @backstage/cli@0.22.6-next.3
|
||||
- @backstage/plugin-explore@0.4.2-next.3
|
||||
- @backstage/plugin-catalog-react@1.5.0-next.3
|
||||
- @backstage/plugin-scaffolder-react@1.3.0-next.3
|
||||
- @backstage/core-app-api@1.7.0-next.3
|
||||
- @backstage/catalog-model@1.3.0-next.0
|
||||
- @backstage/plugin-techdocs@1.6.1-next.3
|
||||
- @backstage/core-components@0.13.0-next.3
|
||||
- @backstage/app-defaults@1.3.0-next.3
|
||||
- @backstage/config@1.0.7
|
||||
- @backstage/core-plugin-api@1.5.1-next.1
|
||||
- @backstage/integration-react@1.1.12-next.3
|
||||
- @backstage/theme@0.2.19-next.0
|
||||
- @backstage/plugin-airbrake@0.3.17-next.3
|
||||
- @backstage/plugin-apache-airflow@0.2.10-next.3
|
||||
- @backstage/plugin-api-docs@0.9.2-next.3
|
||||
- @backstage/plugin-azure-devops@0.2.8-next.3
|
||||
- @backstage/plugin-azure-sites@0.1.6-next.3
|
||||
- @backstage/plugin-badges@0.2.41-next.3
|
||||
- @backstage/plugin-catalog-common@1.0.13-next.1
|
||||
- @backstage/plugin-catalog-graph@0.2.29-next.3
|
||||
- @backstage/plugin-catalog-import@0.9.7-next.3
|
||||
- @backstage/plugin-circleci@0.3.17-next.3
|
||||
- @backstage/plugin-cloudbuild@0.3.17-next.3
|
||||
- @backstage/plugin-code-coverage@0.2.10-next.3
|
||||
- @backstage/plugin-cost-insights@0.12.6-next.3
|
||||
- @backstage/plugin-dynatrace@4.0.0-next.3
|
||||
- @backstage/plugin-entity-feedback@0.2.0-next.3
|
||||
- @backstage/plugin-gcalendar@0.3.13-next.3
|
||||
- @backstage/plugin-gcp-projects@0.3.36-next.3
|
||||
- @backstage/plugin-github-actions@0.5.17-next.3
|
||||
- @backstage/plugin-gocd@0.1.23-next.3
|
||||
- @backstage/plugin-graphiql@0.2.49-next.3
|
||||
- @backstage/plugin-home@0.4.33-next.3
|
||||
- @backstage/plugin-jenkins@0.7.16-next.3
|
||||
- @backstage/plugin-kafka@0.3.17-next.3
|
||||
- @backstage/plugin-lighthouse@0.4.2-next.3
|
||||
- @backstage/plugin-linguist@0.1.2-next.3
|
||||
- @backstage/plugin-linguist-common@0.1.0
|
||||
- @backstage/plugin-microsoft-calendar@0.1.2-next.3
|
||||
- @backstage/plugin-newrelic@0.3.35-next.3
|
||||
- @backstage/plugin-newrelic-dashboard@0.2.10-next.3
|
||||
- @backstage/plugin-org@0.6.7-next.3
|
||||
- @backstage/plugin-pagerduty@0.5.10-next.3
|
||||
- @backstage/plugin-permission-react@0.4.12-next.1
|
||||
- @backstage/plugin-playlist@0.1.8-next.3
|
||||
- @backstage/plugin-rollbar@0.4.17-next.3
|
||||
- @backstage/plugin-search@1.2.0-next.3
|
||||
- @backstage/plugin-search-common@1.2.3-next.0
|
||||
- @backstage/plugin-search-react@1.5.2-next.3
|
||||
- @backstage/plugin-sentry@0.5.2-next.3
|
||||
- @backstage/plugin-shortcuts@0.3.9-next.3
|
||||
- @backstage/plugin-stack-overflow@0.1.13-next.3
|
||||
- @backstage/plugin-stackstorm@0.1.1-next.3
|
||||
- @backstage/plugin-tech-insights@0.3.9-next.3
|
||||
- @backstage/plugin-tech-radar@0.6.3-next.3
|
||||
- @backstage/plugin-techdocs-module-addons-contrib@1.0.12-next.3
|
||||
- @backstage/plugin-techdocs-react@1.1.5-next.3
|
||||
- @backstage/plugin-todo@0.2.19-next.3
|
||||
- @backstage/plugin-user-settings@0.7.2-next.3
|
||||
- @internal/plugin-catalog-customized@0.0.9-next.3
|
||||
|
||||
## 0.2.82-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-circleci@0.3.17-next.2
|
||||
- @backstage/plugin-techdocs-module-addons-contrib@1.0.12-next.2
|
||||
- @backstage/cli@0.22.6-next.2
|
||||
- @backstage/core-components@0.12.6-next.2
|
||||
- @backstage/plugin-catalog-react@1.4.1-next.2
|
||||
- @backstage/plugin-scaffolder-react@1.3.0-next.2
|
||||
- @backstage/plugin-scaffolder@1.13.0-next.2
|
||||
- @backstage/plugin-code-coverage@0.2.10-next.2
|
||||
- @backstage/plugin-cost-insights@0.12.6-next.2
|
||||
- @backstage/plugin-playlist@0.1.8-next.2
|
||||
- @backstage/plugin-search@1.2.0-next.2
|
||||
- @backstage/core-plugin-api@1.5.1-next.1
|
||||
- @backstage/plugin-techdocs@1.6.1-next.2
|
||||
- @backstage/app-defaults@1.3.0-next.2
|
||||
- @backstage/catalog-model@1.2.1
|
||||
- @backstage/config@1.0.7
|
||||
- @backstage/core-app-api@1.7.0-next.2
|
||||
- @backstage/integration-react@1.1.12-next.2
|
||||
- @backstage/theme@0.2.19-next.0
|
||||
- @backstage/plugin-airbrake@0.3.17-next.2
|
||||
- @backstage/plugin-apache-airflow@0.2.10-next.2
|
||||
- @backstage/plugin-api-docs@0.9.2-next.2
|
||||
- @backstage/plugin-azure-devops@0.2.8-next.2
|
||||
- @backstage/plugin-azure-sites@0.1.6-next.2
|
||||
- @backstage/plugin-badges@0.2.41-next.2
|
||||
- @backstage/plugin-catalog-common@1.0.13-next.0
|
||||
- @backstage/plugin-catalog-graph@0.2.29-next.2
|
||||
- @backstage/plugin-catalog-import@0.9.7-next.2
|
||||
- @backstage/plugin-cloudbuild@0.3.17-next.2
|
||||
- @backstage/plugin-dynatrace@3.0.1-next.2
|
||||
- @backstage/plugin-entity-feedback@0.2.0-next.2
|
||||
- @backstage/plugin-explore@0.4.2-next.2
|
||||
- @backstage/plugin-gcalendar@0.3.13-next.2
|
||||
- @backstage/plugin-gcp-projects@0.3.36-next.2
|
||||
- @backstage/plugin-github-actions@0.5.17-next.2
|
||||
- @backstage/plugin-gocd@0.1.23-next.2
|
||||
- @backstage/plugin-graphiql@0.2.49-next.2
|
||||
- @backstage/plugin-home@0.4.33-next.2
|
||||
- @backstage/plugin-jenkins@0.7.16-next.2
|
||||
- @backstage/plugin-kafka@0.3.17-next.2
|
||||
- @backstage/plugin-kubernetes@0.7.10-next.2
|
||||
- @backstage/plugin-lighthouse@0.4.2-next.2
|
||||
- @backstage/plugin-linguist@0.1.2-next.2
|
||||
- @backstage/plugin-linguist-common@0.1.0
|
||||
- @backstage/plugin-microsoft-calendar@0.1.2-next.2
|
||||
- @backstage/plugin-newrelic@0.3.35-next.2
|
||||
- @backstage/plugin-newrelic-dashboard@0.2.10-next.2
|
||||
- @backstage/plugin-org@0.6.7-next.2
|
||||
- @backstage/plugin-pagerduty@0.5.10-next.2
|
||||
- @backstage/plugin-permission-react@0.4.12-next.1
|
||||
- @backstage/plugin-rollbar@0.4.17-next.2
|
||||
- @backstage/plugin-search-common@1.2.3-next.0
|
||||
- @backstage/plugin-search-react@1.5.2-next.2
|
||||
- @backstage/plugin-sentry@0.5.2-next.2
|
||||
- @backstage/plugin-shortcuts@0.3.9-next.2
|
||||
- @backstage/plugin-stack-overflow@0.1.13-next.2
|
||||
- @backstage/plugin-stackstorm@0.1.1-next.2
|
||||
- @backstage/plugin-tech-insights@0.3.9-next.2
|
||||
- @backstage/plugin-tech-radar@0.6.3-next.2
|
||||
- @backstage/plugin-techdocs-react@1.1.5-next.2
|
||||
- @backstage/plugin-todo@0.2.19-next.2
|
||||
- @backstage/plugin-user-settings@0.7.2-next.2
|
||||
- @internal/plugin-catalog-customized@0.0.9-next.2
|
||||
|
||||
## 0.2.82-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "example-app",
|
||||
"version": "0.2.82-next.1",
|
||||
"version": "0.2.82-next.3",
|
||||
"private": true,
|
||||
"backstage": {
|
||||
"role": "frontend"
|
||||
@@ -51,6 +51,7 @@
|
||||
"@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:^",
|
||||
|
||||
@@ -108,6 +108,7 @@ import { PlaylistIndexPage } from '@backstage/plugin-playlist';
|
||||
import { TwoColumnLayout } from './components/scaffolder/customScaffolderLayouts';
|
||||
import { ScoreBoardPage } from '@oriflame/backstage-plugin-score-card';
|
||||
import { StackstormPage } from '@backstage/plugin-stackstorm';
|
||||
import { PuppetDbPage } from '@backstage/plugin-puppetdb';
|
||||
|
||||
const app = createApp({
|
||||
apis,
|
||||
@@ -289,6 +290,7 @@ const routes = (
|
||||
<Route path="/playlist" element={<PlaylistIndexPage />} />
|
||||
<Route path="/score-board" element={<ScoreBoardPage />} />
|
||||
<Route path="/stackstorm" element={<StackstormPage />} />
|
||||
<Route path="/puppetdb" element={<PuppetDbPage />} />
|
||||
</FlatRoutes>
|
||||
);
|
||||
|
||||
|
||||
@@ -116,6 +116,7 @@ import {
|
||||
EntityRollbarContent,
|
||||
isRollbarAvailable,
|
||||
} from '@backstage/plugin-rollbar';
|
||||
import { PuppetDbPage, isPuppetDbAvailable } from '@backstage/plugin-puppetdb';
|
||||
import { EntitySentryContent } from '@backstage/plugin-sentry';
|
||||
import { EntityTechdocsContent } from '@backstage/plugin-techdocs';
|
||||
import { EntityTechInsightsScorecardCard } from '@backstage/plugin-tech-insights';
|
||||
@@ -836,6 +837,35 @@ const domainPage = (
|
||||
</EntityLayoutWrapper>
|
||||
);
|
||||
|
||||
const resourcePage = (
|
||||
<EntityLayoutWrapper>
|
||||
<EntityLayout.Route path="/" title="Overview">
|
||||
<Grid container spacing={3} alignItems="stretch">
|
||||
{entityWarningContent}
|
||||
<Grid item md={6}>
|
||||
<EntityAboutCard variant="gridItem" />
|
||||
</Grid>
|
||||
<Grid item md={6} xs={12}>
|
||||
<EntityCatalogGraphCard variant="gridItem" height={400} />
|
||||
</Grid>
|
||||
<Grid item md={6}>
|
||||
<EntityHasSystemsCard variant="gridItem" />
|
||||
</Grid>
|
||||
</Grid>
|
||||
</EntityLayout.Route>
|
||||
<EntityLayout.Route
|
||||
path="/puppetdb"
|
||||
title="Puppet"
|
||||
if={isPuppetDbAvailable}
|
||||
>
|
||||
<PuppetDbPage />
|
||||
</EntityLayout.Route>
|
||||
<EntityLayout.Route path="/todos" title="TODOs">
|
||||
<EntityTodoContent />
|
||||
</EntityLayout.Route>
|
||||
</EntityLayoutWrapper>
|
||||
);
|
||||
|
||||
export const entityPage = (
|
||||
<EntitySwitch>
|
||||
<EntitySwitch.Case if={isKind('component')} children={componentPage} />
|
||||
@@ -844,6 +874,7 @@ export const entityPage = (
|
||||
<EntitySwitch.Case if={isKind('user')} children={userPage} />
|
||||
<EntitySwitch.Case if={isKind('system')} children={systemPage} />
|
||||
<EntitySwitch.Case if={isKind('domain')} children={domainPage} />
|
||||
<EntitySwitch.Case if={isKind('resource')} children={resourcePage} />
|
||||
|
||||
<EntitySwitch.Case>{defaultEntityPage}</EntitySwitch.Case>
|
||||
</EntitySwitch>
|
||||
|
||||
@@ -1,5 +1,22 @@
|
||||
# @backstage/backend-app-api
|
||||
|
||||
## 0.4.2-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 5c7ce585824: Allow an additionalConfig to be provided to loadBackendConfig that fetches config values during runtime.
|
||||
- Updated dependencies
|
||||
- @backstage/backend-common@0.18.4-next.2
|
||||
- @backstage/plugin-permission-node@0.7.7-next.2
|
||||
- @backstage/backend-plugin-api@0.5.1-next.2
|
||||
- @backstage/backend-tasks@0.5.1-next.2
|
||||
- @backstage/cli-common@0.1.12
|
||||
- @backstage/config@1.0.7
|
||||
- @backstage/config-loader@1.1.9
|
||||
- @backstage/errors@1.1.5
|
||||
- @backstage/types@1.0.2
|
||||
- @backstage/plugin-auth-node@0.2.13-next.2
|
||||
|
||||
## 0.4.2-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user