docs/releases/v1.17.0-changelog.md
b9c57a4f857e: BREAKING: Renamed configServiceFactory to rootConfigServiceFactory.
a6d7983f349c: BREAKING: Removed the services option from createBackend. Service factories are now BackendFeatures and should be installed with backend.add(...) instead. The following should be migrated:
const backend = createBackend({ services: [myCustomServiceFactory] });
To instead pass the service factory via backend.add(...):
const backend = createBackend();
backend.add(customRootLoggerServiceFactory);
featureDiscoveryServiceFactory, available as an /alpha export.d008aefef808: BREAKING: Removing shared environments concept from the new experimental backend system.
a6d7983f349c: BREAKING: Removed the services option from createBackend. Service factories are now BackendFeatures and should be installed with backend.add(...) instead. The following should be migrated:
const backend = createBackend({ services: [myCustomServiceFactory] });
To instead pass the service factory via backend.add(...):
const backend = createBackend();
backend.add(customRootLoggerServiceFactory);
coreServices.rootConfig instead of coreService.configcreateServiceFactory.coreServices.config to coreServices.rootConfig.c7aa4ff1793c: Allow modules to register extension points.
cc9256a33bcc: Added new experimental featureDiscoveryServiceRef, available as an /alpha export.
a6d7983f349c: BREAKING: Removed the services option from createBackend. Service factories are now BackendFeatures and should be installed with backend.add(...) instead. The following should be migrated:
const backend = createBackend({ services: [myCustomServiceFactory] });
To instead pass the service factory via backend.add(...):
const backend = createBackend();
backend.add(customRootLoggerServiceFactory);
Updated dependencies
b9c57a4f857e: BREAKING: Renamed mockServices.config to mockServices.rootConfig.
a6d7983f349c: BREAKING: Removed the services option from createBackend. Service factories are now BackendFeatures and should be installed with backend.add(...) instead. The following should be migrated:
const backend = createBackend({ services: [myCustomServiceFactory] });
To instead pass the service factory via backend.add(...):
const backend = createBackend();
backend.add(customRootLoggerServiceFactory);
2f1859585998: Loading invalid TypeScript configuration schemas will now throw an error rather than silently being ignored.
In particular this includes defining any additional types other than Config in the schema file, or use of unsupported types such as Record or Partial.
cd514545d1d0: Adds a new deepVisibility schema keyword that sets child visibility recursively to the defined value, respecting preexisting values or child deepVisibility.
Example usage:
export interface Config {
/**
* Enforces a default of `secret` instead of `backend` for this object.
* @deepVisibility secret
*/
mySecretProperty: {
type: 'object';
properties: {
secretValue: {
type: 'string';
};
verySecretProperty: {
type: 'string';
};
};
};
}
Example of a schema that would not be allowed:
export interface Config {
/**
* Set the top level property to secret, enforcing a default of `secret` instead of `backend` for this object.
* @deepVisibility secret
*/
mySecretProperty: {
type: 'object';
properties: {
frontendUrl: {
/**
* We can NOT override the visibility to reveal a property to the front end.
* @visibility frontend
*/
type: 'string';
};
verySecretProperty: {
type: 'string';
};
};
};
}
buildGerritGitilesArchiveUrl() to construct a Gitiles URL to download an archive.
Gitiles URL that uses an authenticated prefix (/a/) can now be parsed by the integration.app plugin node library, initially providing an extension point that can be used to configure a static fallback handler.AnnotateScmSlugEntityProcessor@backstage/backend-openapi-utils. Error responses for invalid input, like "a" instead of a number, may have changed.coreServices.rootConfig instead of coreService.configcoreServices.rootConfig instead of coreService.configUnprocessedEntites -> UnprocessedEntities4b6d41737aad: BREAKING: Fixed typos in exported module attributes. Many users may see no changes, but if you have customized the plugin output, you may have to rename the following:
<ResourceUtilization totalFormated={} /> to <ResourceUtilization totalFormatted={} />DetectedError.occuranceCount to DetectedError.occurrenceCount.linguistPlugin() (used by the new backend system) in favour of static config.proxy configuration key is deprecated. Endpoints should now be declared under proxy.endpoints instead. The skipInvalidProxies and reviveConsumedRequestBodies can now also be configured through static configuration.coreServices.rootConfig instead of coreService.configeach property on action steps, allowing them to be ran repeatedly.629cbd194a87: Use coreServices.rootConfig instead of coreService.config
349611126ae2: Removed the options from the alpha scaffolderPlugin export. To extend the scaffolder plugin you instead now use the available extension points, scaffolderActionsExtensionPoint, scaffolderTaskBrokerExtensionPoint, and scaffolderTemplatingExtensionPoint.
33c76caef72a: Added examples for the fs:delete and fs:rename actions
e07a4914f621: Deprecated the following type exports, which have been moved to @backstage/plugin-scaffolder-node instead:
TemplateFilterTemplateGlobalTaskStatusTaskCompletionStateSerializedTaskTaskEventTypeSerializedTaskEventTaskBrokerDispatchResultTaskBrokerDispatchOptionsTaskContextTaskBroker0b1d775be05b: Adds examples to a few scaffolder actions.
88bc6e27a213: The concurrentTasksLimit option can now be configured via static configuration as well. Setting it to 0 will now also disable the task worker.
0f873325068d: Add examples for github:repo:create and github:repo:push scaffolder actions.
5c28ebc79fd6: Updated dependency esbuild to ^0.19.0.
d3b31a791eb1: Deprecated executeShellCommand, RunCommandOptions, and fetchContents from @backstage/plugin-scaffolder-backend, since they are useful for Scaffolder modules (who should not be importing from the plugin package itself). You should now import these from @backstage/plugin-scaffolder-backend-node instead. RunCommandOptions was renamed in the Node package as ExecuteShellCommandOptions, for consistency.
Updated dependencies
each property on action steps, allowing them to be ran repeatedly.each property on action steps, allowing them to be ran repeatedly.@backstage/plugin-scaffolder-backend.scaffolderTaskBrokerExtensionPoint and scaffolderTemplatingExtensionPoint.TemplateExample from the createTemplateAction type.executeShellCommand, RunCommandOptions, and fetchContents from @backstage/plugin-scaffolder-backend, since they are useful for Scaffolder modules (who should not be importing from the plugin package itself). You should now import these from @backstage/plugin-scaffolder-backend-node instead. RunCommandOptions was renamed in the Node package as ExecuteShellCommandOptions, for consistency.@backstage/backend-openapi-utils. Error responses for invalid input, like "a" instead of a number, may have changed.coreServices.rootConfig instead of coreService.configconfigSchema to package.json@backstage/backend-openapi-utils. Error responses for invalid input, like "a" instead of a number, may have changed.coreServices.rootConfig instead of coreService.config629cbd194a87: Use coreServices.rootConfig instead of coreService.config
443afcf7f567: To improve performance, GerritUrlReader.readTree() now uses Gitiles to fetch an archive instead of cloning the repository.
If gitilesBaseUrl is not configured, readTree still uses Git to clone the repository.
Added stripFirstDirectory option to ReadTreeResponseFactory.fromTarArchive(), allowing to disable stripping first directory
for tar archives.
4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result.
Updated dependencies
createRouter method for generating an express router that validates against your spec. Also fixes a bug with the query parameters type resolution.readTaskScheduleDefinitionFromConfig properly handle bad inputs--no-merge flagesbuild to ^0.19.0.nodemon dependency.navigate analytics events to be misattributed to the plugin mounted on the root route (e.g. the home plugin at /) when the route that was navigated to wasn't associated with a routable extension.theme.spacing without string interpolationconcurrently libraryapp-config.yaml template to use proxy.endpoints.nodemon dependency.app.getProvider() and app.getRouter() in DevAppBuilder@microsoft/api-extractor dependency to ^7.36.4, and @microsoft/api-documenter to ^7.22.33.backstage-repo-tools generate-catalog-info, which can be used to create standardized catalog-info.yaml files for each Backstage package in a Backstage monorepo. It can also be used to automatically fix existing catalog-info.yaml files with the correct metadata (including metadata.name, metadata.title, and metadata.description introspected from the package's package.json, as well as spec.owner introspected from CODEOWNERS), e.g. in a post-commit hook.schema openapi generate command to now create a default router that can be imported and used directly.nodemon dependency.coreServices.rootConfig instead of coreService.configcoreServices.rootConfig instead of coreService.configappBackend export to use static configuration and extension points rather than accepting options.frameHandler to return undefined when using the redirect flow instead of returning postMessageReponse which was causing errorsauth config.coreServices.rootConfig instead of coreService.configcoreServices.rootConfig instead of coreService.configcoreServices.rootConfig instead of coreService.configtheme.spacing without string interpolationEntitySwitch to unmount its children once entity refresh was invokedcoreServices.rootConfig instead of coreService.configaccountId in AwsS3EntityProvidercoreServices.rootConfig instead of coreService.configcoreServices.rootConfig instead of coreService.configcoreServices.rootConfig instead of coreService.configcoreServices.rootConfig instead of coreService.configcoreServices.rootConfig instead of coreService.configcoreServices.rootConfig instead of coreService.configcoreServices.rootConfig instead of coreService.configincrementalIngestionProvidersExtensionPoint for registering incremental providers, rather than the providers being passed as options to the backend module.coreServices.rootConfig instead of coreService.configcatalogModuleMicrosoftGraphOrgEntityProvider export no longer accepts options. Transformers are now instead configured via the microsoftGraphOrgEntityProviderTransformExtensionPoint.coreServices.rootConfig instead of coreService.config629cbd194a87: Use coreServices.rootConfig instead of coreService.config
12a8c94eda8d: Add package repository and homepage metadata
2b4f77a4e900: Add DevTools configuration to enable dependency listing to be filtered with custom prefixes. For instance, in your app-config.yaml:
devTools:
info:
packagePrefixes:
- @backstage/
- @roadiehq/backstage-
- @spotify/backstage-
Updated dependencies
coreServices.rootConfig instead of coreService.configcoreServices.rootConfig instead of coreService.configcoreServices.rootConfig instead of coreService.configcoreServices.rootConfig instead of coreService.configmaterial-ui overrides in plugin-explore components<WelcomeTitle language={['English', 'Spanish']} />AddWidgetDialog. If the title was set to "", the entry would contain an empty string. Use the name as a fallbacktitle optional when defining the createCardExtensioncoreServices.rootConfig instead of coreService.configcoreServices.rootConfig instead of coreService.configcoreServices.rootConfig instead of coreService.configdisableChangeEvents prop to EntityPagerDutyCard to hide the Change Events tab and disable fetching of change events for the PagerDuty service.coreServices.rootConfig instead of coreService.configcoreServices.rootConfig instead of coreService.configMyGroupsPicker to query the kind=Group entities.confluence:transform:markdown that will show in the installed actions listfetchContents directly instead of a fetchPlainActiontemplateName down to Stepper component.coreServices.rootConfig instead of coreService.configsearchModuleCatalogCollator: Moved collator settings from module options into app-config. You are now expected to set up the catalog collator under the search.collators.catalog configuration key. There is also a new catalogCollatorExtensionPoint extension point for the module, wherein you can set custom transformers.629cbd194a87: Use coreServices.rootConfig instead of coreService.config
12a8c94eda8d: Add package repository and homepage metadata
631eb3816b48: Index templates can now be configured through configuration under the search.elasticsearch.indexTemplates. In addition, the ElasticSearchSearchEngine.fromConfig now also accepts a LoggerService as the logger option as well as a new translator option.
The alpha searchModuleElasticsearchEngine export no longer accepts options and a new alpha elasticsearchTranslatorExtensionPoint export has been added which lets you customize the query translator.
Updated dependencies
coreServices.rootConfig instead of coreService.configschedule from module options into app-config for the new backend system. You can now pass in a TaskScheduleDefinitionConfig through the search.collators.explore.schedule configuration key.coreServices.rootConfig instead of coreService.configcoreServices.rootConfig instead of coreService.configschedule & collators settings from module options into app-config for the new backend system. You can now pass in a TaskScheduleDefinitionConfig through the search.collators.techdocs.schedule configuration key & configure the TechDocsCollatorFactory with the key search.collators.techdocs.externalBaseUrl config for setting a different frontend URLtheme.spacing without string interpolationcoreServices.rootConfig instead of coreService.configtheme.spacing without string interpolation