docs/releases/v1.14.0-changelog.md
201206132da: Introduced a new config source system to replace loadConfig. There is a new ConfigSource interface along with utilities provided by ConfigSources, as well as a number of built-in configuration source implementations. The new system is more flexible and makes it easier to create new and reusable sources of configuration, such as loading configuration from secret providers.
The following is an example of how to load configuration using the default behavior:
const source = ConfigSources.default({
argv: options?.argv,
remote: options?.remote,
});
const config = await ConfigSources.toConfig(source);
The ConfigSource interface looks like this:
export interface ConfigSource {
readConfigData(options?: ReadConfigDataOptions): AsyncConfigSourceIterator;
}
It is best implemented using an async iterator:
class MyConfigSource implements ConfigSource {
async *readConfigData() {
yield {
config: [
{
context: 'example',
data: { backend: { baseUrl: 'http://localhost' } },
},
],
};
}
}
noUndeclaredProperties option to SchemaLoader to support enforcing that there are no extra keys when verifying config.navigate event will now include the route parameters as attributes of the navigate eventFrontendHostDiscovery for config driven discovery implementationschema openapi sub-command. For example yarn backstage-repo-tools schema:openapi:verify is now yarn backstage-repo-tools schema openapi verify..generated.ts file name and a warning header at the top, to highlight that they should not be edited by hand.running status indicator colours to meet WCAG. Previously #2E77D0 changed to #1F5493.a0108c49774: Fixing badges-backend plugin to get a token from the TokenManager instead of parsing the request header. Hence, it's now possible to disable the authMiddleware for the badges-backend plugin to expose publicly the badges.
Implementing an obfuscation feature to protect an open badges endpoint from being enumerated. The feature is disabled by default and the change is compatible with the previous version.
BREAKING: createRouter now require that tokenManager, logger, and identityApi, are passed in as options.
2258dcae970: Added an entity namespace filter and column on the default catalog page.
If you have a custom version of the catalog page, you can add this filter in your CatalogPage code:
<CatalogFilterLayout>
<CatalogFilterLayout.Filters>
<EntityTypePicker />
<UserListPicker initialFilter={initiallySelectedFilter} />
<EntityTagPicker />
/* if you want namespace picker */
<EntityNamespacePicker />
</CatalogFilterLayout.Filters>
<CatalogFilterLayout.Content>
<CatalogTable columns={columns} actions={actions} />
</CatalogFilterLayout.Content>
</CatalogFilterLayout>
The namespace column can be added using createNamespaceColumn();. This is only needed if you customized the columns for CatalogTable.
970678adbe2: Implement events support for GithubMultiOrgEntityProvider
BREAKING: Passing in a custom teamTransformer will now correctly completely override the default transformer behavior
team.edited event emitted from GithubOrgEntityProvider to also include teams description.2258dcae970: Added an entity namespace filter and column on the default catalog page.
If you have a custom version of the catalog page, you can add this filter in your CatalogPage code:
<CatalogFilterLayout>
<CatalogFilterLayout.Filters>
<EntityTypePicker />
<UserListPicker initialFilter={initiallySelectedFilter} />
<EntityTagPicker />
/* if you want namespace picker */
<EntityNamespacePicker />
</CatalogFilterLayout.Filters>
<CatalogFilterLayout.Content>
<CatalogTable columns={columns} actions={actions} />
</CatalogFilterLayout.Content>
</CatalogFilterLayout>
The namespace column can be added using createNamespaceColumn();. This is only needed if you customized the columns for CatalogTable.
README.md for more details!README.md for more details!README.md for more details!@aws-sdk v3 versionscf95c5137c9: Updated rebuild to use Jenkins API replay build, which works for Jenkins jobs that have required parameters. Jenkins SDK could not be used for this request because it does not have support for replay.
Added link to view build in Jenkins CI/CD table action column.
cf95c5137c9: Updated rebuild to use Jenkins API replay build, which works for Jenkins jobs that have required parameters. Jenkins SDK could not be used for this request because it does not have support for replay.
Added link to view build in Jenkins CI/CD table action column.
280ec10c18e: Added Pod logs components for Kubernetes plugin
BREAKING: kubernetesProxyApi for custom plugins built with components from the Kubernetes plugin apis, kubernetesProxyApi should be added to the plugin's API list.
...
export const kubernetesPlugin = createPlugin({
id: 'kubernetes',
apis: [
...
createApiFactory({
api: kubernetesProxyApiRef,
deps: {
kubernetesApi: kubernetesApiRef,
},
factory: ({ kubernetesApi }) =>
new KubernetesProxyClient({
kubernetesApi,
}),
}),
BREAKING: KubernetesDrawer is now called KubernetesStructuredMetadataTableDrawer so that we can do more than just show StructuredMetadataTable
import { KubernetesDrawer } from "@backstage/plugin-kubernetes"
should now be:
import { KubernetesStructuredMetadataTableDrawer } from "@backstage/plugin-kubernetes"
authProvider: aks and sets auth.aks in
its request bodies appropriately.f4114f02d49: Allow fetching pod metrics limited by a labelSelector.
This is used by the Kubernetes tab on a components' page and leads to much smaller responses being received from Kubernetes, especially with larger Kubernetes clusters.
890988341e9: Update aws-sdk client from v2 to v3.
BREAKING: The AwsIamKubernetesAuthTranslator class no longer exposes the following methods awsGetCredentials, getBearerToken, getCredentials and validCredentials. There is no replacement for these methods.
authProvider: aks. When configured this way,
the retrieveObjectsByServiceId action will use the auth.aks value in the
request body as a bearer token to authenticate with Kubernetes.@aws-sdk v3 versions67115f532b8: Expose both types of scaffolder permissions and rules through the metadata endpoint.
The metadata endpoint now correctly exposes both types of scaffolder permissions and rules (for both the template and action resource types) through the metadata endpoint.
a73b3c0b097: Add ability to use defaultNamespace and defaultKind for scaffolder action catalog:fetch
vm2 to be 3.9.18vm2 to be 3.9.17RouterOptions::actions and ScaffolderActionsExtensionPoint::addActions to allow any kind of action being assigned to it.f1496d4ab6f: Fix input schema validation issue for gitlab actions:
Updated dependencies
82e10a6939c: Add support for Markdown text blob outputs from templates
67115f532b8: Expose scaffolder permissions in new sub-aggregations.
In addition to exporting a list of all scaffolder permissions in scaffolderPermissions, scaffolder-common now exports scaffolderTemplatePermissions and scaffolderActionPermissions, which contain subsets of the scaffolder permissions separated by resource type.
ad1a1429de4: Improvements to the scaffolder/next buttons UX:
Stepper componentOngoingTask component. The state of these buttons match their existing counter parts in the Context MenuContextMenu componentUpdated dependencies
750e45539ad: Add close button & improve search input.
Material UI's Paper wrapping the SearchBar in the SearchPage was removed, we recommend users update their apps accordingly.
SearchBarBase's TextField's label support added & aria-label uses label string if present, tests relying on the default placeholder value should still work unless custom placeholder was given.
750e45539ad: Add close button & improve search input.
Material UI's Paper wrapping the SearchBar in the SearchPage was removed, we recommend users update their apps accordingly.
SearchBarBase's TextField's label support added & aria-label uses label string if present, tests relying on the default placeholder value should still work unless custom placeholder was given.
1ce7f84b2e8: <SearchBar/> accepts InputProp property that can override keys from default
SearchPagination now automatically resets the page cursor when the page limit is changed575d9178eff: Added a System Icon for resource entities. This can be obtained using:
useApp().getSystemIcon('kind:resource');
Updated dependencies
configServiceFactory to use ConfigSources from @backstage/config-loader to load config.DatabaseManager to include the plugin id in the Postgres application name of the database connections created for each plugin.@aws-sdk v3 versionsHostDiscovery to supersede deprecated SingleHostDiscovery (deprecated due to name).generated.ts extension@backstage/repo-tools.POSTGRES_11 and POSTGRES_12 as supported test database IDs.backstage-cli config:check with the new --strict option which will surface schema errors.@aws-sdk v3 versions/health and corrected typos in the README.mda0108c49774: Fixing badges-backend plugin to get a token from the TokenManager instead of parsing the request header. Hence, it's now possible to disable the authMiddleware for the badges-backend plugin to expose publicly the badges.
Implementing an obfuscation feature to protect an open badges endpoint from being enumerated. The feature is disabled by default and the change is compatible with the previous version.
BREAKING: createRouter now require that tokenManager, logger, and identityApi, are passed in as options.
Updated dependencies
validateDOMNesting warningsqueryEntities endpoint that was causing filtered entities to be included in cursor requests.jsonSchemaRefPlaceholderResolver where relative $ref files were resolved through file system instead of base URL of fileEntityRelationsGraphProps to Catalog Graph PageEntityTeamPullRequestsContent and EntityTeamPullRequestsCard support the ability to view the labels/tags added to each PR@rjsf/*6e387c077a4: Changed the MembersListCard component to allow displaying aggregated members when viewing a group. Now, a toggle switch can be displayed that lets you switch between showing direct members and aggregated members.
To enable this new feature, set the showAggregateMembersToggle prop on EntityMembersListCard:
// In packages/app/src/components/catalog/EntityPage.tsx
const groupPage = (
// ...
<EntityMembersListCard showAggregateMembersToggle />
// ...
);
Updated dependencies
a788e715cfc: createPermissionIntegrationRouter now accepts rules and permissions for multiple resource types. Example:
createPermissionIntegrationRouter({
resources: [
{
resourceType: 'resourceType-1',
permissions: permissionsResourceType1,
rules: rulesResourceType1,
},
{
resourceType: 'resourceType-2',
permissions: permissionsResourceType2,
rules: rulesResourceType2,
},
],
});
Updated dependencies
d560d457c98: Fix case GitLab workspace is a nested subgroup
ad1a1429de4: Improvements to the scaffolder/next buttons UX:
Stepper componentOngoingTask component. The state of these buttons match their existing counter parts in the Context MenuContextMenu componentUpdated dependencies
RouterOptions::actions and ScaffolderActionsExtensionPoint::addActions to allow any kind of action being assigned to it.LocalStoredShortcuts as deprecated, replacing it with DefaultShortcutsApi whose naming more clearly suggests that the shortcuts aren't necessarily stored locally (it depends on the storage implementation).22963209d23: Added the possibility to customize the check description in the scorecard component.
CheckResultRenderer type now exposes an optional description method that allows to overwrite the description with a different string or a React component for a provided check result.Until now only the BooleanCheck element could be overridden, but from now on it's also possible to override the description for a check.
As an example, the description could change depending on the check result. Refer to the README file for more details
Updated dependencies
@aws-sdk v3 versions