Merge branch 'master' into feature-flag-documentation-update

Signed-off-by: Kurt King <kurt.king@procore.com>
This commit is contained in:
Kurt King
2022-12-02 09:39:39 -06:00
786 changed files with 12987 additions and 2968 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog-backend-module-bitbucket-cloud': patch
---
Refresh (potentially) updated catalog files on `repo:push` more efficiently.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-azure-devops-backend': patch
---
Updated installation documentation
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-search-react': minor
---
The `value` of a search analytics event is now set as the total number of search results (when available)
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/create-app': patch
---
Bumped create-app version.
+7
View File
@@ -0,0 +1,7 @@
---
'@backstage/plugin-search-backend': minor
'@backstage/plugin-search-backend-module-elasticsearch': minor
'@backstage/plugin-search-backend-node': minor
---
numberOfResults is now provided alongside the query result
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-explore': patch
---
Update search links to only have header as linkable text
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog-backend': patch
---
Optimize `Stitcher` process to be more memory efficient
+22
View File
@@ -0,0 +1,22 @@
---
'@backstage/backend-app-api': patch
'@backstage/plugin-app-backend': patch
'@backstage/plugin-catalog-backend': patch
'@backstage/plugin-catalog-backend-module-aws': patch
'@backstage/plugin-catalog-backend-module-azure': patch
'@backstage/plugin-catalog-backend-module-bitbucket-cloud': patch
'@backstage/plugin-catalog-backend-module-bitbucket-server': patch
'@backstage/plugin-catalog-backend-module-gerrit': patch
'@backstage/plugin-catalog-backend-module-github': patch
'@backstage/plugin-catalog-backend-module-gitlab': patch
'@backstage/plugin-catalog-backend-module-incremental-ingestion': patch
'@backstage/plugin-catalog-backend-module-msgraph': patch
'@backstage/plugin-catalog-node': patch
'@backstage/plugin-events-backend': patch
'@backstage/plugin-events-backend-module-aws-sqs': patch
'@backstage/plugin-events-backend-module-github': patch
'@backstage/plugin-events-backend-module-gitlab': patch
'@backstage/plugin-scaffolder-backend': patch
---
Refactored to use `coreServices` from `@backstage/backend-plugin-api`.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog-backend-module-github': patch
---
Added the githubCredentialsProvider property to the GithubLocationAnalyzerOptions to be able to override the GithubCredentialsProvider.
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/plugin-catalog-backend': patch
'@backstage/plugin-catalog-node': minor
---
Make it possible for entity providers to supply only entity refs, instead of full entities, in `delta` mutation deletions.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog': patch
---
Handle refresh entity error in `AboutCard`.
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/plugin-bazaar': patch
---
`HomePageBazaarInfoCard` is now displaying `title` instead of `name`. Title is a string that doesn't have to be URL friendly.
The BazaarOverviewCard have the new property `fullHeight`. Link in `BazaarOverviewCard`is moved to header in card.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/core-app-api': patch
---
Tweak feature flag registration so that it happens immediately before the first rendering of the app, rather than just after.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-kafka-backend': patch
---
Internal tweak to adapt to `kafkajs` 2.2.3
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-bazaar': patch
---
Add `title` as optional parameter to `BazaarOverviewCard`
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/backend-common': patch
---
exported KubernetesContainerRunner, KubernetesContainerRunnerOptions, KubernetesContainerRunnerMountBase
+16
View File
@@ -0,0 +1,16 @@
---
'@backstage/backend-common': minor
'@backstage/backend-tasks': minor
'@backstage/plugin-catalog-backend-module-incremental-ingestion': patch
'@backstage/plugin-search-backend-node': patch
---
Changed to use native `AbortController` and `AbortSignal` from Node.js, instead
of the one from `node-abort-controller`. This is possible now that the minimum
supported Node.js version of the project is 16.
Note that their interfaces are very slightly different, but typically not in a
way that matters to consumers. If you see any typescript errors as a direct
result from this, they are compatible with each other in the ways that we
interact with them, and should be possible to type-cast across without ill
effects.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog-backend': patch
---
Fixed deprecated use of `substr` into `substring`.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/backend-plugin-api': minor
---
**BREAKING**: All core service references are now exported via a single `coreServices` object. For example, the `loggerServiceRef` is now accessed via `coreServices.logger` instead.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog': minor
---
Removed `CatalogKindHeader` from `DefaultCatalogPage`. Deprecated `CatalogKindHeader` in favour of `EntityKindPicker`.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/core-components': patch
---
Made AlertDisplay not crash on undefined messages
+12
View File
@@ -0,0 +1,12 @@
---
'@backstage/plugin-events-backend-module-github': patch
---
Add `createGithubSignatureValidator(config)` which can be used
to create a validator used at an ingress for topic `github`.
On top, there is a new `githubWebhookEventsModule` for the new backend plugin API
which auto-registers the `HttpPostIngress` for topic `github` incl. the validator.
Please find more information at
https://github.com/backstage/backstage/tree/master/plugins/events-backend-module-github/README.md.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-jenkins-backend': patch
---
Remove unnecessary dependency promise-any-polyfill
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/backend-common': patch
'@backstage/plugin-catalog-backend': patch
---
Adds MySQL support for the catalog-backend
+14
View File
@@ -0,0 +1,14 @@
---
'@backstage/plugin-catalog-backend-module-github': patch
---
Handle GitHub `push` events at the `GithubEntityProvider` by subscribing to the topic `github.push.`
Implements `EventSubscriber` to receive events for the topic `github.push`.
On `github.push`, the affected repository will be refreshed.
This includes adding new Location entities, refreshing existing ones,
and removing obsolete ones.
Please find more information at
https://backstage.io/docs/integrations/github/discovery#installation-with-events-support
+9
View File
@@ -0,0 +1,9 @@
---
'@backstage/plugin-adr': patch
'@backstage/plugin-catalog': patch
'@backstage/plugin-search-react': patch
'@backstage/plugin-stack-overflow': patch
'@backstage/plugin-techdocs': patch
---
Update search links to only have header as linkable text
+42 -1
View File
@@ -187,7 +187,10 @@
"@backstage/plugin-user-settings-backend": "0.1.2",
"@backstage/plugin-vault": "0.1.5",
"@backstage/plugin-vault-backend": "0.2.4",
"@backstage/plugin-xcmetrics": "0.2.31"
"@backstage/plugin-xcmetrics": "0.2.31",
"@backstage/plugin-catalog-backend-module-incremental-ingestion": "0.0.0",
"@backstage/plugin-explore-backend": "0.0.0",
"@backstage/plugin-explore-common": "0.0.0"
},
"changesets": [
"angry-dingos-lick",
@@ -197,38 +200,76 @@
"clever-pillows-drive",
"clever-rivers-obey",
"create-app-1669131574",
"create-app-1669720399",
"early-hairs-switch",
"early-parrots-guess",
"eight-spiders-know",
"eight-tables-hunt",
"fair-walls-talk",
"famous-cobras-suffer",
"fast-lies-remain",
"fluffy-walls-approve",
"forty-baboons-burn",
"four-adults-provide",
"four-buttons-clean",
"fresh-news-push",
"funny-numbers-compete",
"gold-icons-cheat",
"gold-yaks-join",
"gorgeous-hairs-applaud",
"healthy-crabs-collect",
"hip-chairs-tap",
"hip-stingrays-kneel",
"itchy-walls-boil",
"kind-walls-share",
"light-snakes-exercise",
"light-turtles-yawn",
"loud-rockets-reply",
"modern-mugs-shout",
"nasty-melons-build",
"nervous-mice-flow",
"new-bugs-march",
"nine-ears-whisper",
"old-bulldogs-fry",
"old-keys-leave",
"old-tips-cough",
"pretty-eagles-matter",
"pretty-melons-taste",
"quick-horses-cry",
"renovate-3fe8460",
"renovate-4bb70f3",
"renovate-50ee0c3",
"renovate-778b2fa",
"renovate-a5f7839",
"rich-balloons-leave",
"rich-garlics-play",
"rude-pugs-deny",
"rude-sloths-cross",
"search-heavy-frogs-confess",
"search-om-manniskan-ginge",
"search-tofu-panaeng",
"serious-windows-occur",
"silly-wolves-remember",
"slow-dragons-promise",
"slow-eggs-grab",
"slow-flies-marinate",
"slow-flies-marry",
"smart-radios-change",
"soft-nails-arrive",
"sour-flowers-care",
"sour-plums-grow",
"sour-queens-wait",
"stupid-clocks-return",
"stupid-gifts-serve",
"tender-colts-greet",
"tender-parrots-cover",
"thin-donuts-join",
"twelve-meals-smell",
"twenty-dodos-wash",
"warm-parents-notice",
"weak-ears-jam",
"wicked-games-search",
"yellow-forks-knock",
"young-turkeys-relax"
]
}
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-bazaar-backend': patch
---
Column `title` has replaced column `name` for `BazaarProject` in database
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/cli': patch
---
JSX and React Fast Refresh transforms are no longer enabled when bundling backend code.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-org': patch
---
Update `UserProfileCard` and `GroupProfileCard` to not render links unless the `showLinks` prop is set. The primary component for rendering links are the `EntityLinksCard` from plugin-catalog.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/cli': patch
---
Updated dependency `minimatch` to `5.1.1` and switch version range to `^`.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/cli': patch
---
Updated dependency `@rollup/plugin-commonjs` to `^23.0.0`.
+17
View File
@@ -0,0 +1,17 @@
---
'@backstage/core-app-api': patch
'@backstage/core-components': patch
'@backstage/core-plugin-api': patch
'@backstage/dev-utils': patch
'@backstage/test-utils': patch
'@backstage/types': patch
'@backstage/plugin-catalog-react': patch
'@backstage/plugin-catalog': patch
'@backstage/plugin-config-schema': patch
'@backstage/plugin-scaffolder-backend': patch
'@backstage/plugin-scaffolder': patch
'@backstage/plugin-shortcuts': patch
'@backstage/plugin-user-settings': patch
---
Updated dependency `zen-observable` to `^0.10.0`.
+8
View File
@@ -0,0 +1,8 @@
---
'@backstage/core-components': patch
'@backstage/plugin-gcp-projects': patch
'@backstage/plugin-scaffolder': patch
'@backstage/plugin-techdocs-module-addons-contrib': patch
---
Updated dependency `@react-hookz/web` to `^19.0.0`.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/cli': patch
---
Updated dependency `@rollup/plugin-yaml` to `^4.0.0`.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/cli': patch
---
Updated dependency `@rollup/plugin-json` to `^5.0.0`.
+27
View File
@@ -0,0 +1,27 @@
---
'@backstage/plugin-catalog-backend': minor
---
The catalog no longer stops after the first processor `validateEntityKind`
method returns `true` when validating entity kind shapes. Instead, it continues
through all registered processors that have this method, and requires that _at
least one_ of them returned true.
The old behavior of stopping early made it harder to extend existing core kinds
with additional fields, since the `BuiltinKindsEntityProcessor` is always
present at the top of the processing chain and ensures that your additional
validation code would never be run.
This is technically a breaking change, although it should not affect anybody
under normal circumstances, except if you had problematic validation code that
you were unaware that it was not being run. That code may now start to exhibit
those problems.
If you need to disable this new behavior, `CatalogBuilder` as used in your
`packages/backend/src/plugins/catalog.ts` file now has a
`useLegacySingleProcessorValidation()` method to go back to the old behavior.
```diff
const builder = await CatalogBuilder.create(env);
+builder.useLegacySingleProcessorValidation();
```
+14
View File
@@ -0,0 +1,14 @@
---
'@backstage/plugin-explore': patch
'@backstage/plugin-explore-backend': patch
'@backstage/plugin-explore-common': patch
'@backstage/plugin-explore-react': patch
---
Added new `@backstage/plugin-explore-backend` & `@backstage/plugin-explore-common` packages.
This deprecates the `ExploreToolsConfig` API (in `@backstage/plugin-explore-react`) which is replaced by the `ExploreApi` & `ExploreClient`. The list of `ExploreTool` data can now be provided on the backend by either using the supplied `StaticExploreToolProvider` or by implementing a custom `ExploreToolProvider`. See the [explore-backend README](https://github.com/backstage/backstage/blob/master/plugins/explore-backend/README.md) for full details.
NOTE: Existing installations that have customized the `ExploreToolConfig` will continue to work through the new `ExploreClient`. However, existing data should be migrated over to new `explore-backend` plugin as `ExploreToolConfig` will be removed in the future.
BREAKING CHANGE: If you have previously installed the `explore` plugin, but not yet customized the `ExploreToolConfig` API in your `packages/app`, this will result in an empty list of tools.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-search-backend-module-elasticsearch': patch
---
Fixed a bug that prevented indices from being cleaned up under some circumstances, which could have led to shard exhaustion.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-search-backend-node': patch
---
Use of `TestPipeline.withSubject()` is now deprecated. Instead, use the `fromCollator`, `fromDecorator`, or `fromIndexer` static methods to instantiate a test pipeline. You may also use the class' `withCollator`, `withDecorator`, and `withIndexer` instance methods to build test pipelines that consist of multiple test subjects.
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/plugin-analytics-module-ga': patch
---
Added support for sending virtual pageviews on `search` events in order to enable
Site Search functionality in GA. For more information consult [README](/plugins/analytics-module-ga/README.md#enabling-site-search)
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog-graph': patch
---
Set the default `maxDepth` prop for `EntityRelationsGraph` to a smaller value to provide better readability.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-search-common': minor
---
numberOfResults (total number of results for a given query) can now be provided by each search engine and consumed as part of the search results response
+8
View File
@@ -0,0 +1,8 @@
---
'@backstage/repo-tools': minor
---
Api reference documentation improvements
- breadcrumbs links semantics as code spans
- new `@config` annotation to describe related config keys
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-events-backend-module-aws-sqs': patch
---
Upgrade to AWS SDK for Javascript v3
+8
View File
@@ -0,0 +1,8 @@
---
'@backstage/plugin-techdocs-node': patch
---
Upgrade to AWS SDK for Javascript v3
Techdocs support for AWS S3 now requires defining the AWS region to connect to.
If `techdocs.publisher.awsS3.region` is missing from the config, the AWS environment variable `AWS_REGION` will be used.
+11
View File
@@ -0,0 +1,11 @@
---
'@backstage/backend-common': patch
'@backstage/cli': patch
'@backstage/cli-common': patch
'@backstage/core-app-api': patch
'@backstage/core-components': patch
'@backstage/dev-utils': patch
'@techdocs/cli': patch
---
Tweaked wording to use inclusive terminology
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/backend-common': patch
---
Fixed `SingleHostDiscovery` so that it properly handles single-string `backend.listen` configurations such as `:80`.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/repo-tools': patch
---
add the command type-deps to the repo tool package.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog-backend': minor
---
The search table also holds the original entity value now and the facets endpoint fetches the filtered entity data from the search table.
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/core-components': patch
'@backstage/test-utils': patch
---
Sync components in @backstage/core-components with the Component Design Guidelines
+12
View File
@@ -0,0 +1,12 @@
---
'@backstage/plugin-events-backend-module-gitlab': patch
---
Add `createGitlabTokenValidator(config)` which can be used
to create a validator used at an ingress for topic `gitlab`.
On top, there is a new `gitlabWebhookEventsModule` for the new backend plugin API
which auto-registers the `HttpPostIngress` for topic `gitlab` incl. the validator.
Please find more information at
https://github.com/backstage/backstage/tree/master/plugins/events-backend-module-gitlab/README.md.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-proxy-backend': patch
---
Documented the `createRouter` method.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-cost-insights': patch
---
added an optional config entry `costInsights.engineerThreshold` to allow users to control the threshold value for the 'negligible' change in costs.
+5
View File
@@ -21,5 +21,10 @@
groupName: 'SVGR monorepo packages',
rangeStrategy: 'replace',
},
// We update yarn packages manually as it's gzip'd and we don't want to pollute the repository too much.
{
matchSourceUrls: ['https://github.com/yarnpkg/berry'],
enabled: false,
},
],
}
+2 -2
View File
@@ -27,8 +27,8 @@ jobs:
with:
ref: '${{ github.event.pull_request.merge_commit_sha }}'
- name: fetch base
run: git fetch --depth 1 origin ${{ github.event.pull_request.base.sha }}
- name: fetch head & base
run: git fetch --depth 1 origin ${{ github.event.pull_request.head.sha }} ${{ github.event.pull_request.base.sha }}
# We avoid using the in-source script since this workflow has elevated permissions that we don't want to expose
- name: Generate Message
+1 -1
View File
@@ -8,7 +8,7 @@ jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v5
- uses: actions/stale@v6
id: stale
with:
stale-issue-message: >
+1
View File
@@ -12,6 +12,7 @@ jobs:
needs_release: ${{ steps.release_check.outputs.needs_release }}
strategy:
fail-fast: false
matrix:
node-version: [16.x, 18.x]
+3 -1
View File
@@ -26,7 +26,9 @@ jobs:
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v3
- uses: actions/setup-python@v4
with:
python-version: '3.9'
- name: install dependencies
run: yarn install --immutable
+1 -1
View File
@@ -49,7 +49,7 @@ jobs:
with:
node-version: ${{ matrix.node-version }}
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1.0.3
uses: microsoft/setup-msbuild@v1.1.3
- name: setup chrome
uses: browser-actions/setup-chrome@latest
- name: yarn install
+1
View File
@@ -373,6 +373,7 @@ auth:
development: {}
costInsights:
engineerCost: 200000
engineerThreshold: 0.5
products:
computeEngine:
name: Compute Engine
@@ -48,7 +48,7 @@ Once you've saved the action, you should see an authentication flow be triggered
### Frontend
The Backstage App needs a SignInPage when authentication is required.
When using ALB authentication Backstage will only be loaded once the user has successfully authenticated; we won't need to display a SignIn page, however we will need to create a dummy SignIn component that can refresh the token.
When using ALB authentication Backstage will only be loaded once the user has successfully authenticated; we won't need to display a SignIn page, however we will need to create a placeholder SignIn component that can refresh the token.
- edit `packages/app/src/App.tsx`
- import the following two additional definitions from `@backstage/core-plugin-api`: `useApi`, `configApiRef`; these will be used to check whether Backstage is running locally or behind an ALB
@@ -59,7 +59,7 @@ import React from 'react';
import { UserIdentity } from '@backstage/core-components';
import { SignInPageProps } from '@backstage/core-app-api';
const DummySignInComponent: any = (props: SignInPageProps) => {
const SampleSignInComponent: any = (props: SignInPageProps) => {
const [error, setError] = React.useState<string | undefined>();
const config = useApi(configApiRef);
React.useEffect(() => {
@@ -102,13 +102,13 @@ const DummySignInComponent: any = (props: SignInPageProps) => {
};
```
- add `DummySignInComponent` as `SignInPage`:
- add `SampleSignInComponent` as `SignInPage`:
```ts
const app = createApp({
...
components: {
SignInPage: DummySignInComponent,
SignInPage: SampleSignInComponent,
...
},
...
+1 -1
View File
@@ -54,7 +54,7 @@ begun work on various aspects of all three phases. Looking at the
[milestones for active issues](https://github.com/backstage/backstage/milestones)
will also give you a sense of our progress.
### My company doesn't have thousands of developers or services. Is Backstage overkill?
### My company doesn't have thousands of developers or services. Is using Backstage excessive for our needs?
Not at all! A core reason to adopt Backstage is to standardize how software is
built at your company. It's easier to decide on those standards as a small
@@ -10,7 +10,7 @@ description: Architecture Decision Record (ADR) for Luxon Date Library
Date formatting (e.g. `a day ago`) and calculations are common within Backstage.
Some of these useful features are not supported by the standard JavaScript
`Date` object. The popular [Moment.js](https://momentjs.com/) library has been
commonly used to fill this gap but suffers from large bundle sizes and mutable
commonly used to fill this gap but is affected by large bundle sizes and mutable
state issues. On top of this, `momentjs` is
[being sunset](https://momentjs.com/docs/#/-project-status/) and the project
recommends using one of the more modern alternative libraries.
+1 -1
View File
@@ -63,7 +63,7 @@ export default async function createPlugin(
// and the access token and produces the Backstage token with the
// relevant user info.
async resolver({ profile, result }, ctx) {
// Somehow compute the Backstage token claims. Just some dummy code
// Somehow compute the Backstage token claims. Just some sample code
// shown here, but you may want to query your LDAP server, or
// https://<teamName>.cloudflareaccess.com/cdn-cgi/access/get-identity
// https://developers.cloudflare.com/cloudflare-one/identity/users/validating-json/#groups-within-a-jwt
+1 -1
View File
@@ -70,7 +70,7 @@ export default async function createPlugin(
// and the IAP token and produces the Backstage token with the
// relevant user info.
async resolver({ profile, result: { iapToken } }, ctx) {
// Somehow compute the Backstage token claims. Just some dummy code
// Somehow compute the Backstage token claims. Just some sample code
// shown here, but you may want to query your LDAP server, or
// GSuite or similar, based on the IAP token sub/email claims
const id = iapToken.email.split('@')[0];
+1 -1
View File
@@ -256,7 +256,7 @@ bash-5.1# exit
The database pod is running, but how does another pod connect to it?
Kubernetes pods are transient - they can be killed, restarted, or created
Kubernetes pods are transient - they can be stopped, restarted, or created
dynamically. Therefore we don't want to try to connect to pods directly, but
rather create a Kubernetes Service. Services keep track of pods and direct
traffic to the right place.
+4
View File
@@ -279,6 +279,8 @@ an example:
</SearchResult>
```
> For more advanced customization of the Search frontend, also see how to guides such as [How to implement your own Search API](./how-to-guides.md#how-to-implement-your-own-search-api) and [How to customize search results highlighting styling](./how-to-guides.md#how-to-customize-search-results-highlighting-styling)
### Backend
Backstage Search isn't a search engine itself, rather, it provides an interface
@@ -380,3 +382,5 @@ indexBuilder.addCollator({
}),
});
```
> For more advanced customization of the Search backend, also see how to guides such as [How to index TechDocs documents](./how-to-guides.md#how-to-index-techdocs-documents) and [How to limit what can be searched in the Software Catalog](./how-to-guides.md#how-to-limit-what-can-be-searched-in-the-software-catalog)
@@ -360,7 +360,7 @@ Fields of a link are:
_NOTE_: The `icon` field value is meant to be a semantic key that will map to a
specific icon that may be provided by an icon library (e.g. `material-ui`
icons). These keys should be a sequence of `[a-z0-9A-Z]`, possibly separated by
one of `[-_.]`. Backstage may support some basic icons out of the box, but the
one of `[-_.]`. Backstage may support some basic icons out of the box such as those [defined in app-defaults](https://github.com/backstage/backstage/blob/master/packages/app-defaults/src/defaults/icons.tsx), but the
Backstage integrator will ultimately be left to provide the appropriate icon
component mappings. A generic fallback icon would be provided if a mapping
cannot be resolved.
@@ -50,7 +50,7 @@ components need to be in a known machine-readable format so we can build further
tooling and analysis on top.
APIs have a visibility: they are either public (making them available for any
other component to consume), restricted (only available to a whitelisted set of
other component to consume), restricted (only available to an allowlisted set of
consumers), or private (only available within their system). As public APIs are
going to be the primary way interaction between components, Backstage supports
documenting, indexing and searching all APIs so we can browse them as
@@ -76,6 +76,9 @@ an entity to function. It can for example be used to express that a website
component needs a library component as part of its build, or that a service
component uses a persistent storage resource.
This relation is commonly generated based on `spec.dependsOn` of the component
or resource in question.
### `parentOf` and `childOf`
A parent/child relation to build up a tree, used for example to describe the
+1 -1
View File
@@ -235,7 +235,7 @@ details.
You need to make sure that your environment is able to authenticate with the
target cloud provider. `techdocs-cli` uses the official Node.js clients provided
by AWS (v2), Google Cloud and Azure. You can authenticate using environment
by AWS (v3), Google Cloud and Azure. You can authenticate using environment
variables and/or by other means (`~/.aws/credentials`, `~/.config/gcloud` etc.)
Refer to the Authentication section of the following documentation depending
+3 -3
View File
@@ -108,8 +108,8 @@ techdocs:
# (Optional) An API key is required to write to a storage bucket.
# If not set, environment variables or aws config file will be used to authenticate.
# https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/loading-node-credentials-environment.html
# https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/loading-node-credentials-shared.html
# https://www.npmjs.com/package/@aws-sdk/credential-provider-node
# https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-credentials-node.html
credentials:
accessKeyId: ${TECHDOCS_AWSS3_ACCESS_KEY_ID_CREDENTIAL}
secretAccessKey: ${TECHDOCS_AWSS3_SECRET_ACCESS_KEY_CREDENTIAL}
@@ -121,7 +121,7 @@ techdocs:
# (Optional) Endpoint URI to send requests to.
# If not set, the default endpoint is built from the configured region.
# https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#constructor-property
# https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-s3/interfaces/s3clientconfig.html#endpoint
endpoint: ${AWS_ENDPOINT}
# (Optional) Whether to use path style URLs when communicating with S3.
@@ -145,6 +145,8 @@ jobs:
- uses: actions/setup-node@v3
- uses: actions/setup-python@v4
with:
python-version: '3.9'
# the 2 steps below can be removed if you aren't using plantuml in your documentation
- name: setup java
+8 -11
View File
@@ -219,22 +219,19 @@ If the environment variables
- `AWS_REGION`
are set and can be used to access the bucket you created in step 2, they will be
used by the AWS SDK V2 Node.js client for authentication.
[Refer to the official documentation for loading credentials in Node.js from environment variables](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/loading-node-credentials-environment.html).
used by the AWS SDK V3 Node.js client for authentication.
[Refer to the official documentation for loading credentials in Node.js from environment variables](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/loading-node-credentials-environment.html).
If the environment variables are missing, the AWS SDK tries to read the
`~/.aws/credentials` file for credentials.
[Refer to the official documentation.](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/loading-node-credentials-shared.html)
[Refer to the official documentation.](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/loading-node-credentials-shared.html)
If you are using Amazon EC2 instance to deploy Backstage, you do not need to
obtain the access keys separately. They can be made available in the environment
automatically by defining appropriate IAM role with access to the bucket. Read
more in
If you are deploying Backstage to Amazon EC2, Amazon ECS, or Amazon EKS, you do
not need to obtain the access keys separately. They can be made available in the
environment automatically by defining appropriate IAM role with access to the
bucket. Read more in the
[official AWS documentation for using IAM roles.](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html#use-roles).
The AWS Region of the bucket is optional since TechDocs uses AWS SDK V2 and not
V3.
**4b. Authentication using app-config.yaml**
AWS credentials and region can be provided to the AWS SDK via `app-config.yaml`.
@@ -254,7 +251,7 @@ techdocs:
```
Refer to the
[official AWS documentation for obtaining the credentials](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/getting-your-credentials.html).
[official AWS documentation for obtaining the credentials](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-credentials-node.html).
**4c. Authentication using an assumed role** Users with multiple AWS accounts
may want to use a role for S3 storage that is in a different AWS account. Using
+2 -1
View File
@@ -29,8 +29,9 @@ After you have cloned the Backstage repository, you should run the following
commands once to set things up for development:
```bash
$ yarn install # fetch dependency packages - may take a while
$ cd backstage # change to root directory of project
$ yarn install # fetch dependency packages - may take a while
$ yarn tsc # does a first run of type generation and checks
```
+1 -1
View File
@@ -78,7 +78,7 @@ const routes = (
)
```
### 4. Update sidebar items
#### 4. Update sidebar items
Let's update the route for "Home" in the Backstage sidebar to point to the new homepage. We'll also add a Sidebar item to quickly open Catalog.
+47 -1
View File
@@ -14,7 +14,7 @@ organization and register entities matching the configured path. This can be
useful as an alternative to static locations or manually adding things to the
catalog. This is the preferred method for ingesting entities into the catalog.
## Installation
## Installation without Events Support
You will have to add the provider in the catalog initialization code of your
backend. They are not installed by default, therefore you have to add a
@@ -53,6 +53,52 @@ And then add the entity provider to your catalog builder:
}
```
## Installation with Events Support
Please follow the installation instructions at
- https://github.com/backstage/backstage/tree/master/plugins/events-backend/README.md
- https://github.com/backstage/backstage/tree/master/plugins/events-backend-module-github/README.md
Additionally, you need to decide how you want to receive events from external sources like
- [via HTTP endpoint](https://github.com/backstage/backstage/tree/master/plugins/events-backend/README.md)
- [via an AWS SQS queue](https://github.com/backstage/backstage/tree/master/plugins/events-backend-module-aws-sqs/README.md)
Set up your provider
```diff
// packages/backend/src/plugins/catalogEventBasedProviders.ts
+import { GithubEntityProvider } from '@backstage/plugin-catalog-backend-module-github';
import { EntityProvider } from '@backstage/plugin-catalog-node';
import { EventSubscriber } from '@backstage/plugin-events-node';
import { PluginEnvironment } from '../types';
export default async function createCatalogEventBasedProviders(
- _: PluginEnvironment,
+ env: PluginEnvironment,
): Promise<Array<EntityProvider & EventSubscriber>> {
const providers: Array<
(EntityProvider & EventSubscriber) | Array<EntityProvider & EventSubscriber>
> = [];
- // add your event-based entity providers here
+ 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,
+ }),
+ );
return providers.flat();
}
```
You can check the official docs to [configure your webhook](https://docs.github.com/en/developers/webhooks-and-events/webhooks/creating-webhooks) and to [secure your request](https://docs.github.com/en/developers/webhooks-and-events/webhooks/securing-your-webhooks). The webhook will need to be configured to forward `push` events.
## Configuration
To use the discovery provider, you'll need a GitHub integration
+1 -1
View File
@@ -260,7 +260,7 @@ development dependency only.
It can sometimes be difficult to decide where to place your plugin code. For example
should it go directly in the `-backend` plugin package or in the `-node` package?
As a rule of thumb you should try to keep the exposure of your code as low
As a general guideline you should try to keep the exposure of your code as low
as possible. If it doesn't need to be public API, it's best to avoid. If you don't
need it to be used by other plugins, then keep it directly in the plugin packages.
+7 -7
View File
@@ -52,13 +52,13 @@ learn how to contribute the integration yourself!
The following table summarizes events that, depending on the plugins you have
installed, may be captured.
| Action | Subject | Other Notes |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------- |
| `navigate` | The URL of the page that was navigated to | |
| `click` | The text of the link that was clicked on | The `to` attribute represents the URL clicked to |
| `create` | The `name` of the software being created; if no `name` property is requested by the given Software Template, then the string `new {templateName}` is used instead. | The context holds an `entityRef`, set to the template's ref (e.g. `template:default/template-name`) |
| `search` | The search term entered in any search bar component | The context holds `searchTypes`, representing `types` constraining the search |
| `discover` | The title of the search result that was clicked on | The `value` is the result rank. A `to` attribute is also provided |
| Action | Subject | Other Notes |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `navigate` | The URL of the page that was navigated to | |
| `click` | The text of the link that was clicked on | The `to` attribute represents the URL clicked to |
| `create` | The `name` of the software being created; if no `name` property is requested by the given Software Template, then the string `new {templateName}` is used instead. | The context holds an `entityRef`, set to the template's ref (e.g. `template:default/template-name`) |
| `search` | The search term entered in any search bar component | - The context holds `searchTypes`, representing `types` constraining the search. The `value` represents the total number of search results for the query. This may not be visible if the permission framework is being used. |
| `discover` | The title of the search result that was clicked on | The `value` is the result rank. A `to` attribute is also provided |
If there is an event you'd like to see captured, please [open an
issue][add-event] describing the event you want to see and the questions it
+1 -1
View File
@@ -51,7 +51,7 @@ terminal window, now run
curl localhost:7007/carmen/health
```
This should return `{"status":"ok"}`. Success! Press `Ctrl + c` to kill it
This should return `{"status":"ok"}`. Success! Press `Ctrl + c` to stop it
again.
## Developing your Backend Plugin
+2 -2
View File
@@ -123,7 +123,7 @@ than simply letting them know they had an invalid input.
> input change.
This piggybacks the Scalability Principle and applies primarily to frontend
development. As a general rule of thumb, frontends should be flexible enough so
development. As a general guideline, frontends should be flexible enough so
that the UX or design can change while touching the least amount of code
possible. So for example, a poor unit test would verify the color of a button
when it is hovered. This would be a poor unit test, because if you decide to
@@ -353,7 +353,7 @@ For more information:
### Accessing `store`, `theme`, routing, browser history, etc.
The Backstage application has several core providers at its root. To run your
test wrapped in a "dummy" Backstage application, you can use our utility
test wrapped in a "sample" Backstage application, you can use our utility
functions:
**`wrapInTestApp`**
+1 -1
View File
@@ -268,7 +268,7 @@ async function main() {
```
This will be run every time you restart the backend. Note that after any change
in the URL Reader code, you need to kill the backend and restart, since the
in the URL Reader code, you need to stop the backend and restart, since the
`reader` instance is memoized and does not update on hot module reloading. Also,
there are a lot of unit tests written for the URL Readers, which you can make
use of.
File diff suppressed because it is too large Load Diff
@@ -21,8 +21,8 @@ instance or cluster.
With infrastructure defined as code or data (Terraform, AWS CloudFormation,
etc.), you may have database credentials which lack permissions to create new
databases or you do not have control over the database names. In these
instances, you can set the database name and connection information on a per
plugin basis as mentioned earlier.
instances, you can set the database connection configuration on a [per plugin basis]
(#connection-configuration-per-plugin).
Backstage supports all of these use cases with the `DatabaseManager` provided by
`@backstage/backend-common`. We will now cover how to use and configure
@@ -29,7 +29,7 @@ We started by creating a fork from React Natives open source project, applyin
The Backstage Upgrade Helper tool enables adopters to easily upgrade their Backstage app by using the power of git to create a diff between different versions.
Whenever a new version of Backstage is released, the Helper scaffolds a new dummy Backstage app using the `backstage-create-app` cli utility and checks all the generated files in a specific git branch. After the branch is generated, it gets compared with all the existing ones, which results in generating specific git patches stored in specific files. By selecting the version of the current Backstage release together with the version you want to upgrade to, the UI knows which patch file needs to be picked up.
Whenever a new version of Backstage is released, the Helper scaffolds a new sample Backstage app using the `backstage-create-app` cli utility and checks all the generated files in a specific git branch. After the branch is generated, it gets compared with all the existing ones, which results in generating specific git patches stored in specific files. By selecting the version of the current Backstage release together with the version you want to upgrade to, the UI knows which patch file needs to be picked up.
So, now you can update your Backstage application in three steps rather than manually reading the changelogs of all the Backstage modules in reverse order.
+1 -1
View File
@@ -5,6 +5,6 @@ authorUrl: https://enfuse.io/
category: Discovery
description: Easily view your Azure Spring Apps service resources
documentation: https://github.com/enfuse/asae-backstage-plugin/blob/main/README.md
iconUrl: img/azure-spring-apps.png
iconUrl: img/enfuse.png
npmPackageName: '@enfuse/plugin-azure-spring-apps'
addedDate: '2022-11-21'
+2 -2
View File
@@ -21,7 +21,7 @@
"lint": "backstage-cli repo lint --since origin/master",
"lint:docs": "node ./scripts/check-docs-quality",
"lint:all": "backstage-cli repo lint",
"lint:type-deps": "node scripts/check-type-dependencies.js",
"lint:type-deps": "backstage-repo-tools type-deps",
"docker-build": "yarn tsc && yarn workspace example-backend build --build-dependencies && yarn workspace example-backend build-image",
"new": "backstage-cli new --scope backstage --baseVersion 0.0.0 --no-private",
"create-plugin": "echo \"use 'yarn new' instead\"",
@@ -46,7 +46,7 @@
"@types/react": "^17",
"@types/react-dom": "^17"
},
"version": "1.9.0-next.0",
"version": "1.9.0-next.1",
"dependencies": {
"@backstage/errors": "workspace:^",
"@manypkg/get-packages": "^1.1.3"
+11
View File
@@ -1,5 +1,16 @@
# @backstage/app-defaults
## 1.0.9-next.1
### Patch Changes
- Updated dependencies
- @backstage/core-app-api@1.2.1-next.1
- @backstage/core-components@0.12.1-next.1
- @backstage/core-plugin-api@1.1.1-next.1
- @backstage/plugin-permission-react@0.4.8-next.1
- @backstage/theme@0.2.16
## 1.0.9-next.0
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@backstage/app-defaults",
"description": "Provides the default wiring of a Backstage App",
"version": "1.0.9-next.0",
"version": "1.0.9-next.1",
"publishConfig": {
"access": "public",
"main": "dist/index.esm.js",
+63
View File
@@ -1,5 +1,68 @@
# example-app
## 0.2.78-next.1
### Patch Changes
- Updated dependencies
- @backstage/core-app-api@1.2.1-next.1
- @backstage/core-components@0.12.1-next.1
- @backstage/plugin-cloudbuild@0.3.12-next.1
- @backstage/plugin-gcp-projects@0.3.31-next.1
- @backstage/plugin-github-actions@0.5.12-next.1
- @backstage/plugin-graphiql@0.2.44-next.1
- @backstage/plugin-techdocs@1.4.1-next.1
- @backstage/plugin-cost-insights@0.12.1-next.1
- @backstage/plugin-search-react@1.2.2-next.1
- @backstage/plugin-stack-overflow@0.1.8-next.1
- @backstage/cli@0.21.2-next.1
- @backstage/plugin-org@0.6.2-next.1
- @backstage/core-plugin-api@1.1.1-next.1
- @backstage/plugin-catalog-react@1.2.2-next.1
- @backstage/plugin-scaffolder@1.9.0-next.1
- @backstage/plugin-shortcuts@0.3.4-next.1
- @backstage/plugin-user-settings@0.6.0-next.1
- @backstage/plugin-explore@0.3.43-next.1
- @backstage/app-defaults@1.0.9-next.1
- @backstage/plugin-apache-airflow@0.2.5-next.1
- @backstage/plugin-api-docs@0.8.12-next.1
- @backstage/plugin-azure-devops@0.2.3-next.1
- @backstage/plugin-azure-sites@0.1.1-next.1
- @backstage/plugin-badges@0.2.36-next.1
- @backstage/plugin-catalog-graph@0.2.24-next.1
- @backstage/plugin-catalog-import@0.9.2-next.1
- @backstage/plugin-circleci@0.3.12-next.1
- @backstage/plugin-code-coverage@0.2.5-next.1
- @backstage/plugin-dynatrace@1.0.2-next.1
- @backstage/plugin-gcalendar@0.3.8-next.1
- @backstage/plugin-gocd@0.1.18-next.1
- @backstage/plugin-home@0.4.28-next.1
- @backstage/plugin-jenkins@0.7.11-next.1
- @backstage/plugin-kafka@0.3.12-next.1
- @backstage/plugin-kubernetes@0.7.5-next.1
- @backstage/plugin-lighthouse@0.3.12-next.1
- @backstage/plugin-newrelic@0.3.30-next.1
- @backstage/plugin-pagerduty@0.5.5-next.1
- @backstage/plugin-playlist@0.1.3-next.1
- @backstage/plugin-rollbar@0.4.12-next.1
- @backstage/plugin-search@1.0.5-next.1
- @backstage/plugin-sentry@0.4.5-next.1
- @backstage/plugin-tech-insights@0.3.4-next.1
- @backstage/plugin-tech-radar@0.5.19-next.1
- @backstage/plugin-techdocs-module-addons-contrib@1.0.7-next.1
- @backstage/plugin-todo@0.2.14-next.1
- @backstage/integration-react@1.1.7-next.1
- @backstage/plugin-airbrake@0.3.12-next.1
- @backstage/plugin-newrelic-dashboard@0.2.5-next.1
- @backstage/plugin-techdocs-react@1.0.7-next.1
- @internal/plugin-catalog-customized@0.0.5-next.1
- @backstage/config@1.0.5-next.1
- @backstage/plugin-permission-react@0.4.8-next.1
- @backstage/catalog-model@1.1.4-next.1
- @backstage/theme@0.2.16
- @backstage/plugin-catalog-common@1.0.9-next.1
- @backstage/plugin-search-common@1.1.2-next.1
## 0.2.78-next.0
### Patch Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "example-app",
"version": "0.2.78-next.0",
"version": "0.2.78-next.1",
"private": true,
"backstage": {
"role": "frontend"
@@ -80,7 +80,7 @@
"react-router": "^6.3.0",
"react-router-dom": "^6.3.0",
"react-use": "^17.2.4",
"zen-observable": "^0.9.0"
"zen-observable": "^0.10.0"
},
"devDependencies": {
"@backstage/test-utils": "workspace:^",
@@ -25,6 +25,7 @@ import {
Paper,
useTheme,
} from '@material-ui/core';
import BuildIcon from '@material-ui/icons/Build';
import LaunchIcon from '@material-ui/icons/Launch';
import {
CatalogIcon,
@@ -38,6 +39,7 @@ import {
catalogApiRef,
CATALOG_FILTER_EXISTS,
} from '@backstage/plugin-catalog-react';
import { ToolSearchResultListItem } from '@backstage/plugin-explore';
import { searchPlugin, SearchType } from '@backstage/plugin-search';
import {
DefaultResultListItem,
@@ -110,6 +112,10 @@ export const SearchModal = ({ toggleModal }: { toggleModal: () => void }) => {
value: 'techdocs',
name: 'Documentation',
},
{
value: 'tools',
name: 'Tools',
},
]}
/>
</Grid>
@@ -209,6 +215,17 @@ export const SearchModal = ({ toggleModal }: { toggleModal: () => void }) => {
/>
);
break;
case 'tools':
resultItem = (
<ToolSearchResultListItem
icon={<BuildIcon />}
key={document.location}
result={document}
highlight={highlight}
rank={rank}
/>
);
break;
default:
resultItem = (
<DefaultResultListItem
@@ -41,6 +41,8 @@ import {
import { TechDocsSearchResultListItem } from '@backstage/plugin-techdocs';
import { Grid, List, makeStyles, Paper, Theme } from '@material-ui/core';
import React from 'react';
import { ToolSearchResultListItem } from '@backstage/plugin-explore';
import BuildIcon from '@material-ui/icons/Build';
const useStyles = makeStyles((theme: Theme) => ({
bar: {
@@ -155,6 +157,16 @@ const SearchPage = () => {
rank={rank}
/>
);
case 'tools':
return (
<ToolSearchResultListItem
icon={<BuildIcon />}
key={document.location}
result={document}
highlight={highlight}
rank={rank}
/>
);
default:
return (
<DefaultResultListItem
+11
View File
@@ -1,5 +1,16 @@
# @backstage/backend-app-api
## 0.2.4-next.1
### Patch Changes
- Updated dependencies
- @backstage/backend-common@0.17.0-next.1
- @backstage/backend-tasks@0.4.0-next.1
- @backstage/backend-plugin-api@0.1.5-next.1
- @backstage/plugin-permission-node@0.7.2-next.1
- @backstage/errors@1.1.4-next.1
## 0.2.4-next.0
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@backstage/backend-app-api",
"description": "Core API used by Backstage backend apps",
"version": "0.2.4-next.0",
"version": "0.2.4-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"publishConfig": {
@@ -16,18 +16,16 @@
import { CacheManager } from '@backstage/backend-common';
import {
configServiceRef,
coreServices,
createServiceFactory,
pluginMetadataServiceRef,
cacheServiceRef,
} from '@backstage/backend-plugin-api';
/** @public */
export const cacheFactory = createServiceFactory({
service: cacheServiceRef,
service: coreServices.cache,
deps: {
config: configServiceRef,
plugin: pluginMetadataServiceRef,
config: coreServices.config,
plugin: coreServices.pluginMetadata,
},
async factory({ config }) {
const cacheManager = CacheManager.fromConfig(config);
@@ -16,17 +16,16 @@
import { loadBackendConfig } from '@backstage/backend-common';
import {
configServiceRef,
coreServices,
createServiceFactory,
loggerToWinstonLogger,
rootLoggerServiceRef,
} from '@backstage/backend-plugin-api';
/** @public */
export const configFactory = createServiceFactory({
service: configServiceRef,
service: coreServices.config,
deps: {
logger: rootLoggerServiceRef,
logger: coreServices.rootLogger,
},
async factory({ logger }) {
const config = await loadBackendConfig({
@@ -16,18 +16,16 @@
import { DatabaseManager } from '@backstage/backend-common';
import {
configServiceRef,
coreServices,
createServiceFactory,
databaseServiceRef,
pluginMetadataServiceRef,
} from '@backstage/backend-plugin-api';
/** @public */
export const databaseFactory = createServiceFactory({
service: databaseServiceRef,
service: coreServices.database,
deps: {
config: configServiceRef,
plugin: pluginMetadataServiceRef,
config: coreServices.config,
plugin: coreServices.pluginMetadata,
},
async factory({ config }) {
const databaseManager = DatabaseManager.fromConfig(config);
@@ -16,16 +16,15 @@
import { SingleHostDiscovery } from '@backstage/backend-common';
import {
configServiceRef,
coreServices,
createServiceFactory,
discoveryServiceRef,
} from '@backstage/backend-plugin-api';
/** @public */
export const discoveryFactory = createServiceFactory({
service: discoveryServiceRef,
service: coreServices.discovery,
deps: {
config: configServiceRef,
config: coreServices.config,
},
async factory({ config }) {
const discovery = SingleHostDiscovery.fromConfig(config);

Some files were not shown because too many files have changed in this diff Show More