docs/releases/v1.30.0-changelog.md
Upgrade Helper: https://backstage.github.io/upgrade-helper/?to=1.30.0
@backstage/backend-defaults package.@backstage/backend-tasks as it will be deleted in near future.urlReaderServiceFactory, please import from @backstage/backend-defaults/urlReader instead.BackendFeatures from @backstage/backend-plugin-api, including feature loaders.ServiceRegister implementation to enable registering multiple service implementations for a given service ref.packages options to config schema389f5a4: BREAKING: Removed the following Url Reader deprecated exports:
UrlReaderService from @backstage/backend-plugin-api instead;@backstage/backend-defaults/urlReader instead;@backstage/backend-defaults/urlReader instead;@backstage/backend-defaults/urlReader instead;@backstage/backend-defaults/urlReader instead;@backstage/backend-defaults/urlReader instead;@backstage/backend-defaults/urlReader instead;@backstage/backend-defaults/urlReader instead;@backstage/backend-defaults/urlReader instead;@backstage/backend-defaults/urlReader instead;@backstage/backend-defaults/urlReader instead;@backstage/backend-defaults/urlReader instead;@backstage/backend-defaults/urlReader instead;@backstage/backend-defaults/urlReader instead;@backstage/backend-defaults/urlReader instead;@backstage/backend-defaults/urlReader instead;@backstage/backend-defaults/urlReader instead;UrlReaderServiceReadUrlOptions from @backstage/backend-plugin-api instead;UrlReaderServiceReadUrlResponse from @backstage/backend-plugin-api instead;@backstage/backend-defaults/urlReader instead;@backstage/backend-defaults/urlReader instead;UrlReaderServiceReadTreeOptions from @backstage/backend-plugin-api instead;UrlReaderServiceReadTreeResponse from @backstage/backend-plugin-api instead;UrlReaderServiceReadTreeResponseFile from @backstage/backend-plugin-api instead;UrlReaderServiceReadTreeResponseDirOptions from @backstage/backend-plugin-api instead;@backstage/backend-defaults/urlReader instead;@backstage/backend-defaults/urlReader instead;UrlReaderServiceSearchOptions from @backstage/backend-plugin-api instead;UrlReaderServiceSearchResponse from @backstage/backend-plugin-api instead;UrlReaderServiceSearchResponseFile from @backstage/backend-plugin-api instead.ba8571e: Setup user agent header for AWS sdk clients, this enables users to better track API calls made from Backstage to AWS APIs through things like CloudTrail.
93095ee: Make sure node-fetch is version 2.7.0 or greater
6795e33: This package is marked as deprecated and will be removed in a near future, please follow the deprecated instructions for the exports you still use.
7e13b7a: The remaining exports in the package have now been deprecated:
cacheToPluginCacheManagercreateLegacyAuthAdaptersLegacyCreateRouterlegacyPluginloggerToWinstonLoggermakeLegacyPluginUsers of these export should fully migrate to the new backend system.
ddde5fe: Internal type refactor.
b63d378: export createConfigSecretEnumerator from @backstage/backend-common instead of @backstage/backend-app-api.
Updated dependencies
@backstage/backend-tasks as it will be deleted in near future.389f5a4: BREAKING Deleted the following deprecated UrlReader exports
UrlReaderServiceReadUrlOptions instead;UrlReaderServiceReadUrlResponse instead;UrlReaderServiceReadTreeOptions instead;UrlReaderServiceReadTreeResponse instead;UrlReaderServiceReadTreeResponseFile instead;UrlReaderServiceReadTreeResponseDirOptions instead;UrlReaderServiceSearchOptions instead;UrlReaderServiceSearchResponse instead;UrlReaderServiceSearchResponseFile instead.7c5f3b0: The createServiceRef function now accepts a new boolean multiple option. The multiple option defaults to false and when set to true, it enables that multiple implementation are installed for the created service ref.
We're looking for ways to make it possible to augment services without the need to replace the entire service.
Typical example of that being the ability to install support for additional targets for the UrlReader service without replacing the service itself. This achieves that by allowing us to define services that can have multiple simultaneous implementation, allowing the UrlReader implementation to depend on such a service to collect all possible implementation of support for external targets:
// @backstage/backend-defaults
+ export const urlReaderFactoriesServiceRef = createServiceRef<ReaderFactory>({
+ id: 'core.urlReader.factories',
+ scope: 'plugin',
+ multiton: true,
+ });
...
export const urlReaderServiceFactory = createServiceFactory({
service: coreServices.urlReader,
deps: {
config: coreServices.rootConfig,
logger: coreServices.logger,
+ factories: urlReaderFactoriesServiceRef,
},
- async factory({ config, logger }) {
+ async factory({ config, logger, factories }) {
return UrlReaders.default({
config,
logger,
+ factories,
});
},
});
With that, you can then add more custom UrlReader factories by installing more implementations of the urlReaderFactoriesServiceRef in your backend instance. Something like:
// packages/backend/index.ts
import { createServiceFactory } from '@backstage/backend-plugin-api';
import { urlReaderFactoriesServiceRef } from '@backstage/backend-defaults';
...
backend.add(createServiceFactory({
service: urlReaderFactoriesServiceRef,
deps: {},
async factory() {
return CustomUrlReader.factory;
},
}));
...
c99c620: BREAKING Removed the following deprecated types:
ServiceRefConfig use ServiceRefOptionsRootServiceFactoryConfig use RootServiceFactoryOptionsPluginServiceFactoryConfig use PluginServiceFactoryOptions6061061: Added createBackendFeatureLoader, which can be used to create an installable backend feature that can in turn load in additional backend features in a dynamic way.
ba9abf4: The SchedulerService now allows tasks with frequency: { trigger: 'manual' }. This means that the task will not be scheduled, but rather run only when manually triggered with SchedulerService.triggerTask.
8b13183: Added createBackendFeatureLoader, which can be used to programmatically select and install backend features.
A feature loader can return an list of features to be installed, for example in the form on an Array or other for of iterable, which allows for the loader to be defined as a generator function. Both synchronous and asynchronous loaders are supported.
Additionally, a loader can depend on services in its implementation, with the restriction that it can only depend on root-scoped services, and it may not override services that have already been instantiated.
const searchLoader = createBackendFeatureLoader({
deps: {
config: coreServices.rootConfig,
},
*loader({ config }) {
// Example of a custom config flag to enable search
if (config.getOptionalString('customFeatureToggle.search')) {
yield import('@backstage/plugin-search-backend/alpha');
yield import('@backstage/plugin-search-backend-module-catalog/alpha');
yield import('@backstage/plugin-search-backend-module-explore/alpha');
yield import('@backstage/plugin-search-backend-module-techdocs/alpha');
}
},
});
ddde5fe: Fixed a type issue where plugin and modules depending on multiton services would not receive the correct type.
f011d1b: fix typo in getPluginRequestToken comments
Updated dependencies
fc24d9e: This package is deprecated and will be removed in a near future, follow the instructions below to stop using it:
TaskScheduler: Please migrate to the new backend system, and depend on coreServices.scheduler from @backstage/backend-plugin-api instead, or use DefaultSchedulerService from `@backstage/backend-defaults;TaskRunner: Please import SchedulerServiceTaskRunner from @backstage/backend-plugin-api instead;TaskFunction: Please import SchedulerServiceTaskFunction from @backstage/backend-plugin-api instead;TaskDescriptor: Please import SchedulerServiceTaskDescriptor from @backstage/backend-plugin-api instead;TaskInvocationDefinition: Please import SchedulerServiceTaskInvocationDefinition from @backstage/backend-plugin-api instead;TaskScheduleDefinition: Please import SchedulerServiceTaskFunction from @backstage/backend-plugin-api instead;TaskScheduleDefinitionConfig: Please import SchedulerServiceTaskScheduleDefinitionConfig from @backstage/backend-plugin-api instead;PluginTaskScheduler: Please use SchedulerService from @backstage/backend-plugin-api instead (most likely via coreServices.scheduler);readTaskScheduleDefinitionFromConfig: Please import readSchedulerServiceTaskScheduleDefinitionFromConfig from @backstage/backend-plugin-api instead;HumanDuration: Import TypesHumanDuration from @backstage/types instead.PluginTaskScheduler now allows tasks with frequency: { trigger: 'manual' }. This means that the task will not be scheduled, but rather run only when manually triggered with PluginTaskScheduler.triggerTask.861f162: BREAKING: Removed these deprecated helpers:
setupRequestMockHandlers is removed; use registerMswTestHooks instead.MockDirectoryOptions is removed; use CreateMockDirectoryOptions instead.Stopped exporting the deprecated and internal isDockerDisabledForTests helper.
Removed get method from ServiceFactoryTester which is replaced by getSubject
BackendFeautures from @backstage/backend-plugin-api.ServiceFactoryTester to be able to test services that enables multi implementation installation.startTestBackend and ServiceFactoryTester now includes the Root Health Service.32a38e1: BREAKING: The lockfile (yarn.lock) dependency analysis and mutations have been removed from several commands.
The versions:bump command will no longer attempt to bump and deduplicate dependencies by modifying the lockfile, it will only update package.json files.
The versions:check command has been removed, since its only purpose was verification and mutation of the lockfile. We recommend using the yarn dedupe command instead, or the yarn-deduplicate package if you're using Yarn classic.
The check that was built into the package start command has been removed, it will no longer warn about lockfile mismatches.
The packages in the Backstage ecosystem handle package duplications much better now than when these CLI features were first introduced, so the need for these features has diminished. By removing them, we drastically reduce the integration between the Backstage CLI and Yarn, making it much easier to add support for other package managers in the future.
ConfigSourcesprocess polyfill to use require.resolve for greater compatibility.RootConfigService instead of Config. This also removes the dependency on @backstage/config as it's no longer used.react and react-dom by setting the FORCE_REACT_DEVELOPMENT flag.'ES2022' to 'es2022' for better compatibility with older versions of swc.@module-federation/enhanced to 0.3.1yarn start.repo build --all not properly detecting the experimental public entry point.ConfigSources that enables configuration of parsing logic. Previously limited to yaml, these ConfigSources now allow for a multitude of parsing options (e.g. JSON).env option of ConfigSources.default now correctly allows undefined members.allowMissingDefaultConfig option to ConfigSources.default and
ConfigSources.defaultForTargets, which results in omission of a ConfigSource
for the default app-config.yaml configuration file if it's not present.@backstage/backend-tasks as it will be deleted in near future.IconBundleBlueprint API.useRouteRef, which can now always return undefined.createExtension v1 format to the newer v2 format, and old create*Extension extension creators to blueprints.72754db: BREAKING: All types of route refs are always considered optional by useRouteRef, which means the caller must always handle a potential undefined return value. Related to this change, the optional option from createExternalRouteRef has been removed, since it is no longer necessary.
This is released as an immediate breaking change as we expect the usage of the new route refs to be extremely low or zero, since plugins that support the new system will still use route refs and useRouteRef from @backstage/core-plugin-api in combination with convertLegacyRouteRef from @backstage/core-compat-api.
6f72c2b: Fixing issue with extension blueprints inputs merging.
210d066: Added support for using the params in other properties of the createExtensionBlueprint options by providing a callback.
9b356dc: Renamed createPlugin to createFrontendPlugin. The old symbol is still exported but deprecated.
a376559: Correct the TConfig type of data references to only contain config
4e53ad6: Introduce a new way to encapsulate extension kinds that replaces the extension creator pattern with createExtensionBlueprint
This allows the creation of extension instances with the following pattern:
// create the extension blueprint which is used to create instances
const EntityCardBlueprint = createExtensionBlueprint({
kind: 'entity-card',
attachTo: { id: 'test', input: 'default' },
output: [coreExtensionData.reactElement],
factory(params: { text: string }) {
return [coreExtensionData.reactElement(<h1>{params.text}</h1>)];
},
});
// create an instance of the extension blueprint with params
const testExtension = EntityCardBlueprint.make({
name: 'foo',
params: {
text: 'Hello World',
},
});
9b89b82: The ExtensionBoundary now by default infers whether it's routable from whether it outputs a route path.
e493020: Deprecated inputs and configSchema options for createComponentExtenion, these will be removed in a future release
7777b5f: Added a new IconBundleBlueprint that lets you create icon bundle extensions that can be installed in an App in order to override or add new app icons.
import { IconBundleBlueprint } from '@backstage/frontend-plugin-api';
const exampleIconBundle = IconBundleBlueprint.make({
name: 'example-bundle',
params: {
icons: {
user: MyOwnUserIcon,
},
},
});
99abb6b: Support overriding of plugin extensions using the new plugin.withOverrides method.
import homePlugin from '@backstage/plugin-home';
export default homePlugin.withOverrides({
extensions: [
homePage.getExtension('page:home').override({
*factory(originalFactory) {
yield* originalFactory();
yield coreExtensionData.reactElement(<h1>My custom home page</h1>);
},
}),
],
});
813cac4: Add an ExtensionBoundary.lazy function to create properly wrapped lazy-loading enabled elements, suitable for use with coreExtensionData.reactElement. The page blueprint now automatically leverages this.
a65cfc8: Add support for accessing extensions definitions provided by a plugin via plugin.getExtension(...). For this to work the extensions must be defined using the v2 format, typically using an extension blueprint.
3be9aeb: Extensions have been changed to be declared with an array of inputs and outputs, rather than a map of named data refs. This change was made to reduce confusion around the role of the input and output names, as well as enable more powerful APIs for overriding extensions.
An extension that was previously declared like this:
const exampleExtension = createExtension({
name: 'example',
inputs: {
items: createExtensionInput({
element: coreExtensionData.reactElement,
}),
},
output: {
element: coreExtensionData.reactElement,
},
factory({ inputs }) {
return {
element: (
<div>
Example
{inputs.items.map(item => {
return <div>{item.output.element}</div>;
})}
</div>
),
};
},
});
Should be migrated to the following:
const exampleExtension = createExtension({
name: 'example',
inputs: {
items: createExtensionInput([coreExtensionData.reactElement]),
},
output: [coreExtensionData.reactElement],
factory({ inputs }) {
return [
coreExtensionData.reactElement(
<div>
Example
{inputs.items.map(item => {
return <div>{item.get(coreExtensionData.reactElement)}</div>;
})}
</div>,
),
];
},
});
34f1b2a: Support merging of inputs in extension blueprints, but stop merging output. In addition, the original factory in extension blueprints now returns a data container that both provides access to the returned data, but can also be forwarded as output.
3fb421d: Added support to be able to define zod config schema in Blueprints, with built in schema merging from the Blueprint and the extension instances.
2d21599: Added support for being able to override extension definitions.
const TestCard = EntityCardBlueprint.make({
...
});
TestCard.override({
// override attachment points
attachTo: { id: 'something-else', input: 'overridden' },
// extend the config schema
config: {
schema: {
newConfig: z => z.string().optional(),
}
},
// override factory
*factory(originalFactory, { inputs, config }){
const originalOutput = originalFactory();
yield coreExentsionData.reactElement(
<Wrapping>
{originalOutput.get(coreExentsionData.reactElement)}
</Wrapping>
);
}
});
31bfc44: Extension data references can now be defined in a way that encapsulates the ID string in the type, in addition to the data type itself. The old way of creating extension data references is deprecated and will be removed in a future release.
For example, the following code:
export const myExtension =
createExtensionDataRef<MyType>('my-plugin.my-data');
Should be updated to the following:
export const myExtension = createExtensionDataRef<MyType>().with({
id: 'my-plugin.my-data',
});
6349099: Added config input type to the extensions
Updated dependencies
GitlabUrlReader.readUrl and GitlabUrlReader.readTree to accept a user-provided token, supporting both bearer and private tokens.getHarnessEditContentsUrl, getHarnessFileContentsUrl, getHarnessArchiveUrl, getHarnessLatestCommitUrl and parseHarnessUrl to handle account and org level urlssignIn to authentication provider configuration schema.signIn.resolvers now take precedence over sign-in resolvers passed to signInResolver option of createOAuthProviderFactory. This effectively makes sign-in resolvers passed via the signInResolver the default one, which you can then override through configuration.RelatedEntitiesCard presets to be reused./alpha now have more accurate and granular default filters.create*Extension, and replace it with the equivalent Blueprint implementation instead.create*Extension, and replace it with the equivalent Blueprint implementation insteadtableOptions to all tables and additionally title to API tables.RouterOptions, CatalogBuilder, and CatalogEnvironment. Please make sure to upgrade to the new backend system.@backstage/backend-tasks as it will be deleted in near future.776eb56: ProcessorOutputCollector returns an error when receiving deferred entities that have an invalid metadata.annotations format.
This allows to return an error on an actual validation issue instead of reporting that the location annotations are missing afterwards, which is misleading for the users.
389f5a4: Update deprecated url-reader-related imports.
93095ee: Make sure node-fetch is version 2.7.0 or greater
a629fb2: Added setAllowedLocationTypes while introducing a new extension point called CatalogLocationsExtensionPoint
51240ee: Preserve default allowedLocationTypes when setAllowedLocationTypes() of CatalogLocationsExtensionPoint is not called.
Updated dependencies
@backstage/backend-tasks as it will be deleted in near future.AwsOrganizationCloudAccountProcessor configuration field roleArn is deprecated in favor of new field accountId@backstage/backend-tasks as it will be deleted in near future.@backstage/backend-tasks as it will be deleted in near future.@backstage/backend-tasks as it will be deleted in near future.@backstage/backend-tasks as it will be deleted in near future.@backstage/backend-tasks as it will be deleted in near future.@backstage/backend-tasks as it will be deleted in near future.@backstage/backend-tasks as it will be deleted in near future.93095ee: Make sure node-fetch is version 2.7.0 or greater
c1eb809: Fix GitHub repository event support.
$.repository.organization is only provided for push events. Switched to $.organization.login instead.$.repository.url is not always returning the expected and required value. Use $.repository.html_url instead.Updated dependencies
@backstage/backend-tasks as it will be deleted in near future.@backstage/backend-tasks as it will be deleted in near future.excludeRepos configuration option to the Gitlab catalog provider.@backstage/backend-tasks as it will be deleted in near future.@backstage/backend-tasks as it will be deleted in near future.@backstage/backend-tasks as it will be deleted in near future.@backstage/backend-tasks as it will be deleted in near future.@backstage/backend-tasks as it will be deleted in near future.@backstage/backend-tasks as it will be deleted in near future.def53a7: BREAKING Following NotificationTemplateRenderer methods now return a Promise and must be awaited: getSubject, getText and getHtml.
Required changes and example usage:
import { notificationsEmailTemplateExtensionPoint } from '@backstage/plugin-notifications-backend-module-email';
import { Notification } from '@backstage/plugin-notifications-common';
+import { getNotificationSubject, getNotificationTextContent, getNotificationHtmlContent } from 'my-notification-processing-library`
export const notificationsModuleEmailDecorator = createBackendModule({
pluginId: 'notifications',
moduleId: 'email.templates',
register(reg) {
reg.registerInit({
deps: {
emailTemplates: notificationsEmailTemplateExtensionPoint,
},
async init({ emailTemplates }) {
emailTemplates.setTemplateRenderer({
- getSubject(notification) {
+ async getSubject(notification) {
- return `New notification from ${notification.source}`;
+ const subject = await getNotificationSubject(notification);
+ return `New notification from ${subject}`;
},
- getText(notification) {
+ async getText(notification) {
- return notification.content;
+ const text = await getNotificationTextContent(notification);
+ return text;
},
- getHtml(notification) {
+ async getHtml(notification) {
- return `<p>${notification.content}</p>`;
+ const html = await getNotificationHtmlContent(notification);
+ return html;
},
});
},
});
},
});
MyGroupsPicker to use entityPresentationApi and make it consistent across scaffolder pickersRepoBranchPicker that supports autocompletion for BitbucketTextField component for more flexibility in theme overrides.create*Extension, and replace it with the equivalent Blueprint implementation insteadRepoUrlPicker not refreshing the credentials for a different host@backstage/backend-tasks as it will be deleted in near future.catalog:write to write to directories that don't already existDefaultTableOutputs where output elements overlapped on smaller screen sizesTextField component for more flexibility in theme overrides.uiSchema and formContext in FormPropsajv-errors for scaffolder validation to allow for customizing the error messagesisJsonObject utility function for scaffolder review state component@backstage/backend-tasks as it will be deleted in near future.@backstage/backend-tasks as it will be deleted in near future.@backstage-community/plugin-explore-common to ^0.0.4.@backstage/backend-tasks as it will be deleted in near future.@backstage/backend-tasks as it will be deleted in near future.@backstage/backend-tasks as it will be deleted in near future.single or multiple implementations.morgan middleware to use a custom format to prevent PII from being loggedcreateHealthRouter utility that allows you to create a health check router is now exported via @backstage/backend-defaults/rootHttpRouter.SchedulerService now allows tasks with frequency: { trigger: 'manual' }. This means that the task will not be scheduled, but rather run only when manually triggered with SchedulerService.triggerTask.GitlabUrlReader.readUrl and GitlabUrlReader.readTree to accept a user-provided token, supporting both bearer and private tokens./.backstage/health/v1/readiness and /.backstage/health/v1/liveness.UrlReader service to depends on multiple instances of UrlReaderFactoryProvider service.EventEmitter memory leak in the development utilitiesfetch rather than FetchApi. This fixes a bug where the app would immediately try to sign-in again when removing the cookie during logout.useRouteRef, which can now always return undefined.createExtension v1 format to the newer v2 format, and old create*Extension extension creators to blueprints.compatWrapper and convertLegacyRouteRef now support converting from the new system to the old.convertLegacyPlugin option will convert an existing plugin to the new system, although you need to supply extensions for the plugin yourself. To help out with this, there is also a new convertLegacyPageExtension which converts an existing page extension to the new system.Link component to the RoutedTabs instead of the HeaderTabs componentcreate-appapp-config.production.yaml to make it easier to get started with example data8209449: Added new APIs for testing extensions
72754db: Updated usage of useRouteRef, which can now always return undefined.
3be9aeb: Added support for v2 extensions, which declare their inputs and outputs without using a data map.
fe1fbb2: Migrating usages of the deprecated createExtension v1 format to the newer v2 format, and old create*Extension extension creators to blueprints.
2d21599: Added support for being able to override extension definitions.
const TestCard = EntityCardBlueprint.make({
...
});
TestCard.override({
// override attachment points
attachTo: { id: 'something-else', input: 'overridden' },
// extend the config schema
config: {
schema: {
newConfig: z => z.string().optional(),
}
},
// override factory
*factory(originalFactory, { inputs, config }){
const originalOutput = originalFactory();
yield coreExentsionData.reactElement(
<Wrapping>
{originalOutput.get(coreExentsionData.reactElement)}
</Wrapping>
);
}
});
c00e1a0: Deprecate the .render method of the createExtensionTester in favour of using renderInTestApp directly.
import {
renderInTestApp,
createExtensionTester,
} from '@backstage/frontend-test-utils';
const tester = createExtensionTester(extension);
const { getByTestId } = renderInTestApp(tester.reactElement());
// or if you're not using `coreExtensionData.reactElement` as the output ref
const { getByTestId } = renderInTestApp(tester.get(myComponentRef));
264e10f: Deprecate existing ExtensionCreators in favour of their new Blueprint counterparts.
264e10f: Refactor .make method on Blueprints into two different methods, .make and .makeWithOverrides.
When using createExtensionBlueprint you can define parameters for the factory function, if you wish to take advantage of these parameters you should use .make when creating an extension instance of a Blueprint. If you wish to override more things other than the standard attachTo, name, namespace then you should use .makeWithOverrides instead.
.make is reserved for simple creation of extension instances from Blueprints using higher level parameters, whereas .makeWithOverrides is lower level and you have more control over the final extension.
6349099: Added config input type to the extensions
Updated dependencies
ConsumingComponentsCard and ProvidingComponentsCard will now optionally accept columns to override which table columns are displayedcreateExtension v1 format to the newer v2 format, and old create*Extension extension creators to blueprints.resolvers prop to AsyncApiDefinitionWidget. This allows to override the default http/https resolvers, for example to add authentication to requests to internal schema registries.@graphiql/react to ^0.23.0.tableOptions to all tables and additionally title to API tables.createRouter and its options in favour of the new backend system.useRouteRef, which can now always return undefined.create*Extension, and replace it with the equivalent Blueprint implementation insteadrouteRef parameterscreateRouter and its router options in favour of the new backend system.signIn to authentication provider configuration schemac8f1cae: Add signIn to authentication provider configuration schema
4ea354f: Added a signer configuration option to validate against the token claims. We strongly recommend that you set this value (typically on the format arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/my-load-balancer/1234567890123456) to ensure that the auth provider can safely check the authenticity of any incoming tokens.
Example:
auth:
providers:
awsalb:
# this is the URL of the IdP you configured
issuer: 'https://example.okta.com/oauth2/default'
# this is the ARN of your ALB instance
+ signer: 'arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/my-load-balancer/1234567890123456'
# this is the region where your ALB instance resides
region: 'us-west-2'
signIn:
resolvers:
# typically you would pick one of these
- resolver: emailMatchingUserEntityProfileEmail
- resolver: emailLocalPartMatchingUserEntityName
93095ee: Make sure node-fetch is version 2.7.0 or greater
Updated dependencies
signIn to authentication provider configuration schemasignIn to authentication provider configuration schemasignIn to authentication provider configuration schemasignIn to authentication provider configuration schemasignIn to authentication provider configuration schemasignIn to authentication provider configuration schemasignIn to authentication provider configuration schemasignIn to authentication provider configuration schemasignIn to authentication provider configuration schemasignIn to authentication provider configuration schemasignIn to authentication provider configuration schemalistBranchesByRepository to BitbucketCloudClientcreate*Extension, and replace it with the equivalent Blueprint implementation insteadentityFilter to prevent repeated redrawsentityPresentationApi for the node title and the icon.create*Extension, and replace it with the equivalent Blueprint implementation insteadsingle or multiple implementations.create*Extension, and replace it with the equivalent Blueprint implementation instead.EntityDisplayName's icon alignment with the text.routable prop in the implementation of the createEntityContentExtension alpha export.convertLegacyPlugin utility from @backstage/core-compat-api.FavorityEntity/alpha exports will now be enabled by default.create*Extension, and replace it with the equivalent Blueprint implementation insteadcreateRouter and its router options in favour of the new backend system.createExtension v1 format to the newer v2 format, and old create*Extension extension creators to blueprints./alpha sub-path export.createExtension v1 format to the newer v2 format, and old create*Extension extension creators to blueprints.kubernetes.clusterLocatorMethods[].clusters[].customResources to the configuration schema.
This was already documented and supported by the plugin.Liveness Probe added in ContainerCard Component of PodDrawercreate*Extension, and replace it with the equivalent Blueprint implementation insteadbranchesfetch:cookiecutter scaffolder action & improve related testsda97131: Added test cases for gitlab:issues:create examples
fad1b90: Allow the createGitlabProjectVariableAction to use oauth tokens
aab708e: Added test cases for gitlab:issue:edit examples
ef742dc: Added test cases for gitlab:projectAccessToken:create example
1ba4c2f: Added test cases for gitlab:pipeline:trigger examples
a6603e4: Add custom action for merge request: auto
The Auto action selects the committed action between create and update.
The Auto action fetches files using the /projects/repository/tree endpoint. After fetching, it checks if the file exists locally and in the repository. If it does, it chooses update; otherwise, it chooses create.
Updated dependencies
create*Extension, and replace it with the equivalent Blueprint implementation instead@backstage/backend-app-api dependencycreate*Extension, and replace it with the equivalent Blueprint implementation instead.create*Extension, and replace it with the equivalent Blueprint implementation insteadmkdocs-redirects plugin. Redirects defined using the mkdocs-redirect plugin will be handled automatically in TechDocs. Redirecting to external urls is not supported. In the case that an external redirect url is provided, TechDocs will redirect to the current documentation site home.type: 'local' to TechDocs config schema for publisherpatchMkdocsYmlPrebuild to modify repo_url and edit_uri independently.create*Extension, and replace it with the equivalent Blueprint implementation instead