Merge branch 'master' into tech-docs-search-by-title

Signed-off-by: Stephen <code@stephenawilson.ca>
This commit is contained in:
Stephen
2024-07-03 19:59:38 -04:00
committed by GitHub
618 changed files with 21687 additions and 4681 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/create-app': patch
---
Added `MyGroupsSidebarItem` to the sidebar in the `create-app` template
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder': minor
---
Use virtualization with `EntityPicker` as done earlier with `MultiEntityPicker` to fix performance issues with large data sets. `VirtualizedListbox` extracted into reusable component.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/backend-common': patch
---
Deprecate legacy status check factory, handler and types.
+1 -2
View File
@@ -1,6 +1,5 @@
---
'@backstage/plugin-techdocs-react': patch
'@backstage/plugin-techdocs': patch
---
Fixed a bug with the TechDocsReaderPageProvider not re-rendering when setShadowDom is called, meaning that the useShadowDom hooks were inconsistent. This issue caused the TextSize addon changes not to reapply during navigation.
Resolved the issue where changes in TechDoc add-ons, including the TextSize add-on, were not reapplying during navigation
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/create-app': patch
---
Bumped create-app version.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/core-components': patch
---
Fixed bug where `<Select>` component with empty string as placeholder gave an error
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-techdocs': patch
---
Improve default sorting of docs table
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/plugin-techdocs-backend': patch
'@backstage/plugin-techdocs-node': patch
---
Adds extension point for publishers to the techdocs backend
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/plugin-scaffolder-backend-module-bitbucket-server': patch
---
Instead of using hardcoded `targetBranch` now fetch the default branch from Bitbucket repository.
This prevents from errors when no `targetBranch` is provided and the default repository branch is different from `master`, for example: `main`.
+15
View File
@@ -0,0 +1,15 @@
---
'@backstage/core-app-api': minor
'@backstage/frontend-app-api': patch
---
Allow for the disabling of external routes through config, which was rendered impossible after the introduction of default targets.
```yaml
app:
routes:
bindings:
# This has the effect of removing the button for registering new
# catalog entities in the scaffolder template list view
scaffolder.registerComponent: false
```
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-org': patch
---
The `useGetEntities` hook could result in requests to `/api/catalog/entities` where the headers exceed the default maximum Node.js header size of 16KB. The hook logic has been adjusted to batch the requests.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog-backend-module-gitlab': patch
---
The Gitlab configuration supports an additional optional boolean key `catalog.providers.gitlab.<your-org>.restrictUsersToGroup`. Setting this to `true` will make Backstage only import users from the group defined in the `group` key, instead of all users in the organisation (self-hosted) or of the root group (SaaS). It will default to false, keeping the original implementation intact, when not explicitly set.
+7
View File
@@ -0,0 +1,7 @@
---
'@backstage/plugin-catalog-backend-module-ldap': minor
---
**BREAKING**: `readLdapOrg` and the `LdapProviderConfig` type now always accept arrays of user and group configs, not just single items.
Added support for single ldap catalog provider to provide list and undefined user and group bindings next to standard single one.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/core-app-api': patch
---
Updated config schema to support app.routes.bindings
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/integration': minor
---
Add support for `token` for `bitbucketCloud` integration
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/plugin-catalog-react': patch
'@backstage/plugin-catalog': patch
---
Support i18n for catalog and catalog-react plugins
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder': minor
---
Use virtualization with `MultiEntityPicker`. Fixes performance issues with large data sets.
+7
View File
@@ -0,0 +1,7 @@
---
'@backstage/plugin-scaffolder-backend-module-azure': patch
'@backstage/plugin-scaffolder-node': patch
'@backstage/plugin-scaffolder': patch
---
Fixed a bug where the `RepoUrlPicker` would still require the `owner` field for `azure`
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/backend-common': patch
'@backstage/cli': patch
---
Update default backend plugin created by the cli to use non-deprecated error handling middleware
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder-backend': patch
---
Added a documentation how to use checkpoints
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/plugin-scaffolder-backend-module-bitbucket-cloud': patch
'@backstage/plugin-bitbucket-cloud-common': patch
---
Add support for `autocomplete` handler to provide autocomplete options for `RepoUrlPicker`
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog-react': patch
---
Make EntityOwnerPicker display metadata.title or spec.profile.displayName for mode=only-owners instead of metadata.name
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-techdocs': patch
---
Fix double scrollbar bug in reader
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-notifications': patch
---
The toolbar on the Notifications page is hidden when there are no listed notifications.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-techdocs-node': patch
---
Bumps default version of techdocs docker image to latest
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/core-components': patch
---
Modified the `Select` component to take in a `data-testid` parameter ensuring backwards compatibility with default value corresponding to previously hardcoded `data-testid` of "select".
+30
View File
@@ -0,0 +1,30 @@
---
'@backstage/plugin-catalog-backend-module-github': patch
---
Adds support for `repository` events.
The provider adds a subscription to the topic `github.repository`.
Hereby, it supports events of type `repository` with actions
- `archived`
- `deleted`
- `edited`
- `renamed`
- `transferred`
- `unarchived`
Actions skipped as they don't require entity changes:
- `created`
- `privatized`
- `publicized`
If the config option `validateLocationsExist` is enabled, an API request
is necessary and will be executed.
This affects the actions `renamed`, `transferred`, and `unarchive`
of event type `repository`.
Catalog entities related to the `GithubEntityProvider` instance will be adjusted
according to action and its meaning for them.
+64 -2
View File
@@ -184,7 +184,69 @@
"@backstage/plugin-techdocs-react": "1.2.5",
"@backstage/plugin-user-settings": "0.8.7",
"@backstage/plugin-user-settings-backend": "0.2.18",
"@backstage/plugin-user-settings-common": "0.0.1"
"@backstage/plugin-user-settings-common": "0.0.1",
"@backstage/plugin-catalog-backend-module-logs": "0.0.0",
"@backstage/plugin-scaffolder-backend-module-gcp": "0.0.1-next.1"
},
"changesets": []
"changesets": [
"bright-fireants-sit",
"bright-panthers-leave",
"calm-jeans-ring",
"chilly-roses-trade",
"clever-waves-judge",
"create-app-1719320674",
"curvy-teachers-smell",
"eighty-games-wink",
"fair-fans-flow",
"fair-pillows-know",
"fair-rockets-leave",
"famous-dodos-crash",
"fast-pens-smell",
"fifty-pumpkins-smell",
"friendly-bulldogs-pay",
"friendly-experts-fail",
"friendly-masks-type",
"friendly-oranges-greet",
"friendly-stingrays-occur",
"funny-laws-tease",
"gentle-avocados-obey",
"grumpy-wolves-hang",
"heavy-moose-pull",
"honest-pears-run",
"khaki-rivers-obey",
"light-avocados-worry",
"little-games-fail",
"metal-jokes-add",
"metal-parents-brush",
"metal-suits-drum",
"moody-llamas-breathe",
"neat-dingos-tickle",
"poor-cheetahs-raise",
"rare-peas-dream",
"renovate-7b61228",
"renovate-ced359b",
"rich-bears-march",
"selfish-turtles-jog",
"serious-kings-trade",
"short-flowers-cry",
"shy-hounds-battle",
"silent-experts-move",
"silent-lobsters-tease",
"silent-moose-eat",
"soft-clocks-bake",
"sour-jokes-sneeze",
"spotty-crabs-shop",
"swift-dots-cough",
"ten-dancers-drum",
"ten-nails-hear",
"ten-pots-walk",
"thick-lizards-divide",
"three-carpets-smoke",
"tough-lies-mate",
"weak-boats-float",
"yellow-cows-kick",
"young-donuts-swim",
"young-fishes-lie",
"young-houses-unite"
]
}
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/cli': patch
'@backstage/plugin-scaffolder-backend': patch
---
Updated dependency `esbuild` to `^0.21.0`.
+11
View File
@@ -0,0 +1,11 @@
---
'@backstage/plugin-home-react': patch
'@backstage/plugin-home': patch
'@backstage/plugin-scaffolder-react': patch
'@backstage/plugin-scaffolder': patch
---
Updated dependency `@rjsf/utils` to `5.18.5`.
Updated dependency `@rjsf/core` to `5.18.5`.
Updated dependency `@rjsf/material-ui` to `5.18.5`.
Updated dependency `@rjsf/validator-ajv8` to `5.18.5`.
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/plugin-scaffolder-backend': minor
'@backstage/plugin-scaffolder-node': patch
---
Add support for `autocomplete` extension point to provide additional `autocomplete` handlers
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-kubernetes-react': patch
---
Add a namespace label to RolloutDrawer
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder-backend-module-github': minor
---
Adds support for custom tag policies when creating GitHub environments.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/cli': patch
---
Fix a few minor issues with the backend template that were causing failing linting checks in the main repo.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/cli': patch
---
The `backendPlugin` and `backendModule` factory now includes a step for automatically adding the new backend plugin/module to the `index.ts` file of the backend.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder': patch
---
Support `catalogFilter` array on `OwnedEntityPicker`
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-notifications-backend': patch
---
Added an option to filter notifications by topic
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder-backend-module-github': patch
---
Added action to enable GitHub Pages on a repo
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder-react': minor
---
Improve validation error display text in scaffolder
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder-backend-module-github': patch
---
Fixed issue with octokit call missing owner and repo when creating environment variables and secrets using github:environment:create action
+7
View File
@@ -0,0 +1,7 @@
---
'@backstage/plugin-scaffolder-backend-module-github': patch
---
Adds `requireLastPushApproval` input property to configure Branch Protection Settings in `github:publish` action
Adds `requireLastPushApproval` input property to configure Branch Protection Settings in `github:repo:push` action
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder-backend-module-gitlab': patch
---
Added support for passing `variables` to `gitlab:pipeline:trigger`
+7
View File
@@ -0,0 +1,7 @@
---
'@backstage/plugin-scaffolder-backend-module-gcp': minor
'@backstage/plugin-scaffolder-backend': minor
'@backstage/plugin-scaffolder-node': patch
---
Serialization of the scaffolder workspace into GCP bucket
+8
View File
@@ -0,0 +1,8 @@
---
'@backstage/plugin-catalog-backend': minor
'@backstage/backend-test-utils': patch
'@backstage/backend-defaults': patch
'@backstage/backend-common': patch
---
bumped better-sqlite3 from ^9.0.0 to ^11.0.0
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder-node-test-utils': patch
---
Filename and imports correction for mockActionContext.ts
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/plugin-scaffolder-react': minor
'@backstage/plugin-scaffolder': minor
---
Add support for `bitbucketCloud` autocomplete in `RepoUrlPicker`
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder-backend': patch
---
Fix user entity not being fetched for scaffolder dry runner
+1
View File
@@ -94,6 +94,7 @@ typings/
# dotenv environment variables file
.env
.env.test
.envrc
# parcel-bundler cache (https://parceljs.org/)
.cache
+1
View File
@@ -271,3 +271,4 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/
| [Scania](https://www.scania.com) | [Santosh Rangavajjula](https://linkedin.com/in/rsbth) | We are implementing backstage at Scania to consolidate operational information from Gitlab, Jira, Confluence, Artifactory, Servicenow and other tools into one place. |
| [Senora.dev](https://senora.dev) | [Shaked Braimok Yosef](https://github.com/ShakedBraimok) | We are using Backstage as a service catalog for our costumers. |
| [Covestro](https://www.covestro.com) | [Julien Gedeon](https://github.com/cvvcv1) | We use Backstage as our Internal developer portal for the Digital R&D department. |
| [Grupo OLX](https://www.olx.com.br/) | [@marciorgb](https://github.com/marciorgb), [@jeffbraga](https://github.com/jeffbraga), [@rogerfernandes](https://github.com/rogerfernandes), [@stockrt](https://github.com/stockrt) | At Grupo OLX, we are using Backstage to reduce friction and enhance developer autonomy by creating Golden Paths, which automate previously manual processes. Additionally, Backstage's catalog integrates various views of our organizational structure and workflows, offering a comprehensive overview of how different components interconnect. |
+13
View File
@@ -159,6 +159,18 @@ Scope: The Scaffolder frontend and backend plugins, and related tooling.
| ------------------- | ------------ | ------------------------------------- | ---------------- |
| Bogdan Nechyporenko | Bol.com | [acierto](https://github.com/acierto) | `bogdan_haarlem` |
### Documentation
Team: @backstage/documentation-maintainers
Scope: The Backstage Documentation
| Name | Organization | GitHub | Discord |
| --------------- | ------------- | ----------------------------------------------------- | ------------- |
| Andre Wanlin | Spotify | [awanlin](https://github.com/awanlin) | `ahhhndre` |
| Aramis Sennyey | | [aramissennyeydd](https://github.com/aramissennyeydd) | `Aramis#7984` |
| Peter Macdonald | VodafoneZiggo | [Parsifal-M](https://github.com/Parsifal-M) | `parsifal` |
## Sponsors
| Name | Organization | GitHub | Email |
@@ -187,6 +199,7 @@ Scope: The Scaffolder frontend and backend plugins, and related tooling.
| Mark Avery | Cvent | [webark](https://github.com/webark) | `webark#8471` |
| Miklós Kiss | Roadie.io | [kissmikijr](https://github.com/kissmikijr) | `Miklos#7416` |
| Patrick Jungermann | Bonial International GmbH | [pjungermann](https://github.com/pjungermann) | `pjungermann#6933` |
| Peter Macdonald | VodafoneZiggo | [Parsifal-M](https://github.com/Parsifal-M) | `parsifal` |
| Phil Kuang | FactSet Research Systems | [kuangp](https://github.com/kuangp) | `pkuang#3202` |
| Sebastian Poxhofer | N26 | [secustor](https://github.com/secustor) | `secustor` |
| Taras Mankovski | Frontside | [taras](https://github.com/taras) | `tarasm#1256` |
+4 -1
View File
@@ -1,5 +1,8 @@
[![headline](docs/assets/headline.png)](https://backstage.io/)
> [!NOTE]
> 🏖 From July 1st through 16th, due to maintainers being on summer vacations, expect the project to move a little slower than normal, and support to be limited. Normal service will resume after that! 🏝
# [Backstage](https://backstage.io)
English \| [한국어](README-ko_kr.md) \| [中文版](README-zh_Hans.md)
@@ -55,7 +58,7 @@ To engage with our community, you can use the following resources:
- [Discord chatroom](https://discord.gg/backstage-687207715902193673) - Get support or discuss the project
- [Contributing to Backstage](https://github.com/backstage/backstage/blob/master/CONTRIBUTING.md) - Start here if you want to contribute
- [RFCs](https://github.com/backstage/backstage/labels/rfc) - Help shape the technical direction
- [FAQ](https://backstage.io/docs/FAQ) - Frequently Asked Questions
- [FAQ](https://backstage.io/docs/faq) - Frequently Asked Questions
- [Code of Conduct](CODE_OF_CONDUCT.md) - This is how we roll
- [Adopters](ADOPTERS.md) - Companies already using Backstage
- [Blog](https://backstage.io/blog/) - Announcements and updates
+1 -1
View File
@@ -1,6 +1,6 @@
---
title: Backstage Notifications System
status: provisional
status: implementable
authors:
- '@Rugvip'
- '@drodil'
@@ -138,8 +138,10 @@ describe('MyDatabaseClass', () => {
await knex<FooTableRow>('foo').insert({ value: 2 });
// drive your system under test as usual
await expect(subject.foos()).resolves.toEqual([{ value: 2 }]);
});
},
);
});
});
```
If you want to pass the test database instance into backend plugins or services,
+1 -1
View File
@@ -116,7 +116,7 @@ This makes it easier to create, find, and update documentation.
[TechDocs is now open source.](https://backstage.io/docs/features/techdocs/)
(See also:
"[Will Spotify's internal plugins be open sourced, too?](https://backstage.io/docs/faq/product#will-spotifys-internal-plugins-be-open-sourced-too)"
above)
above).
### Are you planning to have plugins baked into the repo? Or should they be developed in separate repos?
@@ -186,7 +186,7 @@ The first step is to add the events backend plugin to your Backstage application
```ts
# From your Backstage root directory
yarn --cwd packages/backend add @backstage/plugin-events-node
yarn --cwd packages/backend add @backstage/plugin-events-backend
```
Now you can install the events backend plugin in your backend.
@@ -84,6 +84,7 @@ import {
EntityProvider,
EntityProviderConnection,
} from '@backstage/plugin-catalog-node';
import { SchedulerServiceTaskRunner } from '@backstage/backend-plugin-api';
/**
* Provides entities from fictional frobs service.
@@ -92,11 +93,17 @@ export class FrobsProvider implements EntityProvider {
private readonly env: string;
private readonly reader: UrlReader;
private connection?: EntityProviderConnection;
private taskRunner: SchedulerServiceTaskRunner;
/** [1] */
constructor(env: string, reader: UrlReader) {
constructor(
env: string,
reader: UrlReader,
taskRunner: SchedulerServiceTaskRunner,
) {
this.env = env;
this.reader = reader;
this.taskRunner = taskRunner;
}
/** [2] */
@@ -107,6 +114,12 @@ export class FrobsProvider implements EntityProvider {
/** [3] */
async connect(connection: EntityProviderConnection): Promise<void> {
this.connection = connection;
this.taskRunner.run({
id: this.getProviderName(),
fn: async () => {
await this.run();
},
});
}
/** [4] */
@@ -248,24 +261,17 @@ export default async function createPlugin(
): Promise<Router> {
const builder = CatalogBuilder.create(env);
/* highlight-add-start */
const frobs = new FrobsProvider('production', env.reader);
const taskRunner = env.scheduler.createScheduledTaskRunner({
frequency: { minutes: 30 },
timeout: { minutes: 10 },
});
const frobs = new FrobsProvider('production', env.reader, taskRunner);
builder.addEntityProvider(frobs);
/* highlight-add-end */
const { processingEngine, router } = await builder.build();
await processingEngine.start();
/* highlight-add-start */
await env.scheduler.scheduleTask({
id: 'run_frobs_refresh',
fn: async () => {
await frobs.run();
},
frequency: { minutes: 30 },
timeout: { minutes: 10 },
});
/* highlight-add-end */
// ..
}
```
@@ -300,9 +306,17 @@ export const catalogModuleFrobsProvider = createBackendModule({
deps: {
catalog: catalogProcessingExtensionPoint,
reader: coreServices.urlReader,
/* highlight-add-start */
scheduler: coreServices.scheduler,
/* highlight-add-end */
},
async init({ catalog, reader }) {
catalog.addEntityProvider(new FrobsProvider('dev', reader));
async init({ catalog, reader, scheduler }) {
const taskRunner = scheduler.createScheduledTaskRunner({
frequency: { minutes: 30 },
timeout: { minutes: 10 },
});
const frobs = new FrobsProvider('dev', reader, taskRunner);
catalog.addEntityProvider(frobs);
},
});
},
@@ -318,6 +332,98 @@ backend.add(catalogModuleFrobsProvider);
backend.start();
```
#### Follow-up: Config Defined Schedule
If you want to go a step further and increase the configurability of your new `FrobsProvider`, you can define the schedule that the task runs at in `app-config.yaml` instead of requiring code changes to adjust.
```yaml title="app-config.yaml"
catalog:
providers:
frobs-provider:
schedule:
initialDelay: { seconds: 30 }
frequency: { hours: 1 }
timeout: { minutes: 50 }
```
This approach will also allow you to customize the schedule per environment. You can also [add a schema to your config](../../conf/defining.md).
#### New Backend
```ts title="packages/backend/src/index.ts"
import {
SchedulerServiceTaskScheduleDefinition,
/* highlight-add-start */
readSchedulerServiceTaskScheduleDefinitionFromConfig,
/* highlight-add-end */
} from '@backstage/backend-plugin-api';
export const catalogModuleFrobsProvider = createBackendModule({
pluginId: 'catalog',
moduleId: 'frobs-provider',
register(env) {
env.registerInit({
deps: {
// ... other deps
/* highlight-add-start */
rootConfig: coreServices.rootConfig,
/* highlight-add-end */
},
async init({ catalog, reader, scheduler, rootConfig }) {
/* highlight-add-start */
const config = rootConfig.getConfig('catalog.providers.frobs-provider'); // Generally, catalog config goes under catalog.providers.pluginId
// Add a default schedule if you don't define one in config.
const schedule = config.has('schedule')
? readSchedulerServiceTaskScheduleDefinitionFromConfig(
config.getConfig('schedule'),
)
: {
frequency: { minutes: 30 },
timeout: { minutes: 10 },
};
const taskRunner: SchedulerServiceTaskRunner =
scheduler.createScheduledTaskRunner(schedule);
/* highlight-add-end */
// rest of your code
},
});
},
});
```
#### Old Backend
```ts title="packages/backend/src/plugins/catalog.ts"
/* highlight-add-next-line */
import { FrobsProvider } from '../path/to/class';
import {
/* highlight-add-start */
readSchedulerServiceTaskScheduleDefinitionFromConfig,
/* highlight-add-end */
} from '@backstage/backend-plugin-api';
export default async function createPlugin(
env: PluginEnvironment,
): Promise<Router> {
/* highlight-add-start */
const config = env.config.getConfig('catalog.providers.frobs-provider'); // Generally, catalog config goes under catalog.providers.pluginId
// Add a default schedule if you don't define one in config.
const schedule = config.has('schedule')
? readSchedulerServiceTaskScheduleDefinitionFromConfig(
config.getConfig('schedule'),
)
: {
frequency: { minutes: 30 },
timeout: { minutes: 10 },
};
const taskRunner = env.scheduler.createScheduledTaskRunner(schedule);
/* highlight-add-end */
// ..
}
```
### Example User Entity Provider
If you have a 3rd party entity provider such as an internal HR system that you wish to use you are not limited to using our entity providers, (or simply wish to add to existing entity providers with your own data).
@@ -259,7 +259,11 @@ spec:
## Use placeholders to reference remote files
#### Note: testing of this functionality is not yet supported using _create/edit_
:::note
Testing of this functionality is not yet supported using _create/edit_. In addition, this functionality only works for remote files and not local files. You also cannot nest files.
:::
### template.yaml
@@ -145,6 +145,10 @@ When the action `handler` is called, we provide you a `context` as the only
argument. It looks like the following:
- `ctx.baseUrl` - a string where the template is located
- `ctx.checkpoint` - _Experimental_ allows to
implement [idempotency of the actions](https://github.com/backstage/backstage/tree/master/beps/0004-scaffolder-task-idempotency)
by not re-running the same function again if it was
executed successfully on the previous run.
- `ctx.logger` - a Winston logger for additional logging inside your action
- `ctx.logStream` - a stream version of the logger if needed
- `ctx.workspacePath` - a string of the working directory of the template run
@@ -153,7 +157,7 @@ argument. It looks like the following:
- `ctx.output` - a function which you can call to set outputs that match the
JSON schema or `zod` in `schema.output` for ex. `ctx.output('downloadUrl', myDownloadUrl)`
- `createTemporaryDirectory` a function to call to give you a temporary
directory somewhere on the runner so you can store some files there rather
directory somewhere on the runner, so you can store some files there rather
than polluting the `workspacePath`
- `ctx.metadata` - an object containing a `name` field, indicating the template
name. More metadata fields may be added later.
@@ -217,6 +221,28 @@ import {
})
```
### Using Checkpoints in Custom Actions (Experimental)
Idempotent action could be achieved via the usage of checkpoints.
Example:
```ts title="plugins/my-company-scaffolder-actions-plugin/src/vendor/my-custom-action.ts"
const res = await ctx.checkpoint?.('create.projects', async () => {
const projectStgId = createStagingProjectId();
const projectProId = createProductionProjectId();
return {
projectStgId,
projectProId,
};
});
```
You have to define the unique key in scope of the scaffolder task for your checkpoint. During the execution task engine
will check if the checkpoint with such key was already executed or not, if yes, and the run was successful, the callback
will be skipped and instead the stored value will be returned.
### Register Custom Actions with the Legacy Backend System
Once you have your Custom Action ready for usage with the scaffolder, you'll
@@ -359,7 +359,7 @@ export const detailsSubRouteRef = createSubRouteRef({
Using subroutes in a page extension is as simple as this:
```tsx title="plugins/catalog/src/components/IndexPage.ts"
```tsx title="plugins/catalog/src/components/IndexPage.tsx"
import React from 'react';
import { Routes, Route, useLocation } from 'react-router-dom';
import { useRouteRef } from '@backstage/frontend-plugin-api';
@@ -402,7 +402,7 @@ export const IndexPage = () => {
This is how you can get the parameters of a sub route URL:
```tsx title="plugins/catalog/src/components/DetailsPage.ts"
```tsx title="plugins/catalog/src/components/DetailsPage.tsx"
import React from 'react';
import { useParams } from 'react-router-dom';
@@ -426,7 +426,7 @@ export const DetailsPage = () => {
Finally, see how a plugin can provide subroutes:
```tsx title="plugins/catalog/src/plugin.ts"
```tsx title="plugins/catalog/src/plugin.tsx"
import React from 'react';
import {
createPlugin,
+1 -1
View File
@@ -64,7 +64,7 @@ const app = createApp({
})
```
Note that your list of custom themes overrides the default themes. If you still want to use the default themes, they are exported as `themes.light` and `themes.light` from [`@backstage/theme`](https://www.npmjs.com/package/@backstage/theme).
Note that your list of custom themes overrides the default themes. If you still want to use the default themes, they are exported as `themes.light` and `themes.dark` from [`@backstage/theme`](https://www.npmjs.com/package/@backstage/theme).
## Example of a custom theme
@@ -0,0 +1,89 @@
---
id: discovery--old
title: AWS S3 Discovery
sidebar_label: Discovery
# prettier-ignore
description: Automatically discovering catalog entities from an AWS S3 Bucket
---
:::info
This documentation is written for the old backend which has been replaced by [the new backend system](../../backend-system/index.md), being the default since Backstage [version 1.24](../../releases/v1.24.0.md). If have migrated to the new backend system, you may want to read [its own article](./discovery.md) instead. Otherwise, [consider migrating](../../backend-system/building-backends/08-migrating.md)!
:::
The AWS S3 integration has a special entity provider for discovering catalog
entities located in an S3 Bucket. If you have a bucket that contains multiple
catalog files, and you want to automatically discover them, you can use this
provider. The provider will crawl your S3 bucket and register entities
matching the configured path. This can be useful as an alternative to static
locations or manually adding things to the catalog.
To use the entity provider, you'll need an AWS S3 integration
[set up](locations.md) with `accessKeyId` and `secretAccessKey`, and/or
a `roleArn` or none of these (e.g., profile- or instance-based credentials).
At production deployments, you likely manage these with the permissions attached
to your instance.
In your configuration, you add a provider config per bucket:
```yaml
# app-config.yaml
catalog:
providers:
awsS3:
yourProviderId: # identifies your dataset / provider independent of config changes
bucketName: sample-bucket
prefix: prefix/ # optional
region: us-east-2 # optional, uses the default region otherwise
schedule: # same options as in TaskScheduleDefinition
# supports cron, ISO duration, "human duration" as used in code
frequency: { minutes: 30 }
# supports ISO duration, "human duration" as used in code
timeout: { minutes: 3 }
```
For simple setups, you can omit the provider ID at the config
which has the same effect as using `default` for it.
```yaml
# app-config.yaml
catalog:
providers:
awsS3:
# uses "default" as provider ID
bucketName: sample-bucket
prefix: prefix/ # optional
region: us-east-2 # optional, uses the default region otherwise
schedule: # same options as in TaskScheduleDefinition
# supports cron, ISO duration, "human duration" as used in code
frequency: { minutes: 30 }
# supports ISO duration, "human duration" as used in code
timeout: { minutes: 3 }
```
As this provider is not one of the default providers, you will first need to install
the AWS catalog plugin:
```bash
# From your Backstage root directory
yarn --cwd packages/backend add @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 */
import { AwsS3EntityProvider } from '@backstage/plugin-catalog-backend-module-aws';
const builder = await CatalogBuilder.create(env);
/** ... other processors and/or providers ... */
builder.addEntityProvider(
AwsS3EntityProvider.fromConfig(env.config, {
logger: env.logger,
scheduler: env.scheduler,
}),
);
```
+11 -15
View File
@@ -6,6 +6,10 @@ sidebar_label: Discovery
description: Automatically discovering catalog entities from an AWS S3 Bucket
---
:::info
This documentation is written for [the new backend system](../../backend-system/index.md) which is the default since Backstage [version 1.24](../../releases/v1.24.0.md). If you are still on the old backend system, you may want to read [its own article](./discovery--old.md) instead, and [consider migrating](../../backend-system/building-backends/08-migrating.md)!
:::
The AWS S3 integration has a special entity provider for discovering catalog
entities located in an S3 Bucket. If you have a bucket that contains multiple
catalog files, and you want to automatically discover them, you can use this
@@ -20,7 +24,7 @@ a `roleArn` or none of these (e.g., profile- or instance-based credentials).
At production deployments, you likely manage these with the permissions attached
to your instance.
At your configuration, you add a provider config per bucket:
In your configuration, you add a provider config per bucket:
```yaml
# app-config.yaml
@@ -67,19 +71,11 @@ the AWS catalog plugin:
yarn --cwd packages/backend add @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`:
Then update your backend by adding the following line:
```ts
/* packages/backend/src/plugins/catalog.ts */
import { AwsS3EntityProvider } from '@backstage/plugin-catalog-backend-module-aws';
const builder = await CatalogBuilder.create(env);
/** ... other processors and/or providers ... */
builder.addEntityProvider(
AwsS3EntityProvider.fromConfig(env.config, {
logger: env.logger,
scheduler: env.scheduler,
}),
);
```ts title="packages/backend/src/index.ts"
backend.add(import('@backstage/plugin-catalog-backend/alpha'));
/* highlight-add-start */
backend.add(import('@backstage/plugin-catalog-backend-module-aws/alpha'));
/* highlight-add-end */
```
+12
View File
@@ -150,6 +150,18 @@ microsoftGraphOrg:
loadPhotos: false
```
If you are using `userGroupMember`, the configuration for `loadPhotos` should still be managed under `users:` while omitting `search` and `filters`.
```yaml
microsoftGraphOrg:
providerId:
user:
loadPhotos: false
userGroupMember:
filter: "displayName eq 'Backstage Users'"
search: '"description:One" AND ("displayName:Video" OR "displayName:Drive")'
```
## Customizing Transformation
Ingested entities can be customized by providing custom transformers.
+12 -3
View File
@@ -40,8 +40,9 @@ backend.add(import('@backstage/plugin-catalog-backend-module-github/alpha'));
## Events Support
The catalog module for GitHub comes with events support enabled.
This will make it subscribe to its relevant topics (`github.push`)
and expects these events to be published via the `EventsService`.
This will make it subscribe to its relevant topics (`github.push`,
`github.repository`) and expects these events to be published
via the `EventsService`.
Additionally, you should install the
[event router by `events-backend-module-github`](https://github.com/backstage/backstage/tree/master/plugins/events-backend-module-github/README.md)
@@ -55,7 +56,15 @@ You can decide between the following options (extensible):
- [via HTTP endpoint](https://github.com/backstage/backstage/tree/master/plugins/events-backend/README.md)
- [via an AWS SQS queue](https://github.com/backstage/backstage/tree/master/plugins/events-backend-module-aws-sqs/README.md)
You can check the official docs to [configure your webhook](https://docs.github.com/en/developers/webhooks-and-events/webhooks/creating-webhooks) and to [secure your request](https://docs.github.com/en/developers/webhooks-and-events/webhooks/securing-your-webhooks). The webhook will need to be configured to forward `push` events.
You can check the official docs to [configure your webhook](https://docs.github.com/en/developers/webhooks-and-events/webhooks/creating-webhooks) and to [secure your request](https://docs.github.com/en/developers/webhooks-and-events/webhooks/securing-your-webhooks).
The webhook(s) will need to be configured to react to `push` and
`repository` events.
Certain actions like `transferred` by the `repository` event type
will not be supported when you use repository webhooks.
Please check the GitHubs documentation for these event types and
its actions.
## Configuration
+14 -1
View File
@@ -196,11 +196,24 @@ which contain members will be ingested.
### Users
For self hosted, all `User` entities are ingested from the entire instance.
For self hosted, all `User` entities are ingested from the entire instance by default.
For gitlab.com `User` entities for users who have [direct or inherited membership](https://docs.gitlab.com/ee/user/project/members/index.html#membership-types)
of the top-level group for the configured group path will be ingested.
In both cases (SaaS & self hosted), you can limit the ingested users to users directly assigned to the group defined in your `app-config.yaml` by setting the configuration key `restrictUsersToGroup: true`. This is especially useful when you have a large user base that you don't want to import by default.
```yaml
catalog:
providers:
gitlab:
yourProviderId:
host: gitlab.com ## Could also be self hosted.
orgEnabled: true
group: org/teams # Required for gitlab.com when `orgEnabled: true`. Optional for self managed. Must not end with slash. Accepts only groups under the provided path (which will be stripped)
restrictUsersToGroup: true # Backstage will ingest only users directly assigned to org/teams.
```
### Limiting `User` and `Group` entity ingestion in the provider
Optionally, you can limit the entity types ingested by the provider when using
+8
View File
@@ -86,6 +86,14 @@ catalog:
These config blocks have a lot of options in them, so we will describe each
"root" key within the block separately.
> NOTE:
>
> If you want to import users and groups from different LDAP servers, you can define multiple providers with different names.
> If they should come from the same server, you can define multiple users and groups blocks within the same provider using an array of users / groups.
> Entries coming from the same block will be able to detect group memberships based on the `memberOf` attribute.
>
> If you want only to import users or groups, you can omit the groups or users block.
### target
This is the URL of the targeted server, typically on the form
+1 -5
View File
@@ -24,7 +24,7 @@ Running an individual test (e.g. `MyComponent.test.tsx`):
To run both `MyComponent.test.tsx` and `MyControl.test.tsx` suite of tests:
yarn test MyCo
yarn test MyComponent MyControl
:::note Note
@@ -52,10 +52,6 @@ We use the light-weight
[react-testing-library](https://github.com/kentcdodds/react-testing-library) to
render React components.
## Testing Utilities
TODO.
## Writing Unit Tests
The following principles are good guides for determining if you are writing high
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1
View File
@@ -33,6 +33,7 @@ const {
} = require('@opentelemetry/auto-instrumentations-node');
const { PrometheusExporter } = require('@opentelemetry/exporter-prometheus');
// By default exports the metrics on localhost:9464/metrics
const prometheus = new PrometheusExporter();
const sdk = new NodeSDK({
// You can add a traceExporter field here too
@@ -0,0 +1,135 @@
---
# prettier-ignore
title: "1,186 days with Backstage: A journey through the eyes of a developer"
author: Camila Loiola, Spotify
authorURL: https://github.com/camilaibs
authorImageURL: https://avatars.githubusercontent.com/u/6290749?v=4
---
**TL;DR** There is no shortage of content that discusses the benefits that Backstage brings to organizations (and if you want to read more on that, you can just click [here](https://engineering.atspotify.com/category/backstage/), [here](https://backstage.io/blog), or [here](https://backstage.spotify.com/discover/blog/)). But I want to share what it did for me, a developer here at Spotify. And not just what it did, but how Ive used Backstage to help me achieve goals at each stage of my journey at Spotify — from my first day as a brand new employee to today, my 1,186th day as a contributor.
![Backstage Engineer Journey](assets/2024-06-27/backstage-engineer-journey.svg)
{/* truncate */}
## A new joiner with a need to get up to speed
My first six months after joining Spotify, I was eager and determined to get up to speed so that Id be able to start contributing as soon as possible. I set goals for myself and developed concrete activities to reach those goals:
### Goal 1: Learn the internal process to develop, test, secure, and publish applications.
Understanding a companys practices and technologies is absolutely essential to getting started, no matter what company you join.
At Spotify, we use a Backstage plugin called [TechDocs](https://backstage.io/docs/features/techdocs/) to document [Golden Paths](https://engineering.atspotify.com/2020/08/how-we-use-golden-paths-to-solve-fragmentation-in-our-software-ecosystem/) — tutorials that teach us the development process for each role at the company — for web, backend, mobile, data science development, and so on.
With Backstage, I had an understanding of how to put things into production, even before I had my first task. I used the web Golden Path to guide me on setting up my environment; creating and structuring projects; and building, publishing, and monitoring production applications.
> **Reflection:**<br/>_“Is it easy for newly hired engineers to settle in and find information critical to getting started?”_
With Backstage, new hires can quickly and easily understand the nuances of their particular positions and be ready to deliver their first task to production.
### Goal 2: Find and read the documentation and source code of the products my team maintains.
Having familiarized myself with the ways of working, it was a good time to understand my specific teams business domain. This meant spending time reading through documentation and source code to find out the value we provide to our customers. In the past, I would spend time with colleagues for knowledge transfer as opposed to learning on my own and consult my colleagues if needed.
With the [Backstage Software Catalog](https://backstage.io/docs/features/software-catalog/), I could easily browse the components my team owns, find the source repo and documentation.
> **Reflection:**<br/>_“Are you able to accomplish this without asking a teammate for help?”_
Use Backstage to get to know the products that you will be working on, and use your peers' time to ask contextualized clarifying questions instead.
### Goal 3: Figure out where my team fits within the company and with other teams.
It was also crucial for me to build a network from the beginning so that I could explore collaboration opportunities.
At Spotify, we use a Backstage plugin called Band Manager which displays information about each team and allows employees to see not only their own teams but also those within the same product area and company domain.
> **Reflection:**<br/>_“Are you going to need a one-on-one with your manager to ask this question?”_
Backstage helped me find the teams close to mine, and I took the opportunity to develop my network and talk to members from those teams to understand our boundaries and gather ideas to contribute.
Its pretty likely that you can relate to one or more of these examples, so use Backstage to support your goals from the very beginning!
Now lets move on to the middle of the journey, between six months and two years into life at the company.
## Two years in — from contributor to leader
After about two years of contributing to my teams products, I began to look for opportunities to actually lead initiatives and create a new project. One of my objectives was to ensure I was upholding Spotifys standards and choosing Spotify-approved technologies.
My goal has changed from being a contributor to being the driver, i.e., from doing what I was told to do to defining what needed to be done. I “started driving initiatives” and “supporting my peers” in order to position myself as a reference in my technical area.
### Goal 1: Quickly spin up new projects using the most appropriate technology stack.
At Spotify, we expect engineers to use technologies approved by our [Tech Radar](https://backstage.io/blog/2020/05/14/tech-radar-plugin/#what-is-tech-radar) and follow the best quality standards.
To do so, we use a plugin called [Scaffolder](https://backstage.io/docs/reference/plugin-scaffolder) (aka Software Templates), which allows engineers to create templates for setting up new projects. Templates automate actions such as creating repositories, allocating resources, registering in the catalog, configuring deployments, and connecting to other internal systems.
> **Reflection:**<br/>_“Do you need to create a ticket to get these things done before you even start coding? And is there a lot of time spent looking for boilerplate code to start a new project and connecting it to other internal systems?"_
Backstage enabled me to quickly create and publish a new backend that can deploy code to production with just a few clicks, so I could focus on building solutions for the business. I could use Backstage to easily build the right thing. Instead of spending time scaffolding projects, I could spend my time writing code.
### Goal 2: Create products that have a healthy operational state and are easy to evolve.
Keeping track of vulnerabilities and letting my team know about technical debts were other parts of my routine.
With the [Soundcheck plugin](https://backstage.spotify.com/marketplace/spotify/plugin/soundcheck/), developers can easily configure checks to verify component health, such as reliability and other development and operational standards. We also have an internal Vulnerabilities plugin that displays fragilities in our components, so we can continuously prevent security issues.
> **Reflection:**<br/>_“Do you know which components owned by your team follows best practices and standards and which ones are lagging behind?”_
Backstage helped me gather and better understand our technical debts, enabling me to effectively prioritize during our teams planning, visualize which entities were compliant to our teams best practices, and identify which ones needed improvement.
### Goal 3: Respond effectively to incidents within our components or their dependencies.
If youve been with a company for around two years, you might have had to manage incidents in one way or another — this was certainly the case for me. A typical problem was to determine if the issue is with the service that I own or a downstream dependency.
Spotify has adopted [PagerDuty](https://backstage.spotify.com/marketplace/pagerduty/plugin/pagerduty/) to manage on-call rotation and to track incident resolutions. We integrated the PagerDuty plugin in Backstage, so we see who is on call and if there is an incident for a particular component.
> **Reflection:**<br/>_“When a downstream dependency is failing, do you know who to contact?”_
In the event that one of our components starts failing, I check whether any of the systems we rely on is experiencing an incident, and Backstage again makes it easy for me to see the dependencies between systems and the status of those dependencies.
## Today and beyond!
With three-plus years of experience at Spotify, Im taking on more and more responsibility by embracing challenges outside my teams scope, coordinating cross-team collaboration, attending and facilitating courses for personal development and growth, and mentoring my peers.
Backstage has allowed me to drive my pursuit of growth in a multitude of ways.
### Goal 1: Stay in the flow and optimize my time management practices.
At this point, finding time to focus — with all that I have on my plate — while also making time to learn new concepts is both fundamental and challenging for me.
Spotify encourages its developers to manage their time in order to stay in the flow and to turn to the tools that help them prioritize effectively and focus on their work.
> **Reflection:**<br/>_“How do you surface the most important notifications and avoid non-emergency distractions?”_
Backstage has been instrumental in helping me stay in the flow by surfacing the most critical notifications and call to actions related to cost spikes, security vulnerabilities in my homepage.
### Goal 2: Platformize our solutions and reuse code to boost my productivity.
Reinventing the wheel is a common problem in software development and Spotify is no different.
Autonomous teams tend to prioritize speed over reuse and develop the same solutions in different places (1) as it unblocks the delivery for their team and (2) there is no easy way to discover if a particular functionality has been developed in another part of the company and if it can be reused for their requirement.
> **Reflection:**<br/>_“Do you find yourself wondering if someone else already did it before starting a task?”_
With the [Backstage Search plugin](https://backstage.io/docs/features/search/), I can discover solutions to reuse, find inspiration, and also share what Ive built for other developers to discover and use.
### Goal 3: Grow my career and take steps toward the next level.
I began looking for opportunities to gain new experiences and responsibilities while expanding my knowledge.
With Spotifys [Skill Exchange plugin](https://backstage.spotify.com/marketplace/spotify/plugin/skill-exchange/) for Backstage, engineers temporarily embed with a different team, allowing them to partake in work outside their day-to-day. The plugin also helps engineers connect with mentees or mentors that align with their skills profiles.
> **Reflection:**<br/>_“Are you able to find opportunities that match your current skill set?”_
With Backstage, I've applied for an embed to experience working with another team and eventually make a permanent move to this new team, calling it my new home.
I am passionate about teaching and eager to share my knowledge to help others. Through Skill Exchange, I found a mentee, a colleague transitioning into engineering, and I am helping them take their first steps.
## Whats next?
Backstage is highly customizable, and with its extensive plugin ecosystem, engineers can use it strategically to achieve their goals.
No matter what point in your journey you are, you can find value with [Backstage](http://backstage.io). It was, after all, made by engineers for engineers. 💚
Special thanks to [Stanley Nicholl](https://github.com/stanley-nicholl), [Patrik Oldsberg](https://github.com/Rugvip), [Vincenzo Scamporlino](https://github.com/vinzscam), [Mihai Tabara](https://github.com/MihaiTabara), [Emma Indal](https://github.com/emmaindal), [Raghunandan Balachandran](https://github.com/soapraj) for all of their support.
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 224 KiB

+11
View File
@@ -0,0 +1,11 @@
title: Harness Chaos Engineering
author: harness.io
authorUrl: https://github.com/harness/backstage-plugins
category: Chaos Engineering
description: This plugin lets you view the status of Harness Chaos Engineering Resources and launch Chaos Experiments directly inside Backstage.
documentation: https://github.com/harness/backstage-plugins/tree/main/plugins/harness-chaos
iconUrl: https://static.harness.io/ng-static/images/favicon.png
npmPackageName: '@harnessio/backstage-plugin-harness-chaos'
tags:
- resiliency
addedDate: '2024-06-25'
+13
View File
@@ -0,0 +1,13 @@
---
title: Harness Infrastructure as Code Management
author: harness.io
authorUrl: https://github.com/harness/backstage-plugins
category: Infrastructure
description: This plugin provides an overview of all the resources provisioned through information on active workspaces in your account
documentation: https://github.com/harness/backstage-plugins/tree/main/plugins/harness-iacm#harness-iacm-plugin
iconUrl: https://static.harness.io/ng-static/images/favicon.png
npmPackageName: '@harnessio/backstage-plugin-harness-iacm'
tags:
- infrastrucure-as-code
- resource-management
addedDate: '2024-07-03'
+10
View File
@@ -0,0 +1,10 @@
---
title: Relations
author: dweber019
authorUrl: https://github.com/dweber019
category: Catalog
description: This plugin enables you to configure additional relations between entities, which aren't supported out of box.
documentation: https://github.com/dweber019/backstage-plugins/tree/main/plugins/relations
iconUrl: https://raw.githubusercontent.com/dweber019/backstage-plugins/main/plugins/relations-backend/docs/pluginIcon.png
npmPackageName: '@dweber019/backstage-plugin-relations'
addedDate: '2024-05-15'
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "root",
"version": "1.28.0",
"version": "1.29.0-next.1",
"private": true,
"repository": {
"type": "git",
+22
View File
@@ -1,5 +1,27 @@
# @backstage/app-defaults
## 1.5.8-next.1
### Patch Changes
- Updated dependencies
- @backstage/core-app-api@1.13.1-next.1
- @backstage/core-components@0.14.9-next.0
- @backstage/core-plugin-api@1.9.3
- @backstage/theme@0.5.6
- @backstage/plugin-permission-react@0.4.23
## 1.5.7-next.0
### Patch Changes
- Updated dependencies
- @backstage/core-components@0.14.9-next.0
- @backstage/core-app-api@1.13.0-next.0
- @backstage/core-plugin-api@1.9.3
- @backstage/theme@0.5.6
- @backstage/plugin-permission-react@0.4.23
## 1.5.6
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@backstage/app-defaults",
"version": "1.5.6",
"version": "1.5.8-next.1",
"description": "Provides the default wiring of a Backstage App",
"backstage": {
"role": "web-library"
@@ -1,5 +1,13 @@
# app-next-example-plugin
## 0.0.13-next.0
### Patch Changes
- Updated dependencies
- @backstage/core-components@0.14.9-next.0
- @backstage/frontend-plugin-api@0.6.7-next.0
## 0.0.12
### Patch Changes
@@ -1,6 +1,6 @@
{
"name": "app-next-example-plugin",
"version": "0.0.12",
"version": "0.0.13-next.0",
"description": "Backstage internal example plugin",
"backstage": {
"role": "frontend-plugin",
+86
View File
@@ -1,5 +1,91 @@
# example-app-next
## 0.0.13-next.1
### Patch Changes
- Updated dependencies
- @backstage/plugin-org@0.6.27-next.1
- @backstage/core-app-api@1.13.1-next.1
- @backstage/plugin-catalog-react@1.12.2-next.1
- @backstage/plugin-catalog@1.21.1-next.1
- @backstage/plugin-techdocs@1.10.7-next.1
- @backstage/plugin-notifications@0.2.3-next.1
- @backstage/plugin-home@0.7.7-next.1
- @backstage/plugin-scaffolder-react@1.10.0-next.1
- @backstage/plugin-scaffolder@1.22.1-next.1
- @backstage/cli@0.26.11-next.1
- @backstage/app-defaults@1.5.8-next.1
- @backstage/core-compat-api@0.2.7-next.0
- @backstage/core-components@0.14.9-next.0
- @backstage/core-plugin-api@1.9.3
- @backstage/frontend-app-api@0.7.3-next.1
- @backstage/plugin-api-docs@0.11.7-next.1
- @backstage/plugin-catalog-graph@0.4.7-next.1
- @backstage/plugin-catalog-import@0.12.1-next.1
- @backstage/plugin-search@1.4.13-next.1
- @backstage/plugin-search-react@1.7.13-next.0
- @backstage/plugin-signals@0.0.8-next.0
- @backstage/plugin-user-settings@0.8.9-next.1
- @backstage/plugin-kubernetes@0.11.12-next.1
- @backstage/plugin-kubernetes-cluster@0.0.13-next.1
- @backstage/catalog-model@1.5.0
- @backstage/config@1.2.0
- @backstage/frontend-plugin-api@0.6.7-next.0
- @backstage/integration-react@1.1.29-next.0
- @backstage/theme@0.5.6
- @backstage/plugin-app-visualizer@0.1.8-next.0
- @backstage/plugin-auth-react@0.1.4-next.0
- @backstage/plugin-catalog-common@1.0.24
- @backstage/plugin-catalog-unprocessed-entities@0.2.6-next.0
- @backstage/plugin-permission-react@0.4.23
- @backstage/plugin-search-common@1.2.12
- @backstage/plugin-techdocs-module-addons-contrib@1.1.12-next.0
- @backstage/plugin-techdocs-react@1.2.6-next.0
## 0.0.13-next.0
### Patch Changes
- Updated dependencies
- @backstage/plugin-scaffolder@1.22.0-next.0
- @backstage/plugin-techdocs-react@1.2.6-next.0
- @backstage/plugin-techdocs@1.10.7-next.0
- @backstage/core-components@0.14.9-next.0
- @backstage/core-app-api@1.13.0-next.0
- @backstage/frontend-app-api@0.7.2-next.0
- @backstage/cli@0.26.10-next.0
- @backstage/plugin-org@0.6.27-next.0
- @backstage/plugin-catalog-react@1.12.2-next.0
- @backstage/plugin-catalog@1.21.1-next.0
- @backstage/plugin-scaffolder-react@1.10.0-next.0
- @backstage/plugin-techdocs-module-addons-contrib@1.1.12-next.0
- @backstage/app-defaults@1.5.7-next.0
- @backstage/frontend-plugin-api@0.6.7-next.0
- @backstage/integration-react@1.1.29-next.0
- @backstage/plugin-api-docs@0.11.7-next.0
- @backstage/plugin-app-visualizer@0.1.8-next.0
- @backstage/plugin-auth-react@0.1.4-next.0
- @backstage/plugin-catalog-graph@0.4.7-next.0
- @backstage/plugin-catalog-import@0.12.1-next.0
- @backstage/plugin-catalog-unprocessed-entities@0.2.6-next.0
- @backstage/plugin-home@0.7.6-next.0
- @backstage/plugin-kubernetes@0.11.12-next.0
- @backstage/plugin-kubernetes-cluster@0.0.13-next.0
- @backstage/plugin-notifications@0.2.3-next.0
- @backstage/plugin-search@1.4.13-next.0
- @backstage/plugin-search-react@1.7.13-next.0
- @backstage/plugin-signals@0.0.8-next.0
- @backstage/plugin-user-settings@0.8.8-next.0
- @backstage/core-compat-api@0.2.7-next.0
- @backstage/core-plugin-api@1.9.3
- @backstage/catalog-model@1.5.0
- @backstage/config@1.2.0
- @backstage/theme@0.5.6
- @backstage/plugin-catalog-common@1.0.24
- @backstage/plugin-permission-react@0.4.23
- @backstage/plugin-search-common@1.2.12
## 0.0.12
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "example-app-next",
"version": "0.0.12",
"version": "0.0.13-next.1",
"private": true,
"repository": {
"type": "git",
+82
View File
@@ -1,5 +1,87 @@
# example-app
## 0.2.99-next.1
### Patch Changes
- Updated dependencies
- @backstage/plugin-org@0.6.27-next.1
- @backstage/core-app-api@1.13.1-next.1
- @backstage/plugin-catalog-react@1.12.2-next.1
- @backstage/plugin-catalog@1.21.1-next.1
- @backstage/plugin-techdocs@1.10.7-next.1
- @backstage/plugin-notifications@0.2.3-next.1
- @backstage/plugin-home@0.7.7-next.1
- @backstage/plugin-scaffolder-react@1.10.0-next.1
- @backstage/plugin-scaffolder@1.22.1-next.1
- @backstage/cli@0.26.11-next.1
- @backstage/app-defaults@1.5.8-next.1
- @backstage/core-components@0.14.9-next.0
- @backstage/core-plugin-api@1.9.3
- @backstage/frontend-app-api@0.7.3-next.1
- @backstage/plugin-api-docs@0.11.7-next.1
- @backstage/plugin-catalog-graph@0.4.7-next.1
- @backstage/plugin-catalog-import@0.12.1-next.1
- @backstage/plugin-search@1.4.13-next.1
- @backstage/plugin-search-react@1.7.13-next.0
- @backstage/plugin-signals@0.0.8-next.0
- @backstage/plugin-user-settings@0.8.9-next.1
- @backstage/plugin-kubernetes@0.11.12-next.1
- @backstage/plugin-kubernetes-cluster@0.0.13-next.1
- @backstage/catalog-model@1.5.0
- @backstage/config@1.2.0
- @backstage/integration-react@1.1.29-next.0
- @backstage/theme@0.5.6
- @backstage/plugin-auth-react@0.1.4-next.0
- @backstage/plugin-catalog-common@1.0.24
- @backstage/plugin-catalog-unprocessed-entities@0.2.6-next.0
- @backstage/plugin-devtools@0.1.16-next.0
- @backstage/plugin-permission-react@0.4.23
- @backstage/plugin-search-common@1.2.12
- @backstage/plugin-techdocs-module-addons-contrib@1.1.12-next.0
- @backstage/plugin-techdocs-react@1.2.6-next.0
## 0.2.99-next.0
### Patch Changes
- Updated dependencies
- @backstage/plugin-scaffolder@1.22.0-next.0
- @backstage/plugin-techdocs-react@1.2.6-next.0
- @backstage/plugin-techdocs@1.10.7-next.0
- @backstage/core-components@0.14.9-next.0
- @backstage/core-app-api@1.13.0-next.0
- @backstage/frontend-app-api@0.7.2-next.0
- @backstage/cli@0.26.10-next.0
- @backstage/plugin-org@0.6.27-next.0
- @backstage/plugin-catalog-react@1.12.2-next.0
- @backstage/plugin-catalog@1.21.1-next.0
- @backstage/plugin-scaffolder-react@1.10.0-next.0
- @backstage/plugin-techdocs-module-addons-contrib@1.1.12-next.0
- @backstage/app-defaults@1.5.7-next.0
- @backstage/integration-react@1.1.29-next.0
- @backstage/plugin-api-docs@0.11.7-next.0
- @backstage/plugin-auth-react@0.1.4-next.0
- @backstage/plugin-catalog-graph@0.4.7-next.0
- @backstage/plugin-catalog-import@0.12.1-next.0
- @backstage/plugin-catalog-unprocessed-entities@0.2.6-next.0
- @backstage/plugin-devtools@0.1.16-next.0
- @backstage/plugin-home@0.7.6-next.0
- @backstage/plugin-kubernetes@0.11.12-next.0
- @backstage/plugin-kubernetes-cluster@0.0.13-next.0
- @backstage/plugin-notifications@0.2.3-next.0
- @backstage/plugin-search@1.4.13-next.0
- @backstage/plugin-search-react@1.7.13-next.0
- @backstage/plugin-signals@0.0.8-next.0
- @backstage/plugin-user-settings@0.8.8-next.0
- @backstage/core-plugin-api@1.9.3
- @backstage/catalog-model@1.5.0
- @backstage/config@1.2.0
- @backstage/theme@0.5.6
- @backstage/plugin-catalog-common@1.0.24
- @backstage/plugin-permission-react@0.4.23
- @backstage/plugin-search-common@1.2.12
## 0.2.98
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "example-app",
"version": "0.2.98",
"version": "0.2.99-next.1",
"backstage": {
"role": "frontend"
},
+36
View File
@@ -1,5 +1,41 @@
# @backstage/backend-app-api
## 0.7.10-next.1
### Patch Changes
- Updated dependencies
- @backstage/backend-common@0.23.3-next.1
- @backstage/backend-plugin-api@0.6.22-next.1
- @backstage/backend-tasks@0.5.27-next.1
- @backstage/cli-common@0.1.14
- @backstage/cli-node@0.2.6
- @backstage/config@1.2.0
- @backstage/config-loader@1.8.1
- @backstage/errors@1.2.4
- @backstage/types@1.1.1
- @backstage/plugin-auth-node@0.4.17-next.1
- @backstage/plugin-permission-node@0.7.33-next.1
## 0.7.9-next.0
### Patch Changes
- b60db08: Fixing exporting of classes properly from new packages
- a63c4b6: Fixing issue with `MiddlewareFactory` deprecation wrapping
- Updated dependencies
- @backstage/backend-plugin-api@0.6.21-next.0
- @backstage/backend-common@0.23.2-next.0
- @backstage/backend-tasks@0.5.26-next.0
- @backstage/plugin-auth-node@0.4.16-next.0
- @backstage/plugin-permission-node@0.7.32-next.0
- @backstage/cli-common@0.1.14
- @backstage/cli-node@0.2.6
- @backstage/config@1.2.0
- @backstage/config-loader@1.8.1
- @backstage/errors@1.2.4
- @backstage/types@1.1.1
## 0.7.6
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@backstage/backend-app-api",
"version": "0.7.6",
"version": "0.7.10-next.1",
"description": "Core API used by Backstage backend apps",
"backstage": {
"role": "node-library"
+37
View File
@@ -1,5 +1,42 @@
# @backstage/backend-common
## 0.23.3-next.1
### Patch Changes
- b9ed1bb: bumped better-sqlite3 from ^9.0.0 to ^11.0.0
- Updated dependencies
- @backstage/backend-dev-utils@0.1.4
- @backstage/backend-plugin-api@0.6.22-next.1
- @backstage/cli-common@0.1.14
- @backstage/config@1.2.0
- @backstage/config-loader@1.8.1
- @backstage/errors@1.2.4
- @backstage/integration@1.13.0-next.0
- @backstage/integration-aws-node@0.1.12
- @backstage/types@1.1.1
- @backstage/plugin-auth-node@0.4.17-next.1
## 0.23.2-next.0
### Patch Changes
- 8c09c97: Deprecate legacy status check factory, handler and types.
- d228862: Update default backend plugin created by the cli to use non-deprecated error handling middleware
- c964a3d: Add dependencies that are needed by cross-imports from backend-defaults
- b60db08: Fixing exporting of classes properly from new packages
- Updated dependencies
- @backstage/backend-plugin-api@0.6.21-next.0
- @backstage/integration@1.13.0-next.0
- @backstage/plugin-auth-node@0.4.16-next.0
- @backstage/backend-dev-utils@0.1.4
- @backstage/cli-common@0.1.14
- @backstage/config@1.2.0
- @backstage/config-loader@1.8.1
- @backstage/errors@1.2.4
- @backstage/integration-aws-node@0.1.12
- @backstage/types@1.1.1
## 0.23.0
### Minor Changes
+4 -4
View File
@@ -184,7 +184,7 @@ export function createRootLogger(
// @public @deprecated
export function createServiceBuilder(_module: NodeModule): ServiceBuilder;
// @public
// @public @deprecated
export function createStatusCheckRouter(options: {
logger: LoggerService;
path?: string;
@@ -645,15 +645,15 @@ export type StaticAuthOptions = {
logger?: LoggerService;
};
// @public
// @public @deprecated
export type StatusCheck = () => Promise<any>;
// @public
// @public @deprecated
export function statusCheckHandler(
options?: StatusCheckHandlerOptions,
): Promise<RequestHandler>;
// @public
// @public @deprecated
export interface StatusCheckHandlerOptions {
statusCheck?: StatusCheck;
}
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@backstage/backend-common",
"version": "0.23.0",
"version": "0.23.3-next.1",
"description": "Common functionality library for Backstage backends",
"backstage": {
"role": "node-library"
@@ -137,7 +137,7 @@
"@types/webpack-env": "^1.15.2",
"@types/yauzl": "^2.10.0",
"aws-sdk-client-mock": "^4.0.0",
"better-sqlite3": "^9.0.0",
"better-sqlite3": "^11.0.0",
"http-errors": "^2.0.0",
"msw": "^1.0.0",
"mysql2": "^3.0.0",
@@ -63,7 +63,7 @@ export type ErrorHandlerOptions = {
*
* @public
* @returns An Express error request handler
* @deprecated Use {@link @backstage/backend-app-api#MiddlewareFactory.create.error} instead
* @deprecated Use {@link @backstage/backend-defaults/rootHttpRouter#MiddlewareFactory.create.error} instead
*/
export function errorHandler(
options: ErrorHandlerOptions = {},
@@ -17,3 +17,4 @@
export * from './errorHandler';
export * from './notFoundHandler';
export * from './requestLoggingHandler';
export * from './statusCheckHandler';
@@ -21,6 +21,7 @@ import { NextFunction, Request, Response, RequestHandler } from 'express';
* {@link createStatusCheckRouter}.
*
* @public
* @deprecated Migrate to the {@link https://backstage.io/docs/backend-system/ | new backend system} and use the {@link https://backstage.io/docs/backend-system/core-services/root-health | Root Health Service} instead.
*/
export type StatusCheck = () => Promise<any>;
@@ -28,6 +29,7 @@ export type StatusCheck = () => Promise<any>;
* Options passed to {@link statusCheckHandler}.
*
* @public
* @deprecated Migrate to the {@link https://backstage.io/docs/backend-system/ | new backend system} and use the {@link https://backstage.io/docs/backend-system/core-services/root-health | Root Health Service} instead.
*/
export interface StatusCheckHandlerOptions {
/**
@@ -44,6 +46,7 @@ export interface StatusCheckHandlerOptions {
* @public
* @param options - An optional configuration object.
* @returns An Express error request handler
* @deprecated Migrate to the {@link https://backstage.io/docs/backend-system/ | new backend system} and use the {@link https://backstage.io/docs/backend-system/core-services/root-health | Root Health Service} instead.
*/
export async function statusCheckHandler(
options: StatusCheckHandlerOptions = {},
@@ -17,8 +17,7 @@
import { LoggerService } from '@backstage/backend-plugin-api';
import Router from 'express-promise-router';
import express from 'express';
import { errorHandler } from '../deprecated';
import { statusCheckHandler, StatusCheck } from '../middleware';
import { errorHandler, statusCheckHandler, StatusCheck } from '..';
/**
* Creates a default status checking router, that you can add to your express
@@ -31,6 +30,7 @@ import { statusCheckHandler, StatusCheck } from '../middleware';
* requests.
*
* @public
* @deprecated Migrate to the {@link https://backstage.io/docs/backend-system/ | new backend system} and use the {@link https://backstage.io/docs/backend-system/core-services/root-health | Root Health Service} instead.
*/
export async function createStatusCheckRouter(options: {
logger: LoggerService;
@@ -15,4 +15,5 @@
*/
export { createServiceBuilder } from './createServiceBuilder';
export { createStatusCheckRouter } from './createStatusCheckRouter';
export type { ServiceBuilder, RequestLoggingHandlerFactory } from './types';
-2
View File
@@ -22,5 +22,3 @@
export * from './deprecated';
export * from './compat';
export * from './middleware';
export * from './service';
+44
View File
@@ -1,5 +1,49 @@
# @backstage/backend-defaults
## 0.3.4-next.1
### Patch Changes
- b9ed1bb: bumped better-sqlite3 from ^9.0.0 to ^11.0.0
- Updated dependencies
- @backstage/backend-common@0.23.3-next.1
- @backstage/backend-app-api@0.7.10-next.1
- @backstage/backend-dev-utils@0.1.4
- @backstage/backend-plugin-api@0.6.22-next.1
- @backstage/cli-common@0.1.14
- @backstage/config@1.2.0
- @backstage/config-loader@1.8.1
- @backstage/errors@1.2.4
- @backstage/integration@1.13.0-next.0
- @backstage/integration-aws-node@0.1.12
- @backstage/types@1.1.1
- @backstage/plugin-auth-node@0.4.17-next.1
- @backstage/plugin-events-node@0.3.8-next.1
- @backstage/plugin-permission-node@0.7.33-next.1
## 0.3.3-next.0
### Patch Changes
- 53ced70: Added a new Root Health Service which adds new endpoints for health checks.
- 083eaf9: Fix bug where ISO durations could no longer be used for schedules
- cb14a05: Repack the package to fix issues with typescript with named exports
- Updated dependencies
- @backstage/backend-plugin-api@0.6.21-next.0
- @backstage/backend-common@0.23.2-next.0
- @backstage/integration@1.13.0-next.0
- @backstage/backend-app-api@0.7.9-next.0
- @backstage/plugin-auth-node@0.4.16-next.0
- @backstage/plugin-events-node@0.3.7-next.0
- @backstage/plugin-permission-node@0.7.32-next.0
- @backstage/backend-dev-utils@0.1.4
- @backstage/cli-common@0.1.14
- @backstage/config@1.2.0
- @backstage/config-loader@1.8.1
- @backstage/errors@1.2.4
- @backstage/integration-aws-node@0.1.12
- @backstage/types@1.1.1
## 0.3.0
### Minor Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@backstage/backend-defaults",
"version": "0.3.0",
"version": "0.3.4-next.1",
"description": "Backend defaults used by Backstage backend apps",
"backstage": {
"role": "node-library"
@@ -143,7 +143,7 @@
"@types/express": "^4.17.6",
"archiver": "^6.0.0",
"base64-stream": "^1.0.0",
"better-sqlite3": "^9.0.0",
"better-sqlite3": "^11.0.0",
"compression": "^1.7.4",
"concat-stream": "^2.0.0",
"cookie": "^0.6.0",
@@ -1,5 +1,57 @@
# @backstage/backend-dynamic-feature-service
## 0.2.15-next.1
### Patch Changes
- Updated dependencies
- @backstage/plugin-catalog-backend@1.24.0-next.1
- @backstage/backend-common@0.23.3-next.1
- @backstage/backend-app-api@0.7.10-next.1
- @backstage/backend-plugin-api@0.6.22-next.1
- @backstage/backend-tasks@0.5.27-next.1
- @backstage/cli-common@0.1.14
- @backstage/cli-node@0.2.6
- @backstage/config@1.2.0
- @backstage/config-loader@1.8.1
- @backstage/errors@1.2.4
- @backstage/types@1.1.1
- @backstage/plugin-app-node@0.1.22-next.1
- @backstage/plugin-auth-node@0.4.17-next.1
- @backstage/plugin-events-backend@0.3.9-next.1
- @backstage/plugin-events-node@0.3.8-next.1
- @backstage/plugin-permission-common@0.7.14
- @backstage/plugin-permission-node@0.7.33-next.1
- @backstage/plugin-scaffolder-node@0.4.8-next.1
- @backstage/plugin-search-backend-node@1.2.27-next.1
- @backstage/plugin-search-common@1.2.12
## 0.2.14-next.0
### Patch Changes
- Updated dependencies
- @backstage/backend-plugin-api@0.6.21-next.0
- @backstage/backend-common@0.23.2-next.0
- @backstage/backend-tasks@0.5.26-next.0
- @backstage/plugin-scaffolder-node@0.4.7-next.0
- @backstage/backend-app-api@0.7.9-next.0
- @backstage/plugin-app-node@0.1.21-next.0
- @backstage/plugin-auth-node@0.4.16-next.0
- @backstage/plugin-catalog-backend@1.23.2-next.0
- @backstage/plugin-events-backend@0.3.8-next.0
- @backstage/plugin-events-node@0.3.7-next.0
- @backstage/plugin-permission-node@0.7.32-next.0
- @backstage/plugin-search-backend-node@1.2.26-next.0
- @backstage/cli-common@0.1.14
- @backstage/cli-node@0.2.6
- @backstage/config@1.2.0
- @backstage/config-loader@1.8.1
- @backstage/errors@1.2.4
- @backstage/types@1.1.1
- @backstage/plugin-permission-common@0.7.14
- @backstage/plugin-search-common@1.2.12
## 0.2.11
### Patch Changes

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