Merge remote-tracking branch 'origin/master' into gcalendar
This commit is contained in:
@@ -2,6 +2,38 @@
|
||||
'@backstage/plugin-catalog-backend': minor
|
||||
---
|
||||
|
||||
**BREAKING**: Removed `GithubDiscoveryProcessor`, `GithubMultiOrgReaderProcessor`, `GitHubOrgEntityProvider`, `GithubOrgReaderProcessor`, and `GithubMultiOrgConfig` which now instead should be imported from `@backstage/plugin-catalog-backend-module-github`. NOTE THAT the `GithubDiscoveryProcessor` and `GithubOrgReaderProcessor` were part of the default set of processors in the catalog backend, and if you are a user of discovery or location based org ingestion on GitLab, you MUST now add them manually in the catalog initialization code of your backend.
|
||||
|
||||
```diff
|
||||
// In packages/backend/src/plugins/catalog.ts
|
||||
+import {
|
||||
+ GithubDiscoveryProcessor,
|
||||
+ GithubOrgReaderProcessor,
|
||||
+} from '@backstage/plugin-catalog-backend-module-github';
|
||||
+import {
|
||||
+ ScmIntegrations,
|
||||
+ DefaultGithubCredentialsProvider
|
||||
+} from '@backstage/integration';
|
||||
|
||||
export default async function createPlugin(
|
||||
env: PluginEnvironment,
|
||||
): Promise<Router> {
|
||||
const builder = await CatalogBuilder.create(env);
|
||||
+ const integrations = ScmIntegrations.fromConfig(config);
|
||||
+ const githubCredentialsProvider =
|
||||
+ DefaultGithubCredentialsProvider.fromIntegrations(integrations);
|
||||
+ builder.addProcessor(
|
||||
+ GithubDiscoveryProcessor.fromConfig(config, {
|
||||
+ logger,
|
||||
+ githubCredentialsProvider,
|
||||
+ }),
|
||||
+ GithubOrgReaderProcessor.fromConfig(config, {
|
||||
+ logger,
|
||||
+ githubCredentialsProvider,
|
||||
+ }),
|
||||
+ );
|
||||
```
|
||||
|
||||
**BREAKING**: Removed `GitLabDiscoveryProcessor`, which now instead should be imported from `@backstage/plugin-catalog-backend-module-gitlab`. NOTE THAT this processor was part of the default set of processors in the catalog backend, and if you are a user of discovery on GitLab, you MUST now add it manually in the catalog initialization code of your backend.
|
||||
|
||||
```diff
|
||||
@@ -17,4 +49,21 @@
|
||||
+ );
|
||||
```
|
||||
|
||||
**BREAKING**: Removed `BitbucketDiscoveryProcessor`, which now instead should be imported from `@backstage/plugin-catalog-backend-module-bitbucket`. NOTE THAT this processor was part of the default set of processors in the catalog backend, and if you are a user of discovery on Bitbucket, you MUST now add it manually in the catalog initialization code of your backend.
|
||||
|
||||
```diff
|
||||
// In packages/backend/src/plugins/catalog.ts
|
||||
+import { BitbucketDiscoveryProcessor } from '@backstage/plugin-catalog-backend-module-bitbucket';
|
||||
|
||||
export default async function createPlugin(
|
||||
env: PluginEnvironment,
|
||||
): Promise<Router> {
|
||||
const builder = await CatalogBuilder.create(env);
|
||||
+ builder.addProcessor(
|
||||
+ BitbucketDiscoveryProcessor.fromConfig(env.config, { logger: env.logger })
|
||||
+ );
|
||||
```
|
||||
|
||||
**BREAKING**: Removed `AzureDevOpsDiscoveryProcessor`, which now instead should be imported from `@backstage/plugin-catalog-backend-module-azure`. This processor was not part of the set of default processors. If you were using it, you should already have a reference to it in your backend code and only need to update the import.
|
||||
|
||||
**BREAKING**: Removed the formerly deprecated type `BitbucketRepositoryParser`, which is instead reintroduced in `@backstage/plugin-catalog-backend-module-bitbucket`.
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
build(deps-dev): bump `@types/npm-packlist` from 1.1.2 to 3.0.0
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-airbrake': patch
|
||||
---
|
||||
|
||||
Fix a bug where API calls were being made and errors were being added to the snack bar when no project ID was present. This is a common use case for components that haven't added the Airbrake plugin annotation to their `catalog-info.yaml`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog': patch
|
||||
---
|
||||
|
||||
Added an `allowedKinds` option to `CatalogKindHeader` to limit entity kinds available in the dropdown.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
---
|
||||
|
||||
Fixing the border color for the `FavoriteEntity` star button on the `TemplateCard`
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/backend-tasks': patch
|
||||
---
|
||||
|
||||
Add support for cron syntax to configure task frequency - `TaskScheduleDefinition.frequency` can now be both a `Duration` and an object on the form `{ cron: string }`, where the latter is expected to be on standard crontab format (e.g. `'0 */2 * * *'`).
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-github': minor
|
||||
---
|
||||
|
||||
Added package, moving out GitHub specific functionality from the catalog-backend
|
||||
@@ -0,0 +1,215 @@
|
||||
{
|
||||
"mode": "exit",
|
||||
"tag": "next",
|
||||
"initialVersions": {
|
||||
"example-app": "0.2.67",
|
||||
"@backstage/app-defaults": "0.2.0",
|
||||
"example-backend": "0.2.67",
|
||||
"@backstage/backend-common": "0.12.0",
|
||||
"@backstage/backend-tasks": "0.1.10",
|
||||
"@backstage/backend-test-utils": "0.1.20",
|
||||
"@backstage/catalog-client": "0.8.0",
|
||||
"@backstage/catalog-model": "0.12.0",
|
||||
"@backstage/cli": "0.15.0",
|
||||
"@backstage/cli-common": "0.1.8",
|
||||
"@backstage/codemods": "0.1.34",
|
||||
"@backstage/config": "0.1.15",
|
||||
"@backstage/config-loader": "0.9.6",
|
||||
"@backstage/core-app-api": "0.6.0",
|
||||
"@backstage/core-components": "0.9.0",
|
||||
"@backstage/core-plugin-api": "0.8.0",
|
||||
"@backstage/create-app": "0.4.22",
|
||||
"@backstage/dev-utils": "0.2.24",
|
||||
"e2e-test": "0.2.0",
|
||||
"@backstage/errors": "0.2.2",
|
||||
"@backstage/integration": "0.8.0",
|
||||
"@backstage/integration-react": "0.1.24",
|
||||
"@backstage/release-manifests": "0.0.2",
|
||||
"@backstage/search-common": "0.3.0",
|
||||
"@techdocs/cli": "0.8.16",
|
||||
"techdocs-cli-embedded-app": "0.2.66",
|
||||
"@backstage/techdocs-common": "0.11.11",
|
||||
"@backstage/test-utils": "0.3.0",
|
||||
"@backstage/theme": "0.2.15",
|
||||
"@backstage/types": "0.1.3",
|
||||
"@backstage/version-bridge": "0.1.2",
|
||||
"@backstage/plugin-airbrake": "0.3.1",
|
||||
"@backstage/plugin-airbrake-backend": "0.2.1",
|
||||
"@backstage/plugin-allure": "0.1.17",
|
||||
"@backstage/plugin-analytics-module-ga": "0.1.12",
|
||||
"@backstage/plugin-apache-airflow": "0.1.9",
|
||||
"@backstage/plugin-api-docs": "0.8.1",
|
||||
"@backstage/plugin-app-backend": "0.3.28",
|
||||
"@backstage/plugin-auth-backend": "0.12.0",
|
||||
"@backstage/plugin-auth-node": "0.1.4",
|
||||
"@backstage/plugin-azure-devops": "0.1.17",
|
||||
"@backstage/plugin-azure-devops-backend": "0.3.7",
|
||||
"@backstage/plugin-azure-devops-common": "0.2.2",
|
||||
"@backstage/plugin-badges": "0.2.25",
|
||||
"@backstage/plugin-badges-backend": "0.1.22",
|
||||
"@backstage/plugin-bazaar": "0.1.16",
|
||||
"@backstage/plugin-bazaar-backend": "0.1.12",
|
||||
"@backstage/plugin-bitrise": "0.1.28",
|
||||
"@backstage/plugin-catalog": "0.9.1",
|
||||
"@backstage/plugin-catalog-backend": "0.23.0",
|
||||
"@backstage/plugin-catalog-backend-module-aws": "0.1.1",
|
||||
"@backstage/plugin-catalog-backend-module-azure": "0.0.0",
|
||||
"@backstage/plugin-catalog-backend-module-gitlab": "0.0.0",
|
||||
"@backstage/plugin-catalog-backend-module-ldap": "0.3.15",
|
||||
"@backstage/plugin-catalog-backend-module-msgraph": "0.2.18",
|
||||
"@backstage/plugin-catalog-common": "0.2.0",
|
||||
"@backstage/plugin-catalog-graph": "0.2.13",
|
||||
"@backstage/plugin-catalog-graphql": "0.3.5",
|
||||
"@backstage/plugin-catalog-import": "0.8.4",
|
||||
"@backstage/plugin-catalog-react": "0.8.0",
|
||||
"@backstage/plugin-cicd-statistics": "0.1.3",
|
||||
"@backstage/plugin-circleci": "0.3.1",
|
||||
"@backstage/plugin-cloudbuild": "0.3.1",
|
||||
"@backstage/plugin-code-climate": "0.1.1",
|
||||
"@backstage/plugin-code-coverage": "0.1.28",
|
||||
"@backstage/plugin-code-coverage-backend": "0.1.26",
|
||||
"@backstage/plugin-config-schema": "0.1.24",
|
||||
"@backstage/plugin-cost-insights": "0.11.23",
|
||||
"@backstage/plugin-explore": "0.3.32",
|
||||
"@backstage/plugin-explore-react": "0.0.14",
|
||||
"@backstage/plugin-firehydrant": "0.1.18",
|
||||
"@backstage/plugin-fossa": "0.2.33",
|
||||
"@backstage/plugin-gcp-projects": "0.3.20",
|
||||
"@backstage/plugin-git-release-manager": "0.3.14",
|
||||
"@backstage/plugin-github-actions": "0.5.1",
|
||||
"@backstage/plugin-github-deployments": "0.1.32",
|
||||
"@backstage/plugin-gitops-profiles": "0.3.19",
|
||||
"@backstage/plugin-gocd": "0.1.7",
|
||||
"@backstage/plugin-graphiql": "0.2.33",
|
||||
"@backstage/plugin-graphql-backend": "0.1.18",
|
||||
"@backstage/plugin-home": "0.4.17",
|
||||
"@backstage/plugin-ilert": "0.1.27",
|
||||
"@backstage/plugin-jenkins": "0.7.0",
|
||||
"@backstage/plugin-jenkins-backend": "0.1.17",
|
||||
"@backstage/plugin-jenkins-common": "0.1.0",
|
||||
"@backstage/plugin-kafka": "0.3.1",
|
||||
"@backstage/plugin-kafka-backend": "0.2.21",
|
||||
"@backstage/plugin-kubernetes": "0.6.1",
|
||||
"@backstage/plugin-kubernetes-backend": "0.4.11",
|
||||
"@backstage/plugin-kubernetes-common": "0.2.6",
|
||||
"@backstage/plugin-lighthouse": "0.3.1",
|
||||
"@backstage/plugin-newrelic": "0.3.19",
|
||||
"@backstage/plugin-newrelic-dashboard": "0.1.9",
|
||||
"@backstage/plugin-org": "0.5.1",
|
||||
"@backstage/plugin-pagerduty": "0.3.28",
|
||||
"@backstage/plugin-periskop": "0.0.0",
|
||||
"@backstage/plugin-periskop-backend": "0.0.0",
|
||||
"@backstage/plugin-permission-backend": "0.5.3",
|
||||
"@backstage/plugin-permission-common": "0.5.2",
|
||||
"@backstage/plugin-permission-node": "0.5.3",
|
||||
"@backstage/plugin-permission-react": "0.3.3",
|
||||
"@backstage/plugin-proxy-backend": "0.2.22",
|
||||
"@backstage/plugin-rollbar": "0.4.1",
|
||||
"@backstage/plugin-rollbar-backend": "0.1.25",
|
||||
"@backstage/plugin-scaffolder": "0.14.0",
|
||||
"@backstage/plugin-scaffolder-backend": "0.17.3",
|
||||
"@backstage/plugin-scaffolder-backend-module-cookiecutter": "0.2.3",
|
||||
"@backstage/plugin-scaffolder-backend-module-rails": "0.3.3",
|
||||
"@backstage/plugin-scaffolder-backend-module-yeoman": "0.2.1",
|
||||
"@backstage/plugin-scaffolder-common": "0.2.3",
|
||||
"@backstage/plugin-search": "0.7.2",
|
||||
"@backstage/plugin-search-backend": "0.4.6",
|
||||
"@backstage/plugin-search-backend-module-elasticsearch": "0.1.0",
|
||||
"@backstage/plugin-search-backend-module-pg": "0.3.0",
|
||||
"@backstage/plugin-search-backend-node": "0.5.0",
|
||||
"@backstage/plugin-search-common": "0.3.0",
|
||||
"@backstage/plugin-sentry": "0.3.39",
|
||||
"@backstage/plugin-shortcuts": "0.2.2",
|
||||
"@backstage/plugin-sonarqube": "0.3.1",
|
||||
"@backstage/plugin-splunk-on-call": "0.3.25",
|
||||
"@backstage/plugin-tech-insights": "0.1.11",
|
||||
"@backstage/plugin-tech-insights-backend": "0.2.8",
|
||||
"@backstage/plugin-tech-insights-backend-module-jsonfc": "0.1.12",
|
||||
"@backstage/plugin-tech-insights-common": "0.2.3",
|
||||
"@backstage/plugin-tech-insights-node": "0.2.6",
|
||||
"@backstage/plugin-tech-radar": "0.5.8",
|
||||
"@backstage/plugin-techdocs": "0.15.0",
|
||||
"@backstage/plugin-techdocs-backend": "0.14.1",
|
||||
"@backstage/plugin-techdocs-node": "0.11.11",
|
||||
"@backstage/plugin-todo": "0.2.3",
|
||||
"@backstage/plugin-todo-backend": "0.1.25",
|
||||
"@backstage/plugin-user-settings": "0.4.0",
|
||||
"@backstage/plugin-xcmetrics": "0.2.21"
|
||||
},
|
||||
"changesets": [
|
||||
"beige-lies-pay",
|
||||
"big-meals-fly",
|
||||
"big-months-deliver",
|
||||
"brave-brooms-tie",
|
||||
"brown-points-impress",
|
||||
"chilly-comics-jam",
|
||||
"clever-garlics-rescue",
|
||||
"curvy-forks-cross",
|
||||
"dependabot-4014eb7",
|
||||
"dependabot-ae5fb9c",
|
||||
"dependabot-d2397d3",
|
||||
"fair-ants-look",
|
||||
"fair-roses-hide",
|
||||
"fair-turtles-fetch",
|
||||
"fifty-brooms-whisper",
|
||||
"fuzzy-roses-swim",
|
||||
"gentle-dancers-greet",
|
||||
"great-hounds-allow",
|
||||
"kind-experts-lay",
|
||||
"late-pianos-attend",
|
||||
"lazy-points-explain",
|
||||
"many-coins-drive",
|
||||
"many-swans-sort",
|
||||
"many-tools-buy",
|
||||
"mean-panthers-wonder",
|
||||
"metal-glasses-join",
|
||||
"modern-windows-brush",
|
||||
"nasty-seahorses-bathe",
|
||||
"neat-tools-design",
|
||||
"new-books-protect",
|
||||
"nice-windows-push",
|
||||
"nine-frogs-yell",
|
||||
"olive-emus-speak",
|
||||
"olive-roses-sleep",
|
||||
"pink-poets-grin",
|
||||
"polite-apples-relax",
|
||||
"popular-boxes-develop",
|
||||
"popular-rats-return",
|
||||
"pretty-vans-unite",
|
||||
"proud-readers-nail",
|
||||
"quiet-pens-wait",
|
||||
"quiet-seals-fix",
|
||||
"red-kiwis-divide",
|
||||
"rich-ravens-clap",
|
||||
"search-byta-namnet",
|
||||
"search-common-people",
|
||||
"search-talking-in-code",
|
||||
"search-wellington-paranormal",
|
||||
"shaggy-apricots-hug",
|
||||
"shiny-eels-mix",
|
||||
"silent-cats-kneel",
|
||||
"slow-vans-rhyme",
|
||||
"something-else-here",
|
||||
"spotty-seals-press",
|
||||
"spotty-swans-run",
|
||||
"strong-beds-attack",
|
||||
"strong-pandas-roll",
|
||||
"swift-mails-sing",
|
||||
"tasty-carpets-fold",
|
||||
"techdocs-byta-namnet",
|
||||
"techdocs-empty-office",
|
||||
"techdocs-node-one",
|
||||
"ten-queens-dance",
|
||||
"ten-rats-join",
|
||||
"tender-berries-lie",
|
||||
"thick-games-dress",
|
||||
"thick-gifts-cheat",
|
||||
"twenty-birds-think",
|
||||
"twenty-fireants-turn",
|
||||
"twenty-planes-dress",
|
||||
"two-mails-boil",
|
||||
"warm-bananas-behave",
|
||||
"weak-schools-wash",
|
||||
"young-feet-flow"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes-backend': patch
|
||||
---
|
||||
|
||||
refactor kubernetes fetcher
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-bitbucket': minor
|
||||
---
|
||||
|
||||
Added package, moving out Bitbucket specific functionality from the catalog-backend
|
||||
@@ -24,7 +24,7 @@ backported
|
||||
backporting
|
||||
Bigtable
|
||||
Billett
|
||||
Bitbucket
|
||||
bitbucket
|
||||
Bitrise
|
||||
Blackbox
|
||||
bool
|
||||
@@ -61,6 +61,7 @@ const
|
||||
cookiecutter
|
||||
cron
|
||||
cronjobs
|
||||
crontab
|
||||
css
|
||||
Datadog
|
||||
dataflow
|
||||
@@ -102,7 +103,7 @@ Firekube
|
||||
Firestore
|
||||
Fiverr
|
||||
gitbeaker
|
||||
GitHub
|
||||
github
|
||||
gitlab
|
||||
GitLab
|
||||
Gource
|
||||
|
||||
@@ -58,6 +58,10 @@ jobs:
|
||||
- name: build
|
||||
run: yarn backstage-cli repo build
|
||||
|
||||
- name: build embedded techdocs app
|
||||
working-directory: packages/techdocs-cli-embedded-app
|
||||
run: yarn build
|
||||
|
||||
# Prepares a nightly release version of any package with pending changesets
|
||||
# Pre-mode is exited if case we're in it, otherwise it has no effect
|
||||
- name: prepare nightly release
|
||||
|
||||
@@ -103,3 +103,4 @@ _If you're using Backstage in your organization, please try to add your company
|
||||
| [Snyk](https://snyk.io/) | [@robcresswell](https://github.com/robcresswell) | Developer portal for software discovery, API documentation and templating |
|
||||
| [Stilingue](https://www.stilingue.com.br/) | [@stilingue-inteligencia-artificial](https://github.com/Stilingue-IA), [@bbviana](https://github.com/bbviana) | Developer portal, services catalog and centralization of metrics from Grafana, Sentry and GCP. Furthermore, centralization of documentation and infra details like DNS, Network services, SSL and so on. |
|
||||
| [TUI Group](https://www.tuigroup.com/) | [Simon Stamm](https://github.com/simonstamm), [Christian Rudolph](https://github.com/ChrisRu82) | Developer portal for all engineer to provide discoverability to all internal components, APIs, documentation and to scaffold templates with integrations to our internal tools extended by plugins from our community. |
|
||||
| [Alliander](https://www.alliander.com/) | [@leon-vg](https://github.com/leon-vg), [@gieljl](https://github.com/gieljl), [@niekteg](https://github.com/niekteg) | Developer portal - software catalog, technical documentation, software templates, tech radar and exploration of used tools/services |
|
||||
|
||||
@@ -133,9 +133,9 @@ familiar with. For other options, see
|
||||
Go to
|
||||
[https://github.com/settings/applications/new](https://github.com/settings/applications/new)
|
||||
to create your OAuth App. The `Homepage URL` should point to Backstage's
|
||||
frontend, in our tutorial it would be `http://127.0.0.1:3000`. The
|
||||
frontend, in our tutorial it would be `http://localhost:3000`. The
|
||||
`Authorization callback URL` will point to the auth backend, which will most
|
||||
likely be `http://127.0.0.1:7007/api/auth/github/handler/frame`.
|
||||
likely be `http://localhost:7007/api/auth/github/handler/frame`.
|
||||
|
||||
<p align='center'>
|
||||
<img src='../assets/getting-started/gh-oauth.png' alt='Screenshot of the GitHub OAuth creation page' />
|
||||
|
||||
@@ -27,8 +27,14 @@ catalog:
|
||||
|
||||
Note the `s3-discovery` type, as this is not a regular `url` processor.
|
||||
|
||||
As this processor is not one of the default providers, you will also need to add
|
||||
the below to `packages/backend/src/plugins/catalog.ts`:
|
||||
As this processor is not one of the default providers, you will first need to install the AWS catalog plugin:
|
||||
|
||||
```shell
|
||||
cd packages/backend
|
||||
yarn install @backstage/plugin-catalog-backend-module-aws
|
||||
```
|
||||
|
||||
Once you've done that, you'll also need to add the segment below to `packages/backend/src/plugins/catalog.ts`:
|
||||
|
||||
```ts
|
||||
/* packages/backend/src/plugins/catalog.ts */
|
||||
|
||||
@@ -11,6 +11,34 @@ catalog entities located in Bitbucket. The processor will crawl your Bitbucket
|
||||
account and register entities matching the configured path. This can be useful
|
||||
as an alternative to static locations or manually adding things to the catalog.
|
||||
|
||||
## Installation
|
||||
|
||||
You will have to add the processor in the catalog initialization code of your
|
||||
backend. The provider is not installed by default, therefore you have to add a
|
||||
dependency to `@backstage/plugin-catalog-backend-module-bitbucket` to your backend
|
||||
package.
|
||||
|
||||
```bash
|
||||
# From your Backstage root directory
|
||||
cd packages/backend
|
||||
yarn add @backstage/plugin-catalog-backend-module-bitbucket
|
||||
```
|
||||
|
||||
And then add the processor to your catalog builder:
|
||||
|
||||
```diff
|
||||
// In packages/backend/src/plugins/catalog.ts
|
||||
+import { BitbucketDiscoveryProcessor } from '@backstage/plugin-catalog-backend-module-bitbucket';
|
||||
|
||||
export default async function createPlugin(
|
||||
env: PluginEnvironment,
|
||||
): Promise<Router> {
|
||||
const builder = await CatalogBuilder.create(env);
|
||||
+ builder.addProcessor(
|
||||
+ BitbucketDiscoveryProcessor.fromConfig(env.config, { logger: env.logger })
|
||||
+ );
|
||||
```
|
||||
|
||||
## Self-hosted Bitbucket Server
|
||||
|
||||
To use the discovery processor with a self-hosted Bitbucket Server, you'll need
|
||||
@@ -137,14 +165,11 @@ matching repository is processed.
|
||||
repository.
|
||||
|
||||
```typescript
|
||||
const customRepositoryParser: BitbucketRepositoryParser =
|
||||
async function* customRepositoryParser({ client, repository }) {
|
||||
// Custom logic for interpret the matching repository.
|
||||
// See defaultRepositoryParser for an example
|
||||
};
|
||||
|
||||
const processor = BitbucketDiscoveryProcessor.fromConfig(env.config, {
|
||||
parser: customRepositoryParser,
|
||||
parser: async function* customRepositoryParser({ client, repository }) {
|
||||
// Custom logic for interpreting the matching repository.
|
||||
// See defaultRepositoryParser for an example
|
||||
},
|
||||
logger: env.logger,
|
||||
});
|
||||
```
|
||||
|
||||
@@ -12,6 +12,53 @@ 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.
|
||||
|
||||
## Installation
|
||||
|
||||
You will have to add the processors in the catalog initialization code of your
|
||||
backend. They are not installed by default, therefore you have to add a
|
||||
dependency to `@backstage/plugin-catalog-backend-module-github` to your backend
|
||||
package.
|
||||
|
||||
```bash
|
||||
# From your Backstage root directory
|
||||
cd packages/backend
|
||||
yarn add @backstage/plugin-catalog-backend-module-github
|
||||
```
|
||||
|
||||
And then add the processors to your catalog builder:
|
||||
|
||||
```diff
|
||||
// In packages/backend/src/plugins/catalog.ts
|
||||
+import {
|
||||
+ GithubDiscoveryProcessor,
|
||||
+ GithubOrgReaderProcessor,
|
||||
+} from '@backstage/plugin-catalog-backend-module-github';
|
||||
+import {
|
||||
+ ScmIntegrations,
|
||||
+ DefaultGithubCredentialsProvider
|
||||
+} from '@backstage/integration';
|
||||
|
||||
export default async function createPlugin(
|
||||
env: PluginEnvironment,
|
||||
): Promise<Router> {
|
||||
const builder = await CatalogBuilder.create(env);
|
||||
+ const integrations = ScmIntegrations.fromConfig(config);
|
||||
+ const githubCredentialsProvider =
|
||||
+ DefaultGithubCredentialsProvider.fromIntegrations(integrations);
|
||||
+ builder.addProcessor(
|
||||
+ GithubDiscoveryProcessor.fromConfig(config, {
|
||||
+ logger,
|
||||
+ githubCredentialsProvider,
|
||||
+ }),
|
||||
+ GithubOrgReaderProcessor.fromConfig(config, {
|
||||
+ logger,
|
||||
+ githubCredentialsProvider,
|
||||
+ }),
|
||||
+ );
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
To use the discovery processor, you'll need a GitHub integration
|
||||
[set up](locations.md) with a `GITHUB_TOKEN`. Then you can add a location target
|
||||
to the catalog configuration:
|
||||
|
||||
@@ -19,8 +19,7 @@ entities that mirror your org setup.
|
||||
|
||||
## Installation
|
||||
|
||||
The processor that performs the import, `GithubOrgReaderProcessor`, comes
|
||||
installed with the default setup of Backstage.
|
||||
See the [discovery](discovery.md) article for installation instructions.
|
||||
|
||||
## Configuration
|
||||
|
||||
|
||||
+1
-1
@@ -47,7 +47,7 @@
|
||||
"resolutions": {
|
||||
"**/@graphql-codegen/cli/**/ws": "^7.4.6"
|
||||
},
|
||||
"version": "0.70.0",
|
||||
"version": "0.71.0-next.0",
|
||||
"dependencies": {
|
||||
"@manypkg/get-packages": "^1.1.3",
|
||||
"@microsoft/api-documenter": "^7.15.0",
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
# @backstage/app-defaults
|
||||
|
||||
## 0.2.1-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/core-components@0.9.1-next.0
|
||||
|
||||
## 0.2.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/app-defaults",
|
||||
"description": "Provides the default wiring of a Backstage App",
|
||||
"version": "0.2.0",
|
||||
"version": "0.2.1-next.0",
|
||||
"private": false,
|
||||
"publishConfig": {
|
||||
"access": "public",
|
||||
@@ -33,7 +33,7 @@
|
||||
"start": "backstage-cli package start"
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage/core-components": "^0.9.0",
|
||||
"@backstage/core-components": "^0.9.1-next.0",
|
||||
"@backstage/core-app-api": "^0.6.0",
|
||||
"@backstage/core-plugin-api": "^0.8.0",
|
||||
"@backstage/plugin-permission-react": "^0.3.3",
|
||||
@@ -46,7 +46,7 @@
|
||||
"react": "^16.13.1 || ^17.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@backstage/test-utils": "^0.3.0",
|
||||
"@testing-library/jest-dom": "^5.10.1",
|
||||
"@testing-library/react": "^11.2.5",
|
||||
|
||||
@@ -1,5 +1,55 @@
|
||||
# example-app
|
||||
|
||||
## 0.2.68-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/cli@0.15.2-next.0
|
||||
- @backstage/plugin-catalog@0.10.0-next.0
|
||||
- @backstage/plugin-catalog-react@0.9.0-next.0
|
||||
- @backstage/core-components@0.9.1-next.0
|
||||
- @backstage/plugin-gcp-projects@0.3.21-next.0
|
||||
- @backstage/plugin-scaffolder@0.15.0-next.0
|
||||
- @backstage/catalog-model@0.13.0-next.0
|
||||
- @backstage/plugin-rollbar@0.4.2-next.0
|
||||
- @backstage/plugin-catalog-graph@0.2.14-next.0
|
||||
- @backstage/plugin-catalog-import@0.8.5-next.0
|
||||
- @backstage/plugin-explore@0.3.33-next.0
|
||||
- @backstage/plugin-catalog-common@0.2.2-next.0
|
||||
- @backstage/plugin-search-common@0.3.1-next.0
|
||||
- @backstage/plugin-search@0.7.3-next.0
|
||||
- @backstage/plugin-tech-radar@0.5.9-next.0
|
||||
- @backstage/plugin-org@0.5.2-next.0
|
||||
- @backstage/plugin-techdocs@0.15.1-next.0
|
||||
- @backstage/app-defaults@0.2.1-next.0
|
||||
- @backstage/integration-react@0.1.25-next.0
|
||||
- @backstage/plugin-airbrake@0.3.2-next.0
|
||||
- @backstage/plugin-apache-airflow@0.1.10-next.0
|
||||
- @backstage/plugin-api-docs@0.8.2-next.0
|
||||
- @backstage/plugin-azure-devops@0.1.18-next.0
|
||||
- @backstage/plugin-badges@0.2.26-next.0
|
||||
- @backstage/plugin-circleci@0.3.2-next.0
|
||||
- @backstage/plugin-cloudbuild@0.3.2-next.0
|
||||
- @backstage/plugin-code-coverage@0.1.29-next.0
|
||||
- @backstage/plugin-cost-insights@0.11.24-next.0
|
||||
- @backstage/plugin-github-actions@0.5.2-next.0
|
||||
- @backstage/plugin-gocd@0.1.8-next.0
|
||||
- @backstage/plugin-graphiql@0.2.34-next.0
|
||||
- @backstage/plugin-home@0.4.18-next.0
|
||||
- @backstage/plugin-jenkins@0.7.1-next.0
|
||||
- @backstage/plugin-kafka@0.3.2-next.0
|
||||
- @backstage/plugin-kubernetes@0.6.2-next.0
|
||||
- @backstage/plugin-lighthouse@0.3.2-next.0
|
||||
- @backstage/plugin-newrelic@0.3.20-next.0
|
||||
- @backstage/plugin-newrelic-dashboard@0.1.10-next.0
|
||||
- @backstage/plugin-pagerduty@0.3.29-next.0
|
||||
- @backstage/plugin-sentry@0.3.40-next.0
|
||||
- @backstage/plugin-shortcuts@0.2.3-next.0
|
||||
- @backstage/plugin-tech-insights@0.1.12-next.0
|
||||
- @backstage/plugin-todo@0.2.4-next.0
|
||||
- @backstage/plugin-user-settings@0.4.1-next.0
|
||||
|
||||
## 0.2.67
|
||||
|
||||
### Patch Changes
|
||||
|
||||
+45
-45
@@ -1,60 +1,60 @@
|
||||
{
|
||||
"name": "example-app",
|
||||
"version": "0.2.67",
|
||||
"version": "0.2.68-next.0",
|
||||
"private": true,
|
||||
"backstage": {
|
||||
"role": "frontend"
|
||||
},
|
||||
"bundled": true,
|
||||
"dependencies": {
|
||||
"@backstage/app-defaults": "^0.2.0",
|
||||
"@backstage/catalog-model": "^0.12.0",
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/app-defaults": "^0.2.1-next.0",
|
||||
"@backstage/catalog-model": "^0.13.0-next.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@backstage/core-app-api": "^0.6.0",
|
||||
"@backstage/core-components": "^0.9.0",
|
||||
"@backstage/core-components": "^0.9.1-next.0",
|
||||
"@backstage/core-plugin-api": "^0.8.0",
|
||||
"@backstage/integration-react": "^0.1.24",
|
||||
"@backstage/plugin-airbrake": "^0.3.1",
|
||||
"@backstage/plugin-api-docs": "^0.8.1",
|
||||
"@backstage/plugin-azure-devops": "^0.1.17",
|
||||
"@backstage/plugin-apache-airflow": "^0.1.9",
|
||||
"@backstage/plugin-badges": "^0.2.25",
|
||||
"@backstage/plugin-catalog": "^0.9.1",
|
||||
"@backstage/plugin-catalog-common": "^0.2.0",
|
||||
"@backstage/plugin-catalog-graph": "^0.2.13",
|
||||
"@backstage/plugin-catalog-import": "^0.8.4",
|
||||
"@backstage/plugin-catalog-react": "^0.8.0",
|
||||
"@backstage/plugin-circleci": "^0.3.1",
|
||||
"@backstage/plugin-cloudbuild": "^0.3.1",
|
||||
"@backstage/plugin-code-coverage": "^0.1.28",
|
||||
"@backstage/plugin-cost-insights": "^0.11.23",
|
||||
"@backstage/plugin-explore": "^0.3.32",
|
||||
"@backstage/integration-react": "^0.1.25-next.0",
|
||||
"@backstage/plugin-airbrake": "^0.3.2-next.0",
|
||||
"@backstage/plugin-api-docs": "^0.8.2-next.0",
|
||||
"@backstage/plugin-azure-devops": "^0.1.18-next.0",
|
||||
"@backstage/plugin-apache-airflow": "^0.1.10-next.0",
|
||||
"@backstage/plugin-badges": "^0.2.26-next.0",
|
||||
"@backstage/plugin-catalog": "^0.10.0-next.0",
|
||||
"@backstage/plugin-catalog-common": "^0.2.2-next.0",
|
||||
"@backstage/plugin-catalog-graph": "^0.2.14-next.0",
|
||||
"@backstage/plugin-catalog-import": "^0.8.5-next.0",
|
||||
"@backstage/plugin-catalog-react": "^0.9.0-next.0",
|
||||
"@backstage/plugin-circleci": "^0.3.2-next.0",
|
||||
"@backstage/plugin-cloudbuild": "^0.3.2-next.0",
|
||||
"@backstage/plugin-code-coverage": "^0.1.29-next.0",
|
||||
"@backstage/plugin-cost-insights": "^0.11.24-next.0",
|
||||
"@backstage/plugin-explore": "^0.3.33-next.0",
|
||||
"@backstage/plugin-gcp-projects": "^0.3.21-next.0",
|
||||
"@backstage/plugin-gcalendar": "^0.1.0",
|
||||
"@backstage/plugin-gcp-projects": "^0.3.20",
|
||||
"@backstage/plugin-github-actions": "^0.5.1",
|
||||
"@backstage/plugin-gocd": "^0.1.7",
|
||||
"@backstage/plugin-graphiql": "^0.2.33",
|
||||
"@backstage/plugin-home": "^0.4.17",
|
||||
"@backstage/plugin-jenkins": "^0.7.0",
|
||||
"@backstage/plugin-kafka": "^0.3.1",
|
||||
"@backstage/plugin-kubernetes": "^0.6.1",
|
||||
"@backstage/plugin-lighthouse": "^0.3.1",
|
||||
"@backstage/plugin-newrelic": "^0.3.19",
|
||||
"@backstage/plugin-newrelic-dashboard": "^0.1.9",
|
||||
"@backstage/plugin-org": "^0.5.1",
|
||||
"@backstage/plugin-pagerduty": "0.3.28",
|
||||
"@backstage/plugin-github-actions": "^0.5.2-next.0",
|
||||
"@backstage/plugin-gocd": "^0.1.8-next.0",
|
||||
"@backstage/plugin-graphiql": "^0.2.34-next.0",
|
||||
"@backstage/plugin-home": "^0.4.18-next.0",
|
||||
"@backstage/plugin-jenkins": "^0.7.1-next.0",
|
||||
"@backstage/plugin-kafka": "^0.3.2-next.0",
|
||||
"@backstage/plugin-kubernetes": "^0.6.2-next.0",
|
||||
"@backstage/plugin-lighthouse": "^0.3.2-next.0",
|
||||
"@backstage/plugin-newrelic": "^0.3.20-next.0",
|
||||
"@backstage/plugin-newrelic-dashboard": "^0.1.10-next.0",
|
||||
"@backstage/plugin-org": "^0.5.2-next.0",
|
||||
"@backstage/plugin-pagerduty": "0.3.29-next.0",
|
||||
"@backstage/plugin-permission-react": "^0.3.3",
|
||||
"@backstage/plugin-rollbar": "^0.4.1",
|
||||
"@backstage/plugin-scaffolder": "^0.14.0",
|
||||
"@backstage/plugin-search": "^0.7.2",
|
||||
"@backstage/plugin-search-common": "^0.3.0",
|
||||
"@backstage/plugin-sentry": "^0.3.39",
|
||||
"@backstage/plugin-shortcuts": "^0.2.2",
|
||||
"@backstage/plugin-tech-radar": "^0.5.8",
|
||||
"@backstage/plugin-techdocs": "^0.15.0",
|
||||
"@backstage/plugin-todo": "^0.2.3",
|
||||
"@backstage/plugin-user-settings": "^0.4.0",
|
||||
"@backstage/plugin-tech-insights": "^0.1.11",
|
||||
"@backstage/plugin-rollbar": "^0.4.2-next.0",
|
||||
"@backstage/plugin-scaffolder": "^0.15.0-next.0",
|
||||
"@backstage/plugin-search": "^0.7.3-next.0",
|
||||
"@backstage/plugin-search-common": "^0.3.1-next.0",
|
||||
"@backstage/plugin-sentry": "^0.3.40-next.0",
|
||||
"@backstage/plugin-shortcuts": "^0.2.3-next.0",
|
||||
"@backstage/plugin-tech-radar": "^0.5.9-next.0",
|
||||
"@backstage/plugin-techdocs": "^0.15.1-next.0",
|
||||
"@backstage/plugin-todo": "^0.2.4-next.0",
|
||||
"@backstage/plugin-user-settings": "^0.4.1-next.0",
|
||||
"@backstage/plugin-tech-insights": "^0.1.12-next.0",
|
||||
"@backstage/theme": "^0.2.15",
|
||||
"@material-ui/core": "^4.12.2",
|
||||
"@material-ui/icons": "^4.9.1",
|
||||
|
||||
@@ -1,5 +1,24 @@
|
||||
# @backstage/backend-common
|
||||
|
||||
## 0.13.0-next.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- ae9d6fb3df: **BREAKING**:
|
||||
|
||||
- Removed the (since way back) deprecated `createDatabase` export, please use `createDatabaseClient` instead.
|
||||
- Removed the (since way back) deprecated `SingleConnectionDatabaseManager` export, please use `DatabaseManager` instead.
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ab7cd7d70e: Do some groundwork for supporting the `better-sqlite3` driver, to maybe eventually replace `@vscode/sqlite3` (#9912)
|
||||
- e0a69ba49f: build(deps): bump `fs-extra` from 9.1.0 to 10.0.1
|
||||
- aefca2a7e9: add support for ETag at `BitbucketUrlReader.readUrl`
|
||||
- 3c2bc73901: Use `setupRequestMockHandlers` from `@backstage/backend-test-utils`
|
||||
- b1aacbf96a: Applied the fix for the `/alpha` entry point resolution that was part of the `v0.70.1` release of Backstage.
|
||||
- Updated dependencies
|
||||
- @backstage/config-loader@0.9.7-next.0
|
||||
|
||||
## 0.12.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/backend-common",
|
||||
"description": "Common functionality library for Backstage backends",
|
||||
"version": "0.12.0",
|
||||
"version": "0.13.0-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"private": false,
|
||||
@@ -36,7 +36,7 @@
|
||||
"dependencies": {
|
||||
"@backstage/cli-common": "^0.1.8",
|
||||
"@backstage/config": "^0.1.15",
|
||||
"@backstage/config-loader": "^0.9.6",
|
||||
"@backstage/config-loader": "^0.9.7-next.0",
|
||||
"@backstage/errors": "^0.2.2",
|
||||
"@backstage/integration": "^0.8.0",
|
||||
"@backstage/types": "^0.1.3",
|
||||
@@ -89,8 +89,8 @@
|
||||
}
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/backend-test-utils": "^0.1.20",
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/backend-test-utils": "^0.1.21-next.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@types/archiver": "^5.1.0",
|
||||
"@types/compression": "^1.7.0",
|
||||
"@types/concat-stream": "^2.0.0",
|
||||
|
||||
@@ -1,5 +1,20 @@
|
||||
# @backstage/backend-tasks
|
||||
|
||||
## 0.2.0-next.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- 9461f73643: **BREAKING**: The `TaskDefinition` type has been removed, and replaced by the equal pair `TaskScheduleDefinition` and `TaskInvocationDefinition`. The interface for `PluginTaskScheduler.scheduleTask` stays effectively unchanged, so this only affects you if you use the actual types directly.
|
||||
|
||||
Added the method `PluginTaskScheduler.createTaskSchedule`, which returns a `TaskSchedule` wrapper that is convenient to pass down into classes that want to control their task invocations while the caller wants to retain control of the actual schedule chosen.
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ab7cd7d70e: Do some groundwork for supporting the `better-sqlite3` driver, to maybe eventually replace `@vscode/sqlite3` (#9912)
|
||||
- 7290dda9d4: Relaxed the task ID requirement to now support any non-empty string
|
||||
- Updated dependencies
|
||||
- @backstage/backend-common@0.13.0-next.0
|
||||
|
||||
## 0.1.10
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -22,7 +22,7 @@ const scheduler = TaskScheduler.fromConfig(rootConfig).forPlugin('my-plugin');
|
||||
|
||||
await scheduler.scheduleTask({
|
||||
id: 'refresh_things',
|
||||
frequency: Duration.fromObject({ minutes: 10 }),
|
||||
frequency: { cron: '*/5 * * * *' }, // every 5 minutes, also supports Duration
|
||||
timeout: Duration.fromObject({ minutes: 15 }),
|
||||
fn: async () => {
|
||||
await entityProvider.run();
|
||||
|
||||
@@ -36,7 +36,11 @@ export interface TaskRunner {
|
||||
|
||||
// @public
|
||||
export interface TaskScheduleDefinition {
|
||||
frequency: Duration;
|
||||
frequency:
|
||||
| {
|
||||
cron: string;
|
||||
}
|
||||
| Duration;
|
||||
initialDelay?: Duration;
|
||||
timeout: Duration;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/backend-tasks",
|
||||
"description": "Common distributed task management library for Backstage backends",
|
||||
"version": "0.1.10",
|
||||
"version": "0.2.0-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"private": false,
|
||||
@@ -33,11 +33,12 @@
|
||||
"start": "backstage-cli package start"
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage/backend-common": "^0.12.0",
|
||||
"@backstage/backend-common": "^0.13.0-next.0",
|
||||
"@backstage/config": "^0.1.15",
|
||||
"@backstage/errors": "^0.2.2",
|
||||
"@backstage/types": "^0.1.3",
|
||||
"@types/luxon": "^2.0.4",
|
||||
"cron": "^1.8.2",
|
||||
"knex": "^1.0.2",
|
||||
"lodash": "^4.17.21",
|
||||
"luxon": "^2.0.2",
|
||||
@@ -47,8 +48,9 @@
|
||||
"zod": "^3.9.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/backend-test-utils": "^0.1.20",
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/backend-test-utils": "^0.1.21-next.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@types/cron": "^1.7.3",
|
||||
"jest": "^26.0.1",
|
||||
"wait-for-expect": "^3.0.2"
|
||||
},
|
||||
|
||||
@@ -40,7 +40,7 @@ describe('PluginTaskManagerImpl', () => {
|
||||
// TaskWorker.test.ts
|
||||
describe('scheduleTask', () => {
|
||||
it.each(databases.eachSupportedId())(
|
||||
'can run the happy path, %p',
|
||||
'can run the v1 happy path, %p',
|
||||
async databaseId => {
|
||||
const { manager } = await init(databaseId);
|
||||
|
||||
@@ -58,6 +58,26 @@ describe('PluginTaskManagerImpl', () => {
|
||||
},
|
||||
60_000,
|
||||
);
|
||||
|
||||
it.each(databases.eachSupportedId())(
|
||||
'can run the v2 happy path, %p',
|
||||
async databaseId => {
|
||||
const { manager } = await init(databaseId);
|
||||
|
||||
const fn = jest.fn();
|
||||
await manager.scheduleTask({
|
||||
id: 'task2',
|
||||
timeout: Duration.fromMillis(5000),
|
||||
frequency: { cron: '* * * * * *' },
|
||||
fn,
|
||||
});
|
||||
|
||||
await waitForExpect(() => {
|
||||
expect(fn).toBeCalled();
|
||||
});
|
||||
},
|
||||
60_000,
|
||||
);
|
||||
});
|
||||
|
||||
// This is just to test the wrapper code; most of the actual tests are in
|
||||
|
||||
@@ -40,13 +40,16 @@ export class PluginTaskSchedulerImpl implements PluginTaskScheduler {
|
||||
validateId(task.id);
|
||||
|
||||
const knex = await this.databaseFactory();
|
||||
|
||||
const worker = new TaskWorker(task.id, task.fn, knex, this.logger);
|
||||
|
||||
await worker.start(
|
||||
{
|
||||
version: 1,
|
||||
version: 2,
|
||||
cadence:
|
||||
'cron' in task.frequency
|
||||
? task.frequency.cron
|
||||
: task.frequency.toISO(),
|
||||
initialDelayDuration: task.initialDelay?.toISO(),
|
||||
recurringAtMostEveryDuration: task.frequency.toISO(),
|
||||
timeoutAfterDuration: task.timeout.toISO(),
|
||||
},
|
||||
{
|
||||
|
||||
@@ -39,7 +39,7 @@ describe('TaskScheduler', () => {
|
||||
}
|
||||
|
||||
it.each(databases.eachSupportedId())(
|
||||
'can return a working plugin impl, %p',
|
||||
'can return a working v1 plugin impl, %p',
|
||||
async databaseId => {
|
||||
const database = await createDatabase(databaseId);
|
||||
const manager = new TaskScheduler(database, logger).forPlugin('test');
|
||||
@@ -58,4 +58,25 @@ describe('TaskScheduler', () => {
|
||||
},
|
||||
60_000,
|
||||
);
|
||||
|
||||
it.each(databases.eachSupportedId())(
|
||||
'can return a working v2 plugin impl, %p',
|
||||
async databaseId => {
|
||||
const database = await createDatabase(databaseId);
|
||||
const manager = new TaskScheduler(database, logger).forPlugin('test');
|
||||
const fn = jest.fn();
|
||||
|
||||
await manager.scheduleTask({
|
||||
id: 'task2',
|
||||
timeout: Duration.fromMillis(5000),
|
||||
frequency: { cron: '* * * * * *' },
|
||||
fn,
|
||||
});
|
||||
|
||||
await waitForExpect(() => {
|
||||
expect(fn).toBeCalled();
|
||||
});
|
||||
},
|
||||
60_000,
|
||||
);
|
||||
});
|
||||
|
||||
@@ -21,7 +21,7 @@ import waitForExpect from 'wait-for-expect';
|
||||
import { migrateBackendTasks } from '../database/migrateBackendTasks';
|
||||
import { DbTasksRow, DB_TASKS_TABLE } from '../database/tables';
|
||||
import { TaskWorker } from './TaskWorker';
|
||||
import { TaskSettingsV1 } from './types';
|
||||
import { TaskSettingsV2 } from './types';
|
||||
|
||||
describe('TaskWorker', () => {
|
||||
const logger = getVoidLogger();
|
||||
@@ -42,11 +42,11 @@ describe('TaskWorker', () => {
|
||||
const fn = jest.fn(
|
||||
async () => new Promise<void>(resolve => setTimeout(resolve, 50)),
|
||||
);
|
||||
const settings: TaskSettingsV1 = {
|
||||
version: 1,
|
||||
initialDelayDuration: Duration.fromMillis(1000).toISO(),
|
||||
recurringAtMostEveryDuration: Duration.fromMillis(2000).toISO(),
|
||||
timeoutAfterDuration: Duration.fromMillis(60000).toISO(),
|
||||
const settings: TaskSettingsV2 = {
|
||||
version: 2,
|
||||
cadence: '*/2 * * * * *',
|
||||
initialDelayDuration: Duration.fromObject({ seconds: 1 }).toISO(),
|
||||
timeoutAfterDuration: Duration.fromObject({ minutes: 1 }).toISO(),
|
||||
};
|
||||
|
||||
const worker = new TaskWorker('task1', fn, knex, logger);
|
||||
@@ -62,10 +62,10 @@ describe('TaskWorker', () => {
|
||||
}),
|
||||
);
|
||||
expect(JSON.parse(row.settings_json)).toEqual({
|
||||
version: 1,
|
||||
version: 2,
|
||||
cadence: '*/2 * * * * *',
|
||||
initialDelayDuration: 'PT1S',
|
||||
recurringAtMostEveryDuration: 'PT2S',
|
||||
timeoutAfterDuration: 'PT60S',
|
||||
timeoutAfterDuration: 'PT1M',
|
||||
});
|
||||
|
||||
await expect(worker.findReadyTask()).resolves.toEqual({
|
||||
@@ -125,10 +125,10 @@ describe('TaskWorker', () => {
|
||||
await migrateBackendTasks(knex);
|
||||
|
||||
const fn = jest.fn().mockRejectedValue(new Error('failed'));
|
||||
const settings: TaskSettingsV1 = {
|
||||
version: 1,
|
||||
const settings: TaskSettingsV2 = {
|
||||
version: 2,
|
||||
initialDelayDuration: undefined,
|
||||
recurringAtMostEveryDuration: Duration.fromMillis(0).toISO(),
|
||||
cadence: '* * * * * *',
|
||||
timeoutAfterDuration: Duration.fromMillis(60000).toISO(),
|
||||
};
|
||||
|
||||
@@ -151,18 +151,23 @@ describe('TaskWorker', () => {
|
||||
const fn = jest.fn(
|
||||
async () => new Promise<void>(resolve => setTimeout(resolve, 50)),
|
||||
);
|
||||
const settings: TaskSettingsV1 = {
|
||||
version: 1,
|
||||
recurringAtMostEveryDuration: Duration.fromMillis(0).toISO(),
|
||||
const settings: TaskSettingsV2 = {
|
||||
version: 2,
|
||||
initialDelayDuration: undefined,
|
||||
cadence: '* * * * * *',
|
||||
timeoutAfterDuration: Duration.fromMillis(60000).toISO(),
|
||||
};
|
||||
|
||||
const worker = new TaskWorker('task1', fn, knex, logger);
|
||||
await worker.persistTask(settings);
|
||||
await expect(worker.findReadyTask()).resolves.toEqual({
|
||||
result: 'ready',
|
||||
settings,
|
||||
|
||||
await waitForExpect(async () => {
|
||||
await expect(worker.findReadyTask()).resolves.toEqual({
|
||||
result: 'ready',
|
||||
settings,
|
||||
});
|
||||
});
|
||||
|
||||
await expect(worker.tryClaimTask('ticket', settings)).resolves.toBe(true);
|
||||
|
||||
let row = (await knex<DbTasksRow>(DB_TASKS_TABLE))[0];
|
||||
@@ -203,9 +208,10 @@ describe('TaskWorker', () => {
|
||||
await migrateBackendTasks(knex);
|
||||
|
||||
const fn = jest.fn(async () => {});
|
||||
const settings: TaskSettingsV1 = {
|
||||
version: 1,
|
||||
recurringAtMostEveryDuration: Duration.fromMillis(0).toISO(),
|
||||
const settings: TaskSettingsV2 = {
|
||||
version: 2,
|
||||
initialDelayDuration: undefined,
|
||||
cadence: '* * * * * *',
|
||||
timeoutAfterDuration: Duration.fromMillis(60000).toISO(),
|
||||
};
|
||||
|
||||
@@ -218,10 +224,14 @@ describe('TaskWorker', () => {
|
||||
|
||||
const worker2 = new TaskWorker('task2', fn, knex, logger);
|
||||
await worker2.persistTask(settings);
|
||||
await expect(worker2.findReadyTask()).resolves.toEqual({
|
||||
result: 'ready',
|
||||
settings,
|
||||
|
||||
await waitForExpect(async () => {
|
||||
await expect(worker2.findReadyTask()).resolves.toEqual({
|
||||
result: 'ready',
|
||||
settings,
|
||||
});
|
||||
});
|
||||
|
||||
await knex<DbTasksRow>(DB_TASKS_TABLE).where('id', '=', 'task2').delete();
|
||||
await expect(worker2.tryClaimTask('ticket', settings)).resolves.toBe(
|
||||
false,
|
||||
@@ -229,10 +239,14 @@ describe('TaskWorker', () => {
|
||||
|
||||
const worker3 = new TaskWorker('task3', fn, knex, logger);
|
||||
await worker3.persistTask(settings);
|
||||
await expect(worker3.findReadyTask()).resolves.toEqual({
|
||||
result: 'ready',
|
||||
settings,
|
||||
|
||||
await waitForExpect(async () => {
|
||||
await expect(worker3.findReadyTask()).resolves.toEqual({
|
||||
result: 'ready',
|
||||
settings,
|
||||
});
|
||||
});
|
||||
|
||||
await expect(worker3.tryClaimTask('ticket', settings)).resolves.toBe(
|
||||
true,
|
||||
);
|
||||
|
||||
@@ -15,13 +15,14 @@
|
||||
*/
|
||||
|
||||
import { Knex } from 'knex';
|
||||
import { Duration } from 'luxon';
|
||||
import { DateTime, Duration } from 'luxon';
|
||||
import { AbortSignal } from 'node-abort-controller';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { Logger } from 'winston';
|
||||
import { DbTasksRow, DB_TASKS_TABLE } from '../database/tables';
|
||||
import { TaskFunction, TaskSettingsV1, taskSettingsV1Schema } from './types';
|
||||
import { TaskFunction, TaskSettingsV2, taskSettingsV2Schema } from './types';
|
||||
import { delegateAbortController, nowPlus, sleep } from './util';
|
||||
import { CronTime } from 'cron';
|
||||
|
||||
const WORK_CHECK_FREQUENCY = Duration.fromObject({ seconds: 5 });
|
||||
|
||||
@@ -43,7 +44,7 @@ export class TaskWorker {
|
||||
this.logger = logger;
|
||||
}
|
||||
|
||||
async start(settings: TaskSettingsV1, options?: { signal?: AbortSignal }) {
|
||||
async start(settings: TaskSettingsV2, options?: { signal?: AbortSignal }) {
|
||||
try {
|
||||
await this.persistTask(settings);
|
||||
} catch (e) {
|
||||
@@ -123,22 +124,39 @@ export class TaskWorker {
|
||||
/**
|
||||
* Perform the initial store of the task info
|
||||
*/
|
||||
async persistTask(settings: TaskSettingsV1) {
|
||||
async persistTask(settings: TaskSettingsV2) {
|
||||
// Perform an initial parse to ensure that we will definitely be able to
|
||||
// read it back again.
|
||||
taskSettingsV1Schema.parse(settings);
|
||||
taskSettingsV2Schema.parse(settings);
|
||||
|
||||
const settingsJson = JSON.stringify(settings);
|
||||
const startAt = settings.initialDelayDuration
|
||||
? nowPlus(Duration.fromISO(settings.initialDelayDuration), this.knex)
|
||||
: this.knex.fn.now();
|
||||
const isCron = !settings?.cadence.startsWith('P');
|
||||
|
||||
let startAt: Knex.Raw;
|
||||
if (settings.initialDelayDuration) {
|
||||
startAt = nowPlus(
|
||||
Duration.fromISO(settings.initialDelayDuration),
|
||||
this.knex,
|
||||
);
|
||||
} else if (isCron) {
|
||||
const time = new CronTime(settings.cadence)
|
||||
.sendAt()
|
||||
.add({ seconds: -1 }) // immediately, if "* * * * * *"
|
||||
.toISOString();
|
||||
startAt = this.knex.client.config.client.includes('sqlite3')
|
||||
? this.knex.raw('datetime(?)', [time])
|
||||
: this.knex.raw(`?`, [time]);
|
||||
} else {
|
||||
startAt = this.knex.fn.now();
|
||||
}
|
||||
|
||||
this.logger.debug(`task: ${this.taskId} configured to run at: ${startAt}`);
|
||||
|
||||
// It's OK if the task already exists; if it does, just replace its
|
||||
// settings with the new value and start the loop as usual.
|
||||
await this.knex<DbTasksRow>(DB_TASKS_TABLE)
|
||||
.insert({
|
||||
id: this.taskId,
|
||||
settings_json: settingsJson,
|
||||
settings_json: JSON.stringify(settings),
|
||||
next_run_start_at: startAt,
|
||||
})
|
||||
.onConflict('id')
|
||||
@@ -151,15 +169,14 @@ export class TaskWorker {
|
||||
async findReadyTask(): Promise<
|
||||
| { result: 'not-ready-yet' }
|
||||
| { result: 'abort' }
|
||||
| { result: 'ready'; settings: TaskSettingsV1 }
|
||||
| { result: 'ready'; settings: TaskSettingsV2 }
|
||||
> {
|
||||
const [row] = await this.knex<DbTasksRow>(DB_TASKS_TABLE)
|
||||
.where('id', '=', this.taskId)
|
||||
.select({
|
||||
settingsJson: 'settings_json',
|
||||
ready: this.knex.raw(
|
||||
`
|
||||
CASE
|
||||
`CASE
|
||||
WHEN next_run_start_at <= ? AND current_run_ticket IS NULL THEN TRUE
|
||||
ELSE FALSE
|
||||
END`,
|
||||
@@ -177,7 +194,8 @@ export class TaskWorker {
|
||||
}
|
||||
|
||||
try {
|
||||
const settings = taskSettingsV1Schema.parse(JSON.parse(row.settingsJson));
|
||||
const obj = JSON.parse(row.settingsJson);
|
||||
const settings = taskSettingsV2Schema.parse(obj);
|
||||
return { result: 'ready', settings };
|
||||
} catch (e) {
|
||||
this.logger.info(
|
||||
@@ -199,7 +217,7 @@ export class TaskWorker {
|
||||
*/
|
||||
async tryClaimTask(
|
||||
ticket: string,
|
||||
settings: TaskSettingsV1,
|
||||
settings: TaskSettingsV2,
|
||||
): Promise<boolean> {
|
||||
const startedAt = this.knex.fn.now();
|
||||
const expiresAt = settings.timeoutAfterDuration
|
||||
@@ -220,27 +238,37 @@ export class TaskWorker {
|
||||
|
||||
async tryReleaseTask(
|
||||
ticket: string,
|
||||
settings: TaskSettingsV1,
|
||||
settings: TaskSettingsV2,
|
||||
): Promise<boolean> {
|
||||
const { recurringAtMostEveryDuration } = settings;
|
||||
const isCron = !settings?.cadence.startsWith('P');
|
||||
|
||||
// We make an effort to keep the datetime calculations in the database
|
||||
// layer, making sure to not have to perform conversions back and forth and
|
||||
// leaning on the database as a central clock source
|
||||
const dbNull = this.knex.raw('null');
|
||||
const dt = Duration.fromISO(recurringAtMostEveryDuration).as('seconds');
|
||||
const nextRun = this.knex.client.config.client.includes('sqlite3')
|
||||
? this.knex.raw('datetime(next_run_start_at, ?)', [`+${dt} seconds`])
|
||||
: this.knex.raw(`next_run_start_at + interval '${dt} seconds'`);
|
||||
let nextRun: Knex.Raw;
|
||||
if (isCron) {
|
||||
const time = new CronTime(settings.cadence).sendAt().toISOString();
|
||||
this.logger.debug(`task: ${this.taskId} will next occur around ${time}`);
|
||||
nextRun = this.knex.client.config.client.includes('sqlite3')
|
||||
? this.knex.raw('datetime(?)', [time])
|
||||
: this.knex.raw(`?`, [time]);
|
||||
} else {
|
||||
const dt = Duration.fromISO(settings.cadence).as('seconds');
|
||||
this.logger.debug(
|
||||
`task: ${this.taskId} will next occur around ${DateTime.now().plus({
|
||||
seconds: dt,
|
||||
})}`,
|
||||
);
|
||||
nextRun = this.knex.client.config.client.includes('sqlite3')
|
||||
? this.knex.raw('datetime(next_run_start_at, ?)', [`+${dt} seconds`])
|
||||
: this.knex.raw(`next_run_start_at + interval '${dt} seconds'`);
|
||||
}
|
||||
|
||||
const rows = await this.knex<DbTasksRow>(DB_TASKS_TABLE)
|
||||
.where('id', '=', this.taskId)
|
||||
.where('current_run_ticket', '=', ticket)
|
||||
.update({
|
||||
next_run_start_at: nextRun,
|
||||
current_run_ticket: dbNull,
|
||||
current_run_started_at: dbNull,
|
||||
current_run_expires_at: dbNull,
|
||||
current_run_ticket: this.knex.raw('null'),
|
||||
current_run_started_at: this.knex.raw('null'),
|
||||
current_run_expires_at: this.knex.raw('null'),
|
||||
});
|
||||
|
||||
return rows === 1;
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
import { Duration } from 'luxon';
|
||||
import { AbortSignal } from 'node-abort-controller';
|
||||
import { z } from 'zod';
|
||||
import { CronTime } from 'cron';
|
||||
|
||||
/**
|
||||
* A function that can be called as a scheduled task.
|
||||
@@ -37,18 +38,8 @@ export type TaskFunction =
|
||||
*/
|
||||
export interface TaskScheduleDefinition {
|
||||
/**
|
||||
* The maximum amount of time that a single task invocation can take, before
|
||||
* it's considered timed out and gets "released" such that a new invocation
|
||||
* is permitted to take place (possibly, then, on a different worker).
|
||||
*
|
||||
* If no value is given for this field then there is no timeout. This is
|
||||
* potentially dangerous.
|
||||
*/
|
||||
timeout: Duration;
|
||||
|
||||
/**
|
||||
* The amount of time that should pass between task invocation starts.
|
||||
* Essentially, this equals roughly how often you want the task to run.
|
||||
* How often you want the task to run. The system does its best to avoid
|
||||
* overlapping invocations.
|
||||
*
|
||||
* This is a best effort value; under some circumstances there can be
|
||||
* deviations. For example, if the task runtime is longer than the frequency
|
||||
@@ -56,12 +47,37 @@ export interface TaskScheduleDefinition {
|
||||
* invocation of this task will be delayed until after the previous one
|
||||
* finishes.
|
||||
*
|
||||
* The system does its best to avoid overlapping invocations.
|
||||
*
|
||||
* If no value is given for this field then the task will only be invoked
|
||||
* once (on any worker) and then unscheduled automatically.
|
||||
* This is a required field.
|
||||
*/
|
||||
frequency: Duration;
|
||||
frequency:
|
||||
| {
|
||||
/**
|
||||
* A crontab style string.
|
||||
*
|
||||
* Overview:
|
||||
*
|
||||
* ```
|
||||
* ┌────────────── second (optional)
|
||||
* │ ┌──────────── minute
|
||||
* │ │ ┌────────── hour
|
||||
* │ │ │ ┌──────── day of month
|
||||
* │ │ │ │ ┌────── month
|
||||
* │ │ │ │ │ ┌──── day of week
|
||||
* │ │ │ │ │ │
|
||||
* │ │ │ │ │ │
|
||||
* * * * * * *
|
||||
* ```
|
||||
*/
|
||||
cron: string;
|
||||
}
|
||||
| Duration;
|
||||
|
||||
/**
|
||||
* The maximum amount of time that a single task invocation can take, before
|
||||
* it's considered timed out and gets "released" such that a new invocation
|
||||
* is permitted to take place (possibly, then, on a different worker).
|
||||
*/
|
||||
timeout: Duration;
|
||||
|
||||
/**
|
||||
* The amount of time that should pass before the first invocation happens.
|
||||
@@ -70,7 +86,7 @@ export interface TaskScheduleDefinition {
|
||||
* compute jobs.
|
||||
*
|
||||
* If no value is given for this field then the first invocation will happen
|
||||
* as soon as possible.
|
||||
* as soon as possible according to the cadence.
|
||||
*/
|
||||
initialDelay?: Duration;
|
||||
}
|
||||
@@ -152,7 +168,21 @@ export interface PluginTaskScheduler {
|
||||
|
||||
function isValidOptionalDurationString(d: string | undefined): boolean {
|
||||
try {
|
||||
return !d || Duration.fromISO(d).isValid === true;
|
||||
return !d || Duration.fromISO(d).isValid;
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function isValidCronFormat(c: string | undefined): boolean {
|
||||
try {
|
||||
if (!c) {
|
||||
return false;
|
||||
}
|
||||
// parse cron format to ensure it's a valid format.
|
||||
// eslint-disable-next-line no-new
|
||||
new CronTime(c);
|
||||
return true;
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
@@ -163,16 +193,46 @@ export const taskSettingsV1Schema = z.object({
|
||||
initialDelayDuration: z
|
||||
.string()
|
||||
.optional()
|
||||
.refine(isValidOptionalDurationString, { message: 'Invalid duration' }),
|
||||
.refine(isValidOptionalDurationString, {
|
||||
message: 'Invalid duration, expecting ISO Period',
|
||||
}),
|
||||
recurringAtMostEveryDuration: z
|
||||
.string()
|
||||
.refine(isValidOptionalDurationString, { message: 'Invalid duration' }),
|
||||
timeoutAfterDuration: z
|
||||
.string()
|
||||
.refine(isValidOptionalDurationString, { message: 'Invalid duration' }),
|
||||
.refine(isValidOptionalDurationString, {
|
||||
message: 'Invalid duration, expecting ISO Period',
|
||||
}),
|
||||
timeoutAfterDuration: z.string().refine(isValidOptionalDurationString, {
|
||||
message: 'Invalid duration, expecting ISO Period',
|
||||
}),
|
||||
});
|
||||
|
||||
/**
|
||||
* The properties that control a scheduled task (version 1).
|
||||
*/
|
||||
export type TaskSettingsV1 = z.infer<typeof taskSettingsV1Schema>;
|
||||
|
||||
export const taskSettingsV2Schema = z.object({
|
||||
version: z.literal(2),
|
||||
cadence: z
|
||||
.string()
|
||||
.refine(isValidCronFormat, { message: 'Invalid cron' })
|
||||
.or(
|
||||
z.string().refine(isValidOptionalDurationString, {
|
||||
message: 'Invalid duration, expecting ISO Period',
|
||||
}),
|
||||
),
|
||||
timeoutAfterDuration: z.string().refine(isValidOptionalDurationString, {
|
||||
message: 'Invalid duration, expecting ISO Period',
|
||||
}),
|
||||
initialDelayDuration: z
|
||||
.string()
|
||||
.optional()
|
||||
.refine(isValidOptionalDurationString, {
|
||||
message: 'Invalid duration, expecting ISO Period',
|
||||
}),
|
||||
});
|
||||
|
||||
/**
|
||||
* The properties that control a scheduled task (version 2).
|
||||
*/
|
||||
export type TaskSettingsV2 = z.infer<typeof taskSettingsV2Schema>;
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# @backstage/backend-test-utils
|
||||
|
||||
## 0.1.21-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ab7cd7d70e: Do some groundwork for supporting the `better-sqlite3` driver, to maybe eventually replace `@vscode/sqlite3` (#9912)
|
||||
- 3c2bc73901: Add `setupRequestMockHandlers` which sets up a good `msw` server foundation, copied from `@backstage/test-utils` which is a frontend-only package and should not be used from backends.
|
||||
- Updated dependencies
|
||||
- @backstage/backend-common@0.13.0-next.0
|
||||
- @backstage/cli@0.15.2-next.0
|
||||
|
||||
## 0.1.20
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/backend-test-utils",
|
||||
"description": "Test helpers library for Backstage backends",
|
||||
"version": "0.1.20",
|
||||
"version": "0.1.21-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"private": false,
|
||||
@@ -34,8 +34,8 @@
|
||||
"start": "backstage-cli package start"
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage/backend-common": "^0.12.0",
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/backend-common": "^0.13.0-next.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@backstage/config": "^0.1.15",
|
||||
"@vscode/sqlite3": "^5.0.7",
|
||||
"knex": "^1.0.2",
|
||||
@@ -46,7 +46,7 @@
|
||||
"uuid": "^8.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"jest": "^26.0.1"
|
||||
},
|
||||
"files": [
|
||||
|
||||
@@ -1,5 +1,42 @@
|
||||
# example-backend
|
||||
|
||||
## 0.2.68-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/backend-common@0.13.0-next.0
|
||||
- @backstage/backend-tasks@0.2.0-next.0
|
||||
- @backstage/plugin-app-backend@0.3.29-next.0
|
||||
- @backstage/plugin-auth-backend@0.12.1-next.0
|
||||
- @backstage/plugin-catalog-backend@0.24.0-next.0
|
||||
- @backstage/plugin-scaffolder-backend@0.18.0-next.0
|
||||
- @backstage/plugin-scaffolder-backend-module-rails@0.3.4-next.0
|
||||
- @backstage/plugin-kubernetes-backend@0.4.12-next.0
|
||||
- @backstage/plugin-rollbar-backend@0.1.26-next.0
|
||||
- @backstage/plugin-techdocs-backend@0.14.2-next.0
|
||||
- @backstage/catalog-model@0.13.0-next.0
|
||||
- @backstage/plugin-badges-backend@0.1.23-next.0
|
||||
- @backstage/plugin-search-backend-module-elasticsearch@0.1.1-next.0
|
||||
- @backstage/plugin-search-backend-module-pg@0.3.1-next.0
|
||||
- @backstage/plugin-search-backend-node@0.5.1-next.0
|
||||
- @backstage/plugin-search-backend@0.4.7-next.0
|
||||
- @backstage/catalog-client@0.9.0-next.0
|
||||
- @backstage/plugin-auth-node@0.1.5-next.0
|
||||
- @backstage/plugin-azure-devops-backend@0.3.8-next.0
|
||||
- @backstage/plugin-code-coverage-backend@0.1.27-next.0
|
||||
- @backstage/plugin-graphql-backend@0.1.19-next.0
|
||||
- @backstage/plugin-jenkins-backend@0.1.18-next.0
|
||||
- @backstage/plugin-kafka-backend@0.2.22-next.0
|
||||
- @backstage/plugin-permission-backend@0.5.4-next.0
|
||||
- @backstage/plugin-permission-node@0.5.4-next.0
|
||||
- @backstage/plugin-proxy-backend@0.2.23-next.0
|
||||
- @backstage/plugin-tech-insights-backend@0.2.9-next.0
|
||||
- @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.13-next.0
|
||||
- @backstage/plugin-tech-insights-node@0.2.7-next.0
|
||||
- @backstage/plugin-todo-backend@0.1.26-next.0
|
||||
- example-app@0.2.68-next.0
|
||||
|
||||
## 0.2.67
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "example-backend",
|
||||
"version": "0.2.67",
|
||||
"version": "0.2.68-next.0",
|
||||
"main": "dist/index.cjs.js",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
@@ -27,39 +27,39 @@
|
||||
"migrate:create": "knex migrate:make -x ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage/backend-common": "^0.12.0",
|
||||
"@backstage/backend-tasks": "^0.1.10",
|
||||
"@backstage/catalog-client": "^0.8.0",
|
||||
"@backstage/catalog-model": "^0.12.0",
|
||||
"@backstage/backend-common": "^0.13.0-next.0",
|
||||
"@backstage/backend-tasks": "^0.2.0-next.0",
|
||||
"@backstage/catalog-client": "^0.9.0-next.0",
|
||||
"@backstage/catalog-model": "^0.13.0-next.0",
|
||||
"@backstage/config": "^0.1.15",
|
||||
"@backstage/integration": "^0.8.0",
|
||||
"@backstage/plugin-app-backend": "^0.3.28",
|
||||
"@backstage/plugin-auth-backend": "^0.12.0",
|
||||
"@backstage/plugin-auth-node": "^0.1.4",
|
||||
"@backstage/plugin-azure-devops-backend": "^0.3.7",
|
||||
"@backstage/plugin-badges-backend": "^0.1.22",
|
||||
"@backstage/plugin-catalog-backend": "^0.23.0",
|
||||
"@backstage/plugin-code-coverage-backend": "^0.1.26",
|
||||
"@backstage/plugin-graphql-backend": "^0.1.18",
|
||||
"@backstage/plugin-jenkins-backend": "^0.1.17",
|
||||
"@backstage/plugin-kubernetes-backend": "^0.4.11",
|
||||
"@backstage/plugin-kafka-backend": "^0.2.21",
|
||||
"@backstage/plugin-permission-backend": "^0.5.3",
|
||||
"@backstage/plugin-app-backend": "^0.3.29-next.0",
|
||||
"@backstage/plugin-auth-backend": "^0.12.1-next.0",
|
||||
"@backstage/plugin-auth-node": "^0.1.5-next.0",
|
||||
"@backstage/plugin-azure-devops-backend": "^0.3.8-next.0",
|
||||
"@backstage/plugin-badges-backend": "^0.1.23-next.0",
|
||||
"@backstage/plugin-catalog-backend": "^0.24.0-next.0",
|
||||
"@backstage/plugin-code-coverage-backend": "^0.1.27-next.0",
|
||||
"@backstage/plugin-graphql-backend": "^0.1.19-next.0",
|
||||
"@backstage/plugin-jenkins-backend": "^0.1.18-next.0",
|
||||
"@backstage/plugin-kubernetes-backend": "^0.4.12-next.0",
|
||||
"@backstage/plugin-kafka-backend": "^0.2.22-next.0",
|
||||
"@backstage/plugin-permission-backend": "^0.5.4-next.0",
|
||||
"@backstage/plugin-permission-common": "^0.5.2",
|
||||
"@backstage/plugin-permission-node": "^0.5.3",
|
||||
"@backstage/plugin-proxy-backend": "^0.2.22",
|
||||
"@backstage/plugin-rollbar-backend": "^0.1.25",
|
||||
"@backstage/plugin-scaffolder-backend": "^0.17.3",
|
||||
"@backstage/plugin-scaffolder-backend-module-rails": "^0.3.3",
|
||||
"@backstage/plugin-search-backend": "^0.4.6",
|
||||
"@backstage/plugin-search-backend-node": "^0.5.0",
|
||||
"@backstage/plugin-search-backend-module-elasticsearch": "^0.1.0",
|
||||
"@backstage/plugin-search-backend-module-pg": "^0.3.0",
|
||||
"@backstage/plugin-techdocs-backend": "^0.14.1",
|
||||
"@backstage/plugin-tech-insights-backend": "^0.2.8",
|
||||
"@backstage/plugin-tech-insights-node": "^0.2.6",
|
||||
"@backstage/plugin-tech-insights-backend-module-jsonfc": "^0.1.12",
|
||||
"@backstage/plugin-todo-backend": "^0.1.25",
|
||||
"@backstage/plugin-permission-node": "^0.5.4-next.0",
|
||||
"@backstage/plugin-proxy-backend": "^0.2.23-next.0",
|
||||
"@backstage/plugin-rollbar-backend": "^0.1.26-next.0",
|
||||
"@backstage/plugin-scaffolder-backend": "^0.18.0-next.0",
|
||||
"@backstage/plugin-scaffolder-backend-module-rails": "^0.3.4-next.0",
|
||||
"@backstage/plugin-search-backend": "^0.4.7-next.0",
|
||||
"@backstage/plugin-search-backend-node": "^0.5.1-next.0",
|
||||
"@backstage/plugin-search-backend-module-elasticsearch": "^0.1.1-next.0",
|
||||
"@backstage/plugin-search-backend-module-pg": "^0.3.1-next.0",
|
||||
"@backstage/plugin-techdocs-backend": "^0.14.2-next.0",
|
||||
"@backstage/plugin-tech-insights-backend": "^0.2.9-next.0",
|
||||
"@backstage/plugin-tech-insights-node": "^0.2.7-next.0",
|
||||
"@backstage/plugin-tech-insights-backend-module-jsonfc": "^0.1.13-next.0",
|
||||
"@backstage/plugin-todo-backend": "^0.1.26-next.0",
|
||||
"@gitbeaker/node": "^35.1.0",
|
||||
"@octokit/rest": "^18.5.3",
|
||||
"@vscode/sqlite3": "^5.0.7",
|
||||
@@ -76,7 +76,7 @@
|
||||
"winston": "^3.2.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@types/dockerode": "^3.3.0",
|
||||
"@types/express": "^4.17.6",
|
||||
"@types/express-serve-static-core": "^4.17.5"
|
||||
|
||||
@@ -1,5 +1,17 @@
|
||||
# @backstage/catalog-client
|
||||
|
||||
## 0.9.0-next.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- bf95bb806c: **BREAKING**: Removed previously deprecated `CatalogApi.getEntityByName`, please use `getEntityByRef` instead.
|
||||
- a3eb3d2afa: **BREAKING**: Removed `CatalogClient.getLocationByEntity` and `CatalogClient.getOriginLocationByEntity` which had previously been deprecated. Please use `CatalogApi.getLocationByRef` instead. Note that this only affects you if you were using `CatalogClient` (the class) directly, rather than `CatalogApi` (the interface), since it has been removed from the interface in an earlier release.
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/catalog-model@0.13.0-next.0
|
||||
|
||||
## 0.8.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/catalog-client",
|
||||
"description": "An isomorphic client for the catalog backend",
|
||||
"version": "0.8.0",
|
||||
"version": "0.9.0-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
@@ -33,12 +33,12 @@
|
||||
"clean": "backstage-cli package clean"
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage/catalog-model": "^0.12.0",
|
||||
"@backstage/catalog-model": "^0.13.0-next.0",
|
||||
"@backstage/errors": "^0.2.2",
|
||||
"cross-fetch": "^3.1.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@types/jest": "^26.0.7",
|
||||
"msw": "^0.35.0"
|
||||
},
|
||||
|
||||
@@ -1,5 +1,29 @@
|
||||
# @backstage/catalog-model
|
||||
|
||||
## 0.13.0-next.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- 51a9f8f122: **BREAKING**:
|
||||
|
||||
- Removed the previously deprecated type `EntityRef`. Please use `string` for stringified entity refs, `CompoundEntityRef` for compound kind-namespace-name triplet objects, or custom objects like `{ kind?: string; namespace?: string; name: string }` and similar if you have need for partial types.
|
||||
- Removed the previously deprecated type `LocationSpec` type, which has been moved to `@backstage/plugin-catalog-backend`.
|
||||
- Removed the previously deprecated function `parseEntityName`. Please use `parseEntityRef` instead.
|
||||
|
||||
- d1d488e371: **BREAKING**: The default validator for `metadata.tags` now permits the colon (`:`) character as well.
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 2952566587: Updated `parseEntityRef` to allow `:` and `/` in the entity name. For example, parsing `'component:default/foo:bar'` will result in the name `'foo:bar'`.
|
||||
|
||||
Note that only parsing `'foo:bar'` itself will result in the name `'bar'` and the entity kind `'foo'`, meaning this is a particularly nasty trap for user defined entity references. For this reason it is strongly discouraged to use names that contain these characters, and the catalog model does not allow it by default. However, this change now makes is possible to use these names if the default catalog validation is replaced, and in particular a high level of automation of the catalog population can limit issues that it might otherwise cause.
|
||||
|
||||
- b1aacbf96a: Applied the fix for the `/alpha` entry point resolution that was part of the `v0.70.1` release of Backstage.
|
||||
- d1d488e371: **DEPRECATION**:
|
||||
|
||||
- Deprecated `CommonValidatorFunctions.isValidString`, please use `isNonEmptyString` instead which is equivalent but better named.
|
||||
- Deprecated `CommonValidatorFunctions.isValidTag`, with no replacement. Its purpose was too specific and not reusable, so it will be removed.
|
||||
|
||||
## 0.12.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/catalog-model",
|
||||
"description": "Types and validators that help describe the model of a Backstage Catalog",
|
||||
"version": "0.12.0",
|
||||
"version": "0.13.0-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
@@ -43,7 +43,7 @@
|
||||
"uuid": "^8.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@types/jest": "^26.0.7",
|
||||
"@types/json-schema": "^7.0.5",
|
||||
"@types/lodash": "^4.14.151",
|
||||
|
||||
@@ -1,5 +1,31 @@
|
||||
# @backstage/cli
|
||||
|
||||
## 0.15.2-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 2c528506aa: Added `--since <ref>` flag for `repo build` command.`
|
||||
- d3d1b82198: chore(deps): bump `minimatch` from 5.0.0 to 5.0.1
|
||||
- e0a69ba49f: build(deps): bump `fs-extra` from 9.1.0 to 10.0.1
|
||||
- 44cc7c3b95: Added a new ESLint configuration setup for packages, which utilizes package roles to generate the correct configuration. The new configuration is available at `@backstage/cli/config/eslint-factory`.
|
||||
|
||||
Introduced a new `backstage-cli migrate package-lint-configs` command, which migrates old lint configurations to use `@backstage/cli/config/eslint-factory`.
|
||||
|
||||
- b1aacbf96a: Applied the fix from version `0.15.1` of this package, which was part of the `v0.70.1` release of Backstage.
|
||||
- d2ecde959b: Package roles are now marked as stable and migration is encouraged. Please check out the [migration guide](https://backstage.io/docs/tutorials/package-role-migration).
|
||||
|
||||
The new `package`, `repo`, and `migrate` command categories are now marked as stable.
|
||||
|
||||
Marked all commands that are being replaced by the new `package` and `repo` commands as deprecated.
|
||||
|
||||
The package templates used by the `create` command have all been updated to use package roles.
|
||||
|
||||
- f06da37290: The backend development setup now ignores the `"browser"` and `"module"` entry points in `package.json`, and instead always uses `"main"`.
|
||||
- 6a1fe077ad: Changed the logic for how modules are marked as external in the Rollup build of packages. Rather than only marking dependencies and build-in Node.js modules as external, all non-relative imports are now considered external.
|
||||
- dc6002a7b9: The `--since` flag of repo commands now silently falls back to using the provided `ref` directly if no merge base is available.
|
||||
- Updated dependencies
|
||||
- @backstage/config-loader@0.9.7-next.0
|
||||
|
||||
## 0.15.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/cli",
|
||||
"description": "CLI for developing Backstage plugins and apps",
|
||||
"version": "0.15.0",
|
||||
"version": "0.15.2-next.0",
|
||||
"private": false,
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
@@ -33,7 +33,7 @@
|
||||
"dependencies": {
|
||||
"@backstage/cli-common": "^0.1.8",
|
||||
"@backstage/config": "^0.1.15",
|
||||
"@backstage/config-loader": "^0.9.6",
|
||||
"@backstage/config-loader": "^0.9.7-next.0",
|
||||
"@backstage/errors": "^0.2.2",
|
||||
"@backstage/release-manifests": "^0.0.2",
|
||||
"@backstage/types": "^0.1.3",
|
||||
@@ -121,12 +121,12 @@
|
||||
"zod": "^3.11.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/backend-common": "^0.12.0",
|
||||
"@backstage/backend-common": "^0.13.0-next.0",
|
||||
"@backstage/config": "^0.1.15",
|
||||
"@backstage/core-components": "^0.9.0",
|
||||
"@backstage/core-components": "^0.9.1-next.0",
|
||||
"@backstage/core-plugin-api": "^0.8.0",
|
||||
"@backstage/core-app-api": "^0.6.0",
|
||||
"@backstage/dev-utils": "^0.2.24",
|
||||
"@backstage/dev-utils": "^0.2.25-next.0",
|
||||
"@backstage/test-utils": "^0.3.0",
|
||||
"@backstage/theme": "^0.2.15",
|
||||
"@types/diff": "^5.0.0",
|
||||
@@ -137,7 +137,7 @@
|
||||
"@types/minimatch": "^3.0.5",
|
||||
"@types/mock-fs": "^4.13.0",
|
||||
"@types/node": "^14.14.32",
|
||||
"@types/npm-packlist": "^1.1.2",
|
||||
"@types/npm-packlist": "^3.0.0",
|
||||
"@types/recursive-readdir": "^2.2.0",
|
||||
"@types/rollup-plugin-peer-deps-external": "^2.2.0",
|
||||
"@types/rollup-plugin-postcss": "^3.1.4",
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
# @backstage/codemods
|
||||
|
||||
## 0.1.35-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/core-components@0.9.1-next.0
|
||||
|
||||
## 0.1.35
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/codemods",
|
||||
"description": "A collection of codemods for Backstage projects",
|
||||
"version": "0.1.34",
|
||||
"version": "0.1.35-next.0",
|
||||
"private": false,
|
||||
"publishConfig": {
|
||||
"access": "public",
|
||||
@@ -36,7 +36,7 @@
|
||||
"dependencies": {
|
||||
"@backstage/cli-common": "^0.1.8",
|
||||
"@backstage/core-app-api": "*",
|
||||
"@backstage/core-components": "*",
|
||||
"@backstage/core-components": "0.9.1-next.0",
|
||||
"@backstage/core-plugin-api": "*",
|
||||
"chalk": "^4.0.0",
|
||||
"jscodeshift": "^0.13.0",
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @backstage/config-loader
|
||||
|
||||
## 0.9.7-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- e0a69ba49f: build(deps): bump `fs-extra` from 9.1.0 to 10.0.1
|
||||
|
||||
## 0.9.6
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/config-loader",
|
||||
"description": "Config loading functionality used by Backstage backend, and CLI",
|
||||
"version": "0.9.6",
|
||||
"version": "0.9.7-next.0",
|
||||
"private": false,
|
||||
"publishConfig": {
|
||||
"access": "public",
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
"react": "^16.13.1 || ^17.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@backstage/test-utils": "^0.3.0",
|
||||
"@testing-library/jest-dom": "^5.10.1",
|
||||
"@testing-library/react": "^11.2.5",
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
# @backstage/core-components
|
||||
|
||||
## 0.9.1-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 23568dd328: chore(deps): bump `@react-hookz/web` from 12.3.0 to 13.0.0
|
||||
- 95667624c1: Add names to sidebar sub menu styles for customization
|
||||
|
||||
## 0.9.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/core-components",
|
||||
"description": "Core components used by Backstage plugins and apps",
|
||||
"version": "0.9.0",
|
||||
"version": "0.9.1-next.0",
|
||||
"private": false,
|
||||
"publishConfig": {
|
||||
"access": "public",
|
||||
@@ -79,7 +79,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/core-app-api": "^0.6.0",
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@backstage/test-utils": "^0.3.0",
|
||||
"@testing-library/jest-dom": "^5.10.1",
|
||||
"@testing-library/react": "^11.2.5",
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
"react": "^16.13.1 || ^17.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@backstage/core-app-api": "^0.6.0",
|
||||
"@backstage/test-utils": "^0.3.0",
|
||||
"@testing-library/jest-dom": "^5.10.1",
|
||||
|
||||
@@ -1,5 +1,73 @@
|
||||
# @backstage/create-app
|
||||
|
||||
## 0.4.23-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- f9c7bdd899: Builtin support for cookiecutter based templates has been removed from `@backstage/plugin-scaffolder-backend`. Due to this, the `containerRunner` argument to its `createRouter` has also been removed.
|
||||
|
||||
If you do not use cookiecutter templates and are fine with removing support from it in your own installation, update your `packages/backend/src/plugins/scaffolder.ts` file as follows:
|
||||
|
||||
```diff
|
||||
-import { DockerContainerRunner } from '@backstage/backend-common';
|
||||
import { CatalogClient } from '@backstage/catalog-client';
|
||||
import { createRouter } from '@backstage/plugin-scaffolder-backend';
|
||||
-import Docker from 'dockerode';
|
||||
import { Router } from 'express';
|
||||
import type { PluginEnvironment } from '../types';
|
||||
|
||||
export default async function createPlugin({
|
||||
reader,
|
||||
discovery,
|
||||
}: PluginEnvironment): Promise<Router> {
|
||||
- const dockerClient = new Docker();
|
||||
- const containerRunner = new DockerContainerRunner({ dockerClient });
|
||||
-
|
||||
const catalogClient = new CatalogClient({ discoveryApi: discovery });
|
||||
-
|
||||
return await createRouter({
|
||||
- containerRunner,
|
||||
logger,
|
||||
config,
|
||||
// ...
|
||||
```
|
||||
|
||||
If you want to retain cookiecutter support, please use the `@backstage/plugin-scaffolder-backend-module-cookiecutter` package explicitly (see [its README](https://github.com/backstage/backstage/tree/master/plugins/scaffolder-backend-module-cookiecutter) for installation instructions).
|
||||
|
||||
- 8a57b6595b: Removed the `cookiecutter-golang` template from the default `create-app` install as we no longer provide `cookiecutter` action out of the box.
|
||||
|
||||
You can remove the template by removing the following lines from your `app-config.yaml` under `catalog.locations`:
|
||||
|
||||
```diff
|
||||
- - type: url
|
||||
- target: https://github.com/spotify/cookiecutter-golang/blob/master/template.yaml
|
||||
- rules:
|
||||
- - allow: [Template]
|
||||
```
|
||||
|
||||
- e0a69ba49f: build(deps): bump `fs-extra` from 9.1.0 to 10.0.1
|
||||
- 1201383b60: Updated the template to write the Backstage release version to `backstage.json`, rather than the version of `@backstage/create-app`. This change is applied automatically when running `backstage-cli versions:bump` in the latest version of the Backstage CLI.
|
||||
- c543fe3ff2: Postgres-based search is now installed when PG is chosen as the desired database for Backstage.
|
||||
|
||||
There is no need to make this change in an existing Backstage backend. See [supported search engines](https://backstage.io/docs/features/search/search-engines) for details about production-ready search engines.
|
||||
|
||||
- 55150919ed: - **BREAKING**: Support for `backstage.io/v1beta2` Software Templates has been removed. Please migrate your legacy templates to the new `scaffolder.backstage.io/v1beta3` `apiVersion` by following the [migration guide](https://backstage.io/docs/features/software-templates/migrating-from-v1beta2-to-v1beta3)
|
||||
- bde30664c4: Updated template to use package roles. To apply this change to an existing app, check out the [migration guide](https://backstage.io/docs/tutorials/package-role-migration).
|
||||
|
||||
Specifically the following scripts in the root `package.json` have also been updated:
|
||||
|
||||
```diff
|
||||
- "build": "lerna run build",
|
||||
+ "build": "backstage-cli repo build --all",
|
||||
|
||||
...
|
||||
|
||||
- "lint": "lerna run lint --since origin/master --",
|
||||
- "lint:all": "lerna run lint --",
|
||||
+ "lint": "backstage-cli repo lint --since origin/master",
|
||||
+ "lint:all": "backstage-cli repo lint",
|
||||
```
|
||||
|
||||
## 0.4.22
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/create-app",
|
||||
"description": "A CLI that helps you create your own Backstage app",
|
||||
"version": "0.4.22",
|
||||
"version": "0.4.23-next.0",
|
||||
"private": false,
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
# @backstage/dev-utils
|
||||
|
||||
## 0.2.25-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-react@0.9.0-next.0
|
||||
- @backstage/core-components@0.9.1-next.0
|
||||
- @backstage/catalog-model@0.13.0-next.0
|
||||
- @backstage/app-defaults@0.2.1-next.0
|
||||
- @backstage/integration-react@0.1.25-next.0
|
||||
|
||||
## 0.2.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/dev-utils",
|
||||
"description": "Utilities for developing Backstage plugins.",
|
||||
"version": "0.2.24",
|
||||
"version": "0.2.25-next.0",
|
||||
"private": false,
|
||||
"publishConfig": {
|
||||
"access": "public",
|
||||
@@ -33,13 +33,13 @@
|
||||
"start": "backstage-cli package start"
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage/app-defaults": "^0.2.0",
|
||||
"@backstage/app-defaults": "^0.2.1-next.0",
|
||||
"@backstage/core-app-api": "^0.6.0",
|
||||
"@backstage/core-components": "^0.9.0",
|
||||
"@backstage/core-components": "^0.9.1-next.0",
|
||||
"@backstage/core-plugin-api": "^0.8.0",
|
||||
"@backstage/catalog-model": "^0.12.0",
|
||||
"@backstage/integration-react": "^0.1.24",
|
||||
"@backstage/plugin-catalog-react": "^0.8.0",
|
||||
"@backstage/catalog-model": "^0.13.0-next.0",
|
||||
"@backstage/integration-react": "^0.1.25-next.0",
|
||||
"@backstage/plugin-catalog-react": "^0.9.0-next.0",
|
||||
"@backstage/test-utils": "^0.3.0",
|
||||
"@backstage/theme": "^0.2.15",
|
||||
"@material-ui/core": "^4.12.2",
|
||||
@@ -59,7 +59,7 @@
|
||||
"react-dom": "^16.13.1 || ^17.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@types/jest": "^26.0.7",
|
||||
"@types/node": "^14.14.32"
|
||||
},
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
"serialize-error": "^8.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@types/jest": "^26.0.7"
|
||||
},
|
||||
"files": [
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
# @backstage/integration-react
|
||||
|
||||
## 0.1.25-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/core-components@0.9.1-next.0
|
||||
|
||||
## 0.1.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/integration-react",
|
||||
"description": "Frontend package for managing integrations towards external systems",
|
||||
"version": "0.1.24",
|
||||
"version": "0.1.25-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
@@ -25,7 +25,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage/config": "^0.1.15",
|
||||
"@backstage/core-components": "^0.9.0",
|
||||
"@backstage/core-components": "^0.9.1-next.0",
|
||||
"@backstage/core-plugin-api": "^0.8.0",
|
||||
"@backstage/integration": "^0.8.0",
|
||||
"@backstage/theme": "^0.2.15",
|
||||
@@ -38,8 +38,8 @@
|
||||
"react": "^16.13.1 || ^17.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/dev-utils": "^0.2.24",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@backstage/dev-utils": "^0.2.25-next.0",
|
||||
"@backstage/test-utils": "^0.3.0",
|
||||
"@testing-library/jest-dom": "^5.10.1",
|
||||
"@testing-library/react": "^11.2.5",
|
||||
|
||||
@@ -42,8 +42,8 @@
|
||||
"lodash": "^4.17.21"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/config-loader": "^0.9.6",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@backstage/config-loader": "^0.9.7-next.0",
|
||||
"@backstage/test-utils": "^0.3.0",
|
||||
"@types/jest": "^26.0.7",
|
||||
"@types/luxon": "^2.0.4",
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
# @backstage/search-common
|
||||
|
||||
## 0.3.1-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- d52155466a: **DEPRECATION**
|
||||
|
||||
The `@backstage/search-common` package is being renamed `@backstage/plugin-search-common`. We may continue to publish changes to `@backstage/search-common` for a time, but will stop doing so in the near future. If you depend on this package, you should update your dependencies to point at the renamed package.
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-search-common@0.3.1-next.0
|
||||
|
||||
## 0.3.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/search-common",
|
||||
"description": "Common functionalities for Search, to be shared between various search-enabled plugins",
|
||||
"version": "0.3.0",
|
||||
"version": "0.3.1-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"private": false,
|
||||
@@ -39,7 +39,7 @@
|
||||
"url": "https://github.com/backstage/backstage/issues"
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage/plugin-search-common": "^0.3.0"
|
||||
"@backstage/plugin-search-common": "^0.3.1-next.0"
|
||||
},
|
||||
"devDependencies": {},
|
||||
"jest": {
|
||||
|
||||
@@ -1,5 +1,18 @@
|
||||
# techdocs-cli-embedded-app
|
||||
|
||||
## 0.2.67-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/cli@0.15.2-next.0
|
||||
- @backstage/plugin-catalog@0.10.0-next.0
|
||||
- @backstage/core-components@0.9.1-next.0
|
||||
- @backstage/catalog-model@0.13.0-next.0
|
||||
- @backstage/plugin-techdocs@0.15.1-next.0
|
||||
- @backstage/app-defaults@0.2.1-next.0
|
||||
- @backstage/integration-react@0.1.25-next.0
|
||||
|
||||
## 0.2.66
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
{
|
||||
"name": "techdocs-cli-embedded-app",
|
||||
"version": "0.2.66",
|
||||
"version": "0.2.67-next.0",
|
||||
"private": true,
|
||||
"backstage": {
|
||||
"role": "frontend"
|
||||
},
|
||||
"bundled": true,
|
||||
"dependencies": {
|
||||
"@backstage/app-defaults": "^0.2.0",
|
||||
"@backstage/catalog-model": "^0.12.0",
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/app-defaults": "^0.2.1-next.0",
|
||||
"@backstage/catalog-model": "^0.13.0-next.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@backstage/config": "^0.1.15",
|
||||
"@backstage/core-app-api": "^0.6.0",
|
||||
"@backstage/core-components": "^0.9.0",
|
||||
"@backstage/core-components": "^0.9.1-next.0",
|
||||
"@backstage/core-plugin-api": "^0.8.0",
|
||||
"@backstage/integration-react": "^0.1.24",
|
||||
"@backstage/plugin-catalog": "^0.9.1",
|
||||
"@backstage/plugin-techdocs": "^0.15.0",
|
||||
"@backstage/integration-react": "^0.1.25-next.0",
|
||||
"@backstage/plugin-catalog": "^0.10.0-next.0",
|
||||
"@backstage/plugin-techdocs": "^0.15.1-next.0",
|
||||
"@backstage/test-utils": "^0.3.0",
|
||||
"@backstage/theme": "^0.2.15",
|
||||
"@material-ui/core": "^4.11.0",
|
||||
@@ -29,7 +29,7 @@
|
||||
"react-use": "^17.2.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@testing-library/jest-dom": "^5.10.1",
|
||||
"@testing-library/react": "^11.2.5",
|
||||
"@testing-library/user-event": "^13.1.8",
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
# @techdocs/cli
|
||||
|
||||
## 0.8.17-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- e0a69ba49f: build(deps): bump `fs-extra` from 9.1.0 to 10.0.1
|
||||
- 91bf1e6c1a: Use `@backstage/plugin-techdocs-node` package instead of `@backstage/techdocs-common`.
|
||||
- Updated dependencies
|
||||
- @backstage/backend-common@0.13.0-next.0
|
||||
- @backstage/plugin-techdocs-node@0.11.12-next.0
|
||||
- @backstage/catalog-model@0.13.0-next.0
|
||||
|
||||
## 0.8.16
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@techdocs/cli",
|
||||
"description": "Utility CLI for managing TechDocs sites in Backstage.",
|
||||
"version": "0.8.16",
|
||||
"version": "0.8.17-next.0",
|
||||
"private": false,
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
@@ -37,7 +37,7 @@
|
||||
"techdocs-cli": "bin/techdocs-cli"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@types/commander": "^2.12.2",
|
||||
"@types/fs-extra": "^9.0.6",
|
||||
"@types/http-proxy": "^1.17.4",
|
||||
@@ -62,11 +62,11 @@
|
||||
"ext": "ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage/backend-common": "^0.12.0",
|
||||
"@backstage/catalog-model": "^0.12.0",
|
||||
"@backstage/backend-common": "^0.13.0-next.0",
|
||||
"@backstage/catalog-model": "^0.13.0-next.0",
|
||||
"@backstage/cli-common": "^0.1.8",
|
||||
"@backstage/config": "^0.1.15",
|
||||
"@backstage/plugin-techdocs-node": "^0.11.11",
|
||||
"@backstage/plugin-techdocs-node": "^0.11.12-next.0",
|
||||
"@types/dockerode": "^3.3.0",
|
||||
"commander": "^6.1.0",
|
||||
"dockerode": "^3.3.1",
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
# @backstage/techdocs-common
|
||||
|
||||
## 0.11.12-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- cea6f10b97: **DEPRECATION**
|
||||
|
||||
The `@backstage/techdocs-common` package is being renamed `@backstage/plugin-techdocs-node`. We may continue to publish changes to `@backstage/techdocs-common` for a time, but will stop doing so in the near future. If you depend on this package, you should update your dependencies to point at the renamed package.
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-techdocs-node@0.11.12-next.0
|
||||
|
||||
## 0.11.11
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/techdocs-common",
|
||||
"description": "Common node.js functionalities for TechDocs, to be shared between techdocs-backend plugin and techdocs-cli",
|
||||
"version": "0.11.11",
|
||||
"version": "0.11.12-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"private": false,
|
||||
@@ -40,7 +40,7 @@
|
||||
"url": "https://github.com/backstage/backstage/issues"
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage/plugin-techdocs-node": "^0.11.11"
|
||||
"@backstage/plugin-techdocs-node": "^0.11.12-next.0"
|
||||
},
|
||||
"devDependencies": {},
|
||||
"jest": {
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
"react": "^16.13.1 || ^17.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@types/jest": "^26.0.7",
|
||||
"@types/node": "^14.14.32",
|
||||
"msw": "^0.35.0"
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
"@material-ui/core": "^4.12.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.15.0"
|
||||
"@backstage/cli": "^0.15.2-next.0"
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
},
|
||||
"dependencies": {},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@types/zen-observable": "^0.8.0",
|
||||
"zen-observable": "^0.8.15"
|
||||
},
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
"react": "^16.13.1 || ^17.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@testing-library/jest-dom": "^5.10.1",
|
||||
"@testing-library/react": "^11.2.5",
|
||||
"@testing-library/react-hooks": "^7.0.2"
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# @backstage/plugin-airbrake-backend
|
||||
|
||||
## 0.2.2-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 4f79204c47: Added `backstage.role` to `package.json`
|
||||
- Updated dependencies
|
||||
- @backstage/backend-common@0.13.0-next.0
|
||||
|
||||
## 0.2.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@backstage/plugin-airbrake-backend",
|
||||
"version": "0.2.1",
|
||||
"version": "0.2.2-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
@@ -22,7 +22,7 @@
|
||||
"clean": "backstage-cli package clean"
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage/backend-common": "^0.12.0",
|
||||
"@backstage/backend-common": "^0.13.0-next.0",
|
||||
"@backstage/config": "^0.1.15",
|
||||
"@types/express": "*",
|
||||
"express": "^4.17.1",
|
||||
@@ -33,7 +33,7 @@
|
||||
"yn": "^4.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@types/http-proxy-middleware": "^0.19.3",
|
||||
"@types/supertest": "^2.0.8",
|
||||
"supertest": "^6.1.6",
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# @backstage/plugin-airbrake
|
||||
|
||||
## 0.3.2-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-react@0.9.0-next.0
|
||||
- @backstage/core-components@0.9.1-next.0
|
||||
- @backstage/catalog-model@0.13.0-next.0
|
||||
- @backstage/dev-utils@0.2.25-next.0
|
||||
|
||||
## 0.3.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@backstage/plugin-airbrake",
|
||||
"version": "0.3.1",
|
||||
"version": "0.3.2-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
@@ -23,11 +23,11 @@
|
||||
"clean": "backstage-cli package clean"
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage/catalog-model": "^0.12.0",
|
||||
"@backstage/core-components": "^0.9.0",
|
||||
"@backstage/catalog-model": "^0.13.0-next.0",
|
||||
"@backstage/core-components": "^0.9.1-next.0",
|
||||
"@backstage/core-plugin-api": "^0.8.0",
|
||||
"@backstage/dev-utils": "^0.2.24",
|
||||
"@backstage/plugin-catalog-react": "^0.8.0",
|
||||
"@backstage/dev-utils": "^0.2.25-next.0",
|
||||
"@backstage/plugin-catalog-react": "^0.9.0-next.0",
|
||||
"@backstage/test-utils": "^0.3.0",
|
||||
"@backstage/theme": "^0.2.15",
|
||||
"@material-ui/core": "^4.12.2",
|
||||
@@ -40,9 +40,9 @@
|
||||
"react": "^16.13.1 || ^17.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/app-defaults": "^0.2.0",
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/dev-utils": "^0.2.24",
|
||||
"@backstage/app-defaults": "^0.2.1-next.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@backstage/dev-utils": "^0.2.25-next.0",
|
||||
"@backstage/test-utils": "^0.3.0",
|
||||
"@testing-library/jest-dom": "^5.10.1",
|
||||
"@testing-library/react": "^11.2.5",
|
||||
|
||||
+16
-16
@@ -18,23 +18,21 @@ import React from 'react';
|
||||
import { EntityAirbrakeWidget } from './EntityAirbrakeWidget';
|
||||
import exampleData from '../../api/mock/airbrakeGroupsApiMock.json';
|
||||
import {
|
||||
MockErrorApi,
|
||||
renderInTestApp,
|
||||
setupRequestMockHandlers,
|
||||
TestApiProvider,
|
||||
} from '@backstage/test-utils';
|
||||
import { createEntity } from '../../api';
|
||||
import {
|
||||
airbrakeApiRef,
|
||||
createEntity,
|
||||
localDiscoveryApi,
|
||||
MockAirbrakeApi,
|
||||
ProductionAirbrakeApi,
|
||||
} from '../../api';
|
||||
import { errorApiRef } from '@backstage/core-plugin-api';
|
||||
import { rest } from 'msw';
|
||||
import { setupServer } from 'msw/node';
|
||||
|
||||
describe('EntityAirbrakeContent', () => {
|
||||
describe('EntityAirbrakeWidget', () => {
|
||||
const worker = setupServer();
|
||||
setupRequestMockHandlers(worker);
|
||||
|
||||
@@ -47,20 +45,25 @@ describe('EntityAirbrakeContent', () => {
|
||||
expect(exampleData.groups.length).toBeGreaterThan(0);
|
||||
for (const group of exampleData.groups) {
|
||||
expect(
|
||||
await widget.getByText(group.errors[0].message),
|
||||
await widget.findByText(group.errors[0].message),
|
||||
).toBeInTheDocument();
|
||||
}
|
||||
});
|
||||
|
||||
it('states that the annotation is missing if no project ID annotation is provided', async () => {
|
||||
it('states that the annotation is missing if no project ID annotation is provided but does not error', async () => {
|
||||
const widget = await renderInTestApp(
|
||||
<TestApiProvider apis={[[airbrakeApiRef, new MockAirbrakeApi()]]}>
|
||||
<TestApiProvider
|
||||
apis={[[airbrakeApiRef, new ProductionAirbrakeApi(localDiscoveryApi)]]}
|
||||
>
|
||||
<EntityAirbrakeWidget entity={createEntity()} />
|
||||
</TestApiProvider>,
|
||||
);
|
||||
await expect(
|
||||
widget.findByText('Missing Annotation'),
|
||||
).resolves.toBeInTheDocument();
|
||||
expect(
|
||||
widget.queryByText(/.*Failed fetching Airbrake groups.*/),
|
||||
).not.toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('states that an error occurred if the API call fails', async () => {
|
||||
@@ -72,14 +75,10 @@ describe('EntityAirbrakeContent', () => {
|
||||
},
|
||||
),
|
||||
);
|
||||
const mockErrorApi = new MockErrorApi({ collect: true });
|
||||
|
||||
const widget = await renderInTestApp(
|
||||
<TestApiProvider
|
||||
apis={[
|
||||
[airbrakeApiRef, new ProductionAirbrakeApi(localDiscoveryApi)],
|
||||
[errorApiRef, mockErrorApi],
|
||||
]}
|
||||
apis={[[airbrakeApiRef, new ProductionAirbrakeApi(localDiscoveryApi)]]}
|
||||
>
|
||||
<EntityAirbrakeWidget entity={createEntity(123)} />
|
||||
</TestApiProvider>,
|
||||
@@ -88,9 +87,10 @@ describe('EntityAirbrakeContent', () => {
|
||||
await expect(
|
||||
widget.findByText(/.*there was an issue communicating with Airbrake.*/),
|
||||
).resolves.toBeInTheDocument();
|
||||
expect(mockErrorApi.getErrors().length).toBe(1);
|
||||
expect(mockErrorApi.getErrors()[0].error.message).toStrictEqual(
|
||||
'Failed fetching Airbrake groups',
|
||||
);
|
||||
expect(
|
||||
widget.getByRole('heading', {
|
||||
name: /.*Failed fetching Airbrake groups.*/,
|
||||
}),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -14,10 +14,11 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
import { Entity } from '@backstage/catalog-model';
|
||||
import React, { useEffect } from 'react';
|
||||
import React from 'react';
|
||||
import { Grid, Typography } from '@material-ui/core';
|
||||
import {
|
||||
EmptyState,
|
||||
ErrorPanel,
|
||||
InfoCard,
|
||||
MissingAnnotationEmptyState,
|
||||
Progress,
|
||||
@@ -25,7 +26,7 @@ import {
|
||||
import hash from 'object-hash';
|
||||
import { makeStyles } from '@material-ui/core/styles';
|
||||
import { BackstageTheme } from '@backstage/theme';
|
||||
import { ErrorApi, errorApiRef, useApi } from '@backstage/core-plugin-api';
|
||||
import { useApi } from '@backstage/core-plugin-api';
|
||||
import { airbrakeApiRef } from '../../api';
|
||||
import useAsync from 'react-use/lib/useAsync';
|
||||
import { AIRBRAKE_PROJECT_ID_ANNOTATION, useProjectId } from '../useProjectId';
|
||||
@@ -40,55 +41,50 @@ export const EntityAirbrakeWidget = ({ entity }: { entity: Entity }) => {
|
||||
const classes = useStyles();
|
||||
|
||||
const projectId = useProjectId(entity);
|
||||
const errorApi = useApi<ErrorApi>(errorApiRef);
|
||||
const airbrakeApi = useApi(airbrakeApiRef);
|
||||
|
||||
const { loading, value, error } = useAsync(
|
||||
() => airbrakeApi.fetchGroups(projectId),
|
||||
[airbrakeApi, projectId],
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
if (error) {
|
||||
errorApi.post(error);
|
||||
const { loading, value, error } = useAsync(() => {
|
||||
if (!projectId) {
|
||||
return Promise.resolve(undefined);
|
||||
}
|
||||
}, [error, errorApi]);
|
||||
|
||||
if (loading || !projectId || error) {
|
||||
return airbrakeApi.fetchGroups(projectId);
|
||||
}, [airbrakeApi, projectId]);
|
||||
|
||||
if (!projectId) {
|
||||
return (
|
||||
<InfoCard title="Airbrake groups" variant="gridItem">
|
||||
{loading && <Progress />}
|
||||
|
||||
{!loading && !projectId && (
|
||||
<MissingAnnotationEmptyState
|
||||
annotation={AIRBRAKE_PROJECT_ID_ANNOTATION}
|
||||
/>
|
||||
)}
|
||||
|
||||
{!loading && error && (
|
||||
<EmptyState
|
||||
missing="info"
|
||||
title="No information to display"
|
||||
description={`There is no Airbrake project with id '${projectId}' or there was an issue communicating with Airbrake.`}
|
||||
/>
|
||||
)}
|
||||
</InfoCard>
|
||||
<MissingAnnotationEmptyState
|
||||
annotation={AIRBRAKE_PROJECT_ID_ANNOTATION}
|
||||
/>
|
||||
);
|
||||
} else if (loading) {
|
||||
return <Progress />;
|
||||
} else if (value) {
|
||||
return (
|
||||
<Grid container spacing={3} direction="column">
|
||||
{value.groups?.map(group => (
|
||||
<Grid item key={group.id}>
|
||||
{group.errors?.map(groupError => (
|
||||
<InfoCard title={groupError.type} key={hash(groupError)}>
|
||||
<Typography variant="body1" className={classes.multilineText}>
|
||||
{groupError.message}
|
||||
</Typography>
|
||||
</InfoCard>
|
||||
))}
|
||||
</Grid>
|
||||
))}
|
||||
</Grid>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<Grid container spacing={3} direction="column">
|
||||
{value?.groups?.map(group => (
|
||||
<Grid item key={group.id}>
|
||||
{group.errors?.map(groupError => (
|
||||
<InfoCard title={groupError.type} key={hash(groupError)}>
|
||||
<Typography variant="body1" className={classes.multilineText}>
|
||||
{groupError.message}
|
||||
</Typography>
|
||||
</InfoCard>
|
||||
))}
|
||||
</Grid>
|
||||
))}
|
||||
</Grid>
|
||||
<>
|
||||
{error && <ErrorPanel error={error} />}
|
||||
<EmptyState
|
||||
missing="info"
|
||||
title="No information to display"
|
||||
description={`There is no Airbrake project with id '${projectId}' or there was an issue communicating with Airbrake.`}
|
||||
/>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
# @backstage/plugin-allure
|
||||
|
||||
## 0.1.18-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-react@0.9.0-next.0
|
||||
- @backstage/core-components@0.9.1-next.0
|
||||
- @backstage/catalog-model@0.13.0-next.0
|
||||
|
||||
## 0.1.17
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/plugin-allure",
|
||||
"description": "A Backstage plugin that integrates with Allure",
|
||||
"version": "0.1.17",
|
||||
"version": "0.1.18-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
@@ -25,10 +25,10 @@
|
||||
"clean": "backstage-cli package clean"
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage/catalog-model": "^0.12.0",
|
||||
"@backstage/core-components": "^0.9.0",
|
||||
"@backstage/catalog-model": "^0.13.0-next.0",
|
||||
"@backstage/core-components": "^0.9.1-next.0",
|
||||
"@backstage/core-plugin-api": "^0.8.0",
|
||||
"@backstage/plugin-catalog-react": "^0.8.0",
|
||||
"@backstage/plugin-catalog-react": "^0.9.0-next.0",
|
||||
"@backstage/theme": "^0.2.15",
|
||||
"@material-ui/core": "^4.12.2",
|
||||
"@material-ui/icons": "^4.9.1",
|
||||
@@ -40,9 +40,9 @@
|
||||
"react": "^16.13.1 || ^17.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@backstage/core-app-api": "^0.6.0",
|
||||
"@backstage/dev-utils": "^0.2.24",
|
||||
"@backstage/dev-utils": "^0.2.25-next.0",
|
||||
"@backstage/test-utils": "^0.3.0",
|
||||
"@testing-library/jest-dom": "^5.10.1",
|
||||
"@testing-library/react": "^11.2.5",
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
# @backstage/plugin-analytics-module-ga
|
||||
|
||||
## 0.1.13-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/core-components@0.9.1-next.0
|
||||
|
||||
## 0.1.12
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@backstage/plugin-analytics-module-ga",
|
||||
"version": "0.1.12",
|
||||
"version": "0.1.13-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
@@ -25,7 +25,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage/config": "^0.1.15",
|
||||
"@backstage/core-components": "^0.9.0",
|
||||
"@backstage/core-components": "^0.9.1-next.0",
|
||||
"@backstage/core-plugin-api": "^0.8.0",
|
||||
"@backstage/theme": "^0.2.15",
|
||||
"@material-ui/core": "^4.12.2",
|
||||
@@ -38,9 +38,9 @@
|
||||
"react": "^16.13.1 || ^17.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@backstage/core-app-api": "^0.6.0",
|
||||
"@backstage/dev-utils": "^0.2.24",
|
||||
"@backstage/dev-utils": "^0.2.25-next.0",
|
||||
"@backstage/test-utils": "^0.3.0",
|
||||
"@testing-library/jest-dom": "^5.10.1",
|
||||
"@testing-library/react": "^11.2.5",
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
# @backstage/plugin-apache-airflow
|
||||
|
||||
## 0.1.10-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/core-components@0.9.1-next.0
|
||||
|
||||
## 0.1.9
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@backstage/plugin-apache-airflow",
|
||||
"version": "0.1.9",
|
||||
"version": "0.1.10-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
@@ -23,7 +23,7 @@
|
||||
"clean": "backstage-cli package clean"
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage/core-components": "^0.9.0",
|
||||
"@backstage/core-components": "^0.9.1-next.0",
|
||||
"@backstage/core-plugin-api": "^0.8.0",
|
||||
"@material-ui/core": "^4.12.2",
|
||||
"@material-ui/icons": "^4.9.1",
|
||||
@@ -36,9 +36,9 @@
|
||||
"react": "^16.13.1 || ^17.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@backstage/core-app-api": "^0.6.0",
|
||||
"@backstage/dev-utils": "^0.2.24",
|
||||
"@backstage/dev-utils": "^0.2.25-next.0",
|
||||
"@backstage/test-utils": "^0.3.0",
|
||||
"@testing-library/jest-dom": "^5.10.1",
|
||||
"@testing-library/react": "^11.2.5",
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# @backstage/plugin-api-docs
|
||||
|
||||
## 0.8.2-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog@0.10.0-next.0
|
||||
- @backstage/plugin-catalog-react@0.9.0-next.0
|
||||
- @backstage/core-components@0.9.1-next.0
|
||||
- @backstage/catalog-model@0.13.0-next.0
|
||||
|
||||
## 0.8.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/plugin-api-docs",
|
||||
"description": "A Backstage plugin that helps represent API entities in the frontend",
|
||||
"version": "0.8.1",
|
||||
"version": "0.8.2-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
@@ -34,11 +34,11 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@asyncapi/react-component": "1.0.0-next.33",
|
||||
"@backstage/catalog-model": "^0.12.0",
|
||||
"@backstage/core-components": "^0.9.0",
|
||||
"@backstage/catalog-model": "^0.13.0-next.0",
|
||||
"@backstage/core-components": "^0.9.1-next.0",
|
||||
"@backstage/core-plugin-api": "^0.8.0",
|
||||
"@backstage/plugin-catalog": "^0.9.1",
|
||||
"@backstage/plugin-catalog-react": "^0.8.0",
|
||||
"@backstage/plugin-catalog": "^0.10.0-next.0",
|
||||
"@backstage/plugin-catalog-react": "^0.9.0-next.0",
|
||||
"@backstage/theme": "^0.2.15",
|
||||
"@material-ui/core": "^4.12.2",
|
||||
"@material-ui/icons": "^4.9.1",
|
||||
@@ -56,9 +56,9 @@
|
||||
"react": "^16.13.1 || ^17.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@backstage/core-app-api": "^0.6.0",
|
||||
"@backstage/dev-utils": "^0.2.24",
|
||||
"@backstage/dev-utils": "^0.2.25-next.0",
|
||||
"@backstage/test-utils": "^0.3.0",
|
||||
"@testing-library/jest-dom": "^5.10.1",
|
||||
"@testing-library/react": "^11.2.5",
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# @backstage/plugin-app-backend
|
||||
|
||||
## 0.3.29-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ab7cd7d70e: Do some groundwork for supporting the `better-sqlite3` driver, to maybe eventually replace `@vscode/sqlite3` (#9912)
|
||||
- e0a69ba49f: build(deps): bump `fs-extra` from 9.1.0 to 10.0.1
|
||||
- Updated dependencies
|
||||
- @backstage/backend-common@0.13.0-next.0
|
||||
- @backstage/config-loader@0.9.7-next.0
|
||||
|
||||
## 0.3.28
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/plugin-app-backend",
|
||||
"description": "A Backstage backend plugin that serves the Backstage frontend app",
|
||||
"version": "0.3.28",
|
||||
"version": "0.3.29-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
@@ -33,8 +33,8 @@
|
||||
"clean": "backstage-cli package clean"
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage/backend-common": "^0.12.0",
|
||||
"@backstage/config-loader": "^0.9.6",
|
||||
"@backstage/backend-common": "^0.13.0-next.0",
|
||||
"@backstage/config-loader": "^0.9.7-next.0",
|
||||
"@backstage/config": "^0.1.15",
|
||||
"@backstage/types": "^0.1.3",
|
||||
"@types/express": "^4.17.6",
|
||||
@@ -50,8 +50,8 @@
|
||||
"yn": "^4.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/backend-test-utils": "^0.1.20",
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/backend-test-utils": "^0.1.21-next.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@backstage/types": "^0.1.3",
|
||||
"@types/supertest": "^2.0.8",
|
||||
"mock-fs": "^5.1.0",
|
||||
|
||||
@@ -1,5 +1,19 @@
|
||||
# @backstage/plugin-auth-backend
|
||||
|
||||
## 0.12.1-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ab7cd7d70e: Do some groundwork for supporting the `better-sqlite3` driver, to maybe eventually replace `@vscode/sqlite3` (#9912)
|
||||
- e0a69ba49f: build(deps): bump `fs-extra` from 9.1.0 to 10.0.1
|
||||
- bf95bb806c: Remove usages of now-removed `CatalogApi.getEntityByName`
|
||||
- 3c2bc73901: Use `setupRequestMockHandlers` from `@backstage/backend-test-utils`
|
||||
- Updated dependencies
|
||||
- @backstage/backend-common@0.13.0-next.0
|
||||
- @backstage/catalog-model@0.13.0-next.0
|
||||
- @backstage/catalog-client@0.9.0-next.0
|
||||
- @backstage/plugin-auth-node@0.1.5-next.0
|
||||
|
||||
## 0.12.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/plugin-auth-backend",
|
||||
"description": "A Backstage backend plugin that handles authentication",
|
||||
"version": "0.12.0",
|
||||
"version": "0.12.1-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
@@ -33,10 +33,10 @@
|
||||
"clean": "backstage-cli package clean"
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage/plugin-auth-node": "^0.1.4",
|
||||
"@backstage/backend-common": "^0.12.0",
|
||||
"@backstage/catalog-client": "^0.8.0",
|
||||
"@backstage/catalog-model": "^0.12.0",
|
||||
"@backstage/plugin-auth-node": "^0.1.5-next.0",
|
||||
"@backstage/backend-common": "^0.13.0-next.0",
|
||||
"@backstage/catalog-client": "^0.9.0-next.0",
|
||||
"@backstage/catalog-model": "^0.13.0-next.0",
|
||||
"@backstage/config": "^0.1.15",
|
||||
"@backstage/errors": "^0.2.2",
|
||||
"@backstage/types": "^0.1.3",
|
||||
@@ -76,8 +76,8 @@
|
||||
"yn": "^4.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/backend-test-utils": "^0.1.20",
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/backend-test-utils": "^0.1.21-next.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@types/body-parser": "^1.19.0",
|
||||
"@types/cookie-parser": "^1.4.2",
|
||||
"@types/express-session": "^1.17.2",
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# @backstage/plugin-auth-node
|
||||
|
||||
## 0.1.5-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/backend-common@0.13.0-next.0
|
||||
- @backstage/catalog-model@0.13.0-next.0
|
||||
|
||||
## 0.1.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@backstage/plugin-auth-node",
|
||||
"version": "0.1.4",
|
||||
"version": "0.1.5-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
@@ -23,8 +23,8 @@
|
||||
"start": "backstage-cli package start"
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage/backend-common": "^0.12.0",
|
||||
"@backstage/catalog-model": "^0.12.0",
|
||||
"@backstage/backend-common": "^0.13.0-next.0",
|
||||
"@backstage/catalog-model": "^0.13.0-next.0",
|
||||
"@backstage/config": "^0.1.15",
|
||||
"@backstage/errors": "^0.2.2",
|
||||
"jose": "^1.27.1",
|
||||
@@ -32,7 +32,7 @@
|
||||
"winston": "^3.2.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"msw": "^0.35.0",
|
||||
"uuid": "^8.0.0"
|
||||
},
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
# @backstage/plugin-azure-devops-backend
|
||||
|
||||
## 0.3.8-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/backend-common@0.13.0-next.0
|
||||
|
||||
## 0.3.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@backstage/plugin-azure-devops-backend",
|
||||
"version": "0.3.7",
|
||||
"version": "0.3.8-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
@@ -23,7 +23,7 @@
|
||||
"clean": "backstage-cli package clean"
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage/backend-common": "^0.12.0",
|
||||
"@backstage/backend-common": "^0.13.0-next.0",
|
||||
"@backstage/config": "^0.1.15",
|
||||
"@backstage/plugin-azure-devops-common": "^0.2.2",
|
||||
"@types/express": "^4.17.6",
|
||||
@@ -35,7 +35,7 @@
|
||||
"yn": "^4.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@types/supertest": "^2.0.8",
|
||||
"supertest": "^6.1.6",
|
||||
"msw": "^0.35.0"
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
"clean": "backstage-cli package clean"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.15.0"
|
||||
"@backstage/cli": "^0.15.2-next.0"
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
# @backstage/plugin-azure-devops
|
||||
|
||||
## 0.1.18-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-react@0.9.0-next.0
|
||||
- @backstage/core-components@0.9.1-next.0
|
||||
- @backstage/catalog-model@0.13.0-next.0
|
||||
|
||||
## 0.1.17
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@backstage/plugin-azure-devops",
|
||||
"version": "0.1.17",
|
||||
"version": "0.1.18-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
@@ -30,12 +30,12 @@
|
||||
"clean": "backstage-cli package clean"
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage/catalog-model": "^0.12.0",
|
||||
"@backstage/core-components": "^0.9.0",
|
||||
"@backstage/catalog-model": "^0.13.0-next.0",
|
||||
"@backstage/core-components": "^0.9.1-next.0",
|
||||
"@backstage/core-plugin-api": "^0.8.0",
|
||||
"@backstage/errors": "^0.2.2",
|
||||
"@backstage/plugin-azure-devops-common": "^0.2.2",
|
||||
"@backstage/plugin-catalog-react": "^0.8.0",
|
||||
"@backstage/plugin-catalog-react": "^0.9.0-next.0",
|
||||
"@backstage/theme": "^0.2.15",
|
||||
"@material-ui/core": "^4.12.2",
|
||||
"@material-ui/icons": "^4.9.1",
|
||||
@@ -49,9 +49,9 @@
|
||||
"react": "^16.13.1 || ^17.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@backstage/core-app-api": "^0.6.0",
|
||||
"@backstage/dev-utils": "^0.2.24",
|
||||
"@backstage/dev-utils": "^0.2.25-next.0",
|
||||
"@backstage/test-utils": "^0.3.0",
|
||||
"@testing-library/jest-dom": "^5.10.1",
|
||||
"@testing-library/react": "^11.2.5",
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# @backstage/plugin-badges-backend
|
||||
|
||||
## 0.1.23-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- bf95bb806c: Remove usages of now-removed `CatalogApi.getEntityByName`
|
||||
- Updated dependencies
|
||||
- @backstage/backend-common@0.13.0-next.0
|
||||
- @backstage/catalog-model@0.13.0-next.0
|
||||
- @backstage/catalog-client@0.9.0-next.0
|
||||
|
||||
## 0.1.22
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/plugin-badges-backend",
|
||||
"description": "A Backstage backend plugin that generates README badges for your entities",
|
||||
"version": "0.1.22",
|
||||
"version": "0.1.23-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
@@ -34,9 +34,9 @@
|
||||
"clean": "backstage-cli package clean"
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage/backend-common": "^0.12.0",
|
||||
"@backstage/catalog-client": "^0.8.0",
|
||||
"@backstage/catalog-model": "^0.12.0",
|
||||
"@backstage/backend-common": "^0.13.0-next.0",
|
||||
"@backstage/catalog-client": "^0.9.0-next.0",
|
||||
"@backstage/catalog-model": "^0.13.0-next.0",
|
||||
"@backstage/config": "^0.1.15",
|
||||
"@backstage/errors": "^0.2.2",
|
||||
"@types/express": "^4.17.6",
|
||||
@@ -48,7 +48,7 @@
|
||||
"yn": "^4.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.15.0",
|
||||
"@backstage/cli": "^0.15.2-next.0",
|
||||
"@types/supertest": "^2.0.8",
|
||||
"supertest": "^6.1.3"
|
||||
},
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user