From 5ee959802c89491750d3c1fcfbbebf53f96f51a4 Mon Sep 17 00:00:00 2001 From: Tim Hansen Date: Mon, 15 Mar 2021 14:07:00 -0600 Subject: [PATCH] Minor tweaks to software catalog docs Signed-off-by: Tim Hansen --- .../catalog-core-entities.png | Bin 8965 -> 21047 bytes .../software-catalog/configuration.md | 14 +-- .../software-catalog/descriptor-format.md | 53 ++++++----- .../features/software-catalog/installation.md | 86 ++++-------------- .../features/software-catalog/system-model.md | 5 - .../software-templates/installation.md | 8 -- .../software-templates/writing-templates.md | 2 +- 7 files changed, 54 insertions(+), 114 deletions(-) diff --git a/docs/assets/architecture-decisions/catalog-core-entities.png b/docs/assets/architecture-decisions/catalog-core-entities.png index b7f238708f4ea9c0c9d9702d4b638ce711ba0c90..26099839ef706f34a0a556a49d76e235ee6f3398 100644 GIT binary patch literal 21047 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 literal 8965 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 j6leX>f4RXM?dpLF`9I%aYY)2lx9PCkrnky&+ **Note that if you used `npx @backstage/create-app`, the plugin may already be -> present** +> **Note that if you used `npx @backstage/create-app`, the plugin is already +> installed and you can skip to +> [adding entries to the catalog](#adding-entries-to-the-catalog)** The catalog frontend plugin should be installed in your `app` package, which is created as a part of `@backstage/create-app`. To install the package, run: @@ -21,10 +22,6 @@ cd packages/app yarn add @backstage/plugin-catalog ``` -Make sure the version of `@backstage/plugin-catalog` matches the version of -other `@backstage` packages. You can update it in `packages/app/package.json` if -it doesn't. - ### Adding the Plugin to your `packages/app` Add the following entry to the head of your `packages/app/src/plugins.ts`: @@ -37,6 +34,7 @@ Next we need to install the two pages that the catalog plugin provides. You can choose any name for these routes, but we recommend the following: ```tsx +// packages/app/src/App.tsx import { catalogPlugin, CatalogIndexPage, @@ -60,6 +58,7 @@ user can create components. In a typical setup the create component route will be linked to the Scaffolder plugin's template index page: ```ts +// packages/app/src/App.tsx import { catalogPlugin } from '@backstage/plugin-catalog'; import { scaffolderPlugin } from '@backstage/plugin-scaffolder'; @@ -76,6 +75,7 @@ const app = createApp({ You may also want to add a link to the catalog index page to your sidebar: ```tsx +// packages/app/src/sidebar.tsx import HomeIcon from '@material-ui/icons/Home'; // Somewhere within the @@ -88,7 +88,7 @@ This is all that is needed for the frontend part of the Catalog plugin to work! Since the catalog plugin currently ships with a sentry plugin `InfoCard` installed by default, you'll need to set `sentry.organization` in your -`app-yaml.yaml`. For example: +`app-config.yaml`. For example: ```yaml sentry: @@ -101,8 +101,9 @@ as that will conflict with the catalog routes. ## Installing @backstage/plugin-catalog-backend -> **Note that if you used `npx @backstage/create-app`, the plugin may already be -> present** +> **Note that if you used `npx @backstage/create-app`, the plugin is already +> installed and you can skip to +> [adding entries to the catalog](#adding-entries-to-the-catalog)** The catalog backend should be installed in your `backend` package, which is created as a part of `@backstage/create-app`. To install the package, run: @@ -112,59 +113,12 @@ cd packages/backend yarn add @backstage/plugin-catalog-backend ``` -Make sure the version of `@backstage/plugin-catalog-backend` matches the version -of other `@backstage` packages. You can update it in -`packages/backend/package.json` if it doesn't. - ### Adding the Plugin to your `packages/backend` You'll need to add the plugin to the `backend`'s router. You can do this by -creating a file called `packages/backend/src/plugins/catalog.ts` with the -following contents to get you up and running quickly. - -```ts -import { - createRouter, - DatabaseEntitiesCatalog, - DatabaseLocationsCatalog, - DatabaseManager, - HigherOrderOperations, - LocationReaders, - runPeriodically, -} from '@backstage/plugin-catalog-backend'; -import { PluginEnvironment } from '../types'; -import { useHotCleanup } from '@backstage/backend-common'; - -export default async function createPlugin({ - logger, - database, -}: PluginEnvironment) { - const locationReader = new LocationReaders(logger); - - const db = await DatabaseManager.createDatabase(database, { logger }); - const entitiesCatalog = new DatabaseEntitiesCatalog(db); - const locationsCatalog = new DatabaseLocationsCatalog(db); - const higherOrderOperation = new HigherOrderOperations( - entitiesCatalog, - locationsCatalog, - locationReader, - db, - logger, - ); - - useHotCleanup( - module, - runPeriodically(() => higherOrderOperation.refreshAllLocations(), 10000), - ); - - return await createRouter({ - entitiesCatalog, - locationsCatalog, - higherOrderOperation, - logger, - }); -} -``` +creating a file called `packages/backend/src/plugins/catalog.ts` with contents +matching +[catalog.ts in the create-app template](https://github.com/backstage/backstage/blob/master/packages/create-app/templates/default-app/packages/backend/src/plugins/catalog.ts). Once the `catalog.ts` router setup file is in place, add the router to `packages/backend/src/index.ts`: @@ -174,10 +128,9 @@ import catalog from './plugins/catalog'; const catalogEnv = useHotMemoize(module, () => createEnv('catalog')); -const service = createServiceBuilder(module) - .loadConfig(configReader) - /** several different routers */ - .addRouter('/catalog', await catalog(catalogEnv)); +const apiRouter = Router(); +/** several different routers */ +apiRouter.use('/catalog', await catalog(catalogEnv)); ``` ### Adding Entries to the Catalog @@ -192,7 +145,7 @@ our example templates through static configuration. Add the following to the ```yaml catalog: locations: - # Backstage Example Component + # Backstage Example Components - type: url target: https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/artist-lookup-component.yaml - type: url @@ -217,8 +170,9 @@ Finally, start up the backend with the new configuration: ```bash cd packages/backend +# or `yarn dev` to run both frontend and backend yarn start ``` -If you've also set up the frontend plugin, so you should be ready to go browse -the catalog at [localhost:3000](http://localhost:3000) now! +If you've also set up the frontend plugin, you should be ready to go browse the +catalog at [localhost:3000](http://localhost:3000) now! diff --git a/docs/features/software-catalog/system-model.md b/docs/features/software-catalog/system-model.md index f0ead20664..eedb94d02e 100644 --- a/docs/features/software-catalog/system-model.md +++ b/docs/features/software-catalog/system-model.md @@ -108,8 +108,3 @@ domain would come with some documentation on how to accept payments for a new product or use-case, share the same entity types in their APIs, and integrate well with each other. Other domains could be “Content Ingestion”, “Ads” or “Search”. - -## Links - -- [Original RFC](https://github.com/backstage/backstage/issues/390) -- [YAML file format](../../architecture-decisions/adr002-default-catalog-file-format.md) diff --git a/docs/features/software-templates/installation.md b/docs/features/software-templates/installation.md index fd51bffa5b..baaa45a26d 100644 --- a/docs/features/software-templates/installation.md +++ b/docs/features/software-templates/installation.md @@ -24,10 +24,6 @@ cd packages/app yarn add @backstage/plugin-scaffolder ``` -Make sure the version of `@backstage/plugin-scaffolder` matches the version of -other `@backstage` packages. You can update it in `packages/app/package.json` if -it doesn't. - ### Adding the Plugin to your `packages/app` Add the following entry to the head of your `packages/app/src/plugins.ts`: @@ -71,10 +67,6 @@ cd packages/backend yarn add @backstage/plugin-scaffolder-backend ``` -Make sure the version of `@backstage/plugin-scaffolder-backend` matches the -version of other `@backstage` packages. You can update it in -`packages/backend/package.json` if it doesn't. - ### Adding the Plugin to your `packages/backend` You'll need to add the plugin to the `backend`'s router. You can do this by diff --git a/docs/features/software-templates/writing-templates.md b/docs/features/software-templates/writing-templates.md index d9dbb67ab2..4b88e78db3 100644 --- a/docs/features/software-templates/writing-templates.md +++ b/docs/features/software-templates/writing-templates.md @@ -265,7 +265,7 @@ The main two that are used are the following: ```yaml output: remoteUrl: '{{ steps.publish.output.remoteUrl }}' # link to the remote repository - entityRef: '{{ steps.register.output.entityRef }}' # link to the entitiy that has been ingested to the catalog + entityRef: '{{ steps.register.output.entityRef }}' # link to the entity that has been ingested to the catalog ``` ### The templating syntax