docs/releases/v1.6.0-next.2-changelog.md
repositoryId output when create a repository in Azuregit-url-parse version to ^13.0.0msw to ^0.47.0.msw to ^0.46.0.scaffolderPlugin to be used with experimental backend system.IdentityApi change to use getIdentity instead of authenticate for retrieving the logged in users identity.18f60427f2: Provides search autocomplete functionality through a SearchAutocomplete component.
A SearchAutocompleteDefaultOption can also be used to render options with icons, primary texts, and secondary texts.
Example:
import React, { ChangeEvent, useState, useCallback } from 'react';
import useAsync from 'react-use/lib/useAsync';
import { Grid, Paper } from '@material-ui/core';
import { Page, Content } from '@backstage/core-components';
import { SearchAutocomplete, SearchAutocompleteDefaultOption} from '@backstage/plugin-search-react';
const OptionsIcon = () => <svg />
const SearchPage = () => {
const [inputValue, setInputValue] = useState('');
const options = useAsync(async () => {
// Gets and returns autocomplete options
}, [inputValue])
const useCallback((_event: ChangeEvent<{}>, newInputValue: string) => {
setInputValue(newInputValue);
}, [setInputValue])
return (
<Page themeId="home">
<Content>
<Grid container direction="row">
<Grid item xs={12}>
<Paper>
<SearchAutocomplete
options={options}
inputValue={inputValue}
inputDebounceTime={100}
onInputChange={handleInputChange}
getOptionLabel={option => option.title}
renderOption={option => (
<SearchAutocompleteDefaultOption
icon={<OptionIcon />}
primaryText={option.title}
secondaryText={option.text}
/>
)}
/>
</Paper>
</Grid>
</Grid>
{'/* Filters and results are omitted */'}
</Content>
</Page>
);
};
ca8d5a6eae: We noticed a repeated check for the existence of a parent context before creating a child search context in more the one component such as Search Modal and Search Bar and to remove code duplication we extract the conditional to the context provider, now you can use it passing an inheritParentContextIfAvailable prop to the SearchContextProvider.
Note: This added property does not create a local context if there is a parent context and in this case, you cannot use it together with initialState, it will result in a type error because the parent context is already initialized.
projectId config option to GCP Cloud Storage techdocs publisher. This will allow users to override the project ID, instead of implicitly using the same one as found in a credentials bundle.msw to ^0.47.0.msw to ^0.46.0.projectId config option to GCP Cloud Storage techdocs publisher. This will allow users to override the project ID, instead of implicitly using the same one as found in a credentials bundle.git-url-parse version to ^13.0.0ApiRef.defaultFactory internal.ServiceRegistry to not initialize factories more than once.eadf56bbbf: Bump git-url-parse version to ^13.0.0
3d4f5daadf: Remove use of deprecated trimLeft/trimRight
bf3cc134eb: Implemented KubernetesContainerRunner: a ContainerRunner implementation that leverages Jobs on a kubernetes cluster
const kubeConfig = new KubeConfig();
kubeConfig.loadFromDefault();
const options: KubernetesContainerRunnerOptions = {
kubeConfig,
// namespace where Jobs will be created
namespace: 'default',
// Jobs name will be prefixed with this name
name: 'my-runner',
// An existing Kubernetes volume that will be used
// as base for mounts
mountBase: {
volumeName: 'workdir',
// Every mount must start with the base path
// see example below
basePath: '/workdir',
},
// Define a Pod template for the Jobs. It has to include
// a volume definition named as the mountBase volumeName
podTemplate: {
spec: {
containers: [],
volumes: [
{
name: 'workdir',
persistentVolumeClaim: {
claimName: 'workdir-claim',
},
},
],
},
},
};
const containerRunner = new KubernetesContainerRunner(options);
const runOptions: RunContainerOptions = {
imageName: 'golang:1.17',
args: ['echo', 'hello world'],
mountDirs: {
'/workdir/app': '/app',
},
};
containerRunner.runContainer(runOptions);
e3b1993788: Added port ranges in allowed hosts:
reading:
allow:
- host: *.examples.org:900-1000
2f52e74b49: Got rid of usages of the uppercase String type
667d917488: Updated dependency msw to ^0.47.0.
87ec2ba4d6: Updated dependency msw to ^0.46.0.
Updated dependencies
ApiRef.defaultFactory internal.createBackendPlugin and createBackendModule to properly forward lack of options.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.create-plugin and create commands have both been deprecated in favor of a new new command. The new command is functionally identical to create, but the new naming makes it possible to use as yarn script, since yarn create is reserved.plugin:diff command. If you wish to keep running similar checks in your project we recommend using bespoke scripts. A useful utility for such scripts is @manypkg/get-packages, which helps you enumerate all packages in a monorepo.versions:bump command will now update dependency ranges in package.json, even if the new version is within the current range..jsx files inside testspackage.json files.msw to ^0.47.0.msw to ^0.46.0.backstage-cli repo clean command that cleans the repo root and runs the clean script in all packages.msw to ^0.47.0.msw to ^0.46.0.f9ec4e46e3: When using React Router v6 stable, it is now possible for components within the Route element tree to have path props, although they will be ignored.
667d917488: Updated dependency msw to ^0.47.0.
87ec2ba4d6: Updated dependency msw to ^0.46.0.
e9d40ebf54: If you'd like to send analytics events to multiple implementations, you may now
do so using the MultipleAnalyticsApi implementation provided by this package.
import { MultipleAnalyticsApi } from '@backstage/core-app-api';
import {
analyticsApiRef,
configApiRef,
storageApiRef,
identityApiRef,
} from '@internal/backstage/core-plugin-api';
import { CustomAnalyticsApi } from '@internal/analytics';
import { VendorAnalyticsApi } from '@vendor/analytics';
createApiFactory({
api: analyticsApiRef,
deps: { configApi: configApiRef, identityApi: identityApiRef, storageApi: storageApiRef },
factory: ({ configApi, identityApi, storageApi }) =>
MultipleAnalyticsApi.fromApis([
VendorAnalyticsApi.fromConfig(configApi, { identityApi }),
CustomAnalyticsApi.fromConfig(configApi, { identityApi, storageApi }),
]),
}),
Updated dependencies
msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.6ff94d60d5: Removed usage of the deprecated diff command in the root package.json.
To make this change in an existing app, make the following change in the root package.json:
- "diff": "lerna run diff --",
49416194e8: Adds IdentityApi configuration to create-app scaffolding templates.
To migrate to the new IdentityApi, edit the packages/backend/src/index.ts adding the following import:
import { DefaultIdentityClient } from '@backstage/plugin-auth-node';
Use the factory function to create an IdentityApi in the makeCreateEnv function and return it from the
function as follows:
function makeCreateEnv(config: Config) {
...
const identity = DefaultIdentityClient.create({
discovery,
});
...
return {
...,
identity
}
}
Backend plugins can be upgraded to work with this new IdentityApi.
Add identity to the RouterOptions type.
export interface RouterOptions {
...
identity: IdentityApi;
}
Then you can use the IdentityApi from the plugin.
export async function createRouter(
options: RouterOptions,
): Promise<express.Router> {
const { identity } = options;
router.get('/user', async (req, res) => {
const user = await identity.getIdentity({ request: req });
...
8d886dd33e: Added yarn new as one of the scripts installed by default, which calls backstage-cli new. This script replaces create-plugin, which you can now remove if you want to. It is kept in the create-app template for backwards compatibility.
The remove-plugin command has been removed, as it has been removed from the Backstage CLI.
To apply these changes to an existing app, make the following change to the root package.json:
- "remove-plugin": "backstage-cli remove-plugin"
+ "new": "backstage-cli new --scope internal"
a578558180: Updated the root package.json to use the new backstage-cli repo clean command.
To apply this change to an existing project, make the following change to the root package.json:
- "clean": "backstage-cli clean && lerna run clean",
+ "clean": "backstage-cli repo clean",
git-url-parse version to ^13.0.0msw to ^0.47.0.msw to ^0.46.0.bitbucketServer integration where token did not take precedence over supplied username and password which is described in the documentation.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.git-url-parse version to ^13.0.0msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.IdentityClient is now deprecated. Please migrate to IdentityApi and DefaultIdentityClient instead. The authenticate function on DefaultIdentityClient is also deprecated. Please use getIdentity instead.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.git-url-parse version to ^13.0.0msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.git-url-parse version to ^13.0.0msw to ^0.47.0.msw to ^0.46.0.catalogServiceRef for obtaining a CatalogClient in the new backend system.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.IdentityApi change to use getIdentity instead of authenticate for retrieving the logged in users identity.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.git-url-parse version to ^13.0.0msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.inheritParentContextIfAvailable search context property in SearchModal instead of manually checking if a parent context exists, this conditional statement was previously duplicated in more than one component like in SearchBar as well and is now only done in SearchContextProvider.aws-os-connection to ^0.2.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.git-url-parse version to ^13.0.0msw to ^0.47.0.msw to ^0.46.0.SearchAutocomplete component in the TechDocsSearch component to maintain consistency across search experiences and avoid code duplication.msw to ^0.47.0.msw to ^0.46.0.git-url-parse version to ^13.0.0msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.msw to ^0.47.0.msw to ^0.46.0.