From 4af1f1bf0083ecae1fa6f86a5b9155a38c053455 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:43:59 +0200 Subject: [PATCH 01/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713465727782.md | 7 ++ .changeset/migrate-1713465834005.md | 7 ++ plugins/adr-backend/README.md | 118 +------------------- plugins/adr-backend/package.json | 28 ++--- plugins/adr-common/README.md | 4 +- plugins/adr-common/package.json | 6 +- plugins/adr/README.md | 162 +--------------------------- plugins/adr/package.json | 6 +- 8 files changed, 43 insertions(+), 295 deletions(-) create mode 100644 .changeset/migrate-1713465727782.md create mode 100644 .changeset/migrate-1713465834005.md diff --git a/.changeset/migrate-1713465727782.md b/.changeset/migrate-1713465727782.md new file mode 100644 index 0000000000..29c186cd48 --- /dev/null +++ b/.changeset/migrate-1713465727782.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-adr': patch +'@backstage/plugin-adr-backend': patch +'@backstage/plugin-adr-common': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/.changeset/migrate-1713465834005.md b/.changeset/migrate-1713465834005.md new file mode 100644 index 0000000000..29c186cd48 --- /dev/null +++ b/.changeset/migrate-1713465834005.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-adr': patch +'@backstage/plugin-adr-backend': patch +'@backstage/plugin-adr-common': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/adr-backend/README.md b/plugins/adr-backend/README.md index 73af5137ba..81dd865846 100644 --- a/plugins/adr-backend/README.md +++ b/plugins/adr-backend/README.md @@ -1,117 +1,3 @@ -# ADR Backend +# Deprecated -This ADR backend plugin is primarily responsible for the following: - -- Provides a `DefaultAdrCollatorFactory`, which can be used in the search backend to index ADR documents associated with entities to your Backstage Search. - -- Provides endpoints that use UrlReaders for getting ADR documents (used in the [ADR frontend plugin](../adr/README.md)). - -## Install - -## Setup your `integrations` config - -First off you'll need to setup your `integrations` config inside your `app-config.yaml`. You can skip this step if it's already setup previously, and if you need help configuring this you can read the [integrations documentation](https://backstage.io/docs/integrations/) - -### Up and Running - -Here's how to get the backend up and running: - -1. First we need to add the `@backstage/plugin-adr-backend` package to your backend: - -```sh -# From your Backstage root directory -yarn --cwd packages/backend add @backstage/plugin-adr-backend -``` - -2. Then we will create a new file named `packages/backend/src/plugins/adr.ts`, and add the - following to it: - -```ts -import { createRouter } from '@backstage/plugin-adr-backend'; -import { Router } from 'express'; -import { PluginEnvironment } from '../types'; - -export default async function createPlugin( - env: PluginEnvironment, -): Promise { - return await createRouter({ - reader: env.reader, - cacheClient: env.cache.getClient(), - logger: env.logger, - }); -} -``` - -3. Next we wire this into the overall backend router, edit `packages/backend/src/index.ts`: - -```ts -import adr from './plugins/adr'; -// ... -async function main() { - // ... - // Add this line under the other lines that follow the useHotMemoize pattern - const adrEnv = useHotMemoize(module, () => createEnv('adr')); - // ... - // Insert this line under the other lines that add their routers to apiRouter in the same way - apiRouter.use('/adr', await adr(adrEnv)); -``` - -4. Now run `yarn start-backend` from the repo root - -### New Backend System - -The ADR backend plugin has support for the [new backend system](https://backstage.io/docs/backend-system/), here's how you can set that up: - -In your `packages/backend/src/index.ts` make the following changes: - -```diff - const backend = createBackend(); - -+ backend.add(import('@backstage/plugin-adr-backend')); - -// ... other feature additions - - backend.start(); -``` - -## Indexing ADR documents for search - -Before you are able to start indexing ADR documents to search, you need to go through the [search getting started guide](https://backstage.io/docs/features/search/getting-started). - -When you have your `packages/backend/src/plugins/search.ts` file ready to make modifications, install this plugin and add the following code snippet to add the `DefaultAdrCollatorFactory`. Also make sure to set up the frontend [ADR plugin](../adr/README.md) so search results can be routed correctly. - -```bash -# From your Backstage root directory -yarn --cwd packages/backend add @backstage/plugin-adr-backend -``` - -```ts -import { DefaultAdrCollatorFactory } from '@backstage/plugin-adr-backend'; - -... - -indexBuilder.addCollator({ - schedule, - factory: DefaultAdrCollatorFactory.fromConfig({ - cache: env.cache, - config: env.config, - discovery: env.discovery, - logger: env.logger, - reader: env.reader, - tokenManager: env.tokenManager, - }), -}); -``` - -### Parsing custom ADR document formats - -By default, the `DefaultAdrCollatorFactory` will parse and index documents that follow [MADR v3.0.0](https://github.com/adr/madr/tree/3.0.0) and [MADR v2.x](https://github.com/adr/madr/tree/2.1.2) standard file name and template format. If you use a different ADR format and file name convention, you can configure `DefaultAdrCollatorFactory` with custom `adrFilePathFilterFn` and `parser` options (see type definitions for details): - -```ts -DefaultAdrCollatorFactory.fromConfig({ - ... - parser: myCustomAdrParser, - adrFilePathFilterFn: myCustomAdrFilePathFilter, - ... -}) -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-adr-backend` instead. diff --git a/plugins/adr-backend/package.json b/plugins/adr-backend/package.json index 4230954e11..4974fe4d4b 100644 --- a/plugins/adr-backend/package.json +++ b/plugins/adr-backend/package.json @@ -1,31 +1,35 @@ { "name": "@backstage/plugin-adr-backend", "version": "0.4.14", - "main": "src/index.ts", - "types": "src/index.ts", - "license": "Apache-2.0", + "backstage": { + "role": "backend-plugin", + "moved": "@backstage-community/plugin-adr-backend" + }, "publishConfig": { "access": "public", "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, - "backstage": { - "role": "backend-plugin" - }, "homepage": "https://backstage.io", "repository": { "type": "git", "url": "https://github.com/backstage/backstage", "directory": "plugins/adr-backend" }, + "license": "Apache-2.0", + "main": "src/index.ts", + "types": "src/index.ts", + "files": [ + "dist" + ], "scripts": { - "start": "backstage-cli package start", "build": "backstage-cli package build", - "lint": "backstage-cli package lint", - "test": "backstage-cli package test", "clean": "backstage-cli package clean", + "lint": "backstage-cli package lint", "prepack": "backstage-cli package prepack", - "postpack": "backstage-cli package postpack" + "postpack": "backstage-cli package postpack", + "start": "backstage-cli package start", + "test": "backstage-cli package test" }, "dependencies": { "@backstage/backend-common": "workspace:^", @@ -50,7 +54,5 @@ "@types/supertest": "^2.0.8", "supertest": "^6.1.3" }, - "files": [ - "dist" - ] + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-adr-backend instead." } diff --git a/plugins/adr-common/README.md b/plugins/adr-common/README.md index 38b5b7433c..7c074e84b8 100644 --- a/plugins/adr-common/README.md +++ b/plugins/adr-common/README.md @@ -1,3 +1,3 @@ -# ADR Common +# Deprecated -Common types and functionalities for the ADR plugin. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-adr-common` instead. diff --git a/plugins/adr-common/package.json b/plugins/adr-common/package.json index 603ce8448b..87abce09ca 100644 --- a/plugins/adr-common/package.json +++ b/plugins/adr-common/package.json @@ -3,7 +3,8 @@ "version": "0.2.22", "description": "Common functionalities for the adr plugin", "backstage": { - "role": "common-library" + "role": "common-library", + "moved": "@backstage-community/plugin-adr-common" }, "publishConfig": { "access": "public", @@ -41,5 +42,6 @@ }, "devDependencies": { "@backstage/cli": "workspace:^" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-adr-common instead." } diff --git a/plugins/adr/README.md b/plugins/adr/README.md index 3e8647a8fa..aa3e89ce1f 100644 --- a/plugins/adr/README.md +++ b/plugins/adr/README.md @@ -1,161 +1,3 @@ -# Architecture Decision Records (ADR) Plugin +# Deprecated -Welcome to the ADR plugin! - -This plugin allows you to explore ADRs (Architecture Decision Records) associated with your entities, as well as discover ADRs across other entities using Backstage Search. Use this to inform your own architectural decisions based on the experiences of previous projects. - -![ADR tab](./docs/adr-tab.png) - -## Setup - -1. Install this plugin: - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-adr -``` - -2. Make sure the [ADR backend plugin](../adr-backend/README.md) is installed. - -3. [Configure integrations](https://backstage.io/docs/integrations/) for all sites you would like to pull ADRs from. - -### Entity Pages - -1. Add the plugin as a tab to your Entity pages: - -```jsx -// In packages/app/src/components/catalog/EntityPage.tsx -import { EntityAdrContent, isAdrAvailable } from '@backstage/plugin-adr'; - -... -// Note: Add to any other Pages as well (e.g. defaultEntityPage and websiteEntityPage) -const serviceEntityPage = ( - - {/* other tabs... */} - - - - -``` - -2. Add `backstage.io/adr-location` annotation to your `catalog-info.yaml`: - -```yaml -metadata: - annotations: - backstage.io/adr-location: -``` - -The value for `backstage.io/adr-location` should be a path relative to your `catalog-info.yaml` file or a absolute URL to the directory which contains your ADR markdown files. - -For example, if you have the following directory structure, you would set `backstage.io/adr-location: docs/adrs`: - -``` -repo-root/ - README.md - src/ - catalog-info.yaml - docs/ - adrs/ - 0001-use-adrs.md - 0002-use-cloud.md -``` - -### Search - -First, make sure to setup Backstage Search with the [ADR backend plugin](../adr-backend/README.md). -Afterwards, add the following code snippet to use `AdrSearchResultListItem` when the type of the search results is `adr`: - -```tsx -// In packages/app/src/components/search/SearchPage.tsx -import { AdrSearchResultListItem } from '@backstage/plugin-adr'; -import { AdrDocument } from '@backstage/plugin-adr-common'; - -... -// Optional - Add type to side pane -, - }, - ]} -/> -... - -// In results - - {({ results }) => ( - - {results.map(({ type, document, highlight, rank }) => { - switch (type) { - ... - case 'adr': - return ( - - ); - ... - } - })} - - )} - -``` - -## Custom ADR formats - -By default, this plugin will parse ADRs according to the format specified by the [Markdown Architecture Decision Record (MADR) v2.x template](https://github.com/adr/madr/tree/2.1.2) or the [Markdown Any Decision Record (MADR) 3.x template](https://github.com/adr/madr/tree/3.0.0). If your ADRs are written using a different format, you can apply the following customizations to correctly identify and parse your documents: - -### Custom Filename/Path Format - -In order to ensure the plugin fetches the correct ADR files (e.g. ignoring your template file), you can pass in an optional `filePathFilterFn` parameter to `EntityAdrContent` which will be called with each file path relative to the ADR location specified by `backstage.io/adr-location`. For example, the follow custom filter function will ignore the ADR template file and include files with a specific naming convention including those under a specified sub-directory: - -```tsx -const myCustomFilterFn: AdrFilePathFilterFn = (path: string): boolean => { - if (path === '0000-adr-template.md') { - return false; - } - // Match all files following the pattern NNNN-title-with-dashes.md including those under decided-adrs/ - return /^(decided-adrs\/)?\d{4}-.+\.md$/.test(path); -} - -... - - -``` - -### Custom Content Decorators - -Your ADR Markdown content will typically be rendered in the UI as is with the exception of relative links/embeds being rewritten as absolute URLs so they can be linked correctly (e.g. `./my-diagram.png` => `/my-diagram.png`). Depending on your ADR format, you may want to apply additional transformations to the content (e.g. hiding or formatting front matter in a different way). You can do so by passing in a list of custom content decorators for the optional `contentDecorators` parameter. Note that passing in this parameter will override the default decorators. If you want to include the default ones, make sure to add them as well: - -```tsx -import { - AdrReader, - ... -} from '@backstage/plugin-adr'; - -... - -const myCustomDecorator: AdrContentDecorator = ({ content }) => { - return { content: applyCustomContentTransformation(content) }; -}; - -... - - -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-adr` instead. diff --git a/plugins/adr/package.json b/plugins/adr/package.json index a9908fe98c..bdf54391e8 100644 --- a/plugins/adr/package.json +++ b/plugins/adr/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-adr", "version": "0.6.17", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-adr" }, "publishConfig": { "access": "public" @@ -70,5 +71,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-adr instead." } From 33573b571d96ba128b78f4b9751414d639a98bb0 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:44:08 +0200 Subject: [PATCH 02/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713465844082.md | 6 ++ plugins/airbrake-backend/README.md | 33 +----- plugins/airbrake-backend/package.json | 30 +++--- plugins/airbrake/README.md | 144 +------------------------- plugins/airbrake/package.json | 6 +- 5 files changed, 30 insertions(+), 189 deletions(-) create mode 100644 .changeset/migrate-1713465844082.md diff --git a/.changeset/migrate-1713465844082.md b/.changeset/migrate-1713465844082.md new file mode 100644 index 0000000000..5aaa3fed55 --- /dev/null +++ b/.changeset/migrate-1713465844082.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-airbrake': patch +'@backstage/plugin-airbrake-backend': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/airbrake-backend/README.md b/plugins/airbrake-backend/README.md index 21056229de..5a4a3ba3ca 100644 --- a/plugins/airbrake-backend/README.md +++ b/plugins/airbrake-backend/README.md @@ -1,32 +1,3 @@ -# airbrake-backend +# Deprecated -The Airbrake backend plugin provides a simple proxy to the Airbrake API while hiding away the secret API key from the frontend. - -## How to use - -See the [Airbrake plugin instructions](../airbrake/README.md#how-to-use). - -## Local Development - -This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. - -1. Add the required config to your `app-config.local.yaml`: - - ```yaml - airbrake: - apiKey: ${AIRBRAKE_API_KEY} - ``` - -2. Set the environment variable `AIRBRAKE_API_KEY` with your [API - key](https://airbrake.io/docs/api/#authentication). You can also write it - directly into the config file above for convenience - but beware of - accidentally leaking the key. - -3. Go into the plugin's directory and run it in standalone mode by running `yarn start`. - -Access it from http://localhost:7007/api/airbrake. Or use the [Airbrake plugin in standalone mode](../airbrake/README.md#local-development) which will talk to it automatically. - -Here are some example endpoints: - -- http://localhost:7007/api/airbrake/health -- http://localhost:7007/api/airbrake/api/v4/projects +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-airbrake-backend` instead. diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json index df8b43921f..cdfed4396e 100644 --- a/plugins/airbrake-backend/package.json +++ b/plugins/airbrake-backend/package.json @@ -1,31 +1,36 @@ { "name": "@backstage/plugin-airbrake-backend", "version": "0.3.14", - "main": "src/index.ts", - "types": "src/index.ts", - "license": "Apache-2.0", + "backstage": { + "role": "backend-plugin", + "moved": "@backstage-community/plugin-airbrake-backend" + }, "publishConfig": { "access": "public", "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, - "backstage": { - "role": "backend-plugin" - }, "homepage": "https://backstage.io", "repository": { "type": "git", "url": "https://github.com/backstage/backstage", "directory": "plugins/airbrake-backend" }, + "license": "Apache-2.0", + "main": "src/index.ts", + "types": "src/index.ts", + "files": [ + "dist", + "config.d.ts" + ], "scripts": { - "start": "backstage-cli package start", "build": "backstage-cli package build", + "clean": "backstage-cli package clean", "lint": "backstage-cli package lint", - "test": "backstage-cli package test", "prepack": "backstage-cli package prepack", "postpack": "backstage-cli package postpack", - "clean": "backstage-cli package clean" + "start": "backstage-cli package start", + "test": "backstage-cli package test" }, "dependencies": { "@backstage/backend-common": "workspace:^", @@ -44,9 +49,6 @@ "@types/supertest": "^2.0.8", "supertest": "^6.1.6" }, - "files": [ - "dist", - "config.d.ts" - ], - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-airbrake-backend instead." } diff --git a/plugins/airbrake/README.md b/plugins/airbrake/README.md index 2426a6eb8a..0dff15fa88 100644 --- a/plugins/airbrake/README.md +++ b/plugins/airbrake/README.md @@ -1,143 +1,3 @@ -# Airbrake +# Deprecated -The Airbrake plugin provides connectivity between Backstage and Airbrake (https://airbrake.io/). - -## How to use - -1. Install the Frontend plugin: - - ```bash - # From your Backstage root directory - yarn --cwd packages/app add @backstage/plugin-airbrake - ``` - -2. Install the Backend plugin: - - ```bash - # From your Backstage root directory - yarn --cwd packages/backend add @backstage/plugin-airbrake-backend - ``` - -3. Add the `EntityAirbrakeContent` and `isAirbrakeAvailable` to `packages/app/src/components/catalog/EntityPage.tsx` for all the entity pages you want Airbrake to be in: - - ```typescript jsx - import { - EntityAirbrakeContent, - isAirbrakeAvailable, - } from '@backstage/plugin-airbrake'; - - const serviceEntityPage = ( - - - - - - ); - - const websiteEntityPage = ( - - - - - - ); - - const defaultEntityPage = ( - - - - - - ); - ``` - -4. Create `packages/backend/src/plugins/airbrake.ts` with these contents: - - ```typescript - import { Router } from 'express'; - import { PluginEnvironment } from '../types'; - import { - createRouter, - extractAirbrakeConfig, - } from '@backstage/plugin-airbrake-backend'; - - export default async function createPlugin( - env: PluginEnvironment, - ): Promise { - return createRouter({ - logger: env.logger, - airbrakeConfig: extractAirbrakeConfig(env.config), - }); - } - ``` - -5. Setup the Backend code in `packages/backend/src/index.ts`: - - ```typescript - import airbrake from './plugins/airbrake'; - - async function main() { - //... After const createEnv = makeCreateEnv(config) ... - - const airbrakeEnv = useHotMemoize(module, () => createEnv('airbrake')); - - //... After const apiRouter = Router() ... - apiRouter.use('/airbrake', await airbrake(airbrakeEnv)); - } - ``` - -6. Add this config as a top level section in your `app-config.yaml`: - - ```yaml - airbrake: - apiKey: ${AIRBRAKE_API_KEY} - ``` - -7. Set an environment variable `AIRBRAKE_API_KEY` with your [API key](https://airbrake.io/docs/api/#authentication) - before starting Backstage backend. - -8. Add the following annotation to the `catalog-info.yaml` for a repo you want to link to an Airbrake project: - - ```yaml - metadata: - annotations: - airbrake.io/project-id: '123456' - ``` - -#### New Backend System - -The Airbrake backend plugin has support for the [new backend system](https://backstage.io/docs/backend-system/), here's how you can set that up: - -In your `packages/backend/src/index.ts` make the following changes: - -```diff - import { createBackend } from '@backstage/backend-defaults'; - - const backend = createBackend(); - - // ... other feature additions - -+ backend.add(import('@backstage/plugin-airbrake-backend')); - - backend.start(); -``` - -## Local Development - -Start this plugin in standalone mode by running `yarn start` inside the plugin directory. This method of serving the plugin provides quicker -iteration speed and a faster startup and hot reloads. It is only meant for local development, and the setup for it can -be found inside the [/dev](./dev) directory. - -> A mock API will be used to run it in standalone. If you want to talk to the real API [follow the instructions to start up Airbrake Backend in standalone](../airbrake-backend/README.md#local-development). +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-airbrake` instead. diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index 8970588350..48155c20e9 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-airbrake", "version": "0.3.34", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-airbrake" }, "publishConfig": { "access": "public", @@ -57,5 +58,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-airbrake instead." } From 112b4647c4c1fed3747655f3e2b0697314758133 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:44:14 +0200 Subject: [PATCH 03/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713465852581.md | 5 ++++ plugins/allure/README.md | 41 ++--------------------------- plugins/allure/package.json | 6 +++-- 3 files changed, 11 insertions(+), 41 deletions(-) create mode 100644 .changeset/migrate-1713465852581.md diff --git a/.changeset/migrate-1713465852581.md b/.changeset/migrate-1713465852581.md new file mode 100644 index 0000000000..40e1e19c85 --- /dev/null +++ b/.changeset/migrate-1713465852581.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-allure': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/allure/README.md b/plugins/allure/README.md index 22348385a3..3eec6a4a4f 100644 --- a/plugins/allure/README.md +++ b/plugins/allure/README.md @@ -1,40 +1,3 @@ -# [Allure](https://docs.qameta.io/allure/) +# Deprecated -Welcome to the Backstage Allure plugin. This plugin add an entity service page to display Allure test reports related to the service. - -## Install - -```shell -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-allure -``` - -## Configure - -### Configure Allure service - -Add below configuration in the `app-config.yaml`. - -```yaml -allure: - baseUrl: # Example: https://allure.my-company.net or when running allure locally, http://localhost:5050/allure-docker-service -``` - -### Setup entity service page - -Add `EntityAllureReportContent` in the `EntityPage.tsx` like below: - -```diff -+ import { EntityAllureReportContent } from '@backstage/plugin-allure'; - -... - -const serviceEntityPage = ( - - ... -+ -+ -+ - -); -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-allure` instead. diff --git a/plugins/allure/package.json b/plugins/allure/package.json index ab4e7f3e31..c44f32baed 100644 --- a/plugins/allure/package.json +++ b/plugins/allure/package.json @@ -3,7 +3,8 @@ "version": "0.1.50", "description": "A Backstage plugin that integrates with Allure", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-allure" }, "publishConfig": { "access": "public", @@ -69,5 +70,6 @@ } } } - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-allure instead." } From 0360e8941883f9a299eea027acecfb2dad0c1fed Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:44:21 +0200 Subject: [PATCH 04/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713465859342.md | 7 + plugins/analytics-module-ga/README.md | 260 +----------------- plugins/analytics-module-ga/package.json | 6 +- plugins/analytics-module-ga4/README.md | 234 +--------------- plugins/analytics-module-ga4/package.json | 6 +- .../README.md | 136 +-------- .../package.json | 6 +- 7 files changed, 25 insertions(+), 630 deletions(-) create mode 100644 .changeset/migrate-1713465859342.md diff --git a/.changeset/migrate-1713465859342.md b/.changeset/migrate-1713465859342.md new file mode 100644 index 0000000000..ece5389dad --- /dev/null +++ b/.changeset/migrate-1713465859342.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-analytics-module-ga': patch +'@backstage/plugin-analytics-module-ga4': patch +'@backstage/plugin-analytics-module-newrelic-browser': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/analytics-module-ga/README.md b/plugins/analytics-module-ga/README.md index dfea532403..6cd8eae852 100644 --- a/plugins/analytics-module-ga/README.md +++ b/plugins/analytics-module-ga/README.md @@ -1,259 +1,3 @@ -# Analytics Module: Google Analytics +# Deprecated -This plugin provides an opinionated implementation of the Backstage Analytics -API for Google Analytics. Once installed and configured, analytics events will -be sent to GA as your users navigate and use your Backstage instance. - -This plugin contains no other functionality. - -## Installation - -1. Install the plugin package in your Backstage app: - -```sh -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-analytics-module-ga -``` - -2. Wire up the API implementation to your App: - -```tsx -// packages/app/src/apis.ts -import { - analyticsApiRef, - configApiRef, - identityApiRef, -} from '@backstage/core-plugin-api'; -import { GoogleAnalytics } from '@backstage/plugin-analytics-module-ga'; - -export const apis: AnyApiFactory[] = [ - // Instantiate and register the GA Analytics API Implementation. - createApiFactory({ - api: analyticsApiRef, - deps: { configApi: configApiRef, identityApi: identityApiRef }, - factory: ({ configApi, identityApi }) => - GoogleAnalytics.fromConfig(configApi, { - identityApi, - }), - }), -]; -``` - -3. Configure the plugin in your `app-config.yaml`: - -The following is the minimum configuration required to start sending analytics -events to GA. All that's needed is your Universal Analytics tracking ID: - -```yaml -# app-config.yaml -app: - analytics: - ga: - trackingId: UA-0000000-0 -``` - -4. Update CSP in your `app-config.yaml`: - -The following is the minimal content security policy required to load scripts from GA. - -```yaml -backend: - csp: - connect-src: ["'self'", 'http:', 'https:'] - # Add these two lines below - script-src: ["'self'", "'unsafe-eval'", 'https://www.google-analytics.com'] - img-src: ["'self'", 'data:', 'https://www.google-analytics.com'] -``` - -## Configuration - -In order to be able to analyze usage of your Backstage instance _by plugin_, we -strongly recommend configuring at least one [custom dimension][what-is-a-custom-dimension] -to capture Plugin IDs associated with events, including page views. - -1. First, [configure the custom dimension in GA][configure-custom-dimension]. - Be sure to set the Scope to `hit`, and name it something like `Plugin`. Note - the index of the dimension you just created (e.g. `1`, if this is the first - custom dimension you've created in your GA property). -2. Then, add a mapping to your `app.analytics.ga` configuration that instructs - the plugin to capture Plugin IDs on the custom dimension you just created. - It should look like this: - -```yaml -app: - analytics: - ga: - trackingId: UA-0000000-0 - customDimensionsMetrics: - - type: dimension - index: 1 - source: context - key: pluginId -``` - -You can configure additional custom dimension and metric collection by adding -more entries to the `customDimensionsMetrics` array: - -```yaml -app: - analytics: - ga: - customDimensionsMetrics: - - type: dimension - index: 1 - source: context - key: pluginId - - type: dimension - index: 2 - source: context - key: routeRef - - type: dimension - index: 3 - source: context - key: extension - - type: metric - index: 1 - source: attributes - key: someEventContextAttr -``` - -### User IDs - -This plugin supports accurately deriving user-oriented metrics (like monthly -active users) using Google Analytics' [user ID views][ga-user-id-view]. To -enable this... - -1. Be sure you've gone through the process of setting up a user ID view in your - Backstage instance's Google Analytics property (see docs linked above). -2. Make sure you instantiate `GoogleAnalytics` with an `identityApi` instance - passed to it, as shown in the installation section above. -3. Set `app.analytics.ga.identity` to either `required` or `optional` in your - `app.config.yaml`, like this: - - ```yaml - app: - analytics: - ga: - trackingId: UA-0000000-0 - identity: optional - ``` - - Set `identity` to `optional` if you need accurate session counts, including - cases where users do not sign in at all. Use `required` if you need all hits - to be associated with a user ID without exception (and don't mind if some - sessions are not captured, such as those where no sign in occur). - -Note that, to comply with GA policies, the value of the User ID is -pseudonymized before being sent to GA. By default, it is a `sha256` hash of the -current user's `userEntityRef` as returned by the `identityApi`. To set a -different value, provide a `userIdTransform` function alongside `identityApi` -when you instantiate `GoogleAnalytics`. This function will be passed the -`userEntityRef` as an argument and should resolve to the value you wish to set -as the user ID. For example: - -```typescript -import { - analyticsApiRef, - configApiRef, - identityApiRef, -} from '@backstage/core-plugin-api'; -import { GoogleAnalytics } from '@backstage/plugin-analytics-module-ga'; - -export const apis: AnyApiFactory[] = [ - createApiFactory({ - api: analyticsApiRef, - deps: { configApi: configApiRef, identityApi: identityApiRef }, - factory: ({ configApi, identityApi }) => - GoogleAnalytics.fromConfig(configApi, { - identityApi, - userIdTransform: async (userEntityRef: string): Promise => { - return customHashingFunction(userEntityRef); - }, - }), - }), -]; -``` - -### Enabling Site Search - -If you wish to see all of the search events in the [Site Search](https://support.google.com/analytics/answer/1012264) -section of Google Analytics, you can enable sending virtual pageviews on every `search` event like so: - -```yaml -app: - analytics: - ga: - virtualSearchPageView: - mode: only # Defaults to 'disabled' - mountPath: /virtual-search # Defaults to '/search' - searchQuery: term # Defaults to 'query' - categoryQuery: sc # Omitted by default -``` - -Available `mode`s are: - -- `disabled` - no virtual pageviews are sent, default behavior -- `only` - sends virtual pageviews _instead_ of `search` events -- `both` - sends both virtual pageviews _and_ `search` events - -Virtual pageviews will be sent to the path specified in the `mountPath`, the search term will be -set as the value for query parameter `searchQuery` and category (if provided) will be set as the value for -query parameter `categoryQuery`, e.g. the example config above will result in -virtual pageviews being sent to `/virtual-search?term=SearchTermHere&sc=CategoryHere`. - -### Debugging and Testing - -In pre-production environments, you may wish to set additional configurations -to turn off reporting to Analytics and/or print debug statements to the -console. You can do so like this: - -```yaml -app: - analytics: - ga: - testMode: true # Prevents data being sent to GA - debug: true # Logs analytics event to the web console -``` - -You might commonly set the above in an `app-config.local.yaml` file, which is -normally `gitignore`'d but loaded and merged in when Backstage is bootstrapped. - -## Development - -If you would like to contribute improvements to this plugin, the easiest way to -make and test changes is to do the following: - -1. Clone the main Backstage monorepo `git clone git@github.com:backstage/backstage.git` -2. Install all dependencies `yarn install` -3. If one does not exist, create an `app-config.local.yaml` file in the root of - the monorepo and add config for this plugin (see below) -4. Enter this plugin's working directory: `cd plugins/analytics-provider-ga` -5. Start the plugin in isolation: `yarn start` -6. Navigate to the playground page at `http://localhost:3000/ga` -7. Open the web console to see events fire when you navigate or when you - interact with instrumented components. - -Code for the isolated version of the plugin can be found inside the [/dev](./dev) -directory. Changes to the plugin are hot-reloaded. - -### Recommended Dev Config - -Paste this into your `app-config.local.yaml` while developing this plugin: - -```yaml -app: - analytics: - ga: - trackingId: UA-0000000-0 - debug: true - testMode: true - customDimensionsMetrics: - - type: dimension - index: 1 - source: context - key: pluginId -``` - -[what-is-a-custom-dimension]: https://support.google.com/analytics/answer/2709828 -[configure-custom-dimension]: https://support.google.com/analytics/answer/2709828#configuration -[ga-user-id-view]: https://support.google.com/analytics/answer/3123669 +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-analytics-module-ga` instead. diff --git a/plugins/analytics-module-ga/package.json b/plugins/analytics-module-ga/package.json index 0f6bd99e7c..c6410de780 100644 --- a/plugins/analytics-module-ga/package.json +++ b/plugins/analytics-module-ga/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-analytics-module-ga", "version": "0.2.4", "backstage": { - "role": "frontend-plugin-module" + "role": "frontend-plugin-module", + "moved": "@backstage-community/plugin-analytics-module-ga" }, "publishConfig": { "access": "public", @@ -52,5 +53,6 @@ "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-analytics-module-ga instead." } diff --git a/plugins/analytics-module-ga4/README.md b/plugins/analytics-module-ga4/README.md index dad9b88a27..7e56de5565 100644 --- a/plugins/analytics-module-ga4/README.md +++ b/plugins/analytics-module-ga4/README.md @@ -1,233 +1,3 @@ -# Analytics Module: Google Analytics 4 +# Deprecated -This plugin provides an opinionated implementation of the Backstage Analytics -API for Google Analytics 4. Once installed and configured, analytics events will -be sent to GA as your users navigate and use your Backstage instance. - -This plugin contains no other functionality. - -## Installation - -1. Install the plugin package in your Backstage app: - -```sh -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-analytics-module-ga4 -``` - -2. Wire up the API implementation to your App: - -```tsx -// packages/app/src/apis.ts -import { - analyticsApiRef, - configApiRef, - identityApiRef, -} from '@backstage/core-plugin-api'; -import { GoogleAnalytics4 } from '@backstage/plugin-analytics-module-ga4'; - -export const apis: AnyApiFactory[] = [ - // Instantiate and register the GA Analytics API Implementation. - createApiFactory({ - api: analyticsApiRef, - deps: { configApi: configApiRef, identityApi: identityApiRef }, - factory: ({ configApi, identityApi }) => - GoogleAnalytics4.fromConfig(configApi, { - identityApi, - }), - }), -]; -``` - -3. Configure the plugin in your `app-config.yaml`: - -The following is the minimum configuration required to start sending analytics -events to GA. All that's needed is your GA4 measurement ID: - -```yaml -# app-config.yaml -app: - analytics: - ga4: - measurementId: G-0000000-0 -``` - -4. Update CSP in your `app-config.yaml`: - -The following is the minimal content security policy required to load scripts from GA. - -```yaml -backend: - csp: - connect-src: ["'self'", 'http:', 'https:'] - # Add these two lines below - script-src: - [ - "'self'", - "'unsafe-eval'", - 'https://www.google-analytics.com', - 'https://www.googletagmanager.com', - ] - img-src: ["'self'", 'data:', 'https://www.google-analytics.com'] -``` - -## Configuration - -In order to be able to analyze usage of your Backstage instance by plugin, we recommend configuring [a content grouping](#enabling-content-grouping). -Additional dimensional data can be captured using custom dimensions, like this: - -1. First, [configure the custom dimension in GA] [configure-custom-dimension]. - Be sure to set the Scope to `Event`, and name it `dimension1`. -2. Then, add a mapping to your `app.analytics.ga4` configuration that instructs - the plugin to capture Plugin IDs on the custom dimension you just created. - It should look like this: -3. `allowedContexts` config accepts array of string, where each entry is a context parameter that will be sent in the event. - context names will be prefixed by `c_`. -4. `allowedAttributes` config accepts array of string, where each entry is an attribute that will be sent in the event. - attribute names will be prefixed by `a_`. -5. `allowedContexts` and `allowedAttributes` are optional, if not provided, no additional context and attributes will be sent. -6. if `allowedContexts` or `allowedAttributes` is set to '\*', all context and attributes will be sent. -7. `enableSendPageView` is used to send default events and is disabled by default. - -```yaml -app: - analytics: - ga4: - measurementId: G-0000000-0 - allowedContexts: ['pluginId'] -``` - -```yaml -app: - analytics: - ga4: - allowedContexts: ['pluginId'] - allowedAttributes: ['someEventContextAttr'] -``` - -### User IDs - -This plugin supports accurately deriving user-oriented metrics (like monthly -active users) using Google Analytics' [user ID views][ga-user-id-view]. To -enable this... - -1. Be sure you've gone through the process of setting up a user ID view in your - Backstage instance's Google Analytics property (see docs linked above). -2. Make sure you instantiate `GoogleAnalytics` with an `identityApi` instance - passed to it, as shown in the installation section above. -3. Set `app.analytics.ga4.identity` to either `required` or `optional` in your - `app.config.yaml`, like this: - - ```yaml - app: - analytics: - ga4: - measurementId: G-0000000-0 - identity: optional - ``` - - Set `identity` to `optional` if you need accurate session counts, including - cases where users do not sign in at all. Use `required` if you need all hits - to be associated with a user ID without exception (and don't mind if some - sessions are not captured, such as those where no sign in occur). - -Note that, to comply with GA policies, the value of the User ID is -pseudonymized before being sent to GA. By default, it is a `sha256` hash of the -current user's `userEntityRef` as returned by the `identityApi`. To set a -different value, provide a `userIdTransform` function alongside `identityApi` -when you instantiate `GoogleAnalytics`. This function will be passed the -`userEntityRef` as an argument and should resolve to the value you wish to set -as the user ID. For example: - -```typescript -import { - analyticsApiRef, - configApiRef, - identityApiRef, -} from '@backstage/core-plugin-api'; -import { GoogleAnalytics } from '@backstage/plugin-analytics-module-ga'; - -export const apis: AnyApiFactory[] = [ - createApiFactory({ - api: analyticsApiRef, - deps: { configApi: configApiRef, identityApi: identityApiRef }, - factory: ({ configApi, identityApi }) => - GoogleAnalytics4.fromConfig(configApi, { - identityApi, - userIdTransform: async (userEntityRef: string): Promise => { - return customHashingFunction(userEntityRef); - }, - }), - }), -]; -``` - -### Enabling content grouping - -Content groups enable you to categorize pages and screens into custom buckets which you can see -metrics for related groups of information. -More about content grouping here [content groups][content-grouping]. -It's recommended to enable content grouping by PluginId. `contentGrouping` supports `routeRef` and extension. - -```yaml -app: - analytics: - ga4: - contentGrouping: pluginId -``` - -Please note, content grouping takes 24hrs to show up in the Google Analytics dashboard. - -### Debugging and Testing - -In pre-production environments, you may wish to set additional configurations -to turn off reporting to Analytics and/or print debug statements to the -console. You can do so like this: - -```yaml -app: - analytics: - ga4: - testMode: true # Prevents data being sent to GA - debug: true # Logs analytics event to the web console -``` - -You might commonly set the above in an `app-config.local.yaml` file, which is -normally `gitignore`'d but loaded and merged in when Backstage is bootstrapped. - -## Development - -If you would like to contribute improvements to this plugin, the easiest way to -make and test changes is to do the following: - -1. Clone the main Backstage monorepo `git clone git@github.com:backstage/backstage.git` -2. Install all dependencies `yarn install` -3. If one does not exist, create an `app-config.local.yaml` file in the root of - the monorepo and add config for this plugin (see below) -4. Enter this plugin's working directory: `cd plugins/analytics-provider-ga4` -5. Start the plugin in isolation: `yarn start` -6. Navigate to the playground page at `http://localhost:3000/ga4` -7. Open the web console to see events fire when you navigate or when you - interact with instrumented components. - -Code for the isolated version of the plugin can be found inside the [/dev](./dev) -directory. Changes to the plugin are hot-reloaded. - -#### Recommended Dev Config - -Paste this into your `app-config.local.yaml` while developing this plugin: - -```yaml -app: - analytics: - ga4: - measurementId: G-0000000-0 - debug: true - testMode: true - allowedContexts: ['pluginId'] -``` - -[what-is-a-custom-dimension]: https://support.google.com/analytics/answer/2709828 -[configure-custom-dimension]: https://support.google.com/analytics/answer/10075209?hl=en# -[ga-user-id-view]: https://support.google.com/analytics/answer/3123669 -[content-grouping]: https://support.google.com/analytics/answer/11523339?hl=en +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-analytics-module-ga4` instead. diff --git a/plugins/analytics-module-ga4/package.json b/plugins/analytics-module-ga4/package.json index 887e35380e..f17748dae0 100644 --- a/plugins/analytics-module-ga4/package.json +++ b/plugins/analytics-module-ga4/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-analytics-module-ga4", "version": "0.2.4", "backstage": { - "role": "frontend-plugin-module" + "role": "frontend-plugin-module", + "moved": "@backstage-community/plugin-analytics-module-ga4" }, "publishConfig": { "access": "public", @@ -53,5 +54,6 @@ "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-analytics-module-ga4 instead." } diff --git a/plugins/analytics-module-newrelic-browser/README.md b/plugins/analytics-module-newrelic-browser/README.md index d607a4f446..d1ab509a8a 100644 --- a/plugins/analytics-module-newrelic-browser/README.md +++ b/plugins/analytics-module-newrelic-browser/README.md @@ -1,135 +1,3 @@ -# Analytics Module: New Relic Browser +# Deprecated -This plugin provides an opinionated implementation of the Backstage Analytics API for New Relic Browser. Once installed and configured, analytics events will be sent to New Relic as your users navigate and use your Backstage instance. - -This plugin contains no other functionality. - -## Installation - -1. Install the plugin package in your Backstage app: - -```sh -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-analytics-module-newrelic-browser -``` - -2. Wire up the API implementation to your App: - -```tsx -// packages/app/src/apis.ts -import { - analyticsApiRef, - configApiRef, - identityApiRef, -} from '@backstage/core-plugin-api'; -import { NewRelicBrowser } from '@backstage/plugin-analytics-module-newrelic-browser'; - -export const apis: AnyApiFactory[] = [ - // Instantiate and register the New Relic Browser API Implementation. - createApiFactory({ - api: analyticsApiRef, - deps: { configApi: configApiRef, identityApi: identityApiRef }, - factory: ({ configApi, identityApi }) => - NewRelicBrowser.fromConfig(configApi, { - identityApi, - }), - }), -]; -``` - -3. Configure the plugin in your `app-config.yaml`: - -The following is the minimum configuration required to start sending analytics -events to New Relic Browser. You find this information when creating a new application -in New Relic Browser using the Copy/Paste method. - -```yaml -# app-config.yaml -app: - analytics: - newRelic: - endpoint: 'bam.nr-data.net', - accountId: '1234567' - applicationId: '987654321' - licenseKey: 'NRJS-12a3456bc78de9123f4' -``` - -> Note: Depending on New Relic's data center you are using you'll want to change the `endpoint` to `bam.eu01.nr-data.net` for the EU data center. Refer to [this document](https://docs.newrelic.com/docs/new-relic-solutions/get-started/networks/#data-ingest) for available endpoints. - -## Configuration - -By default the distributed tracing and cookies features are disabled. You can enable them by adding the following to your `app-config.yaml`: - -```yaml -# app-config.yaml -app: - analytics: - newRelic: - ... - distributedTracing: true - cookiesEnabled: true -``` - -### User IDs - -This plugin supports sending user context to New Relic Browser by providing a User ID. This requires instantiating the `NewRelicBrowser` instance with an `identityApi` instance passed to it, but this is optional. If omitted the plugin will not send user context to New Relic Browser. - -By default the user ID is calculated as a SHA-256 hash of the current user's `userEntityRef` as returned by the `identityApi`. To set a -different value, provide a `userIdTransform` function alongside `identityApi` when you instantiate `NewRelicBrowser`. This function will be passed the `userEntityRef` as an argument and should resolve to the value you wish to set as the user ID. For example: - -```typescript -import { - analyticsApiRef, - configApiRef, - identityApiRef, -} from '@backstage/core-plugin-api'; -import { GoogleAnalytics } from '@backstage/plugin-analytics-module-newrelic-browser'; - -export const apis: AnyApiFactory[] = [ - createApiFactory({ - api: analyticsApiRef, - deps: { configApi: configApiRef, identityApi: identityApiRef }, - factory: ({ configApi, identityApi }) => - NewRelicBrowser.fromConfig(configApi, { - identityApi, - userIdTransform: async (userEntityRef: string): Promise => { - return customHashingFunction(userEntityRef); - }, - }), - }), -]; -``` - -## Development - -If you would like to contribute improvements to this plugin, the easiest way to -make and test changes is to do the following: - -1. Clone the main Backstage monorepo `git clone git@github.com:backstage/backstage.git` -2. Install all dependencies `yarn install` -3. If one does not exist, create an `app-config.local.yaml` file in the root of - the monorepo and add config for this plugin (see below) -4. Enter this plugin's working directory: `cd plugins/analytics-provider-newrelic-browser` -5. Start the plugin in isolation: `yarn start` -6. Navigate to the playground page at `http://localhost:3000/newrelic` -7. Open the web console to see events fire when you navigate or when you - interact with instrumented components. - -Code for the isolated version of the plugin can be found inside the [/dev](./dev) -directory. Changes to the plugin are hot-reloaded. - -#### Recommended Dev Config - -Paste this into your `app-config.local.yaml` while developing this plugin: - -```yaml -app: - analytics: - newRelic: - accountId: '1234567' - applicationId: '987654321' - licenseKey: 'NRJS-12a3456bc78de9123f4' - distributedTracingEnabled: true - cookiesEnabled: true - useEuEndpoint: false -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-analytics-module-newrelic-browser` instead. diff --git a/plugins/analytics-module-newrelic-browser/package.json b/plugins/analytics-module-newrelic-browser/package.json index b0e530ef6b..d51437c5a1 100644 --- a/plugins/analytics-module-newrelic-browser/package.json +++ b/plugins/analytics-module-newrelic-browser/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-analytics-module-newrelic-browser", "version": "0.1.4", "backstage": { - "role": "frontend-plugin-module" + "role": "frontend-plugin-module", + "moved": "@backstage-community/plugin-analytics-module-newrelic-browser" }, "publishConfig": { "access": "public", @@ -47,5 +48,6 @@ "peerDependencies": { "react": "^16.13.1 || ^17.0.0 || ^18.0.0" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-analytics-module-newrelic-browser instead." } From 1651b0f36ab541357076e4e0ce1804017f83aef8 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:44:28 +0200 Subject: [PATCH 05/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713465866151.md | 5 + plugins/apache-airflow/README.md | 148 +--------------------------- plugins/apache-airflow/package.json | 6 +- 3 files changed, 11 insertions(+), 148 deletions(-) create mode 100644 .changeset/migrate-1713465866151.md diff --git a/.changeset/migrate-1713465866151.md b/.changeset/migrate-1713465866151.md new file mode 100644 index 0000000000..28658f826e --- /dev/null +++ b/.changeset/migrate-1713465866151.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-apache-airflow': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/apache-airflow/README.md b/plugins/apache-airflow/README.md index 305a94f081..986d8e1ca2 100644 --- a/plugins/apache-airflow/README.md +++ b/plugins/apache-airflow/README.md @@ -1,147 +1,3 @@ -# Apache Airflow Plugin +# Deprecated -Welcome to the apache-airflow plugin! - -This plugin serves as frontend to the REST API exposed by Apache Airflow. -Note only [Airflow v2 (and later)](https://airflow.apache.org/docs/apache-airflow/stable/deprecated-rest-api-ref.html) integrate with the plugin. - -## Feature Requests & Ideas - -- [ ] Add support for running multiple instances of Airflow for monitoring - various deployment stages or business domains. ([Suggested by @JGoldman110](https://github.com/backstage/backstage/issues/735#issuecomment-985063468)) -- [ ] Make owner chips in the DAG table clickable, resolving to a user or group - in the entity catalog. ([Suggested by @julioz](https://github.com/backstage/backstage/pull/8348#discussion_r764766295)) - -## Installation - -1. Install the plugin with `yarn` in the root of your Backstage directory - -```sh -yarn --cwd packages/app add @backstage/plugin-apache-airflow -``` - -2. Import and use the plugin extension in `spp/src/App.tsx` - -```diff ---- a/packages/app/src/App.tsx -+++ b/packages/app/src/App.tsx -@@ -86,6 +86,7 @@ import { providers } from './identityProviders'; - import * as plugins from './plugins'; - - import { techDocsPage } from './components/techdocs/TechDocsPage'; -+import { ApacheAirflowPage } from '@backstage/plugin-apache-airflow'; - - const app = createApp({ - apis, -@@ -203,6 +204,7 @@ const routes = ( - element={} - /> - } /> -+ } /> - - ); -``` - -If you just want to embed the DAGs into an existing page, you can use the `ApacheAirflowDagTable` - -```tsx -import { ApacheAirflowDagTable } from '@backstage/plugin-apache-airflow'; - -export function SomeEntityPage(): JSX.Element { - return ( - - - - ); -} -``` - -## Configuration - -For links to the Airflow instance, the `baseUrl` must be defined in -`app-config.yaml`. - -```yaml -apacheAirflow: - baseUrl: https://your.airflow.instance.com -``` - -This plugin uses the Backstage proxy to securely communicate with the Apache -Airflow API. Add the following to your `app-config.yaml` to enable this -configuration: - -```yaml -proxy: - '/airflow': - target: https://your.airflow.instance.com/api/v1 - headers: - Authorization: ${AIRFLOW_BASIC_AUTH_HEADER} -``` - -In your production deployment of Backstage, you would also need to ensure that -you've set the `AIRFLOW_BASIC_AUTH_HEADER` environment variable before starting -the backend. - -While working locally, you may wish to hard-code your API key in your -`app-config.local.yaml` like this: - -```yaml -# app-config.local.yaml -proxy: - '/airflow': - target: http://localhost:8080/api/v1 - headers: - Authorization: Basic YWlyZmxvdzphaXJmbG93 -``` - -Where the basic authorization token is the base64 encoding of the username and -password of your instance. - -```sh -echo -n "airflow:airflow" | base64 -w0 -``` - -## Development - -For local development, you can setup a local Airflow instance for development -purposes by [running Airflow with Docker Compose][2]. - -To verify that Airflow is running, and the API is functioning as expected, you -can run the following `curl` command: - -```sh -curl -X GET \ - --user "airflow:airflow" \ - localhost:8080/api/v1/dags -``` - -To run the Backstage proxy, you will have to run start the `example-backend` -plugin. - -```sh -yarn workspace example-backend start -``` - -To verify that the proxy is configured correctly, you can curl the Backstage -proxy endpoint. If using basic authentication, you will have to base64 encode -the username and password: - -```sh -curl http://localhost:7007/api/proxy/airflow/dags -``` - -And finally, to run an instance of this plugin, you can run: - -```sh -yarn start -``` - -[1]: https://airflow.apache.org/docs/apache-airflow/stable/security/api.html -[2]: https://airflow.apache.org/docs/apache-airflow/stable/start/docker.html -[3]: https://airflow.apache.org/docs/apache-airflow/stable/stable-rest-api-ref.html +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-apache-airflow` instead. diff --git a/plugins/apache-airflow/package.json b/plugins/apache-airflow/package.json index 0dc6234400..f91257fd7c 100644 --- a/plugins/apache-airflow/package.json +++ b/plugins/apache-airflow/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-apache-airflow", "version": "0.2.24", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-apache-airflow" }, "publishConfig": { "access": "public", @@ -58,5 +59,6 @@ "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-apache-airflow instead." } From 58fdd20717ef0c663542d7a776230c6790f0bfb1 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:44:35 +0200 Subject: [PATCH 06/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713465873342.md | 5 ++ plugins/apollo-explorer/README.md | 105 +-------------------------- plugins/apollo-explorer/package.json | 6 +- 3 files changed, 11 insertions(+), 105 deletions(-) create mode 100644 .changeset/migrate-1713465873342.md diff --git a/.changeset/migrate-1713465873342.md b/.changeset/migrate-1713465873342.md new file mode 100644 index 0000000000..eb6d1ae355 --- /dev/null +++ b/.changeset/migrate-1713465873342.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-apollo-explorer': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/apollo-explorer/README.md b/plugins/apollo-explorer/README.md index bc06612cab..614a12b7c7 100644 --- a/plugins/apollo-explorer/README.md +++ b/plugins/apollo-explorer/README.md @@ -1,104 +1,3 @@ -# apollo-explorer +# Deprecated -Welcome to the Apollo Explorer plugin! - -This plugin allows users to directly embed an [Apollo](https://www.apollographql.com) graph explorer directly into -Backstage! - -## Getting started - -### Getting an Apollo Graph Reference - -First things first, you will need an Apollo account, and a graph imported into your account. This is beyond the scope of -this plugin, so if you are totally new to Apollo, please reference their official -documentation [here](https://www.apollographql.com/docs). - -Once you have a graph set up in Apollo, we need to grab the graph reference. First, go to your Apollo graphs home page and choose the graph you wish to embed. - -![Apollo Graph List](./docs/img/apollo-graph-list.png) - -Once you are in your graph explorer, click the dropdown next to the share icon and select `Share as Embedded` - -![Share as Embedded](./docs/img/share-as-embedded.png) - -This modal contains a number of useful properties, all of which can be passed to the plugin via the component properties, but the only mandatory input we need from here is the `graphRef`. - -![Graph Ref](./docs/img/graph-ref.png) - -Hold on to this snippet for a second while we set up the plugin ✨ - -### Installing the Backstage Plugin - -First, add the plugin to your Backstage app - -```shell -yarn --cwd packages/app add @backstage/plugin-apollo-explorer -``` - -Then, in `packages/app/src/App.tsx` add the plugin as a `Route` - -```typescript -import { ApolloExplorerPage } from '@backstage/plugin-apollo-explorer'; - -const routes = ( - - {/* other routes... */} - - } - /> -``` - -Then, in `packages/app/src/components/Root/Root.tsx` add a sidebar item so users can find your beautiful plugin! - -```typescript - -``` - -That's it! You should now see an `Apollo Explorer` item in your sidebar, and if you click it, you should see your graph(s) load and direct you to authenticate via Apollo! - -![Needs Auth](./docs/img/needs-auth.png) - -Once you authenticate, your graph is ready to use 🚀 - -![Logged In](./docs/img/logged-in.png) - -### Authentication Tokens for Apollo Studio - -If you need to utilize an ApiRef to supply a token to Apollo, you may do so using an ApiHolder. - -In `packages/app/src/App.tsx` perform the following modifications from above. The import `ssoAuthApiRef` is used as an example and **does not exist**. - -```typescript -import { ApolloExplorerPage, EndpointProps } from '@backstage/plugin-apollo-explorer'; -import { ssoAuthApiRef } from '@companyxyz/devkit'; -import { ApiHolder } from '@backstage/core-plugin-api'; - -async function authCallback(options: { apiHolder: ApiHolder }): Promise<{token: string}> { - const sso = options.apiHolder.get(ssoAuthApiRef) - return await sso.getToken() -} - -const routes = ( - - {/* other routes... */} - - } - /> -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-apollo-explorer` instead. diff --git a/plugins/apollo-explorer/package.json b/plugins/apollo-explorer/package.json index bc4c4635b5..03cf8117ed 100644 --- a/plugins/apollo-explorer/package.json +++ b/plugins/apollo-explorer/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-apollo-explorer", "version": "0.2.0", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-apollo-explorer" }, "publishConfig": { "access": "public", @@ -52,5 +53,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-apollo-explorer instead." } From 29314e1d087f24559bd71dcb4b730ce80620bb9f Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:44:42 +0200 Subject: [PATCH 07/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713465880342.md | 7 + plugins/azure-devops-backend/README.md | 155 +-------- plugins/azure-devops-backend/package.json | 30 +- plugins/azure-devops-common/README.md | 3 + plugins/azure-devops-common/package.json | 6 +- plugins/azure-devops/README.md | 400 +--------------------- plugins/azure-devops/package.json | 6 +- 7 files changed, 38 insertions(+), 569 deletions(-) create mode 100644 .changeset/migrate-1713465880342.md create mode 100644 plugins/azure-devops-common/README.md diff --git a/.changeset/migrate-1713465880342.md b/.changeset/migrate-1713465880342.md new file mode 100644 index 0000000000..ecf9bfaaa2 --- /dev/null +++ b/.changeset/migrate-1713465880342.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-azure-devops': patch +'@backstage/plugin-azure-devops-backend': patch +'@backstage/plugin-azure-devops-common': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/azure-devops-backend/README.md b/plugins/azure-devops-backend/README.md index d15d740ab1..437ff3a8fe 100644 --- a/plugins/azure-devops-backend/README.md +++ b/plugins/azure-devops-backend/README.md @@ -1,154 +1,3 @@ -# Azure DevOps Backend +# Deprecated -Simple plugin that proxies requests to the [Azure DevOps](https://docs.microsoft.com/en-us/rest/api/azure/devops/?view=azure-devops-rest-6.1) API. - -## Setup - -The following sections will help you get the Azure DevOps Backend plugin setup and running. - -### Credentials - -In order to support **Multiple Organizations** as well as **Service Principals** and **Managed Identity** the Azure DevOps plugin relies on the `integrations.azure` section of your `app-config.yaml` being properly configured to be able to access the needed credentials. More details on this can be found in the [Azure DevOps Locations](https://backstage.io/docs/integrations/azure/locations) documentation. - -### Single Organization Configuration - -For those with a single organization the Azure DevOps plugin requires the following YAML configuration to be added to your `app-config.yaml`: - -```yaml -azureDevOps: - host: dev.azure.com - organization: my-company -``` - -Configuration Details: - -- `host` can be the same as the ones used for the `integration` section -- `organization` is your Azure DevOps Services (cloud) Organization name or for Azure DevOps Server (on-premise) this will be your Collection name - -> Note: The credentials in this setup would still need to be defined in your `integrations.azure` section of your `app-config.yaml` as noted in the [Credentials](#credentials) section above. - -### Up and Running - -Here's how to get the backend up and running: - -1. First we need to add the `@backstage/plugin-azure-devops-backend` package to your backend: - - ```sh - # From your Backstage root directory - yarn --cwd packages/backend add @backstage/plugin-azure-devops-backend - ``` - -2. Then we will create a new file named `packages/backend/src/plugins/azure-devops.ts`, and add the - following to it: - - ```ts - import { createRouter } from '@backstage/plugin-azure-devops-backend'; - import { Router } from 'express'; - import type { PluginEnvironment } from '../types'; - - export default function createPlugin( - env: PluginEnvironment, - ): Promise { - return createRouter({ - logger: env.logger, - config: env.config, - reader: env.reader, - }); - } - ``` - -3. Next we wire this into the overall backend router, edit `packages/backend/src/index.ts`: - - ```ts - import azureDevOps from './plugins/azure-devops'; - // ... - async function main() { - // ... - // Add this line under the other lines that follow the useHotMemoize pattern - const azureDevOpsEnv = useHotMemoize(module, () => createEnv('azure-devops')); - // ... - // Insert this line under the other lines that add their routers to apiRouter in the same way - apiRouter.use('/azure-devops', await azureDevOps(azureDevOpsEnv)); - ``` - -4. Now run `yarn start-backend` from the repo root -5. Finally open `http://localhost:7007/api/azure-devops/health` in a browser and it should return `{"status":"ok"}` - -#### New Backend System - -The Azure DevOps backend plugin has support for the [new backend system](https://backstage.io/docs/backend-system/), here's how you can set that up: - -In your `packages/backend/src/index.ts` make the following changes: - -```diff - import { createBackend } from '@backstage/backend-defaults'; - - const backend = createBackend(); - - // ... other feature additions - -+ backend.add(import('@backstage/plugin-azure-devops-backend')); - - backend.start(); -``` - -## Processor - -The Azure DevOps backend plugin includes the `AzureDevOpsAnnotatorProcessor` which will automatically add the needed annotations for you. Here's how to install it: - -```diff - import { CatalogBuilder } from '@backstage/plugin-catalog-backend'; - import { ScaffolderEntitiesProcessor } from '@backstage/plugin-catalog-backend-module-scaffolder-entity-model'; - import { Router } from 'express'; - import { PluginEnvironment } from '../types'; -+ import { AzureDevOpsAnnotatorProcessor } from '@backstage/plugin-azure-devops-backend'; - - export default async function createPlugin( - env: PluginEnvironment, - ): Promise { - const builder = await CatalogBuilder.create(env); - builder.addProcessor(new ScaffolderEntitiesProcessor()); -+ builder.addProcessor(AzureDevOpsAnnotatorProcessor.fromConfig(env.config)); - const { processingEngine, router } = await builder.build(); - await processingEngine.start(); - return router; - } -``` - -To use this with the New Backend System you'll want to create a [backend module extension for the Catalog](https://backstage.io/docs/backend-system/building-backends/migrating#other-catalog-extensions) if you haven't already. Here's a basic example of this assuming you are only adding the `AzureDevOpsAnnotatorProcessor`, this would go in your `packages/backend/index.ts`: - -```diff - import { createBackend } from '@backstage/backend-defaults'; -+ import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha'; -+ import { coreServices, createBackendModule } from '@backstage/backend-plugin-api'; -+ import { AzureDevOpsAnnotatorProcessor } from '@backstage/plugin-azure-devops-backend'; - -+ const catalogModuleCustomExtensions = createBackendModule({ -+ pluginId: 'catalog', // name of the plugin that the module is targeting -+ moduleId: 'custom-extensions', -+ register(env) { -+ env.registerInit({ -+ deps: { -+ catalog: catalogProcessingExtensionPoint, -+ config: coreServices.rootConfig, -+ }, -+ async init({ catalog, config }) { -+ catalog.addProcessor(AzureDevOpsAnnotatorProcessor.fromConfig(config)); -+ }, -+ }); -+ }, -+ }); - - const backend = createBackend(); - - // ... other feature additions - -+ backend.add(catalogModuleCustomExtensions()); - - backend.start(); -``` - -## Links - -- [Frontend part of the plugin](https://github.com/backstage/backstage/tree/master/plugins/azure-devops) -- [The Backstage homepage](https://backstage.io) +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-azure-devops-backend` instead. diff --git a/plugins/azure-devops-backend/package.json b/plugins/azure-devops-backend/package.json index c018866d62..366caba42e 100644 --- a/plugins/azure-devops-backend/package.json +++ b/plugins/azure-devops-backend/package.json @@ -1,31 +1,36 @@ { "name": "@backstage/plugin-azure-devops-backend", "version": "0.6.4", - "main": "src/index.ts", - "types": "src/index.ts", - "license": "Apache-2.0", + "backstage": { + "role": "backend-plugin", + "moved": "@backstage-community/plugin-azure-devops-backend" + }, "publishConfig": { "access": "public", "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, - "backstage": { - "role": "backend-plugin" - }, "homepage": "https://backstage.io", "repository": { "type": "git", "url": "https://github.com/backstage/backstage", "directory": "plugins/azure-devops-backend" }, + "license": "Apache-2.0", + "main": "src/index.ts", + "types": "src/index.ts", + "files": [ + "dist", + "config.d.ts" + ], "scripts": { - "start": "backstage-cli package start", "build": "backstage-cli package build", + "clean": "backstage-cli package clean", "lint": "backstage-cli package lint", - "test": "backstage-cli package test", "prepack": "backstage-cli package prepack", "postpack": "backstage-cli package postpack", - "clean": "backstage-cli package clean" + "start": "backstage-cli package start", + "test": "backstage-cli package test" }, "dependencies": { "@backstage/backend-common": "workspace:^", @@ -54,9 +59,6 @@ "@types/supertest": "^2.0.8", "supertest": "^6.1.6" }, - "files": [ - "dist", - "config.d.ts" - ], - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-azure-devops-backend instead." } diff --git a/plugins/azure-devops-common/README.md b/plugins/azure-devops-common/README.md new file mode 100644 index 0000000000..4ae22368b9 --- /dev/null +++ b/plugins/azure-devops-common/README.md @@ -0,0 +1,3 @@ +# Deprecated + +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-azure-devops-common` instead. diff --git a/plugins/azure-devops-common/package.json b/plugins/azure-devops-common/package.json index ada36f1eba..8d3d2f8b5c 100644 --- a/plugins/azure-devops-common/package.json +++ b/plugins/azure-devops-common/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-azure-devops-common", "version": "0.4.1", "backstage": { - "role": "common-library" + "role": "common-library", + "moved": "@backstage-community/plugin-azure-devops-common" }, "publishConfig": { "access": "public", @@ -40,5 +41,6 @@ }, "devDependencies": { "@backstage/cli": "workspace:^" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-azure-devops-common instead." } diff --git a/plugins/azure-devops/README.md b/plugins/azure-devops/README.md index 836590c29d..a6bc07e9a8 100644 --- a/plugins/azure-devops/README.md +++ b/plugins/azure-devops/README.md @@ -1,399 +1,3 @@ -# Azure DevOps Plugin +# Deprecated -Website: [https://dev.azure.com/](https://dev.azure.com/) - -## Features - -### Azure Pipelines - -Lists the top _n_ builds for a given Azure Repo where _n_ is a configurable value - -![Azure Pipelines Builds Example](./docs/azure-devops-builds.png) - -### Azure Repos - -Lists the top _n_ Active, Completed, or Abandoned Pull Requests for a given repository where _n_ is a configurable value - -![Azure Repos Pull Requests Example](./docs/azure-devops-pull-requests.png) - -### Azure Repos Git Tags - -Lists all Git Tags for a given repository - -![Azure Repos Git Tags Example](./docs/azure-devops-git-tags.png) - -### Azure Readme - -Readme for a given repository - -![Azure Readme Example](./docs/azure-devops-readme.png) - -## Setup - -The following sections will help you get the Azure DevOps plugin setup and running - -### Azure DevOps Backend - -You need to setup the [Azure DevOps backend plugin](https://github.com/backstage/backstage/tree/master/plugins/azure-devops-backend) before you move forward with any of these steps if you haven't already - -### Entity Annotation - -To be able to use the Azure DevOps plugin you need to add the following annotation to any entities you want to use it with: - -```yaml -dev.azure.com/project-repo: / -``` - -Let's break this down a little: `` will be the name of your Team Project and `` will be the name of your repository which needs to be part of the Team Project you entered for ``. - -Here's what that will look like in action: - -```yaml -# Example catalog-info.yaml entity definition file -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - # ... - annotations: - dev.azure.com/project-repo: my-project/my-repo -spec: - type: service - # ... -``` - -#### Mono repos - -If you have multiple entities within a single repo, you will need to specify which pipelines belong to each entity, like this: - -```yaml -dev.azure.com/project-repo: / -dev.azure.com/build-definition: -``` - -Then to display the `README` file that belongs to each entity you would do this: - -```yaml -dev.azure.com/readme-path: //.md -``` - -#### Pipeline in different project to repo - -If your pipeline is in a different project to the source code, you will need to specify this in the project annotation. - -```yaml -dev.azure.com/project-repo: / -dev.azure.com/build-definition: -dev.azure.com/project: -``` - -#### Azure Pipelines Only - -If you are only using Azure Pipelines along with a different SCM tool then you can use the following two annotations to see Builds: - -```yaml -dev.azure.com/project: -dev.azure.com/build-definition: -``` - -In this case `` will be the name of your Team Project and `` will be the name of the Build Definition you would like to see Builds for, and it's possible to add more Builds separated by a comma. If the Build Definition name has spaces in it make sure to put quotes around it. - -#### Multiple Organizations - -If you have multiple organizations you'll need to also add this annotation: - -```yaml -dev.azure.com/host-org: / -``` - -For this annotation `` will match the `host` value in the `integrations.azure` section in your `app-config.yaml` and `` will be the name of the Organization that is part of the `host`. Let's break this down with an example: - -Say we have the following `integrations.azure` section: - -```yaml -integrations: - azure: - - host: dev.azure.com - credentials: - - organizations: - - my-org - - my-other-org - clientId: ${AZURE_CLIENT_ID} - clientSecret: ${AZURE_CLIENT_SECRET} - tenantId: ${AZURE_TENANT_ID} - - organizations: - - another-org - clientId: ${AZURE_CLIENT_ID} - - host: server.company.com - credentials: - - organizations: - - yet-another-org - personalAccessToken: ${PERSONAL_ACCESS_TOKEN} -``` - -If the entity we are viewing lives in the `my-other-org` organization then the `dev.azure.com/host-org` annotation would look like this: - -```yaml -dev.azure.com/host-org: dev.azure.com/my-other-org -``` - -And if the entity was from `yet-another-org` it would look like this: - -```yaml -dev.azure.com/host-org: server.company.com/yet-another-org -``` - -**Note:** To save you time, effort, and confusion setting up these annotations manually you can use the `AzureDevOpsAnnotatorProcessor` processor which will add the `dev.azure.com/host-org` and `dev.azure.com/project-repo` annotations for you with the correct values. The Azure DevOps backend plugin has details on how to [add this processor](https://github.com/backstage/backstage/tree/master/plugins/azure-devops-backend#processor). - -### Azure Pipelines Component - -To get the Azure Pipelines component working you'll need to do the following two steps: - -1. First we need to add the `@backstage/plugin-azure-devops` package to your frontend app: - - ```bash - # From your Backstage root directory - yarn --cwd packages/app add @backstage/plugin-azure-devops - ``` - -2. Second we need to add the `EntityAzurePipelinesContent` extension to the entity page in your app. How to do this will depend on which annotation you are using in your entities: - - 1. If you are using the `dev.azure.com/project-repo` annotation then you'll want to do the following: - - ```tsx - // In packages/app/src/components/catalog/EntityPage.tsx - import { - EntityAzurePipelinesContent, - isAzureDevOpsAvailable, - } from '@backstage/plugin-azure-devops'; - - // For example in the CI/CD section - const cicdContent = ( - - // ... - - - - // ... - - ``` - - 2. If you are using the `dev.azure.com/project` and `dev.azure.com/build-definition` annotations then you'll want to do this: - - ```tsx - // In packages/app/src/components/catalog/EntityPage.tsx - import { - EntityAzurePipelinesContent, - isAzurePipelinesAvailable, - } from '@backstage/plugin-azure-devops'; - - // For example in the CI/CD section - const cicdContent = ( - - // ... - - - - // ... - - ``` - -**Notes:** - -- The `if` prop is optional on the `EntitySwitch.Case`, you can remove it if you always want to see the tab even if the entity being viewed does not have the needed annotation -- The `defaultLimit` property on the `EntityAzurePipelinesContent` will set the max number of Builds you would like to see, if not set this will default to 10 - -### Azure Repos Component - -To get the Azure Repos component working you'll need to do the following two steps: - -1. First we need to add the @backstage/plugin-azure-devops package to your frontend app: - - ```bash - # From your Backstage root directory - yarn --cwd packages/app add @backstage/plugin-azure-devops - ``` - -2. Second we need to add the `EntityAzurePullRequestsContent` extension to the entity page in your app: - - ```tsx - // In packages/app/src/components/catalog/EntityPage.tsx - import { - EntityAzurePullRequestsContent, - isAzureDevOpsAvailable, - } from '@backstage/plugin-azure-devops'; - - // For example in the Service section - const serviceEntityPage = ( - - // ... - - - - // ... - - ``` - -**Notes:** - -- You'll need to add the `EntityLayout.Route` above from step 2 to all the entity sections you want to see Pull Requests in. For example if you wanted to see Pull Requests when looking at Website entities then you would need to add this to the `websiteEntityPage` section. -- The `if` prop is optional on the `EntityLayout.Route`, you can remove it if you always want to see the tab even if the entity being viewed does not have the needed annotation -- The `defaultLimit` property on the `EntityAzurePullRequestsContent` will set the max number of Pull Requests you would like to see, if not set this will default to 10 - -### Git Tags Component - -To get the Git Tags component working you'll need to do the following two steps: - -1. First we need to add the @backstage/plugin-azure-devops package to your frontend app: - - ```bash - # From your Backstage root directory - yarn --cwd packages/app add @backstage/plugin-azure-devops - ``` - -2. Second we need to add the `EntityAzureGitTagsContent` extension to the entity page in your app: - - ```tsx - // In packages/app/src/components/catalog/EntityPage.tsx - import { - EntityAzureGitTagsContent, - isAzureDevOpsAvailable, - } from '@backstage/plugin-azure-devops'; - - // For example in the Service section - const serviceEntityPage = ( - - // ... - - - - // ... - - ``` - -**Notes:** - -- You'll need to add the `EntityLayout.Route` above from step 2 to all the entity sections you want to see Git Tags in. For example if you wanted to see Git Tags when looking at Website entities then you would need to add this to the `websiteEntityPage` section. -- The `if` prop is optional on the `EntityLayout.Route`, you can remove it if you always want to see the tab even if the entity being viewed does not have the needed annotation - -### Git README - -To get the README component working you'll need to do the following two steps: - -1. First we need to add the @backstage/plugin-azure-devops package to your frontend app: - - ```bash - # From your Backstage root directory - yarn --cwd packages/app add @backstage/plugin-azure-devops - ``` - -2. Second we need to add the `EntityAzureReadmeCard` extension to the entity page in your app: - - ```tsx - // In packages/app/src/components/catalog/EntityPage.tsx - import { - EntityAzureReadmeCard, - isAzureDevOpsAvailable, - } from '@backstage/plugin-azure-devops'; - - // As it is a card, you can customize it the way you prefer - // For example in the Service section - - const overviewContent = ( - - - - - ... - - - - - - - - ); - ``` - -**Notes:** - -- You'll need to add the `EntitySwitch.Case` above from step 2 to all the entity sections you want to see Readme in. For example if you wanted to see Readme when looking at Website entities then you would need to add this to the `websiteEntityPage` section. -- The `if` prop is optional on the `EntitySwitch.Case`, you can remove it if you always want to see the tab even if the entity being viewed does not have the needed annotation -- The `maxHeight` property on the `EntityAzureReadmeCard` will set the maximum screen size you would like to see, if not set it will default to 100% - -## Permission Framework - -Azure DevOps plugin supports the permission framework for PRs, GitTags, Pipelines and Readme features. - -```bash -# From your Backstage root directory -yarn --cwd packages/backend add @backstage/plugin-azure-devops-common -``` - -New Backend you can skip the below and proceed with [permission configuration](#configure-permission) - -To enable permissions for the legacy backend system in `packages/backend/src/plugins/azure-devops.ts` add the following. - -```diff -export default async function createPlugin( - env: PluginEnvironment, -): Promise { - return createRouter({ - logger: env.logger, - config: env.config, - reader: env.reader, -+ permissions: env.permissions, - }); -} -``` - -### Configure Permission - -To apply the permission rules add the following in `packages/backend/src/plugins/permissions.ts`. - -> Note: the following is just an example of how you might want to setup permissions, as an Adopter you can configure this to fit your needs. Also all the permissions are Resource Permissions as they work with an Entity with the exception of `azureDevOpsPullRequestDashboardReadPermission`. - -```diff - -+ import { -+ azureDevOpsPullRequestReadPermission, -+ azureDevOpsPipelineReadPermission, -+ azureDevOpsGitTagReadPermission, -+ azureDevOpsReadmeReadPermission, -+ azureDevOpsPullRequestDashboardReadPermission } from '@backstage/plugin-azure-devops-common'; -+ import { -+ AuthorizeResult, -+ PolicyDecision, -+ isPermission, -+ } from '@backstage/plugin-permission-common'; -+ import { -+ catalogConditions, -+ createCatalogConditionalDecision, -+ } from '@backstage/plugin-catalog-backend/alpha'; -... -async handle( - request: PolicyQuery, - user?: BackstageIdentityResponse, -): Promise { -+ if ( isPermission(request.permission, azureDevOpsPullRequestReadPermission) || -+ isPermission(request.permission, azureDevOpsPipelineReadPermission) || -+ isPermission(request.permission, azureDevOpsGitTagReadPermission) || -+ isPermission(request.permission, azureDevOpsReadmeReadPermission)) { -+ return createCatalogConditionalDecision( -+ request.permission, -+ catalogConditions.isEntityOwner({ -+ claims: user?.identity.ownershipEntityRefs ?? [], -+ }), -+ ); -+ } - -+ if ( isPermission(request.permission, azureDevOpsPullRequestDashboardReadPermission) { -+ return { -+ result: AuthorizeResult.ALLOW, -+ }; -+ } - - return { - result: AuthorizeResult.ALLOW, - }; -} -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-azure-devops` instead. diff --git a/plugins/azure-devops/package.json b/plugins/azure-devops/package.json index 3a454ce094..974f9d6036 100644 --- a/plugins/azure-devops/package.json +++ b/plugins/azure-devops/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-azure-devops", "version": "0.4.3", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-azure-devops" }, "publishConfig": { "access": "public" @@ -73,5 +74,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-azure-devops instead." } From be0fb7c7732a09037115e789273d57d15484116a Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:44:49 +0200 Subject: [PATCH 08/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713465887317.md | 7 ++ plugins/azure-sites-backend/README.md | 138 +---------------------- plugins/azure-sites-backend/package.json | 34 +++--- plugins/azure-sites-common/README.md | 3 + plugins/azure-sites-common/package.json | 6 +- plugins/azure-sites/README.md | 74 +----------- plugins/azure-sites/package.json | 6 +- 7 files changed, 40 insertions(+), 228 deletions(-) create mode 100644 .changeset/migrate-1713465887317.md create mode 100644 plugins/azure-sites-common/README.md diff --git a/.changeset/migrate-1713465887317.md b/.changeset/migrate-1713465887317.md new file mode 100644 index 0000000000..0d70481132 --- /dev/null +++ b/.changeset/migrate-1713465887317.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-azure-sites': patch +'@backstage/plugin-azure-sites-backend': patch +'@backstage/plugin-azure-sites-common': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/azure-sites-backend/README.md b/plugins/azure-sites-backend/README.md index 18c51239c3..c88160dfbf 100644 --- a/plugins/azure-sites-backend/README.md +++ b/plugins/azure-sites-backend/README.md @@ -1,137 +1,3 @@ -# Azure Sites Backend +# Deprecated -Simple plugin that proxies requests to the Azure Portal API through Azure SDK JavaScript libraries. - -_Inspired by [roadie.io AWS Lambda plugin](https://roadie.io/backstage/plugins/aws-lambda/)_ - -## Setup - -The following sections will help you get the Azure Sites Backend plugin setup and running. - -### Configuration - -The Azure plugin requires the following YAML to be added to your app-config.yaml: - -```yaml -azureSites: - domain: - tenantId: - clientId: - clientSecret: - allowedSubscriptions: - - id: -``` - -Configuration Details: - -- `domain` can be found by visiting the [Directories + Subscriptions settings page](https://portal.azure.com/#settings/directory). Alternatively you can inspect the [Azure home](https://portal.azure.com/#home) URL - `https://portal.azure.com/#@/`. -- `tenantId` can be found by visiting [Azure Directory Overview page](https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade). -- (Optional) `clientId` and `clientSecret` can be the same values you used for [Azure DevOps Backend](https://github.com/backstage/backstage/tree/master/plugins/azure-devops-backend) or [Azure Integration](https://backstage.io/docs/integrations/azure/org#app-registration) as long as this App Registration has permissions to read your function apps. -- (Optional) `allowedSubscriptions` is an array of `id` that will be used to iterate over and look for the specified functions' app. `id` can be found the [Subscriptions page](https://portal.azure.com/#view/Microsoft_Azure_Billing/SubscriptionsBlade). - -### Integrating - -Here's how to get the backend plugin up and running: - -#### Legacy Backend System - -1. First we need to add the `@backstage/plugin-azure-sites-backend` package to your backend: - - ```sh - # From the Backstage root directory - yarn --cwd packages/backend add @backstage/plugin-azure-sites-backend - ``` - -2. Then we will create a new file named `packages/backend/src/plugins/azure-sites.ts`, and add the following to it: - - ```ts - import { - createRouter, - AzureSitesApi, - } from '@backstage/plugin-azure-sites-backend'; - import { Router } from 'express'; - import { PluginEnvironment } from '../types'; - import { CatalogClient } from '@backstage/catalog-client'; - - export default async function createPlugin( - env: PluginEnvironment, - ): Promise { - const catalogApi = new CatalogClient({ discoveryApi: env.discovery }); - return await createRouter({ - logger: env.logger, - azureSitesApi: AzureSitesApi.fromConfig(env.config), - permissions: env.permissions, - catalogApi, - }); - } - ``` - -3. Next we wire this into the overall backend router, edit `packages/backend/src/index.ts`: - - ```ts - import azureSites from './plugins/azure-sites'; - - // Removed for clarity... - - async function main() { - // ... - // Add this line under the other lines that follow the useHotMemoize pattern - const azureSitesEnv = useHotMemoize(module, () => - createEnv('azure-sites'), - ); - - // ... - // Insert this line under the other lines that add their routers to apiRouter in the same way - apiRouter.use('/azure-sites', await azureSites(azureSitesEnv)); - } - ``` - -4. Enable permissions and that the below is just an example policy that forbids anyone but the owner of the catalog entity to trigger actions towards a site tied to an entity, edit your `packages/backend/src/plugins/permission.ts` - - ```diff - // packages/backend/src/plugins/permission.ts - + import { azureSitesActionPermission } from '@backstage/plugin-azure-sites-common'; - ... - class TestPermissionPolicy implements PermissionPolicy { - - async handle(): Promise { - + async handle(request: PolicyQuery, user?: BackstageIdentityResponse): Promise { - if (isPermission(request.permission, azureSitesActionPermission)) { - return createCatalogConditionalDecision( - request.permission, - catalogConditions.isEntityOwner({ - claims: user?.identity.ownershipEntityRefs ?? [], - }), - ); - } - ... - return { - result: AuthorizeResult.ALLOW, - }; - } - ``` - -#### New Backend System - -The Azure Sites backend plugin has support for the [new backend system](https://backstage.io/docs/backend-system/), here's how you can set that up: - -In your `packages/backend/src/index.ts` make the following changes: - -```diff - import { createBackend } from '@backstage/backend-defaults'; - - const backend = createBackend(); - - // ... other feature additions - -+ backend.add(import('@backstage/plugin-azure-sites-backend')); - - // ... - - backend.start(); -``` - -#### Start Backed & Test - -1. Now run `yarn start-backend` from the repo root. - -2. Finally, open `http://localhost:7007/api/azure/health` in a browser, it should return `{"status":"ok"}`. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-azure-sites-backend` instead. diff --git a/plugins/azure-sites-backend/package.json b/plugins/azure-sites-backend/package.json index ff18587913..75969ebcee 100644 --- a/plugins/azure-sites-backend/package.json +++ b/plugins/azure-sites-backend/package.json @@ -1,35 +1,39 @@ { "name": "@backstage/plugin-azure-sites-backend", "version": "0.3.4", - "main": "src/index.ts", - "types": "src/index.ts", - "license": "Apache-2.0", + "backstage": { + "role": "backend-plugin", + "moved": "@backstage-community/plugin-azure-sites-backend" + }, "publishConfig": { "access": "public", "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, - "backstage": { - "role": "backend-plugin" - }, + "keywords": [ + "backstage", + "azure" + ], "homepage": "https://backstage.io", "repository": { "type": "git", "url": "https://github.com/backstage/backstage", "directory": "plugins/azure-sites-backend" }, - "keywords": [ - "backstage", - "azure" + "license": "Apache-2.0", + "main": "src/index.ts", + "types": "src/index.ts", + "files": [ + "dist" ], "scripts": { - "start": "backstage-cli package start", "build": "backstage-cli package build", - "lint": "backstage-cli package lint", - "test": "backstage-cli package test", "clean": "backstage-cli package clean", + "lint": "backstage-cli package lint", "prepack": "backstage-cli package prepack", - "postpack": "backstage-cli package postpack" + "postpack": "backstage-cli package postpack", + "start": "backstage-cli package start", + "test": "backstage-cli package test" }, "dependencies": { "@azure/arm-appservice": "^14.0.0", @@ -53,7 +57,5 @@ "@backstage/cli": "workspace:^", "@types/supertest": "^2.0.8" }, - "files": [ - "dist" - ] + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-azure-sites-backend instead." } diff --git a/plugins/azure-sites-common/README.md b/plugins/azure-sites-common/README.md new file mode 100644 index 0000000000..f219e21f5e --- /dev/null +++ b/plugins/azure-sites-common/README.md @@ -0,0 +1,3 @@ +# Deprecated + +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-azure-sites-common` instead. diff --git a/plugins/azure-sites-common/package.json b/plugins/azure-sites-common/package.json index a5f5f16dbe..49bc8d7bf9 100644 --- a/plugins/azure-sites-common/package.json +++ b/plugins/azure-sites-common/package.json @@ -3,7 +3,8 @@ "version": "0.1.3", "description": "Common functionalities for the azure plugin", "backstage": { - "role": "common-library" + "role": "common-library", + "moved": "@backstage-community/plugin-azure-sites-common" }, "publishConfig": { "access": "public", @@ -42,5 +43,6 @@ }, "devDependencies": { "@backstage/cli": "workspace:^" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-azure-sites-common instead." } diff --git a/plugins/azure-sites/README.md b/plugins/azure-sites/README.md index 80f923a897..2a62384104 100644 --- a/plugins/azure-sites/README.md +++ b/plugins/azure-sites/README.md @@ -1,73 +1,3 @@ -# Azure Sites Plugin +# Deprecated -Azure Sites (Apps & Functions) plugin support for a given entity. View the current status of the site, quickly jump to site's Overview page, or Log Stream page. - -![preview of Azure table](docs/functions-table.png) - -_Inspired by [roadie.io AWS Lamda plugin](https://roadie.io/backstage/plugins/aws-lambda/)_ - -## Features - -- Azure overview table - -## Plugin Setup - -The following sections will help you get the Azure plugin setup and running - -### Azure Sites Backend - -You need to set up the [Azure Sites Backend plugin](https://github.com/backstage/backstage/tree/master/plugins/azure-sites-backend) before you move forward with any of these steps if you haven't already. - -### Entity Annotation - -To be able to use the Azure Sites plugin you need to add the following annotation to any entities you want to use it with: - -```yaml -azure.com/microsoft-web-sites: -``` - -`` supports case-insensitive exact / partial value. - -Example of Partial Matching: - -Let's say you have a number of functions apps, spread out over different regions (and possibly different subscriptions), and they follow a naming convention: - -``` -func-testapp-eu -func-testapp-ca -func-testapp-us -``` - -The annotation you will use to have the three functions' app appear in the overview table would look like this: - -```yaml -azure.com/microsoft-web-sites: func-testapp -``` - -### Install the component - -1. Install the plugin - -```sh -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-azure-sites -``` - -2. Add widget component to your Backstage instance: - -```ts -// In packages/app/src/components/catalog/EntityPage.tsx -import { EntityAzureSitesOverviewWidget, isAzureWebSiteNameAvailable } from '@backstage/plugin-azure-sites'; - -... - -const serviceEntityPage = ( - - //... - Boolean(isAzureWebSiteNameAvailable(e))} path="/azure" title="Azure"> - - - //... - -); -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-azure-sites` instead. diff --git a/plugins/azure-sites/package.json b/plugins/azure-sites/package.json index d39e7ea975..b1f57c057d 100644 --- a/plugins/azure-sites/package.json +++ b/plugins/azure-sites/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-azure-sites", "version": "0.1.23", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-azure-sites" }, "publishConfig": { "access": "public", @@ -64,5 +65,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-azure-sites instead." } From edcda3ad0c5c1990dadc30d24a0e1dd997aee73a Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:44:56 +0200 Subject: [PATCH 09/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713465894126.md | 6 + plugins/badges-backend/README.md | 187 +------------------------ plugins/badges-backend/package.json | 6 +- plugins/badges/README.md | 205 +--------------------------- plugins/badges/package.json | 6 +- 5 files changed, 18 insertions(+), 392 deletions(-) create mode 100644 .changeset/migrate-1713465894126.md diff --git a/.changeset/migrate-1713465894126.md b/.changeset/migrate-1713465894126.md new file mode 100644 index 0000000000..007b191096 --- /dev/null +++ b/.changeset/migrate-1713465894126.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-badges': patch +'@backstage/plugin-badges-backend': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/badges-backend/README.md b/plugins/badges-backend/README.md index 4e35b30c13..15be73153e 100644 --- a/plugins/badges-backend/README.md +++ b/plugins/badges-backend/README.md @@ -1,186 +1,3 @@ -# Badges Backend +# Deprecated -Backend plugin for serving badges to the `@backstage/plugin-badges` plugin. -Default implementation uses -[badge-maker](https://www.npmjs.com/package/badge-maker) for creating the -badges, in SVG. - -Currently, only entity badges are implemented. i.e. badges that may have entity -specific information in them, and as such, are served from an entity specific -endpoint. - -## Installation - -Install the `@backstage/plugin-badges-backend` package in your backend package: - -```bash -# From your Backstage root directory -yarn --cwd packages/backend add @backstage/plugin-badges-backend -``` - -Add the plugin using the following default setup for -`src/plugins/badges.ts`: - -```ts -import { - createRouter, - createDefaultBadgeFactories, -} from '@backstage/plugin-badges-backend'; -import { Router } from 'express'; -import { PluginEnvironment } from '../types'; - -export default async function createPlugin( - env: PluginEnvironment, -): Promise { - return await createRouter({ - config: env.config, - discovery: env.discovery, - badgeFactories: createDefaultBadgeFactories(), - tokenManager: env.tokenManager, - logger: env.logger, - identity: env.identity, - }); -} -``` - -The `createDefaultBadgeFactories()` returns an object with badge factories to -the badges-backend `createRouter()` to forward to the default badge builder. To -customize the available badges, provide a custom set of badge factories. See -further down for an example of a custom badge factories function. - -Finally, you have to make the following changes in `src/index.ts`: - -```ts -// 1. import the plugin -import badges from './plugins/badges'; - -... - -const config = await loadBackendConfig({ - argv: process.argv, - logger: rootLogger, -}); -const createEnv = makeCreateEnv(config); - - ... - // 2. Create a PluginEnvironment for the Badges plugin - const badgesEnv = useHotMemoize(module, () => createEnv('badges')); - - ... - - const apiRouter = Router(); - ... - // 3. Register the badges plugin in the router - apiRouter.use('/badges', await badges(badgesEnv)); - ... - apiRouter.use(notFoundHandler()); -``` - -### New Backend System - -The Badges backend plugin has support for the [new backend system](https://backstage.io/docs/backend-system/), here's how you can set that up: - -In your `packages/backend/src/index.ts` make the following changes: - -```diff - import { createBackend } from '@backstage/backend-defaults'; - - const backend = createBackend(); - - // ... other feature additions - -+ backend.add(import('@backstage/plugin-badges-backend')); - - backend.start(); -``` - -## Badge builder - -Badges are created by classes implementing the `BadgeBuilder` type. The default -badge builder uses badge factories to turn a `BadgeContext` into a `Badge` spec -for the `badge-maker` to create the SVG image. - -### Default badges - -A set of default badge factories are defined in -[badges.ts](https://github.com/backstage/backstage/tree/master/plugins/badges-backend/src/badges.ts) -as examples. - -Additional badges may be provided in your application by defining custom badge -factories, and provide them to the badge builder. - -### Custom badges - -To provide custom badges, create a badge factories function, and use that when -creating the badges backend router. - -```ts -import type { Badge, BadgeContext, BadgeFactories } from '@backstage/plugin-badges-backend'; -export const createMyCustomBadgeFactories = (): BadgeFactories => ({ - : { - createBadge: (context: BadgeContext): Badge | null => { - // ... - return { - label: 'my-badge', - message: 'custom stuff', - // ... - }; - }, - }, - - // optional: include the default badges - // ...createDefaultBadgeFactories(), -}); -``` - -### Badge obfuscation - -When you enable the obfuscation feature, the badges backend will obfuscate the entity names in the badge link. It's useful when you want your badges to be visible to the public, but you don't want to expose the entity names and also to protect your entity names from being enumerated. - -To enable the obfuscation you need to activate the `obfuscation` feature in the `app-config.yaml`: - -```yaml -app: - badges: - obfuscate: true -``` - -:warning: **Warning**: The only endpoint to be publicly available is the `/entity/:entityUuid/:badgeId` endpoint. The other endpoints are meant for trusted internal users and should not be publicly exposed. - -> Note that you cannot use env vars to set the `obfuscate` value. It must be a boolean value and env vars are always strings. - -## API - -The badges backend api exposes two main endpoints for entity badges. The -`/badges` prefix is arbitrary, and the default for the example backend. - -### If obfuscation is disabled (default or apps.badges.obfuscate: false) - -- `/badges/entity/:namespace/:kind/:name/badge-specs` List all defined badges - for a particular entity, in json format. See - [BadgeSpec](https://github.com/backstage/backstage/tree/master/plugins/badges/src/api/types.ts) - from the frontend plugin for a type declaration. - -- `/badges/entity/:namespace/:kind/:name/badge/:badgeId` Get the entity badge as - an SVG image. If the `accept` request header prefers `application/json` the - badge spec as JSON will be returned instead of the image. - -### If obfuscation is enabled (apps.badges.obfuscate: true) - -- `/badges/entity/:namespace/:kind/:name/obfuscated` Get the obfuscated `entity url`. - -> Note that endpoint have a embedded authMiddleware to authenticate the user requesting this endpoint. _It meant to be called from the frontend plugin._ - -- `/badges/entity/:entityUuid/:badgeId` Get the entity badge as an SVG image. If - the `accept` request header prefers `application/json` the badge spec as JSON - will be returned instead of the image. - -- `/badge/entity/:entityUuid/badge-specs` List all defined badges for a - particular entity, in json format. See - [BadgeSpec](https://github.com/backstage/backstage/tree/master/plugins/badges/src/api/types.ts) - from the frontend plugin for a type declaration. - -## Links - -- [Frontend part of the plugin](https://github.com/backstage/backstage/tree/master/plugins/badges) -- [The Backstage homepage](https://backstage.io) +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-badges-backend` instead. diff --git a/plugins/badges-backend/package.json b/plugins/badges-backend/package.json index 5bd6c72d1c..cea5e5f6a8 100644 --- a/plugins/badges-backend/package.json +++ b/plugins/badges-backend/package.json @@ -3,7 +3,8 @@ "version": "0.4.0", "description": "A Backstage backend plugin that generates README badges for your entities", "backstage": { - "role": "backend-plugin" + "role": "backend-plugin", + "moved": "@backstage-community/plugin-badges-backend" }, "publishConfig": { "access": "public", @@ -60,5 +61,6 @@ "@backstage/backend-test-utils": "workspace:^", "@backstage/catalog-client": "workspace:^", "@backstage/cli": "workspace:^" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-badges-backend instead." } diff --git a/plugins/badges/README.md b/plugins/badges/README.md index 202b26762d..466c0b61e0 100644 --- a/plugins/badges/README.md +++ b/plugins/badges/README.md @@ -1,204 +1,3 @@ -# @backstage/plugin-badges +# Deprecated -The badges plugin offers a set of badges that can be used outside of -your backstage deployment, showing information related to data from -the catalog, such as entity owner and lifecycle data for instance. - -The available badges are setup in the `badges-backend` plugin, see -link below for more details. - -## Entity badges - -To get markdown code for the entity badges, access the `Badges` context menu -(three dots in the upper right corner) of an entity page like this: - -![Badges Context Menu](./doc/badges-context-menu.png) - -This will popup a badges dialog showing all available badges for that entity like this: - -![Badges Dialog](./doc/badges-dialog.png) - -##  Badge obfuscation - -The badges plugin supports obfuscating the badge URL to prevent it from being enumerated if the badges are used in a public context (like in Github repositories). - -To enable obfuscation, set the `obfuscate` option to `true` in the `app.badges` section of your `app-config.yaml`: - -```yaml -app: - badges: - obfuscate: true -``` - -Please note that if you have already set badges in your repositories and you activate the obfuscation you will need to update the badges in your repositories to use the new obfuscated URLs. - -Please note that the backend part needs to be configured to support obfuscation. See the [backend plugin documentation](../badges-backend/README.md) for more details. - -Also, you need to allow your frontend to access the configuration see : - -Example implementation would be in : `packages/app/src/config.d.ts` - -```typescript -export interface Config { - app: { - ... some code - badges: { - /** - * badges obfuscate - * @visibility frontend - */ - obfuscate?: string; - }; - }; -} -``` - -then include in the `packages/app/package.json` : - -```json -"files": [ - "dist", - "config.d.ts" - ], -"configSchema": "config.d.ts", -``` - -## Sample Badges - -Here are some samples of badges for the `artists-lookup` service in the Demo Backstage site: - -- Component: [![Link to artist-lookup in Backstage Demo, Component: artist-lookup](https://demo.backstage.io/api/badges/entity/default/component/artist-lookup/badge/pingback 'Link to artist-lookup in Backstage Demo')](https://demo.backstage.io/catalog/default/component/artist-lookup) -- Lifecycle: [![Entity lifecycle badge, lifecycle: experimental](https://demo.backstage.io/api/badges/entity/default/component/artist-lookup/badge/lifecycle 'Entity lifecycle badge')](https://demo.backstage.io/catalog/default/component/artist-lookup) -- Owner: [![Entity owner badge, owner: team-a](https://demo.backstage.io/api/badges/entity/default/component/artist-lookup/badge/owner 'Entity owner badge')](https://demo.backstage.io/catalog/default/component/artist-lookup) -- Docs: [![Entity docs badge, docs: artist-lookup](https://demo.backstage.io/api/badges/entity/default/component/artist-lookup/badge/docs 'Entity docs badge')](https://demo.backstage.io/catalog/default/component/artist-lookup/docs) - -## Usage - -### Install the package - -Install the `@backstage/plugin-badges` package in your frontend app package: - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-badges -``` - -### Register plugin - -This plugin requires explicit registration, so you will need to add it to your App's `plugins.ts` file: - -```ts -import { badgesPlugin } from '@backstage/plugin-badges'; -``` - -If you don't have a `plugins.ts` file see: [troubleshooting](#troubleshooting) - -### Update your EntityPage - -In your `EntityPage.tsx` file located in `packages\app\src\components\catalog` we'll need to make a few changes to get the Badges context menu added to the UI. - -First we need to add the following imports: - -```ts -import { EntityBadgesDialog } from '@backstage/plugin-badges'; -import BadgeIcon from '@material-ui/icons/CallToAction'; -``` - -Next we'll update the React import that looks like this: - -```ts -import React from 'react'; -``` - -To look like this: - -```ts -import React, { ReactNode, useMemo, useState } from 'react'; -``` - -Then we have to add this chunk of code after all the imports but before any of the other code: - -```ts -const EntityLayoutWrapper = (props: { children?: ReactNode }) => { - const [badgesDialogOpen, setBadgesDialogOpen] = useState(false); - - const extraMenuItems = useMemo(() => { - return [ - { - title: 'Badges', - Icon: BadgeIcon, - onClick: () => setBadgesDialogOpen(true), - }, - ]; - }, []); - - return ( - <> - - {props.children} - - setBadgesDialogOpen(false)} - /> - - ); -}; -``` - -The last step is to wrap all the entity pages in the `EntityLayoutWrapper` like this: - -```diff -const defaultEntityPage = ( -+ - - {overviewContent} - - - - - - - - - -+ -); -``` - -Note: the above only shows an example for the `defaultEntityPage` for a full example of this you can look at [this EntityPage](https://github.com/backstage/backstage/blob/1fd9e6f601cabe42af8eb20b5d200ad1988ba309/packages/app/src/components/catalog/EntityPage.tsx#L318) - -## Troubleshooting - -If you don't have a `plugins.ts` file, you can create it with the path `packages/app/src/plugins.ts` and then import it into your `App.tsx`: - -```diff -+ import * as plugins from './plugins'; - -const app = createApp({ - apis, -+ plugins: Object.values(plugins), - bindRoutes({ bind }) { - /* ... */ - }, -}); -``` - -Or simply edit `App.tsx` with: - -```diff -+ import { badgesPlugin } from '@backstage/plugin-badges' - -const app = createApp({ - apis, -+ plugins: [badgesPlugin], - bindRoutes({ bind }) { - /* ... */ - }, -}); -``` - -## Links - -- [Backend part of the plugin](https://github.com/backstage/backstage/tree/master/plugins/badges-backend) -- [The Backstage homepage](https://backstage.io) +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-badges` instead. diff --git a/plugins/badges/package.json b/plugins/badges/package.json index ef2e0e17e0..1f73d899a3 100644 --- a/plugins/badges/package.json +++ b/plugins/badges/package.json @@ -3,7 +3,8 @@ "version": "0.2.58", "description": "A Backstage plugin that generates README badges for your entities", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-badges" }, "publishConfig": { "access": "public", @@ -52,5 +53,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-badges instead." } From d8a179581bcad7f151ea7398e0f06ff21285c029 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:45:03 +0200 Subject: [PATCH 10/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713465901227.md | 6 ++ plugins/bazaar-backend/README.md | 53 +--------- plugins/bazaar-backend/package.json | 6 +- plugins/bazaar/README.md | 156 +--------------------------- plugins/bazaar/package.json | 6 +- 5 files changed, 18 insertions(+), 209 deletions(-) create mode 100644 .changeset/migrate-1713465901227.md diff --git a/.changeset/migrate-1713465901227.md b/.changeset/migrate-1713465901227.md new file mode 100644 index 0000000000..85eb7e41c3 --- /dev/null +++ b/.changeset/migrate-1713465901227.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-bazaar': patch +'@backstage/plugin-bazaar-backend': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/bazaar-backend/README.md b/plugins/bazaar-backend/README.md index eec1574b7a..c015930630 100644 --- a/plugins/bazaar-backend/README.md +++ b/plugins/bazaar-backend/README.md @@ -1,52 +1,3 @@ -# Bazaar Backend +# Deprecated -Welcome to the Bazaar backend plugin! - -# Installation - -## Install the package - -```bash -# From your Backstage root directory -yarn --cwd packages/backend add @backstage/plugin-bazaar-backend -``` - -## Adding the plugin to your `packages/backend` - -You'll need to add the plugin to the router in your `backend` package. You can do this by creating a file called `packages/backend/src/plugins/bazaar.ts` - -```typescript -import { PluginEnvironment } from '../types'; -import { createRouter } from '@backstage/plugin-bazaar-backend'; -import { Router } from 'express'; - -export default async function createPlugin( - env: PluginEnvironment, -): Promise { - return await createRouter({ - logger: env.logger, - config: env.config, - database: env.database, - identity: env.identity, - }); -} -``` - -With the `bazaar.ts` router setup in place, add the router to `packages/backend/src/index.ts`: - -```diff -+ import bazaar from './plugins/bazaar'; - -async function main() { - ... - const createEnv = makeCreateEnv(config); - - const catalogEnv = useHotMemoize(module, () => createEnv('catalog')); -+ const bazaarEnv = useHotMemoize(module, () => createEnv('bazaar')); - - const apiRouter = Router(); -+ apiRouter.use('/bazaar', await bazaar(bazaarEnv)); - ... - apiRouter.use(notFoundHandler()); - -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-bazaar-backend` instead. diff --git a/plugins/bazaar-backend/package.json b/plugins/bazaar-backend/package.json index 2e908cfb7d..e5a8e9f740 100644 --- a/plugins/bazaar-backend/package.json +++ b/plugins/bazaar-backend/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-bazaar-backend", "version": "0.3.15", "backstage": { - "role": "backend-plugin" + "role": "backend-plugin", + "moved": "@backstage-community/plugin-bazaar-backend" }, "publishConfig": { "access": "public" @@ -59,5 +60,6 @@ "devDependencies": { "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-bazaar-backend instead." } diff --git a/plugins/bazaar/README.md b/plugins/bazaar/README.md index c340baec3e..1de5f73070 100644 --- a/plugins/bazaar/README.md +++ b/plugins/bazaar/README.md @@ -1,155 +1,3 @@ -# @backstage/plugin-bazaar +# Deprecated -### What is the Bazaar? - -The Bazaar is a place where teams can propose projects for cross-functional team development. Essentially, it’s a marketplace for internal projects suitable for [Inner Sourcing](https://en.wikipedia.org/wiki/Inner_source). By “Inner Sourcing,” we mean projects that are developed internally within a company but follow Open Source best practices. - -### Why? - -Many companies today have a high need to increase the ease of cross-team cooperation. In large organizations, engineers often have limited ways of discovering or announcing projects that could benefit from a wider development effort in terms of different expertise, experiences, and teams spread across the organization. With no good way to find these existing internal projects to join, the possibility of working with Inner Sourcing practices suffers. - -### How? - -The Bazaar allows engineers and teams to open up and announce their new and exciting projects for transparent cooperation in other parts of larger organizations. The Bazaar ensures that new Inner Sourcing-friendly projects gain visibility through Backstage and a way for interested engineers to show their interest and, in the future, contribute with their specific skill set. The Bazaar also provides an easy way to manage, catalog, and browse these Inner Sourcing-friendly projects and components. - -# Note - -You will **need** to also perform the installation instructions in [Bazaar Backend](https://github.com/backstage/backstage/tree/master/plugins/bazaar-backend) in order for this plugin to work. - -## Getting Started - -First install the plugin into your app: - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-bazaar -``` - -Modify your app routes in `packages/app/src/App.tsx` to include the `Bazaar` component exported from the plugin, for example: - -```diff -+ import { BazaarPage } from '@backstage/plugin-bazaar'; - -const routes = ( - - - ... -+ } /> - {/* other routes... */} - -``` - -`BazaarPage` can be given the optional properties `fullHeight` and `fullWidth` which are used to adjust the cards styling to fit more or less on the page as required (both default to `true`). - -Add a **Bazaar icon** to the Sidebar to easily access the Bazaar. In `packages/app/src/components/Root.tsx` add: - -```diff -+ import StorefrontIcon from '@material-ui/icons/Storefront'; - - - -+ - {/* ...other sidebar-items */} -``` - -Add a **Bazaar card** to the overview tab on the `packages/app/src/components/catalog/EntityPage.tsx` add: - -```diff -+ import { EntityBazaarInfoCard, isBazaarAvailable } from '@backstage/plugin-bazaar'; - -const overviewContent = ( - - - - -+ -+ -+ -+ -+ -+ -+ - - {/* ...other entity-cards */} -``` - -Add a **Bazaar overview card** to the homepage that displays either the latest projects or random projects. In `packages/app/src/components/home/HomePage.tsx` add: - -```diff -+ import { BazaarOverviewCard } from '@backstage/plugin-bazaar'; - -export const homePage = ( - - - - - -+ -+ -+ - -+ -+ -+ - - {/* ...other homepage items */} -``` - -The property `title` is optional and can be used to customize the title in the card header. If no title is submitted the default titles `Bazaar Random Projects` or `Bazaar Latest Projects` are displayed. - -The properties `fullHeight` and `fullWidth` are also optional and can be used to adjust the cards styling. - -# How does the Bazaar work? - -### Layout - -The latest modified Bazaar projects are displayed in the Bazaar landing page, located at the Bazaar icon in the sidebar. Each project is represented as a card containing its most relevant data to give an overview of the project. It is also possible to sort in alphabetical order or on the number of members. Here you can also search or add project to the Bazaar. - -![home](media/layout.png) - -The "BazaarOverviewCard" can be displayed in Backstage homepage. - -![home](media/overviewCard.png) - -### Workflow - -To add a project to the bazaar, simply click on the `add-project` button and fill in the form. - -The following fields are mandatory: - -- title - title of the project -- description - present your idea and what skills you are looking for -- status - whether or not the project has started -- size - small, medium or large -- responsible - main contact person of the project - -The other fields are: - -- project - link Bazaar project to existing entity in the catalog -- community link - link to where the project members can communicate, e.g. Teams or Discord link -- docs link - link to visit the documentation of the project -- start date -- end date - -When clicking on a Bazaar project a card containing the Bazaar information will show up. If the Bazaar project is linked to an entity, the card is also visible on that entity's EntityPage. From that card it is possible to either link or unlink an entity to a project, edit or delete the project and join the project if it seems interesting to you. Once you have joined a project, you will get access to the community link if it exists. - -![home](media/demo.gif) - -## Future work and ideas - -- Workflow - - - Make it possible for multiple Bazaar project to link to the same catalog entity - -- Bazaar landing page - - - Add a tab 'My page', where your personal data is displayed. For example: your projects and its latest activities etc. - -- Bazaar tab on the EntityPage - - - Fill Bazaar-tab with more content, for example images and achievements - - Show all the members that have joined the project - -- Dialogues - - - Extend the dialogue for adding a project with more fields, e.g. the possibility to add images +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-bazaar` instead. diff --git a/plugins/bazaar/package.json b/plugins/bazaar/package.json index 860c08bd22..6ef2226e2f 100644 --- a/plugins/bazaar/package.json +++ b/plugins/bazaar/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-bazaar", "version": "0.2.26", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-bazaar" }, "publishConfig": { "access": "public", @@ -59,5 +60,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-bazaar instead." } From d9c3f8a21f8c7716d0507fd4f06f948760945e8c Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:45:10 +0200 Subject: [PATCH 11/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713465908023.md | 5 +++ plugins/bitrise/README.md | 54 ++--------------------------- plugins/bitrise/package.json | 6 ++-- 3 files changed, 11 insertions(+), 54 deletions(-) create mode 100644 .changeset/migrate-1713465908023.md diff --git a/.changeset/migrate-1713465908023.md b/.changeset/migrate-1713465908023.md new file mode 100644 index 0000000000..2d7824d401 --- /dev/null +++ b/.changeset/migrate-1713465908023.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-bitrise': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/bitrise/README.md b/plugins/bitrise/README.md index 80c3dadac9..356339e116 100644 --- a/plugins/bitrise/README.md +++ b/plugins/bitrise/README.md @@ -1,53 +1,3 @@ -# Bitrise +# Deprecated -Welcome to the Bitrise plugin! - -- View recent Bitrise Builds for a Bitrise application -- Download build artifacts - -## Installation - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-bitrise -``` - -Bitrise Plugin exposes an entity tab component named `EntityBitriseContent`. You can include it in the -[`EntityPage.tsx`](https://github.com/backstage/backstage/blob/master/packages/app/src/components/catalog/EntityPage.tsx)`: - -```tsx -// At the top imports -import { EntityBitriseContent } from '@backstage/plugin-bitrise'; - -// Farther down at the website declaration -const websiteEntityPage = ( - - {/* Place the following section where you want the tab to appear */} - - - -``` - -Your plugin should now appear as a tab at the top of entity pages, particularly for `website` component types. -However, it alerts you to a missing `bitrise.io/app` annotation. - -Add the annotation to your component [catalog-info.yaml](https://github.com/backstage/backstage/blob/master/catalog-info.yaml) as shown in the highlighted example below: - -```yaml -metadata: - annotations: - bitrise.io/app: '' -``` - -The plugin requires to configure a Bitrise API proxy with a `BITRISE_AUTH_TOKEN` for authentication in the [app-config.yaml](https://github.com/backstage/backstage/blob/master/app-config.yaml): - -```yaml -proxy: - '/bitrise': - target: 'https://api.bitrise.io/v0.1' - allowedMethods: ['GET'] - headers: - Authorization: ${BITRISE_AUTH_TOKEN} -``` - -Learn how to generate a new Bitrise token at https://devcenter.bitrise.io/api/authentication. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-bitrise` instead. diff --git a/plugins/bitrise/package.json b/plugins/bitrise/package.json index 57958bb45c..cf3ee48900 100644 --- a/plugins/bitrise/package.json +++ b/plugins/bitrise/package.json @@ -3,7 +3,8 @@ "version": "0.1.61", "description": "A Backstage plugin that integrates towards Bitrise", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-bitrise" }, "publishConfig": { "access": "public", @@ -63,5 +64,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-bitrise instead." } From 62018b1a5dc0ccaa66bc51f27dec7fd7e5faf535 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:45:17 +0200 Subject: [PATCH 12/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713465915010.md | 6 +++ .../cicd-statistics-module-gitlab/README.md | 40 +------------------ .../package.json | 6 ++- plugins/cicd-statistics/README.md | 14 +------ plugins/cicd-statistics/package.json | 6 ++- 5 files changed, 18 insertions(+), 54 deletions(-) create mode 100644 .changeset/migrate-1713465915010.md diff --git a/.changeset/migrate-1713465915010.md b/.changeset/migrate-1713465915010.md new file mode 100644 index 0000000000..ad30bc1ff8 --- /dev/null +++ b/.changeset/migrate-1713465915010.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-cicd-statistics': patch +'@backstage/plugin-cicd-statistics-module-gitlab': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/cicd-statistics-module-gitlab/README.md b/plugins/cicd-statistics-module-gitlab/README.md index 67da1c2291..bed9c9329a 100644 --- a/plugins/cicd-statistics-module-gitlab/README.md +++ b/plugins/cicd-statistics-module-gitlab/README.md @@ -1,39 +1,3 @@ -# cicd-statistics-module-gitlab +# Deprecated -This is an extension module to the `cicd-statistics` plugin, providing a `CicdStatisticsApiGitlab` that you can use to extract the CI/CD statistics from your Gitlab repository. - -## Getting started - -1. Install the `cicd-statistics` and `cicd-statistics-module-gitlab` plugins in the `app` package. - -2. Configure your ApiFactory: - - You can optionally pass in a second argument to `CicdStatisticsApiGitlab` of type [CicdDefaults](https://github.com/backstage/backstage/blob/2881c53cb383bf127c150f837f37fe535d8cf97b/plugins/cicd-statistics/src/apis/types.ts#L179) to alter the default CICD UI configuration - -```tsx -// packages/app/src/apis.ts -import { gitlabAuthApiRef } from '@backstage/core-plugin-api'; - -import { cicdStatisticsApiRef } from '@backstage/plugin-cicd-statistics'; -import { CicdStatisticsApiGitlab } from '@backstage/plugin-cicd-statistics-module-gitlab'; - -export const apis: AnyApiFactory[] = [ - createApiFactory({ - api: cicdStatisticsApiRef, - deps: { gitlabAuthApi: gitlabAuthApiRef }, - factory({ gitlabAuthApi }) { - return new CicdStatisticsApiGitlab(gitlabAuthApi); - }, - }), -]; -``` - -3. Add the component to your EntityPage: - -```tsx -// packages/app/src/components/catalog/EntityPage.tsx -import { EntityCicdStatisticsContent } from '@backstage/plugin-cicd-statistics'; - - - -; -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-cicd-statistics-module-gitlab` instead. diff --git a/plugins/cicd-statistics-module-gitlab/package.json b/plugins/cicd-statistics-module-gitlab/package.json index ba8d60d201..658c525bf4 100644 --- a/plugins/cicd-statistics-module-gitlab/package.json +++ b/plugins/cicd-statistics-module-gitlab/package.json @@ -3,7 +3,8 @@ "version": "0.1.30", "description": "CI/CD Statistics plugin module; Gitlab CICD", "backstage": { - "role": "frontend-plugin-module" + "role": "frontend-plugin-module", + "moved": "@backstage-community/plugin-cicd-statistics-module-gitlab" }, "publishConfig": { "access": "public", @@ -53,5 +54,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-cicd-statistics-module-gitlab instead." } diff --git a/plugins/cicd-statistics/README.md b/plugins/cicd-statistics/README.md index 8d91d74794..767b34ed94 100644 --- a/plugins/cicd-statistics/README.md +++ b/plugins/cicd-statistics/README.md @@ -1,13 +1,3 @@ -# CI/CD Statistics Plugin +# Deprecated -This plugin shows charts of CI/CD pipeline durations over time. It expects to be used on the Software Catalog entity page, as it uses `useEntity` to figure out what component to get the build information for. - -## Usage - -> This plugin cannot be used as-is; it requires a custom implementation to fetch build information - -To use this plugin, you need to implement an API `CicdStatisticsApi` and bind it to the `cicdStatisticsApiRef`. This API is defined in `src/apis/types.ts` and is an interface with two functions, `getConfiguration(options)` and `fetchBuilds(options)`. This plugin will call `getConfiguration` to allow the implementation to specify defaults and settings for the UI. - -First time the UI shows, and each time the user changes filters and clicks `Update` to refresh the data, `fetchBuilds` is invoked with the filter options. The API implementation is the expected to fetch build information from somewhere, format it into a generic and rather simple type `Build` (also defined in `types.ts`). The API can optionally signal completion for a progress bar in the UI. - -When this plugin has fetched the builds, it will transpose the list of builds (and build stages) into a tree of build stages. As build pipelines sometimes change, certain stages might end or begin within the date range of the view (when _Normalize time range_ is enabled, which is the default). +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-cicd-statistics` instead. diff --git a/plugins/cicd-statistics/package.json b/plugins/cicd-statistics/package.json index f03665b0a3..497aaf3a5a 100644 --- a/plugins/cicd-statistics/package.json +++ b/plugins/cicd-statistics/package.json @@ -3,7 +3,8 @@ "version": "0.1.36", "description": "A frontend plugin visualizing CI/CD pipeline statistics (build time)", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-cicd-statistics" }, "publishConfig": { "access": "public", @@ -60,5 +61,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-cicd-statistics instead." } From 850c7cb3c7b6f1e38196bedfa3b2ac05fe707c7e Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:45:24 +0200 Subject: [PATCH 13/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713465921873.md | 5 ++ plugins/circleci/README.md | 79 +---------------------------- plugins/circleci/package.json | 6 ++- 3 files changed, 11 insertions(+), 79 deletions(-) create mode 100644 .changeset/migrate-1713465921873.md diff --git a/.changeset/migrate-1713465921873.md b/.changeset/migrate-1713465921873.md new file mode 100644 index 0000000000..47918fc80d --- /dev/null +++ b/.changeset/migrate-1713465921873.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-circleci': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/circleci/README.md b/plugins/circleci/README.md index 67e342e8c8..95d0e1719a 100644 --- a/plugins/circleci/README.md +++ b/plugins/circleci/README.md @@ -1,78 +1,3 @@ -# CircleCI Plugin +# Deprecated -> [!IMPORTANT] -> This plugin is now developed & maintained by CircleCI. Please refer to [their up-to-date documentation](https://github.com/CircleCI-Public/backstage-plugin) & [plugin repository](https://github.com/CircleCI-Public/backstage-plugin/) for help. - -## Screenshots - - - - - -## Setup - -1. If you have a standalone app (you didn't clone this repo), then do - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @circleci/backstage-plugin -``` - -2. Add the `EntityCircleCIContent` extension to the entity page in your app: - -```tsx -// In packages/app/src/components/catalog/EntityPage.tsx -import { - EntityCircleCIContent, - isCircleCIAvailable, -} from '@circleci/backstage-plugin'; - -// For example in the CI/CD section -const cicdContent = ( - - - - -``` - -4. Add proxy config: - -```yaml -# In app-config.yaml -proxy: - '/circleci/api': - target: https://circleci.com/api/v1.1 - headers: - Circle-Token: ${CIRCLECI_AUTH_TOKEN} -``` - -5. Get and provide a `CIRCLECI_AUTH_TOKEN` as an environment variable (see the [CircleCI docs](https://circleci.com/docs/api/#add-an-api-token)). -6. Add an annotation to your respective `catalog-info.yaml` files, with the format `circleci.com/project-slug: //` (See reference in [ADR002](https://backstage.io/docs/architecture-decisions/adrs-adr002#format)). - -```yaml -# Example catalog-info.yaml entity definition file -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - # ... - annotations: - # This also supports bitbucket/xxx/yyy - circleci.com/project-slug: github/my-org/my-repo -spec: - type: service - # ... -``` - -## Features - -- List top 50 builds for a project -- Dive into one build to see logs -- Polling (logs only) -- Retry builds -- Works for both project and personal tokens -- Pagination for builds - -## Limitations - -- CircleCI has pretty strict rate limits per token, be careful with opened tabs -- CircleCI doesn't provide a way to auth by 3rd party (e.g. GitHub) token, nor by calling their OAuth endpoints, which currently stands in the way of better auth integration with Backstage (reference [feature request](https://ideas.circleci.com/api-feature-requests/p/allow-circleci-api-calls-using-github-auth) and [discussion topic](https://discuss.circleci.com/t/circleci-api-authorization-with-github-token/5356)) +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-circleci` instead. diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json index aac7cb05e8..117ba0d17e 100644 --- a/plugins/circleci/package.json +++ b/plugins/circleci/package.json @@ -3,7 +3,8 @@ "version": "0.3.34", "description": "A Backstage plugin that integrates towards Circle CI", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-circleci" }, "publishConfig": { "access": "public", @@ -59,5 +60,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-circleci instead." } From 602c2bea1b69bf8dff0ffd81c51f44be48fc14b9 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:45:31 +0200 Subject: [PATCH 14/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713465928821.md | 5 + plugins/cloudbuild/README.md | 141 +--------------------------- plugins/cloudbuild/package.json | 6 +- 3 files changed, 11 insertions(+), 141 deletions(-) create mode 100644 .changeset/migrate-1713465928821.md diff --git a/.changeset/migrate-1713465928821.md b/.changeset/migrate-1713465928821.md new file mode 100644 index 0000000000..6b184fed58 --- /dev/null +++ b/.changeset/migrate-1713465928821.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-cloudbuild': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/cloudbuild/README.md b/plugins/cloudbuild/README.md index 2677d02b13..4b1061930c 100644 --- a/plugins/cloudbuild/README.md +++ b/plugins/cloudbuild/README.md @@ -1,140 +1,3 @@ -# Google Cloud Build Plugin +# Deprecated -### Welcome to the Google Cloud Build plugin! - -This plugin allows you to include Google Cloud Build history in your backstage CI/CD page. - - - -## Installation Steps - -### Install the plugin into backstage - -```bash -cd packages/app -yarn add @backstage/plugin-cloudbuild -``` - -### Modify EntityPage.tsx - -packages/app/src/components/catalog/EntityPage.tsx - -#### Add the Plugin import to the list of imports - -```diff -// packages/app/src/components/catalog/EntityPage.tsx -import { TechDocsAddons } from '@backstage/plugin-techdocs-react'; - -import { ReportIssue } from '@backstage/plugin-techdocs-module-addons-contrib'; - -+import { EntityCloudbuildContent, isCloudbuildAvailable } from '@backstage/plugin-cloudbuild'; -``` - -#### In your `cicdContent` constant, add the following switch case - -```diff -// packages/app/src/components/catalog/EntityPage.tsx -const cicdContent = ( - -+ -+ -+ - - - - -``` - -##### OPTIONAL - -If you don't use GitHub Actions, or don't want to show it on your CI/CD page, then you can remove the switch case for it: - -```diff -// packages/app/src/components/catalog/EntityPage.tsx -const cicdContent = ( - -+ -+ -+ - -- -- -- -``` - -### Add annotation(s) to your component-info.yaml file - -Any component, that you would like the Cloud Build Plugin to populate for, should include the following `cloudbuild-project-slug` annotation. This annotation sets the GCP project name to be used for pulling the Cloud Build details from. - -```diff -// component-info.yaml -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: backstage - description: Backstage application. -+ annotations: -+ google.com/cloudbuild-project-slug: your-project-name -spec: - type: website - lifecycle: development -``` - -By default, the cloud build results list is filtered by repository name equal to the name you have set in your component-info.yaml file. This is `metadata.name`. So if your metadata.name is `backstage` then it will only show builds matching the backstage repo name. - -Additionally, build results are pulled from the `global` region by default. - -#### Change Filtering - -If you need the page to be filtered on a different repository name, then you can use the following annotation: - -```diff -// component-info.yaml -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: backstage - description: Backstage application. - annotations: - google.com/cloudbuild-project-slug: your-project-name -+ google.com/cloudbuild-repo-name: my-backstage -spec: - type: website - lifecycle: development -``` - -You can also automatically filter the results based on trigger name instead of repository name. To do so, use the following annotation: - -```diff -// component-info.yaml -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: backstage - description: Backstage application. - annotations: - google.com/cloudbuild-project-slug: your-project-name -+ google.com/cloudbuild-trigger-name: my-trigger-name -spec: - type: website - lifecycle: development -``` - -`Note:` The `cloudbuild-repo-name` annotation takes precedence over the `cloudbuild-trigger-name` annotation. So if you happen to use both annotations, cloudbuild-repo-name will be used. It is recommended to use one or the other if required. - -If you need to pull Cloud Build results from a location or region other than the global scope, then use the following annotation: - -```diff -// component-info.yaml -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: backstage - description: Backstage application. - annotations: - google.com/cloudbuild-project-slug: your-project-name -+ google.com/cloudbuild-location: us-central1 -spec: - type: website - lifecycle: development -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-cloudbuild` instead. diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json index 02f2225e76..8f4ba18fe5 100644 --- a/plugins/cloudbuild/package.json +++ b/plugins/cloudbuild/package.json @@ -3,7 +3,8 @@ "version": "0.5.1", "description": "A Backstage plugin that integrates towards Google Cloud Build", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-cloudbuild" }, "publishConfig": { "access": "public", @@ -60,5 +61,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-cloudbuild instead." } From d6aaf01c1f1c8046e264202ca477b0b63b098715 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:45:37 +0200 Subject: [PATCH 15/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713465935674.md | 5 ++ plugins/code-climate/README.md | 85 +---------------------------- plugins/code-climate/package.json | 6 +- 3 files changed, 11 insertions(+), 85 deletions(-) create mode 100644 .changeset/migrate-1713465935674.md diff --git a/.changeset/migrate-1713465935674.md b/.changeset/migrate-1713465935674.md new file mode 100644 index 0000000000..7d1db8520e --- /dev/null +++ b/.changeset/migrate-1713465935674.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-code-climate': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/code-climate/README.md b/plugins/code-climate/README.md index 8aff5cd9af..6a66585378 100644 --- a/plugins/code-climate/README.md +++ b/plugins/code-climate/README.md @@ -1,84 +1,3 @@ -# Code Climate Plugin +# Deprecated -The Code Climate Plugin displays a few stats from the quality section from [Code Climate](https://codeclimate.com). - -![Code Climate Card](./docs/code-climate-card.png) - -## Getting Started - -1. Install the Code Climate Plugin: - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-code-climate -``` - -2. Add the `EntityCodeClimateCard` to the EntityPage: - -```jsx -// packages/app/src/components/catalog/EntityPage.tsx - -import { EntityCodeClimateCard } from '@backstage/plugin-code-climate'; - -const overviewContent = ( - - // ... - - - - // ... - -); -``` - -3. Add the proxy config: - -```yaml -# app-config.yaml - -proxy: - '/codeclimate/api': - target: https://api.codeclimate.com/v1 - headers: - Authorization: Token token=${CODECLIMATE_TOKEN} -``` - -4. Create a new API access token (https://codeclimate.com/profile/tokens) and provide `CODECLIMATE_TOKEN` as an env variable. - -5. Add the `codeclimate.com/repo-id` annotation to your `catalog-info.yaml` file: - -```yaml -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: backstage - description: | - Backstage is an open-source developer portal that puts the developer experience first. - annotations: - codeclimate.com/repo-id: YOUR_REPO_ID -spec: - type: library - owner: CNCF - lifecycle: experimental -``` - -### Demo Mode - -The plugin provides a MockAPI that always returns dummy data instead of talking to the Code Climate backend. -You can add it by overriding the `codeClimateApiRef`: - -```ts -// packages/app/src/apis.ts - -import { createApiFactory } from '@backstage/core-plugin-api'; -import { - MockCodeClimateApi, - codeClimateApiRef, -} from '@backstage/plugin-code-climate'; - -export const apis = [ - // ... - - createApiFactory(codeClimateApiRef, new MockCodeClimateApi()), -]; -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-code-climate` instead. diff --git a/plugins/code-climate/package.json b/plugins/code-climate/package.json index 2c67c7e8f9..fea40117aa 100644 --- a/plugins/code-climate/package.json +++ b/plugins/code-climate/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-code-climate", "version": "0.1.34", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-code-climate" }, "publishConfig": { "access": "public", @@ -56,5 +57,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-code-climate instead." } From da543b3c70d1eac0b5c865e598ba3016c312fa51 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:45:44 +0200 Subject: [PATCH 16/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713465942505.md | 6 + plugins/code-coverage-backend/README.md | 257 +-------------------- plugins/code-coverage-backend/package.json | 6 +- plugins/code-coverage/README.md | 52 +---- plugins/code-coverage/package.json | 38 +-- 5 files changed, 34 insertions(+), 325 deletions(-) create mode 100644 .changeset/migrate-1713465942505.md diff --git a/.changeset/migrate-1713465942505.md b/.changeset/migrate-1713465942505.md new file mode 100644 index 0000000000..1917c61025 --- /dev/null +++ b/.changeset/migrate-1713465942505.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-code-coverage': patch +'@backstage/plugin-code-coverage-backend': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/code-coverage-backend/README.md b/plugins/code-coverage-backend/README.md index 42a9253efd..7f6f90ae1a 100644 --- a/plugins/code-coverage-backend/README.md +++ b/plugins/code-coverage-backend/README.md @@ -1,256 +1,3 @@ -# code-coverage-backend +# Deprecated -This is the backend part of the `code-coverage` plugin. It takes care of processing various coverage formats and standardizing them into a single json format, used by the frontend. - -## Installation - -```sh -# From your Backstage root directory -yarn --cwd packages/backend add @backstage/plugin-code-coverage-backend -``` - -First create a `codecoverage.ts` file here: `packages/backend/src/plugins`. Now add the following as its content: - -```diff -diff --git a/packages/backend/src/plugins/codecoverage.ts b/packages/backend/src/plugins/codecoverage.ts ---- /dev/null -+++ b/packages/backend/src/plugins/codecoverage.ts -@@ -0,0 +1,15 @@ -+import { createRouter } from '@backstage/plugin-code-coverage-backend'; -+import { Router } from 'express'; -+import { PluginEnvironment } from '../types'; -+ -+export default async function createPlugin( -+ env: PluginEnvironment, -+): Promise { -+ return await createRouter({ -+ config: env.config, -+ discovery: env.discovery, -+ database: env.database, -+ urlReader: env.reader, -+ logger: env.logger, -+ }); -+} - -``` - -Finally we need to load the plugin in `packages/backend/src/index.ts`, make the following edits: - -```diff -diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts ---- a/packages/backend/src/index.ts -+++ b/packages/backend/src/index.ts -@@ -28,6 +28,7 @@ import scaffolder from './plugins/scaffolder'; - import proxy from './plugins/proxy'; - import techdocs from './plugins/techdocs'; - import search from './plugins/search'; -+import codeCoverage from './plugins/codecoverage'; - import { PluginEnvironment } from './types'; - import { ServerPermissionClient } from '@backstage/plugin-permission-node'; - import { DefaultIdentityClient } from '@backstage/plugin-auth-node'; -@@ -85,6 +86,9 @@ async function main() { - const techdocsEnv = useHotMemoize(module, () => createEnv('techdocs')); - const searchEnv = useHotMemoize(module, () => createEnv('search')); - const appEnv = useHotMemoize(module, () => createEnv('app')); -+ const codeCoverageEnv = useHotMemoize(module, () => -+ createEnv('code-coverage'), -+ ); - - const apiRouter = Router(); - apiRouter.use('/catalog', await catalog(catalogEnv)); -@@ -93,6 +97,7 @@ async function main() { - apiRouter.use('/techdocs', await techdocs(techdocsEnv)); - apiRouter.use('/proxy', await proxy(proxyEnv)); - apiRouter.use('/search', await search(searchEnv)); -+ apiRouter.use('/code-coverage', await codeCoverage(codeCoverageEnv)); - - apiRouter.use(notFoundHandler()); -``` - -## New Backend System - -The code coverage backend plugin has support for the [new backend system](https://backstage.io/docs/backend-system/), here's how you can set that up: - -In your `packages/backend/src/index.ts` make the following changes: - -```diff -+ backend.add(import('@backstage/plugin-code-coverage-backend')); -``` - -## Configuring your entity - -In order to use this plugin, you must set the `backstage.io/code-coverage` annotation. - -```yaml -metadata: - annotations: - backstage.io/code-coverage: enabled -``` - -There's a feature to only include files that are in VCS in the coverage report, this is helpful to not count generated files for example. To enable this set the `backstage.io/code-coverage` annotation to `scm-only`. - -```yaml -metadata: - annotations: - backstage.io/code-coverage: scm-only -``` - -Note: It may be required to set the [`backstage.io/source-location` annotation](https://backstage.io/docs/features/software-catalog/well-known-annotations#backstageiosource-location), however this should generally not be needed. - -## API - -### Adding a Cobertura report - -POST a Cobertura XML file to `/report` - -Example: - -```json -// curl -X POST -H "Content-Type:text/xml" -d @cobertura.xml "localhost:7007/api/code-coverage/report?entity=component:default/entity-name&coverageType=cobertura" -{ - "links": [ - { - "href": "http://localhost:7007/api/code-coverage/report?entity=component:default/entity-name", - "rel": "coverage" - } - ] -} -``` - -### Adding a JaCoCo report - -POST a JaCoCo XML file to `/report` - -Example: - -```json -// curl -X POST -H "Content-Type:text/xml" -d @jacoco.xml "localhost:7007/api/code-coverage/report?entity=component:default/entity-name&coverageType=jacoco" -{ - "links": [ - { - "href": "http://localhost:7007/api/code-coverage/report?entity=component:default/entity-name", - "rel": "coverage" - } - ] -} -``` - -### Adding a LCOV report - -POST a LCOV INFO file to `/report` - -Example: - -```json -// curl -X POST -H "Content-Type:text/plain" -d @coverage.info "localhost:7007/api/code-coverage/report?entity=component:default/entity-name&coverageType=lcov" -{ - "links": [ - { - "href": "http://localhost:7007/api/code-coverage/report?entity=component:default/entity-name", - "rel": "coverage" - } - ] -} -``` - -### Reading json coverage - -GET `/report` - -Example: - -```json -// curl localhost:7007/api/code-coverage/report?entity=component:default/entity-name -{ - "aggregate": { - "branch": { - "available": 0, - "covered": 0, - "missed": 0, - "percentage": 0 - }, - "line": { - "available": 5, - "covered": 4, - "missed": 1, - "percentage": 80 - } - }, - "entity": { - "kind": "Component", - "name": "entity-name", - "namespace": "default" - }, - "files": [ - { - "branchHits": {}, - "filename": "main.go", - "lineHits": { - "117": 12, - "142": 8, - "34": 8, - "42": 0, - "58": 6 - } - } - ] -} -``` - -### Coverage history - -GET `/history` - -Example - -```json -// curl localhost:7007/api/code-coverage/history?entity=component:default/entity-name -{ - "entity": { - "kind": "Component", - "name": "entity-name", - "namespace": "default" - }, - "history": [ - { - "branch": { - "available": 0, - "covered": 0, - "missed": 0, - "percentage": 0 - }, - "line": { - "available": 299, - "covered": 116, - "missed": 183, - "percentage": 38.8 - }, - "timestamp": 1615490766141 - }, - { - "branch": { - "available": 0, - "covered": 0, - "missed": 0, - "percentage": 0 - }, - "line": { - "available": 299, - "covered": 116, - "missed": 183, - "percentage": 38.8 - }, - "timestamp": 1615406307929 - } - ] -} -``` - -### Configuration - -Configure the plugin in your `app-config.yaml`: - -```yaml -codeCoverage: - bodySizeLimit: 100kb # Defaults to 100kb, see https://www.npmjs.com/package/body-parser#limit -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-code-coverage-backend` instead. diff --git a/plugins/code-coverage-backend/package.json b/plugins/code-coverage-backend/package.json index 113485309a..7f09a72a38 100644 --- a/plugins/code-coverage-backend/package.json +++ b/plugins/code-coverage-backend/package.json @@ -3,7 +3,8 @@ "version": "0.2.31", "description": "A Backstage backend plugin that helps you keep track of your code coverage", "backstage": { - "role": "backend-plugin" + "role": "backend-plugin", + "moved": "@backstage-community/plugin-code-coverage-backend" }, "publishConfig": { "access": "public", @@ -56,5 +57,6 @@ "@types/supertest": "^2.0.8", "supertest": "^6.1.6", "xml2js": "^0.6.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-code-coverage-backend instead." } diff --git a/plugins/code-coverage/README.md b/plugins/code-coverage/README.md index 4298c69b11..0f4a7c56a2 100644 --- a/plugins/code-coverage/README.md +++ b/plugins/code-coverage/README.md @@ -1,51 +1,3 @@ -# code-coverage +# Deprecated -This is the frontend part of the code-coverage plugin. It displays code coverage summaries for your entities. - -## Installation - -```sh -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-code-coverage -``` - -Finally you need to import and render the code coverage entity, in `packages/app/src/components/catalog/EntityPage.tsx` add the following: - -```diff -@@ -70,6 +70,7 @@ import { - - import { TechDocsAddons } from '@backstage/plugin-techdocs-react'; - import { ReportIssue } from '@backstage/plugin-techdocs-module-addons-contrib'; -+import { EntityCodeCoverageContent } from '@backstage/plugin-code-coverage'; - -@@ -226,6 +227,10 @@ const defaultEntityPage = ( - - {techdocsContent} - -+ -+ -+ -+ - - ); -``` - -## Configuring your entity - -In order to use this plugin, you must set the `backstage.io/code-coverage` annotation on entities for which coverage ingestion has been enabled. - -```yaml -metadata: - annotations: - backstage.io/code-coverage: enabled -``` - -There's a feature to only include files that are in VCS in the coverage report, this is helpful to not count generated files for example. To enable this set the `backstage.io/code-coverage` annotation to `scm-only`. - -```yaml -metadata: - annotations: - backstage.io/code-coverage: scm-only -``` - -Note: It may be required to set the [`backstage.io/source-location` annotation](https://backstage.io/docs/features/software-catalog/well-known-annotations#backstageiosource-location), however this should generally not be needed. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-code-coverage` instead. diff --git a/plugins/code-coverage/package.json b/plugins/code-coverage/package.json index a9d0ad7207..b9a3b46b43 100644 --- a/plugins/code-coverage/package.json +++ b/plugins/code-coverage/package.json @@ -1,33 +1,37 @@ { "name": "@backstage/plugin-code-coverage", - "description": "A Backstage plugin that helps you keep track of your code coverage", "version": "0.2.27", - "main": "src/index.ts", - "types": "src/index.ts", - "license": "Apache-2.0", + "description": "A Backstage plugin that helps you keep track of your code coverage", + "backstage": { + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-code-coverage" + }, "publishConfig": { "access": "public", "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, - "backstage": { - "role": "frontend-plugin" - }, "homepage": "https://backstage.io", "repository": { "type": "git", "url": "https://github.com/backstage/backstage", "directory": "plugins/code-coverage" }, + "license": "Apache-2.0", "sideEffects": false, + "main": "src/index.ts", + "types": "src/index.ts", + "files": [ + "dist" + ], "scripts": { "build": "backstage-cli package build", - "start": "backstage-cli package start", + "clean": "backstage-cli package clean", "lint": "backstage-cli package lint", - "test": "backstage-cli package test", "prepack": "backstage-cli package prepack", "postpack": "backstage-cli package postpack", - "clean": "backstage-cli package clean" + "start": "backstage-cli package start", + "test": "backstage-cli package test" }, "dependencies": { "@backstage/catalog-model": "workspace:^", @@ -44,11 +48,6 @@ "react-use": "^17.2.4", "recharts": "^2.5.0" }, - "peerDependencies": { - "react": "^16.13.1 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", - "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - }, "devDependencies": { "@backstage/cli": "workspace:^", "@backstage/dev-utils": "workspace:^", @@ -59,7 +58,10 @@ "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "@types/recharts": "^1.8.15" }, - "files": [ - "dist" - ] + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", + "react-router-dom": "6.0.0-beta.0 || ^6.3.0" + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-code-coverage instead." } From 077c7bf35eebce1e8f80e427dc599249f386f1c1 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:45:52 +0200 Subject: [PATCH 17/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713465949447.md | 5 ++ plugins/codescene/README.md | 102 +--------------------------- plugins/codescene/package.json | 6 +- 3 files changed, 11 insertions(+), 102 deletions(-) create mode 100644 .changeset/migrate-1713465949447.md diff --git a/.changeset/migrate-1713465949447.md b/.changeset/migrate-1713465949447.md new file mode 100644 index 0000000000..577faf7f65 --- /dev/null +++ b/.changeset/migrate-1713465949447.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-codescene': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/codescene/README.md b/plugins/codescene/README.md index 6770e34ddd..693c977d22 100644 --- a/plugins/codescene/README.md +++ b/plugins/codescene/README.md @@ -1,101 +1,3 @@ -# codescene +# Deprecated -[CodeScene](https://codescene.com/) is a multi-purpose tool that connects code, businesses, and people. Discover hidden hazards and social trends in your code. Prioritise and minimise technical debt. - -The CodeScene Backstage Plugin provides a page component that displays a list of existing projects and associated analysis data on your CodeScene instance. - -![screenshot](./docs/codescene-plugin-screenshot.png) - -## Setup - -1. Install the plugin by running: - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-codescene -``` - -2. Add the routes and pages to your `App.tsx`: - -```tsx -import { - CodeScenePage, - CodeSceneProjectDetailsPage, -} from '@backstage/plugin-codescene'; - -... - -} /> -} -/> -``` - -3. Add to the sidebar item routing to the new page: - -```tsx -// In packages/app/src/components/Root/Root.tsx -import { CodeSceneIcon } from '@backstage/plugin-codescene'; - -{ - /* other sidebar items... */ -} -; -``` - -4. Setup the `app-config.yaml` `codescene` proxy and configuration blocks: - -```yaml -proxy: - '/codescene-api': - target: '/api/v1' - allowedMethods: ['GET'] - allowedHeaders: ['Authorization'] - headers: - Authorization: Basic ${CODESCENE_AUTH_CREDENTIALS} -``` - -```yaml -codescene: - baseUrl: https://codescene.my-company.net # replace with your own URL -``` - -5. Adding the codescene plugin to Entity page: - -```yaml -# Add `codescene` annotations to the `catalog-info.yaml` of an entity. -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: backstage - annotations: - codescene.io/project-id: -``` - -```tsx -// In packages/app/src/components/catalog/EntityPage.tsx - -import { - CodeSceneEntityPage, - CodeSceneEntityFileSummary, - isCodeSceneAvailable, -} from '@backstage/plugin-codescene'; - -/* other EntityLayout.Route items... */ - - - - - - - - - - -; -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-codescene` instead. diff --git a/plugins/codescene/package.json b/plugins/codescene/package.json index 3a17b700e3..f329c641b7 100644 --- a/plugins/codescene/package.json +++ b/plugins/codescene/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-codescene", "version": "0.1.26", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-codescene" }, "publishConfig": { "access": "public", @@ -62,5 +63,6 @@ "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-codescene instead." } From 16f113fdbf9f9d85e08fe91a64c1bb21acb1ece5 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:45:59 +0200 Subject: [PATCH 18/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713465957264.md | 6 + plugins/cost-insights-common/README.md | 9 +- plugins/cost-insights-common/package.json | 6 +- plugins/cost-insights/README.md | 245 +--------------------- plugins/cost-insights/package.json | 6 +- 5 files changed, 18 insertions(+), 254 deletions(-) create mode 100644 .changeset/migrate-1713465957264.md diff --git a/.changeset/migrate-1713465957264.md b/.changeset/migrate-1713465957264.md new file mode 100644 index 0000000000..a7ddeffccf --- /dev/null +++ b/.changeset/migrate-1713465957264.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-cost-insights': patch +'@backstage/plugin-cost-insights-common': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/cost-insights-common/README.md b/plugins/cost-insights-common/README.md index 5140701987..3153835519 100644 --- a/plugins/cost-insights-common/README.md +++ b/plugins/cost-insights-common/README.md @@ -1,8 +1,3 @@ -# Cost Insights Common +# Deprecated -Shared isomorphic code for the cost-insights plugin. - -## Links - -- [Frontend part of the plugin](https://github.com/backstage/backstage/tree/master/plugins/cost-insights) -- [The Backstage homepage](https://backstage.io) +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-cost-insights-common` instead. diff --git a/plugins/cost-insights-common/package.json b/plugins/cost-insights-common/package.json index 6735674d00..1c3c947abb 100644 --- a/plugins/cost-insights-common/package.json +++ b/plugins/cost-insights-common/package.json @@ -3,7 +3,8 @@ "version": "0.1.2", "description": "Common functionalities for the cost-insights plugin", "backstage": { - "role": "common-library" + "role": "common-library", + "moved": "@backstage-community/plugin-cost-insights-common" }, "publishConfig": { "access": "public", @@ -37,5 +38,6 @@ }, "devDependencies": { "@backstage/cli": "workspace:^" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-cost-insights-common instead." } diff --git a/plugins/cost-insights/README.md b/plugins/cost-insights/README.md index b7bfa053cf..f048b7f522 100644 --- a/plugins/cost-insights/README.md +++ b/plugins/cost-insights/README.md @@ -1,244 +1,3 @@ -# Cost Insights +# Deprecated -Cost Insights is a plugin to help engineers visualize, understand and optimize their cloud costs. The Cost Insights page shows daily cost data for a team, trends over time, and comparisons with the business metrics you care about. - -At Spotify, we find that cloud costs are optimized organically when: - -- Engineers see cost data in their daily work (that is, in Backstage). -- It's clear when cloud costs need attention. -- The data is shown in software terms familiar to them. -- Alerts and recommendations are targeted and actionable. - -Cost Insights shows trends over time, at the granularity of Backstage catalog entities - rather than the cloud provider's concepts. It can be used to troubleshoot cost anomalies, and promote cost-saving infrastructure migrations. - -Learn more with the Backstage blog post [New Cost Insights plugin: The engineer's solution to taming cloud costs](https://backstage.io/blog/2020/10/22/cost-insights-plugin). - -## Install - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-cost-insights -``` - -## Setup - -1. Configure `app-config.yaml`. See [Configuration](#configuration). - -2. Create a CostInsights client. Clients must implement the [CostInsightsApi](https://github.com/backstage/backstage/blob/master/plugins/cost-insights/src/api/CostInsightsApi.ts) interface. Create your own or [use a template](https://github.com/backstage/backstage/blob/master/plugins/cost-insights/src/example/templates/CostInsightsClient.ts) to get started. - -Tip: You can also use the `ExampleCostInsightsClient` from `@backstage/plugin-cost-insights` to see how the plugin looks with some mock data. - -```ts -// path/to/CostInsightsClient.ts -import { CostInsightsApi } from '@backstage/plugin-cost-insights'; - -export class CostInsightsClient implements CostInsightsApi { ... } -``` - -**Note:** We've briefly explored using the AWS Cost Explorer API to implement a Cost Insights client. Learn more about our findings [here](https://github.com/backstage/backstage/blob/master/plugins/cost-insights/contrib/aws-cost-explorer-api.md). - -3. Import the client and the Cost Insights plugin API to your Backstage instance. - -```ts -// packages/app/src/api.ts -import { createApiFactory } from '@backstage/core-plugin-api'; -import { costInsightsApiRef } from '@backstage/plugin-cost-insights'; -import { CostInsightsClient } from './path/to/file'; - -export const apis = [ - createApiFactory({ - api: costInsightsApiRef, - deps: {}, - factory: () => new CostInsightsClient(), - }), -]; -``` - -4. Add the `CostInsightsPage` extension to your `App.tsx`: - -```tsx -// packages/app/src/App.tsx -import { CostInsightsPage } from '@backstage/plugin-cost-insights'; - - - ... - } /> - ... -; -``` - -5. Add Cost Insights to your app Sidebar. - -To expose the plugin to your users, you can integrate the `cost-insights` route anyway that suits your application, but most commonly it is added to the Sidebar. - -```diff -// packages/app/src/components/Root/Root.tsx -+ import MoneyIcon from '@material-ui/icons/MonetizationOn'; - - ... - - export const Root = ({ children }: PropsWithChildren<{}>) => ( - - - - } to="/search"> - - {({ toggleModal }) => } - - - - - - - - {/* End global nav */} - - -+ - - - - - - - } - to="/settings" - > - - - - {children} - -); -``` - -## Configuration - -Cost Insights has only one required configuration field: `engineerCost` - the average yearly cost of an engineer including benefits. - -### Basic - -```yaml -## ./app-config.yaml -costInsights: - engineerCost: 200000 -``` - -### Products (Optional) - -For showing cost breakdowns you can define a map of cloud products. They must be defined as keys on the `products` field. A user-friendly name is **required**. - -You can optionally supply a product `icon` to display in Cost Insights navigation. See the [type file](https://github.com/backstage/backstage/blob/master/plugins/cost-insights/src/types/Icon.ts) for supported types and Material UI icon [mappings](https://github.com/backstage/backstage/blob/master/plugins/cost-insights/src/utils/navigation.tsx). - -**Note:** Product keys should be unique and on `camelCase` form. Backstage does not support underscores in configuration keys. - -```yaml -## ./app-config.yaml -costInsights: - engineerCost: 200000 - products: - productA: - name: Some Cloud Product ## required - icon: storage - productB: - name: Some Other Cloud Product - icon: data -``` - -### Metrics (Optional) - -In the `Cost Overview` panel, users can choose from a dropdown of business metrics to see costs as they relate to a metric, such as daily active users. Metrics must be defined as keys on the `metrics` field. A user-friendly name is **required**. Metrics will be provided to the `getDailyMetricData` API method via the `metric` parameter. - -An optional `default` field can be set to `true` to set the default comparison metric to daily cost in the Cost Overview panel. - -```yaml -## ./app-config.yaml -costInsights: - engineerCost: 200000 - products: - productA: - name: Some Cloud Product - icon: storage - productB: - name: Some Other Cloud Product - icon: data - metrics: - metricA: - name: Metric A ## required - default: true - metricB: - name: Metric B - metricC: - name: Metric C -``` - -### Base Currency (Optional) - -In the case you would like to show your baseline costs on the graph on other currency than US dollars. - -```yaml -## ./app-config.yaml -costInsights: - engineerCost: 200000 - baseCurrency: - locale: nl-NL - options: - currency: EUR - minimumFractionDigits: 3 -``` - -### Currencies (Optional) - -In the `Cost Overview` panel, users can choose from a dropdown of currencies to see costs in, such as Engineers or USD. Currencies must be defined as keys on the `currencies` field. A user-friendly label and unit are **required**. If not set, the `defaultCurrencies` in `currency.ts` will be used. - -A currency without `kind` is reserved to calculate cost for `engineers`. There should only be one currency without `kind`. - -```yaml -## ./app-config.yaml -costInsights: - engineerCost: 200000 - products: - productA: - name: Some Cloud Product - icon: storage - productB: - name: Some Other Cloud Product - icon: data - currencies: - currencyA: - label: Currency A - unit: Unit A - currencyB: - label: Currency B - kind: CURRENCY_B - unit: Unit B - prefix: B - rate: 3.5 -``` - -### Engineer Threshold (Optional; default 0.5) - -This threshold determines whether to show 'Negligible', or a percentage with a fraction of 'engineers' for cost savings or cost excess on top of the charts. -A threshold of 0.5 means that `Negligible` is shown when the difference in costs is lower than that fraction of engineers in that time frame, -and show `XX% or ~N engineers` when it's above the threshold. - -```yaml -## ./app-config.yaml -costInsights: - engineerCost: 200000 - engineerThreshold: 0.5 -``` - -## Alerts - -The CostInsightsApi `getAlerts` method may return any type of alert or recommendation (called collectively "Action Items" in Cost Insights) that implements the [Alert type](https://github.com/backstage/backstage/blob/master/plugins/cost-insights/src/types/Alert.ts). This allows you to deliver any alerts or recommendations specific to your infrastructure or company migrations. - -To learn more about using Cost Insights' ready-to-use alerts, see the alerts [README](https://github.com/backstage/backstage/blob/master/plugins/cost-insights/src/alerts/README.md). - -Example implementations of custom alerts, forms and components can be found in the [examples](https://github.com/backstage/backstage/tree/master/plugins/cost-insights/src/example) directory. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-cost-insights` instead. diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json index 820aadbef7..9da0a2b7f6 100644 --- a/plugins/cost-insights/package.json +++ b/plugins/cost-insights/package.json @@ -3,7 +3,8 @@ "version": "0.12.23", "description": "A Backstage plugin that helps you keep track of your cloud spend", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-cost-insights" }, "publishConfig": { "access": "public", @@ -80,5 +81,6 @@ "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-cost-insights instead." } From 7b7ea593d7201e39d264797e0ba04c58663a3478 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:46:06 +0200 Subject: [PATCH 19/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713465964371.md | 5 ++ plugins/dynatrace/README.md | 120 +--------------------------- plugins/dynatrace/package.json | 6 +- 3 files changed, 11 insertions(+), 120 deletions(-) create mode 100644 .changeset/migrate-1713465964371.md diff --git a/.changeset/migrate-1713465964371.md b/.changeset/migrate-1713465964371.md new file mode 100644 index 0000000000..1084c6d243 --- /dev/null +++ b/.changeset/migrate-1713465964371.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-dynatrace': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/dynatrace/README.md b/plugins/dynatrace/README.md index 73ac545265..3655334b05 100644 --- a/plugins/dynatrace/README.md +++ b/plugins/dynatrace/README.md @@ -1,119 +1,3 @@ -# Dynatrace +# Deprecated -Welcome to the Dynatrace plugin! - -![Example of the Dynatrace plugin](./assets/plugin.png) - -## Getting started - -This plugin uses the Backstage proxy to communicate with Dynatrace's REST APIs. - -### Setup - -#### Requirements - -##### Dynatrace API Key - -The Dynatrace plugin will require the following information, to be used in the configuration options detailed below: - -- Dynatrace API URL, e.g. `https://my-dynatrace-instance.dynatrace.com/api/v2` -- Dynatrace API access token (see [documentation](https://www.dynatrace.com/support/help/dynatrace-api/basics/dynatrace-api-authentication)), with the following permissions: - - `entities.read` - - `problems.read` - - `DataExport` and/or `ExternalSyntheticIntegration` and/or `ReadSyntheticData` - -#### Install - -1. Install the plugin on your frontend: - -``` -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-dynatrace -``` - -2. We created in our catalog the interface for using the integration with Dynatrace. - -```diff -# packages/app/src/components/catalog/EntityPage.tsx - -[...] -+ import { DynatraceTab, isDynatraceAvailable } from '@backstage/plugin-dynatrace' - -[...] - -const serviceEntityPage = ( - - [...] -+ -+ -+ - -) - -``` - -#### Plugin Configuration - -This plugin requires a proxy endpoint for Dynatrace configured in `app-config.yaml` like so: - -```yaml -proxy: - endpoints: - '/dynatrace': - target: 'https://example.dynatrace.com/api/v2' - headers: - Authorization: 'Api-Token ${DYNATRACE_ACCESS_TOKEN}' -``` - -It also requires a `baseUrl` for rendering links to problems in the table like so: - -```yaml -dynatrace: - baseUrl: 'https://example.dynatrace.com' -``` - -#### Catalog Configuration - -##### View Recent Application Problems - -To show information from Dynatrace for a catalog entity, add the following annotation to `catalog-info.yaml`: - -```yaml -# catalog-info.yaml -# [...] -metadata: - annotations: - dynatrace.com/dynatrace-entity-id: DYNATRACE_ENTITY_ID -# [...] -``` - -The `DYNATRACE_ENTITY_ID` can be found in Dynatrace by browsing to the entity (a service, synthetic, frontend, workload, etc.). It will be located in the browser address bar in the `id` parameter and has the format `ENTITY_TYPE-ENTITY_ID`, where `ENTITY_TYPE` will be one of `SERVICE`, `SYNTHETIC_TEST`, or other, and `ENTITY_ID` will be a string of characters containing uppercase letters and numbers. - -##### Viewing Recent Synthetics Results - -To show recent results from a Synthetic Monitor, add the following annotation to `catalog-info.yaml`: - -```yaml -# catalog-info.yaml -# [...] -metadata: - annotations: - dynatrace.com/synthetics-ids: SYNTHETIC_ID, SYNTHETIC_ID_2, ... -# [...] -``` - -The annotation can also contain a comma or space separated list of Synthetic Ids to surface details for multiple monitors! - -The `SYNTHETIC_ID` can be found in Dynatrace by browsing to the Synthetic monitor. It will be located in the browser address bar in the resource path - `https://example.dynatrace.com/ui/http-monitor/HTTP_CHECK-1234` for an Http check, or `https://example.dynatrace.com/ui/browser-monitor/SYNTHETIC_TEST-1234` for a browser clickpath. - -## Contribution - -This plugin was originally built by [TELUS](https://github.com/telus). - -## Disclaimer - -This plugin is not officially supported by Dynatrace. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-dynatrace` instead. diff --git a/plugins/dynatrace/package.json b/plugins/dynatrace/package.json index babe6a2c76..8225ae0139 100644 --- a/plugins/dynatrace/package.json +++ b/plugins/dynatrace/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-dynatrace", "version": "10.0.3", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-dynatrace" }, "publishConfig": { "access": "public", @@ -55,5 +56,6 @@ "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-dynatrace instead." } From fd9024c9d546bdd48eeccc0e012d157c443d0c22 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:46:13 +0200 Subject: [PATCH 20/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713465971344.md | 7 + plugins/entity-feedback-backend/README.md | 72 +--------- plugins/entity-feedback-backend/package.json | 6 +- plugins/entity-feedback-common/README.md | 4 +- plugins/entity-feedback-common/package.json | 6 +- plugins/entity-feedback/README.md | 141 +------------------ plugins/entity-feedback/package.json | 6 +- 7 files changed, 25 insertions(+), 217 deletions(-) create mode 100644 .changeset/migrate-1713465971344.md diff --git a/.changeset/migrate-1713465971344.md b/.changeset/migrate-1713465971344.md new file mode 100644 index 0000000000..c91a500e00 --- /dev/null +++ b/.changeset/migrate-1713465971344.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-entity-feedback': patch +'@backstage/plugin-entity-feedback-backend': patch +'@backstage/plugin-entity-feedback-common': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/entity-feedback-backend/README.md b/plugins/entity-feedback-backend/README.md index cef580a580..1f9b13c8dd 100644 --- a/plugins/entity-feedback-backend/README.md +++ b/plugins/entity-feedback-backend/README.md @@ -1,71 +1,3 @@ -# Entity Feedback Backend +# Deprecated -Welcome to the entity-feedback backend plugin! - -## Installation - -Note: this plugin requires authentication and identity configured so Backstage can identify -which user has rated the entity. If you are using the guest identity provider which comes -out of the box, this plugin will not work when you test it. - -### Install the package - -```bash -# From your Backstage root directory -yarn --cwd packages/backend add @backstage/plugin-entity-feedback-backend -``` - -### Adding the plugin to your `packages/backend` - -You'll need to add the plugin to the router in your `backend` package. You can do this by creating a file called `packages/backend/src/plugins/entityFeedback.ts` - -```tsx -import { createRouter } from '@backstage/plugin-entity-feedback-backend'; -import { Router } from 'express'; -import { PluginEnvironment } from '../types'; - -export default function createPlugin(env: PluginEnvironment): Promise { - return createRouter({ - database: env.database, - discovery: env.discovery, - identity: env.identity, - logger: env.logger, - }); -} -``` - -With the `entityFeedback.ts` router setup in place, add the router to `packages/backend/src/index.ts`: - -```diff -+import entityFeedback from './plugins/entityFeedback'; - -async function main() { - ... - const createEnv = makeCreateEnv(config); - - const catalogEnv = useHotMemoize(module, () => createEnv('catalog')); -+ const entityFeedbackEnv = useHotMemoize(module, () => createEnv('entityFeedback')); - - const apiRouter = Router(); -+ apiRouter.use('/entity-feedback', await entityFeedback(entityFeedbackEnv)); - ... - apiRouter.use(notFoundHandler()); - -``` - -### New Backend System - -The Entity Feedback backend plugin has support for the [new backend system](https://backstage.io/docs/backend-system/), here's how you can set that up: -In your `packages/backend/src/index.ts` make the following changes: - -```diff - import { createBackend } from '@backstage/backend-defaults'; - - const backend = createBackend(); - - // ... other feature additions - -+ backend.add(import(@backstage/plugin-entity-feedback-backend)); - -backend.start(); -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-entity-feedback-backend` instead. diff --git a/plugins/entity-feedback-backend/package.json b/plugins/entity-feedback-backend/package.json index 9531f25572..1a416c364c 100644 --- a/plugins/entity-feedback-backend/package.json +++ b/plugins/entity-feedback-backend/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-entity-feedback-backend", "version": "0.2.14", "backstage": { - "role": "backend-plugin" + "role": "backend-plugin", + "moved": "@backstage-community/plugin-entity-feedback-backend" }, "publishConfig": { "access": "public", @@ -52,5 +53,6 @@ "@backstage/cli": "workspace:^", "@types/supertest": "^2.0.12", "supertest": "^6.2.4" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-entity-feedback-backend instead." } diff --git a/plugins/entity-feedback-common/README.md b/plugins/entity-feedback-common/README.md index 430d14aeab..9cdc6ad25e 100644 --- a/plugins/entity-feedback-common/README.md +++ b/plugins/entity-feedback-common/README.md @@ -1,3 +1,3 @@ -# Entity Feedback Common +# Deprecated -Common types for the entity-feedback plugin. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-entity-feedback-common` instead. diff --git a/plugins/entity-feedback-common/package.json b/plugins/entity-feedback-common/package.json index bc5d29ce7d..fe30901586 100644 --- a/plugins/entity-feedback-common/package.json +++ b/plugins/entity-feedback-common/package.json @@ -3,7 +3,8 @@ "version": "0.1.3", "description": "Common functionalities for the entity-feedback plugin", "backstage": { - "role": "common-library" + "role": "common-library", + "moved": "@backstage-community/plugin-entity-feedback-common" }, "publishConfig": { "access": "public", @@ -34,5 +35,6 @@ }, "devDependencies": { "@backstage/cli": "workspace:^" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-entity-feedback-common instead." } diff --git a/plugins/entity-feedback/README.md b/plugins/entity-feedback/README.md index c405bd4083..1adc326b83 100644 --- a/plugins/entity-feedback/README.md +++ b/plugins/entity-feedback/README.md @@ -1,140 +1,3 @@ -# Entity Feedback Plugin +# Deprecated -Welcome to the entity-feedback plugin! - -This plugin allows you give and view feedback on entities available in the Backstage catalog. - -## Features - -### Rate entities - -#### Like/Dislike rating - -![Like dislike rating example](./docs/like-dislike-rating.png) - -#### Starred rating - -![Starred rating example](./docs/starred-rating.png) - -### Request additional feedback when poorly rated - -![Response dialog example](./docs/feedback-response-dialog.png) - -### View entity feedback responses - -![Feedback responses example](./docs/feedback-response-table.png) - -### View aggregated ratings on owned entities - -#### Total likes/dislikes - -![Like dislike table example](./docs/like-dislike-table.png) - -#### Star breakdowns - -![Starred rating table example](./docs/starred-rating-table.png) - -## Setup - -The following sections will help you get the Entity Feedback plugin setup and running. - -Note: this plugin requires authentication and identity configured so Backstage can identify -which user has rated the entity. If you are using the guest identity provider which comes -out of the box, this plugin will not work when you test it. - -### Backend - -You need to setup the [Entity Feedback backend plugin](https://github.com/backstage/backstage/tree/master/plugins/entity-feedback-backend) before you move forward with any of these steps if you haven't already - -### Installation - -Install this plugin: - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-entity-feedback -``` - -### Entity Pages - -Add rating and feedback components to your `EntityPage.tsx` to hook up UI so that users -can rate your entities and for owners to view feedback/responses. - -To allow users to apply "Like" and "Dislike" ratings add the following to each kind/type of -entity in your `EntityPage.tsx` you want to be rated (if you prefer to use star ratings, replace -`EntityLikeDislikeRatingsCard` with `EntityStarredRatingsCard` and `LikeDislikeButtons` with -`StarredRatingButtons`): - -```diff -import { - ... -+ InfoCard, - ... -} from '@backstage/core-components'; -+import { -+ EntityFeedbackResponseContent, -+ EntityLikeDislikeRatingsCard, -+ LikeDislikeButtons, -+} from '@backstage/plugin-entity-feedback'; - -// Add to each applicable kind/type of entity as desired -const overviewContent = ( - - ... -+ -+ -+ -+ -+ - ... - -); - -... - -// Add to each applicable kind/type of entity as desired -const serviceEntityPage = ( - - ... -+ -+ -+ - ... - -); - -... - -// Add ratings card component to user/group entities to view ratings of owned entities -const userPage = ( - - - - ... -+ -+ -+ - ... - - - - -); - -const groupPage = ( - - - - ... -+ -+ -+ - ... - - - - -); -``` - -Note: For a full example of this you can look at [this EntityPage](../../packages/app/src/components/catalog/EntityPage.tsx). +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-entity-feedback` instead. diff --git a/plugins/entity-feedback/package.json b/plugins/entity-feedback/package.json index 614410b876..9fddd51311 100644 --- a/plugins/entity-feedback/package.json +++ b/plugins/entity-feedback/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-entity-feedback", "version": "0.2.17", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-entity-feedback" }, "publishConfig": { "access": "public", @@ -56,5 +57,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-entity-feedback instead." } From 3242f69c8e66a33cfaf0fa57c62c003520db06c7 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:46:20 +0200 Subject: [PATCH 21/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713465978303.md | 5 +++ plugins/entity-validation/README.md | 55 +------------------------- plugins/entity-validation/package.json | 6 ++- 3 files changed, 11 insertions(+), 55 deletions(-) create mode 100644 .changeset/migrate-1713465978303.md diff --git a/.changeset/migrate-1713465978303.md b/.changeset/migrate-1713465978303.md new file mode 100644 index 0000000000..2e3bde1cae --- /dev/null +++ b/.changeset/migrate-1713465978303.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-entity-validation': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/entity-validation/README.md b/plugins/entity-validation/README.md index f831007a45..20b58cb98f 100644 --- a/plugins/entity-validation/README.md +++ b/plugins/entity-validation/README.md @@ -1,54 +1,3 @@ -# entity-validation +# Deprecated -This plugin creates a new page in Backstage where the user can validate the entities. - -![Entity Validation](./docs/entity-validation.png) - -## Getting started - -First of all, install the package in the `app` package by running the following command: - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-entity-validation -``` - -Add the new route to the app by adding the following line: - -```typescript -// In packages/app/src/App.tsx -import { EntityValidationPage } from '@backstage/plugin-entity-validation'; - -const routes = ( - - {/* ...other routes */} - } /> - -); -``` - -To add the new page to your sidebar, you must include these lines in your `Root.tsx` file: - -```typescript - // In packages/app/src/components/Root/Root.tsx - import BuildIcon from '@material-ui/icons/Build'; - - ... - - export const Root = ({ children }: PropsWithChildren<{}>) => ( - - - {/* ...other elements */} - }> - {/* Global nav, not org-specific */} - {/* ...other sidebars */} - - {/* End global nav */} - - - {/* ...other elements */} - - {children} - - ); -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-entity-validation` instead. diff --git a/plugins/entity-validation/package.json b/plugins/entity-validation/package.json index 5821a3cd7a..e44033b18c 100644 --- a/plugins/entity-validation/package.json +++ b/plugins/entity-validation/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-entity-validation", "version": "0.1.19", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-entity-validation" }, "publishConfig": { "access": "public", @@ -64,5 +65,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-entity-validation instead." } From 2a5657eb9c208d3e26653ca0e078523afcd2d32c Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:46:29 +0200 Subject: [PATCH 22/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713465986035.md | 8 + plugins/explore-backend/README.md | 223 +-------------------------- plugins/explore-backend/package.json | 6 +- plugins/explore-common/README.md | 4 +- plugins/explore-common/package.json | 6 +- plugins/explore-react/README.md | 5 +- plugins/explore-react/package.json | 6 +- plugins/explore/README.md | 149 +----------------- plugins/explore/package.json | 6 +- 9 files changed, 32 insertions(+), 381 deletions(-) create mode 100644 .changeset/migrate-1713465986035.md diff --git a/.changeset/migrate-1713465986035.md b/.changeset/migrate-1713465986035.md new file mode 100644 index 0000000000..945d05a3d2 --- /dev/null +++ b/.changeset/migrate-1713465986035.md @@ -0,0 +1,8 @@ +--- +'@backstage/plugin-explore': patch +'@backstage/plugin-explore-backend': patch +'@backstage/plugin-explore-common': patch +'@backstage/plugin-explore-react': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/explore-backend/README.md b/plugins/explore-backend/README.md index 6767749eab..88d606d396 100644 --- a/plugins/explore-backend/README.md +++ b/plugins/explore-backend/README.md @@ -1,222 +1,3 @@ -# explore-backend +# Deprecated -The `explore-backend` plugin provides a backend service for the Explore plugin. -This allows your organizations tools to be surfaced in the Explore plugin -through an API. It also provides a search collator to make it possible to search -for these tools. - -## Getting started - -### Adding the plugin to your `packages/backend` - -Install dependencies - -```bash -# From your Backstage root directory -yarn --cwd packages/backend add @backstage/plugin-explore-backend -``` - -Add feature - -```ts title="packages/backend/src/index.ts" -backend.add(import('@backstage/plugin-explore-backend')); -``` - -Config: - -```yaml -explore: - tools: - - title: New Relic - description: new relic plugin - url: /newrelic - image: https://i.imgur.com/L37ikrX.jpg - tags: - - newrelic - - proxy - - nerdGraph -``` - -### Adding the plugin to your `packages/backend` (old) - -#### Tools as Config - -Install dependencies - -```bash -# From your Backstage root directory -yarn --cwd packages/backend add @backstage/plugin-explore-backend -``` - -You'll need to add the plugin to the router in your `backend` package. You can -do this by creating a file called `packages/backend/src/plugins/explore.ts` with the following content: - -```ts title="packages/backend/src/plugins/explore.ts" -import { - createRouter, - StaticExploreToolProvider, -} from '@backstage/plugin-explore-backend'; -import { Router } from 'express'; -import { PluginEnvironment } from '../types'; - -export default async function createPlugin( - env: PluginEnvironment, -): Promise { - return await createRouter({ - logger: env.logger, - toolProvider: StaticExploreToolProvider.fromConfig(env.config), - }); -} -``` - -Config: - -```yaml -explore: - tools: - - title: New Relic - description: new relic plugin - url: /newrelic - image: https://i.imgur.com/L37ikrX.jpg - tags: - - newrelic - - proxy - - nerdGraph -``` - -#### Tools as Code - -Install dependencies - -```bash -# From your Backstage root directory -yarn --cwd packages/backend add @backstage/plugin-explore-backend @backstage/plugin-explore-common -``` - -You'll need to add the plugin to the router in your `backend` package. You can -do this by creating a file called `packages/backend/src/plugins/explore.ts` with the following content: - -```ts -import { - createRouter, - StaticExploreToolProvider, -} from '@backstage/plugin-explore-backend'; -import { ExploreTool } from '@backstage/plugin-explore-common'; -import { Router } from 'express'; -import { PluginEnvironment } from '../types'; - -// List of tools you want to surface in the Explore plugin "Tools" page. -const exploreTools: ExploreTool[] = [ - { - title: 'New Relic', - description: 'new relic plugin', - url: '/newrelic', - image: 'https://i.imgur.com/L37ikrX.jpg', - tags: ['newrelic', 'proxy', 'nerdGraph'], - }, -]; - -export default async function createPlugin( - env: PluginEnvironment, -): Promise { - return await createRouter({ - logger: env.logger, - toolProvider: StaticExploreToolProvider.fromData(exploreTools), - }); -} -``` - -#### Register the plugin router - -With the `explore.ts` router setup in place, add the router to -`packages/backend/src/index.ts`: - -```diff -+import explore from './plugins/explore'; - -async function main() { - ... - const createEnv = makeCreateEnv(config); - - const catalogEnv = useHotMemoize(module, () => createEnv('catalog')); -+ const exploreEnv = useHotMemoize(module, () => createEnv('explore')); - - const apiRouter = Router(); -+ apiRouter.use('/explore', await explore(exploreEnv)); - ... - apiRouter.use(notFoundHandler()); -``` - -### Wire up Search Indexing - -To index explore tools you will need to register the search collator in the -`packages/backend/src/plugins/search.ts` file. - -```diff -+import { ToolDocumentCollatorFactory } from '@backstage/plugin-explore-backend'; - -... - -+ // collator gathers entities from explore. -+ indexBuilder.addCollator({ -+ schedule, -+ factory: ToolDocumentCollatorFactory.fromConfig(env.config, { -+ discovery: env.discovery, -+ logger: env.logger, -+ }), -+ }); - -... -``` - -### Wire up the Frontend - -See [the explore plugin README](../explore/README.md) for more information. - -## Explore Tool Customization - -The `explore-backend` uses the `ExploreToolProvider` interface to provide a list -of tools used in your organization and/or within your Backstage instance. This -can be customized to provide tools from any source. For example you could create -a `CustomExploreToolProvider` that queries an internal for tools in your -`packages/backend/src/plugins/explore.ts` file. - -```ts -import { - createRouter, - StaticExploreToolProvider, -} from '@backstage/plugin-explore-backend'; -import { Router } from 'express'; -import { PluginEnvironment } from '../types'; - -class CustomExploreToolProvider implements ExploreToolProvider { - async getTools( - request: GetExploreToolsRequest, - ): Promise { - const externalTools = await queryExternalTools(request); - - const tools: ExploreTool[] = [ - ...externalTools, - // Backstage Tools - { - title: 'New Relic', - description: 'new relic plugin', - url: '/newrelic', - image: 'https://i.imgur.com/L37ikrX.jpg', - tags: ['newrelic', 'proxy', 'nerdGraph'], - }, - ]; - - return { tools }; - } -} - -export default async function createPlugin( - env: PluginEnvironment, -): Promise { - return await createRouter({ - logger: env.logger, - toolProvider: new CustomExploreToolProvider(), - }); -} -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-explore-backend` instead. diff --git a/plugins/explore-backend/package.json b/plugins/explore-backend/package.json index 01caf18385..ca9a395286 100644 --- a/plugins/explore-backend/package.json +++ b/plugins/explore-backend/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-explore-backend", "version": "0.0.27", "backstage": { - "role": "backend-plugin" + "role": "backend-plugin", + "moved": "@backstage-community/plugin-explore-backend" }, "publishConfig": { "access": "public", @@ -51,5 +52,6 @@ "@types/supertest": "^2.0.8", "supertest": "^6.2.4" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-explore-backend instead." } diff --git a/plugins/explore-common/README.md b/plugins/explore-common/README.md index 7e8c835660..371e41c72e 100644 --- a/plugins/explore-common/README.md +++ b/plugins/explore-common/README.md @@ -1,3 +1,3 @@ -# explore-common +# Deprecated -Shared types for the `explore` plugin. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-explore-common` instead. diff --git a/plugins/explore-common/package.json b/plugins/explore-common/package.json index d9520a378e..8fe5afddad 100644 --- a/plugins/explore-common/package.json +++ b/plugins/explore-common/package.json @@ -3,7 +3,8 @@ "version": "0.0.2", "description": "Common functionalities for the explore plugin", "backstage": { - "role": "common-library" + "role": "common-library", + "moved": "@backstage-community/plugin-explore-common" }, "publishConfig": { "access": "public", @@ -36,5 +37,6 @@ }, "devDependencies": { "@backstage/cli": "workspace:^" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-explore-common instead." } diff --git a/plugins/explore-react/README.md b/plugins/explore-react/README.md index 4a881955df..2b3c0ae882 100644 --- a/plugins/explore-react/README.md +++ b/plugins/explore-react/README.md @@ -1,4 +1,3 @@ -# explore-react +# Deprecated -This package provides helpers to the `explore` plugin that can be imported by -any other plugin or app. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-explore-react` instead. diff --git a/plugins/explore-react/package.json b/plugins/explore-react/package.json index 10efe3c972..606bb87c04 100644 --- a/plugins/explore-react/package.json +++ b/plugins/explore-react/package.json @@ -3,7 +3,8 @@ "version": "0.0.38", "description": "A frontend library for Backstage plugins that want to interact with the explore plugin", "backstage": { - "role": "web-library" + "role": "web-library", + "moved": "@backstage-community/plugin-explore-react" }, "publishConfig": { "access": "public", @@ -50,5 +51,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-explore-react instead." } diff --git a/plugins/explore/README.md b/plugins/explore/README.md index 24e6496cc3..d3ccc4a533 100644 --- a/plugins/explore/README.md +++ b/plugins/explore/README.md @@ -1,148 +1,3 @@ -# explore +# Deprecated -Welcome to the explore plugin! - -This plugin helps to visualize the top level entities like domains, groups and tools in your ecosystem. - -## Setup - -The following sections will help you get the Explore plugin setup and running. - -### Backend - -You need to setup the -[Explore backend plugin](https://github.com/backstage/backstage/tree/master/plugins/explore-backend) -before you move forward with any of these steps if you haven't already. - -### Installation - -Install this plugin: - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-explore -``` - -### Add the plugin to your `packages/app` - -Add the root page that the playlist plugin provides to your app. You can choose -any path for the route, but we recommend the following: - -```diff -// packages/app/src/App.tsx -+ import { ExplorePage } from '@backstage/plugin-explore'; - -... - - - } /> - }> - {entityPage} - -+ } /> - ... - -``` - -You may also want to add a link to the playlist page to your application -sidebar: - -```diff -// packages/app/src/components/Root/Root.tsx -+import LayersIcon from '@material-ui/icons/Layers'; - -export const Root = ({ children }: PropsWithChildren<{}>) => ( - - -+ - ... - -``` - -### Use search result list item for Explore Tools - -When you have your `packages/app/src/components/search/SearchPage.tsx` file -ready to make modifications, add the following code snippet to add the -`ToolSearchResultListItem` when the type of the search results are -`tool`. - -```diff -+import { ToolSearchResultListItem } from '@backstage/plugin-explore'; -+import BuildIcon from '@material-ui/icons/Build'; - -const SearchPage = () => { - ... - - {({ results }) => ( - - {results.map(({ type, document, highlight, rank }) => { - switch (type) { - ... -+ case 'tools': -+ return ( -+ } -+ key={document.location} -+ result={document} -+ highlight={highlight} -+ rank={rank} -+ /> -+ ); - } - })} - - )} - ... - -... -``` - -## Customization - -Create a custom explore page in -`packages/app/src/components/explore/ExplorePage.tsx`. - -```tsx -import { - CatalogKindExploreContent, - ExploreLayout, -} from '@backstage/plugin-explore'; -import React from 'react'; -import { InnerSourceExploreContent } from './InnerSourceExploreContent'; - -export const ExplorePage = () => { - return ( - - - - - - - - - - - - ); -}; - -export const explorePage = ; -``` - -Now register the new explore page in `packages/app/src/App.tsx`. - -```diff -+import { explorePage } from './components/explore/ExplorePage'; - -const routes = ( - -- } /> -+ }> -+ {explorePage} -+ - -); -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-explore` instead. diff --git a/plugins/explore/package.json b/plugins/explore/package.json index 25b45df023..1ffbbcccbd 100644 --- a/plugins/explore/package.json +++ b/plugins/explore/package.json @@ -3,7 +3,8 @@ "version": "0.4.20", "description": "A Backstage plugin for building an exploration page of your software ecosystem", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-explore" }, "publishConfig": { "access": "public" @@ -81,5 +82,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-explore instead." } From a774521a24ee12e68172f6b79b482be3750260f1 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:46:36 +0200 Subject: [PATCH 23/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713465993760.md | 5 +++ plugins/firehydrant/README.md | 67 +---------------------------- plugins/firehydrant/package.json | 6 ++- 3 files changed, 11 insertions(+), 67 deletions(-) create mode 100644 .changeset/migrate-1713465993760.md diff --git a/.changeset/migrate-1713465993760.md b/.changeset/migrate-1713465993760.md new file mode 100644 index 0000000000..1b308ecbbd --- /dev/null +++ b/.changeset/migrate-1713465993760.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-firehydrant': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/firehydrant/README.md b/plugins/firehydrant/README.md index aa56bd066a..d11327445e 100644 --- a/plugins/firehydrant/README.md +++ b/plugins/firehydrant/README.md @@ -1,66 +1,3 @@ -# FireHydrant Plugin +# Deprecated -## Overview - -The [FireHydrant](https://firehydrant.io) plugin brings incident management to Backstage, and it displays service incidents information such as active incidents and incident analytics. There are also quick action links that let you create and view incidents in FireHydrant. - -FireHydrant plugin screenshot - -## Features - -- View total active incidents for a service declared in FireHydrant -- Quick links to the top 5 most recent active incidents in FireHydrant -- View incident metrics for a given service within the last 30 days, including: healthiness, total time impacted, total number of incidents, and MTT* (Mean Time To *) data such as MTTD (detect), MTTA (acknowledge), MTTM (mitigate) and MTTR (resolve). - -## Setup - -1. Install the plugin: - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-firehydrant -``` - -2. Add the plugin to `EntityPage.tsx`, inside the `const overviewContent`'s parent `` component: - -```ts -// In packages/app/src/components/catalog/EntityPage.tsx -import { FirehydrantCard } from '@backstage/plugin-firehydrant'; - -// Add to code as a grid item - - -; -``` - -3. Add proxy configuration to `app-config.yaml`: - -```yaml -proxy: - '/firehydrant/api': - target: 'https://api.firehydrant.io/v1/' - changeOrigin: true - headers: - # Supply the token you generated from https://app.firehydrant.io/organizations/bots - Authorization: Bearer ${FIREHYDRANT_BOT_TOKEN} -``` - -Note: if you are not using environment variables, you can directly type the API Bot Token into `app-config.yaml`: - -```yaml -proxy: -'/firehydrant/api': - target: 'https://api.firehydrant.io/v1/' - changeOrigin: true - headers: - # Supply the token you generated from https://app.firehydrant.io/organizations/bots - Authorization: Bearer fhb-e4911b22bcd788c4a4afeb0c111ffbfa -``` - -4. Optionally add an annotation to the yaml config file of a component - -```yaml -metadata: - annotations: - firehydrant.com/service-name: -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-firehydrant` instead. diff --git a/plugins/firehydrant/package.json b/plugins/firehydrant/package.json index 327cac5c55..46411bfed1 100644 --- a/plugins/firehydrant/package.json +++ b/plugins/firehydrant/package.json @@ -3,7 +3,8 @@ "version": "0.2.18", "description": "A Backstage plugin that integrates towards FireHydrant", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-firehydrant" }, "publishConfig": { "access": "public", @@ -72,5 +73,6 @@ } } } - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-firehydrant instead." } From fff7cc169339d6a753a6e89b547ceae4f597f0cd Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:46:43 +0200 Subject: [PATCH 24/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466000828.md | 5 ++ plugins/fossa/README.md | 120 +--------------------------- plugins/fossa/package.json | 6 +- 3 files changed, 11 insertions(+), 120 deletions(-) create mode 100644 .changeset/migrate-1713466000828.md diff --git a/.changeset/migrate-1713466000828.md b/.changeset/migrate-1713466000828.md new file mode 100644 index 0000000000..ec790f3687 --- /dev/null +++ b/.changeset/migrate-1713466000828.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-fossa': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/fossa/README.md b/plugins/fossa/README.md index 2c69a9b309..021cf3b0e7 100644 --- a/plugins/fossa/README.md +++ b/plugins/fossa/README.md @@ -1,119 +1,3 @@ -# FOSSA Plugin +# Deprecated -The FOSSA Plugin displays code statistics from [FOSSA](https://fossa.com/). - -![FOSSA Card](./docs/fossa-card.png) - -## Getting Started - -1. Install the FOSSA Plugin: - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-fossa -``` - -2. Add the `EntityFossaCard` to the EntityPage: - -```jsx -// packages/app/src/components/catalog/EntityPage.tsx - -import { EntityFossaCard } from '@backstage/plugin-fossa'; - -const OverviewContent = ({ entity }: { entity: Entity }) => ( - - // ... - - - - // ... - -); -``` - -3. Add the proxy config: - -```yaml -# app-config.yaml - -proxy: - '/fossa': - target: https://app.fossa.io/api - allowedMethods: ['GET'] - headers: - Authorization: token ${FOSSA_API_TOKEN} - -fossa: - # if you have a fossa organization, configure your id here - organizationId: - # if you have a self-managed fossa instance, - # configure the baseUrl to use for links to the fossa page here - externalLinkBaseUrl: -``` - -4. Get an api-token and provide `FOSSA_AUTH_HEADER` as env variable (https://app.fossa.com/account/settings/integrations/api_tokens) - -5. Add the `fossa.io/project-name` annotation to your catalog-info.yaml file: - -```yaml -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: backstage - description: | - Backstage is an open-source developer portal that puts the developer experience first. - annotations: - fossa.io/project-name: YOUR_PROJECT_NAME -spec: - type: library - owner: CNCF - lifecycle: experimental -``` - -## Other Components - -### FOSSA Overview Page - -The plugin provides an optional page that can be used to check the license compliance of all components. - -![FOSSA Overview](./docs/fossa-overview.png) - -Add it to your Backstage application: - -1. Install the FOSSA Plugin (see [Getting Started](#getting-started)). - -2. Register the page: - -```tsx -// packages/app/src/App.tsx - -import { FossaPage } from '@backstage/plugin-fossa'; - -// ... - -const routes = ( - - // ... - } /> - -); -``` - -3. (Optional) Add a Sidebar Icon: - -```tsx -// packages/app/src/components/Root/Root.tsx - -// ... - -export const Root = ({ children }: PropsWithChildren<{}>) => ( - - - // ... - - // ... - - {children} - -); -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-fossa` instead. diff --git a/plugins/fossa/package.json b/plugins/fossa/package.json index b9a5bb4df3..b9e9e17fe4 100644 --- a/plugins/fossa/package.json +++ b/plugins/fossa/package.json @@ -3,7 +3,8 @@ "version": "0.2.66", "description": "A Backstage plugin that integrates towards FOSSA", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-fossa" }, "publishConfig": { "access": "public", @@ -66,5 +67,6 @@ "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-fossa instead." } From 9254a8b917f6798b3ba9a68113d1065489e2351d Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:46:50 +0200 Subject: [PATCH 25/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466008519.md | 5 ++++ plugins/gcalendar/README.md | 29 ++--------------------- plugins/gcalendar/package.json | 36 +++++++++++++++-------------- 3 files changed, 26 insertions(+), 44 deletions(-) create mode 100644 .changeset/migrate-1713466008519.md diff --git a/.changeset/migrate-1713466008519.md b/.changeset/migrate-1713466008519.md new file mode 100644 index 0000000000..cefa04ca8a --- /dev/null +++ b/.changeset/migrate-1713466008519.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-gcalendar': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/gcalendar/README.md b/plugins/gcalendar/README.md index ccfcf9c4eb..85765846c0 100644 --- a/plugins/gcalendar/README.md +++ b/plugins/gcalendar/README.md @@ -1,28 +1,3 @@ -# Google calendar plugin +# Deprecated -Plugin displays events from google calendar - -## Getting started - -The plugin exports `HomePageCalendar` widget for the Homepage. -If your homepage is not static JSX add `gcalendarApiRef` to the App's `apis.ts`: - -```ts -import { - GCalendarApiClient, - gcalendarApiRef, -} from '@backstage/plugin-gcalendar'; - -export const apis = [ - // ... - createApiFactory({ - api: gcalendarApiRef, - deps: { authApi: googleAuthApiRef, fetchApi: fetchApiRef }, - factory: deps => new GCalendarApiClient(deps), - }), -]; -``` - -You can also serve the plugin in isolation by running `yarn start` in the plugin directory. -This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. -It is only meant for local development, and the setup for it can be found inside the [/dev](./dev) directory. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-gcalendar` instead. diff --git a/plugins/gcalendar/package.json b/plugins/gcalendar/package.json index de3b964420..68cc44ee34 100644 --- a/plugins/gcalendar/package.json +++ b/plugins/gcalendar/package.json @@ -1,32 +1,36 @@ { "name": "@backstage/plugin-gcalendar", "version": "0.3.27", - "main": "src/index.ts", - "types": "src/index.ts", - "license": "Apache-2.0", + "backstage": { + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-gcalendar" + }, "publishConfig": { "access": "public", "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, - "backstage": { - "role": "frontend-plugin" - }, "homepage": "https://backstage.io", "repository": { "type": "git", "url": "https://github.com/backstage/backstage", "directory": "plugins/gcalendar" }, + "license": "Apache-2.0", "sideEffects": false, + "main": "src/index.ts", + "types": "src/index.ts", + "files": [ + "dist" + ], "scripts": { - "start": "backstage-cli package start", "build": "backstage-cli package build", "clean": "backstage-cli package clean", - "test": "backstage-cli package test", "lint": "backstage-cli package lint", "prepack": "backstage-cli package prepack", - "postpack": "backstage-cli package postpack" + "postpack": "backstage-cli package postpack", + "start": "backstage-cli package start", + "test": "backstage-cli package test" }, "dependencies": { "@backstage/core-components": "workspace:^", @@ -44,11 +48,6 @@ "material-ui-popup-state": "^1.9.3", "react-use": "^17.2.4" }, - "peerDependencies": { - "react": "^16.13.1 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", - "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - }, "devDependencies": { "@backstage/cli": "workspace:^", "@backstage/dev-utils": "workspace:^", @@ -59,7 +58,10 @@ "@types/dompurify": "^3.0.0", "@types/sanitize-html": "^2.6.2" }, - "files": [ - "dist" - ] + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", + "react-router-dom": "6.0.0-beta.0 || ^6.3.0" + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-gcalendar instead." } From 7220f6683e6aa912795f55e0d2bc8ba8dd725ac3 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:46:57 +0200 Subject: [PATCH 26/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466015470.md | 5 +++++ plugins/gcp-projects/README.md | 14 ++------------ plugins/gcp-projects/package.json | 6 ++++-- 3 files changed, 11 insertions(+), 14 deletions(-) create mode 100644 .changeset/migrate-1713466015470.md diff --git a/.changeset/migrate-1713466015470.md b/.changeset/migrate-1713466015470.md new file mode 100644 index 0000000000..1b3e470279 --- /dev/null +++ b/.changeset/migrate-1713466015470.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-gcp-projects': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/gcp-projects/README.md b/plugins/gcp-projects/README.md index 586cd7b603..1e247a8834 100644 --- a/plugins/gcp-projects/README.md +++ b/plugins/gcp-projects/README.md @@ -1,13 +1,3 @@ -# gcp-projects +# Deprecated -Welcome to the gcp-projects plugin! - -_This plugin was created through the Backstage CLI_ - -## Getting started - -Your plugin has been added to the example app in this repository, meaning you'll be able to access it by running `yarn start` in the root directory, and then navigating to [/gcp-projects](http://localhost:3000/gcp-projects). - -You can also serve the plugin in isolation by running `yarn start` in the plugin directory. -This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. -It is only meant for local development, and the setup for it can be found inside the [/dev](./dev) directory. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-gcp-projects` instead. diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json index 6740c735ff..71fd4b199f 100644 --- a/plugins/gcp-projects/package.json +++ b/plugins/gcp-projects/package.json @@ -3,7 +3,8 @@ "version": "0.3.50", "description": "A Backstage plugin that helps you manage projects in GCP", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-gcp-projects" }, "publishConfig": { "access": "public", @@ -54,5 +55,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-gcp-projects instead." } From 2d008f35bc64934d99fe00dbce3c8921edf9f53f Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:47:04 +0200 Subject: [PATCH 27/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466022480.md | 5 ++ plugins/git-release-manager/README.md | 60 +----------------------- plugins/git-release-manager/package.json | 6 ++- 3 files changed, 11 insertions(+), 60 deletions(-) create mode 100644 .changeset/migrate-1713466022480.md diff --git a/.changeset/migrate-1713466022480.md b/.changeset/migrate-1713466022480.md new file mode 100644 index 0000000000..da0c9b0240 --- /dev/null +++ b/.changeset/migrate-1713466022480.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-git-release-manager': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/git-release-manager/README.md b/plugins/git-release-manager/README.md index d9e1703781..444e6f9fc0 100644 --- a/plugins/git-release-manager/README.md +++ b/plugins/git-release-manager/README.md @@ -1,59 +1,3 @@ -# Git Release Manager (GRM) +# Deprecated -## Overview - -`GRM` enables developers to manage their releases without having to juggle git commands. - -Does it build and ship your code? **No**. - -What `GRM` does is manage your Git **[releases](https://docs.github.com/en/github/administering-a-repository/managing-releases-in-a-repository)**, building and shipping is entirely up to you as a developer to handle in your CI. - -`GRM` is built with industry standards in mind and the flow is as follows: - -![](./src/features/Info/flow.png) - -> **Git**: The source control system where releases reside in a practical sense. Read more about [Git releases](https://docs.github.com/en/github/administering-a-repository/managing-releases-in-a-repository). (Note that this plugin works just as well with any system implementing `Git`.) -> -> **Release Candidate (RC)**: A Git pre-release intended primarily for internal testing -> -> **Release Version**: A Git release intended for end users - -Looking at the flow above, a common release lifecycle could be: - -- User presses **Create Release Candidate** - - `GRM` - 1. Creates a release branch `rc/` - 1. Creates Release Candidate tag `rc-` - 1. Creates a Git prerelease with Release Candidate tag - - Your CI - 1. Detects the new tag by matching the git reference `refs/tags/rc-.*` - 1. Builds and deploys to staging environment for testing -- User presses **Patch** - - `GRM` - 1. The selected commit is cherry-picked to the release branch - 1. The release tag is bumped - 1. Updates Git release's tag and description with the patch's details - - Your CI - 1. Detects the new tag by matching the git reference `refs/tags/(rc|version)-.*` (Release Versions are patchable as well) - 1. Builds and deploys to staging (or production if Release Version) for testing -- User presses **Promote Release Candidate to Release Version** - - `GRM` - 1. Creates Release Version tag `version-` - 1. Promotes the Git release by removing the prerelease flag - - Your CI - 1. Detects the new tag by matching the git reference `refs/tags/version-.*` - 1. Builds and deploys to production for testing - -## Usage - -### Importing - -The plugin exports a single full-page extension `GitReleaseManagerPage`, which one can add to an app like a usual top-level tool on a dedicated route. - -### Configuration - -The plugin is configurable either via props or the select elements on the page. - -If project configuration is provided via props, the select elements are disabled. It is also possible to omit features from the page via props, as well as attaching callbacks for successful executions. - -See the plugin's dev folder (`dev/index.tsx`) to see some examples. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-git-release-manager` instead. diff --git a/plugins/git-release-manager/package.json b/plugins/git-release-manager/package.json index 2f9f226371..6739e3114f 100644 --- a/plugins/git-release-manager/package.json +++ b/plugins/git-release-manager/package.json @@ -3,7 +3,8 @@ "version": "0.3.46", "description": "A Backstage plugin that helps you manage releases in git", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-git-release-manager" }, "publishConfig": { "access": "public", @@ -60,5 +61,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-git-release-manager instead." } From c288ea5c3c4ea64744b0d94578986abfb45124c5 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:47:13 +0200 Subject: [PATCH 28/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466030755.md | 5 ++ plugins/github-actions/README.md | 111 +--------------------------- plugins/github-actions/package.json | 6 +- 3 files changed, 11 insertions(+), 111 deletions(-) create mode 100644 .changeset/migrate-1713466030755.md diff --git a/.changeset/migrate-1713466030755.md b/.changeset/migrate-1713466030755.md new file mode 100644 index 0000000000..e031e92f6a --- /dev/null +++ b/.changeset/migrate-1713466030755.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-github-actions': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/github-actions/README.md b/plugins/github-actions/README.md index 4be62346a5..e59cf46fd6 100644 --- a/plugins/github-actions/README.md +++ b/plugins/github-actions/README.md @@ -1,110 +1,3 @@ -# GitHub Actions Plugin +# Deprecated -Website: [https://github.com/actions](https://github.com/actions) - -## Screenshots - -TBD - -## Setup - -### Generic Requirements - -1. Provide OAuth credentials: - 1. [Create an OAuth App](https://developer.github.com/apps/building-oauth-apps/creating-an-oauth-app/) in the GitHub organization with the callback URL set to `http://localhost:7007/api/auth/github/handler/frame`. - 2. Take the Client ID and Client Secret from the newly created app's settings page and put them into `AUTH_GITHUB_CLIENT_ID` and `AUTH_GITHUB_CLIENT_SECRET` environment variables. -2. Annotate your component with a correct GitHub Actions repository and owner: - - The annotation key is `github.com/project-slug`. - - Example: - - ```yaml - apiVersion: backstage.io/v1alpha1 - kind: Component - metadata: - name: backstage - description: backstage.io - annotations: - github.com/project-slug: 'backstage/backstage' - spec: - type: website - lifecycle: production - owner: user:guest - ``` - -### Standalone app requirements - -1. Install the plugin dependency in your Backstage app package: - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-github-actions -``` - -2. Add to the app `EntityPage` component: - -```tsx -// In packages/app/src/components/catalog/EntityPage.tsx -import { - EntityGithubActionsContent, - isGithubActionsAvailable, -} from '@backstage/plugin-github-actions'; - -// You can add the tab to any number of pages, the service page is shown as an -// example here -const serviceEntityPage = ( - - {/* other tabs... */} - - - -``` - -3. Run the app with `yarn start` and the backend with `yarn start-backend`. - Then navigate to `/github-actions/` under any entity. - -### Self-hosted / Enterprise GitHub - -The plugin will try to use `backstage.io/source-location` or `backstage.io/managed-by-location` -annotations to figure out the location of the source code. - -1. Add the `host` and `apiBaseUrl` to your `app-config.yaml` - -```yaml -# app-config.yaml - -integrations: - github: - - host: 'your-github-host.com' - apiBaseUrl: 'https://api.your-github-host.com' -``` - -## Features - -- List workflow runs for a project -- Dive into one run to see a job steps -- Retry runs -- Pagination for runs - -## Limitations - -- There is a limit of 100 apps for one OAuth client/token pair -- The OAuth application must be at the GitHub organization level in order to display the workflows. If you do - not see any workflows, confirm the OAuth application was created in the organization and not a specific user account. - -## Optional Workflow Runs Card View - -Github Workflow Runs optional UI to show in Card view instead of table, with branch selection option - -```tsx - -// You can add the tab to any number of pages, the service page is shown as an -// example given here -const serviceEntityPage = ( - - {/* other tabs... */} - - - -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-github-actions` instead. diff --git a/plugins/github-actions/package.json b/plugins/github-actions/package.json index 4b56d1bd0c..9831b00a6c 100644 --- a/plugins/github-actions/package.json +++ b/plugins/github-actions/package.json @@ -3,7 +3,8 @@ "version": "0.6.15", "description": "A Backstage plugin that integrates towards GitHub Actions", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-github-actions" }, "publishConfig": { "access": "public", @@ -66,5 +67,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-github-actions instead." } From fc81160b9e8de9079d281004af55024ce98baa7f Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:47:20 +0200 Subject: [PATCH 29/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466038274.md | 5 ++ plugins/github-deployments/README.md | 70 +------------------------ plugins/github-deployments/package.json | 6 ++- 3 files changed, 11 insertions(+), 70 deletions(-) create mode 100644 .changeset/migrate-1713466038274.md diff --git a/.changeset/migrate-1713466038274.md b/.changeset/migrate-1713466038274.md new file mode 100644 index 0000000000..4578c2a15d --- /dev/null +++ b/.changeset/migrate-1713466038274.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-github-deployments': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/github-deployments/README.md b/plugins/github-deployments/README.md index 111e028eed..a24625a0c9 100644 --- a/plugins/github-deployments/README.md +++ b/plugins/github-deployments/README.md @@ -1,69 +1,3 @@ -# GitHub Deployments Plugin +# Deprecated -The GitHub Deployments Plugin displays recent deployments from GitHub. - -![github-deployments-card](./docs/github-deployments-card.png) - -## Prerequisites - -- [GitHub Authentication Provider](https://backstage.io/docs/auth/github/provider) - -## Getting Started - -1. Install the GitHub Deployments Plugin. - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-github-deployments -``` - -2. Add the `EntityGithubDeploymentsCard` to the EntityPage: - -```typescript -// packages/app/src/components/catalog/EntityPage.tsx - -import { EntityGithubDeploymentsCard } from '@backstage/plugin-github-deployments'; - -const OverviewContent = () => ( - - // ... - - - - // ... - -); -``` - -3. Add the `github.com/project-slug` annotation to your `catalog-info.yaml` file: - -```yaml -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: backstage - description: | - Backstage is an open-source developer portal that puts the developer experience first. - annotations: - github.com/project-slug: YOUR_PROJECT_SLUG -spec: - type: library - owner: CNCF - lifecycle: experimental -``` - -### Self-hosted / Enterprise GitHub - -The plugin will try to use `backstage.io/source-location` or `backstage.io/managed-by-location` -annotations to figure out the location of the source code. - -1. Add the `host` and `apiBaseUrl` to your `app-config.yaml` - -```yaml -# app-config.yaml - -integrations: - github: - - host: 'your-github-host.com' - apiBaseUrl: 'https://api.your-github-host.com' -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-github-deployments` instead. diff --git a/plugins/github-deployments/package.json b/plugins/github-deployments/package.json index ee4787ff01..c4c8db5fda 100644 --- a/plugins/github-deployments/package.json +++ b/plugins/github-deployments/package.json @@ -3,7 +3,8 @@ "version": "0.1.65", "description": "A Backstage plugin that integrates towards GitHub Deployments", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-github-deployments" }, "publishConfig": { "access": "public", @@ -61,5 +62,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-github-deployments instead." } From b935e60d64f49250c1e0f5dee5f3326c73ed5ffc Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:47:27 +0200 Subject: [PATCH 30/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466045590.md | 5 ++ plugins/github-issues/README.md | 81 +---------------------------- plugins/github-issues/package.json | 6 ++- 3 files changed, 11 insertions(+), 81 deletions(-) create mode 100644 .changeset/migrate-1713466045590.md diff --git a/.changeset/migrate-1713466045590.md b/.changeset/migrate-1713466045590.md new file mode 100644 index 0000000000..b12d7e4617 --- /dev/null +++ b/.changeset/migrate-1713466045590.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-github-issues': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/github-issues/README.md b/plugins/github-issues/README.md index f6b383bfcc..e8b028cff8 100644 --- a/plugins/github-issues/README.md +++ b/plugins/github-issues/README.md @@ -1,80 +1,3 @@ -# GitHub Issues plugin +# Deprecated -Welcome to the GitHub Issues plugin! - -Based on the [well-known GitHub slug annotation](https://backstage.io/docs/features/software-catalog/well-known-annotations#githubcomproject-slug) associated with the Entity, it renders the list of Open issues in GitHub. - -The plugin is designed to work with four Entity kinds, and it behaves a bit differently depending on that kind: - -- Kind: Group/User: plugin renders issues from all repositories for which the Entity is the owner. -- Kind: API/Component: plugin renders issues from only one repository assigned to the Entity - -**Issues are sorted from the recently updated DESC order (the plugin might not render all issues from a single repo next to each other).** - -## Prerequisites - -- [GitHub Authentication Provider](https://backstage.io/docs/auth/github/provider) - -## Usage - -Install the plugin by running the following command **from your Backstage root directory** - -`yarn --cwd packages/app add @backstage/plugin-github-issues` - -After installation, the plugin can be used as a Card or as a Page. - -```typescript -import { - GithubIssuesCard, - GithubIssuesPage, -} from '@backstage/plugin-github-issues'; - -// To use as a page Plugin needs to be wrapped in EntityLayout.Route -const RenderGitHubIssuesPage = () => ( - - - - - - - -); - -// To use as a card and make it render correctly please place it inside appropriate Grid elements -const RenderGitHubIssuesCard = () => ( - - - - - - - - - -); -``` - -## Configuration - -Both `GithubIssuesPage` and `GithubIssuesCard` provide default configuration. It is ready to use out of the box. -However, you can configure the plugin with props: - -- `itemsPerPage: number = 10` - Issues in the list are paginated, number of issues on a single page is controlled with this prop -- `itemsPerRepo: number = 40` - the plugin doesn't download all Issues available on GitHub. By default, it will get at most 40 Issues - this prop controls this behaviour -- `filterBy: object` - the plugin can be configured to filter the query by `assignee`, `createdBy`, `labels`, `states`, `mentioned` or `milestone`. -- `orderBy: object = { field: 'UPDATED_AT', direction: 'DESC' }` - The ordering that the issues are returned can be configured by the `orderBy` field. - -### `filterBy` and `orderBy` example - -```ts - -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-github-issues` instead. diff --git a/plugins/github-issues/package.json b/plugins/github-issues/package.json index 779392da03..2a82817dc7 100644 --- a/plugins/github-issues/package.json +++ b/plugins/github-issues/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-github-issues", "version": "0.4.1", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-github-issues" }, "publishConfig": { "access": "public", @@ -58,5 +59,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-github-issues instead." } From 5dc77e3bd49539868471dda03cdfcf982666af3a Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:47:34 +0200 Subject: [PATCH 31/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466052584.md | 5 ++ plugins/github-pull-requests-board/README.md | 80 +------------------ .../github-pull-requests-board/package.json | 6 +- 3 files changed, 11 insertions(+), 80 deletions(-) create mode 100644 .changeset/migrate-1713466052584.md diff --git a/.changeset/migrate-1713466052584.md b/.changeset/migrate-1713466052584.md new file mode 100644 index 0000000000..444c4936ec --- /dev/null +++ b/.changeset/migrate-1713466052584.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-github-pull-requests-board': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/github-pull-requests-board/README.md b/plugins/github-pull-requests-board/README.md index 61a54c4279..95156171e5 100644 --- a/plugins/github-pull-requests-board/README.md +++ b/plugins/github-pull-requests-board/README.md @@ -1,79 +1,3 @@ -# GitHub Pull Requests Board Plugin +# Deprecated -The GitHub Pull Requests Board Plugin helps to visualise all **Open Pull Requests** related to the owned team repository. - -![github-pull-requests-board](./docs/pull-requests-board.png) - -It will help you and your team stay on top of open pull requests, hopefully reducing the time from open to merged. It's particularly useful when your team deals with many repositories. - -## Prerequisites - -- [GitHub Authentication Provider](https://backstage.io/docs/auth/github/provider) (With `read-only` permission granted for `Pull Requests`) - -## Getting started - -Install the plugin by running the following command **from your Backstage root directory** - -`yarn --cwd packages/app add @backstage/plugin-github-pull-requests-board` - -The plugin exports the **EntityTeamPullRequestsCard** component which can be added to the Overview page of the team at `backstage/packages/app/src/components/catalog/EntityPage.tsx` - -```javascript -import { EntityTeamPullRequestsCard } from '@backstage/plugin-github-pull-requests-board'; - -const groupPage = ( - - - - {entityWarningContent} - - - - - - - - - - - - - - - -); -``` - -Or you can also import the **EntityTeamPullRequestsContent** component which can be used to add a new tab under the group page at `backstage/packages/app/src/components/catalog/EntityPage.tsx` - -```javascript -import { EntityTeamPullRequestsContent } from '@backstage/plugin-github-pull-requests-board'; - -const groupPage = ( - - - - {entityWarningContent} - - - - - - - - - - - - - - - ; -) -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-github-pull-requests-board` instead. diff --git a/plugins/github-pull-requests-board/package.json b/plugins/github-pull-requests-board/package.json index dfd2138d5d..839015aaa0 100644 --- a/plugins/github-pull-requests-board/package.json +++ b/plugins/github-pull-requests-board/package.json @@ -3,7 +3,8 @@ "version": "0.2.0", "description": "A Backstage plugin that allows you to see all open Pull Requests for all the repositories owned by your team", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-github-pull-requests-board" }, "publishConfig": { "access": "public", @@ -62,5 +63,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-github-pull-requests-board instead." } From 9b4cc2127abf3d77195f958a47744ca951dfa989 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:47:42 +0200 Subject: [PATCH 32/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466060269.md | 5 +++++ plugins/gitops-profiles/README.md | 27 ++------------------------- plugins/gitops-profiles/package.json | 6 ++++-- 3 files changed, 11 insertions(+), 27 deletions(-) create mode 100644 .changeset/migrate-1713466060269.md diff --git a/.changeset/migrate-1713466060269.md b/.changeset/migrate-1713466060269.md new file mode 100644 index 0000000000..12e2a388c3 --- /dev/null +++ b/.changeset/migrate-1713466060269.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-gitops-profiles': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/gitops-profiles/README.md b/plugins/gitops-profiles/README.md index 472ea3cc4e..7c13ca803f 100644 --- a/plugins/gitops-profiles/README.md +++ b/plugins/gitops-profiles/README.md @@ -1,26 +1,3 @@ -# gitops-profiles +# Deprecated -Welcome to the gitops-profiles plugin! -This plugin is for creating GitOps-managed Kubernetes clusters. Currently, it supports provisioning EKS clusters on GitHub via GitHub Actions. - -_This plugin was created through the Backstage CLI_ - -## Plugin Development - -Your plugin has been added to the example app in this repository, meaning you'll be able to access it by running `yarn start` in the root directory, and then navigating to [/gitops-clusters](http://localhost:3000/gitops-profiles). - -You can also serve the plugin in isolation by running `yarn start` in the plugin directory. -This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. -It is only meant for local development, and the setup for it can be found inside the [/dev](./dev) directory. - -## Use GitOps-API backend with Backstage - -The backend of this plugin is written in Golang and its source code is available [here](https://github.com/chanwit/gitops-api) as a separate GitHub repository. -The binary of this plugin is available as a ready-to-use Docker image, [https://hub.docker.com/chanwit/gitops-api](https://hub.docker.com/chanwit/gitops-api). -To start using GitOps with Backstage, you have to start the backend using the following command: - -```bash -$ docker run -d --init -p 3008:8080 chanwit/gitops-api -``` - -Please note that this plugin requires the backend to run on port 3008. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-gitops-profiles` instead. diff --git a/plugins/gitops-profiles/package.json b/plugins/gitops-profiles/package.json index 7a359d42b5..0cb4429413 100644 --- a/plugins/gitops-profiles/package.json +++ b/plugins/gitops-profiles/package.json @@ -3,7 +3,8 @@ "version": "0.3.49", "description": "A Backstage plugin that helps you manage GitOps profiles", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-gitops-profiles" }, "publishConfig": { "access": "public", @@ -58,5 +59,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-gitops-profiles instead." } From 57b9de5772fa368fe9fc3639cd1c55fcd7d7839c Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:47:49 +0200 Subject: [PATCH 33/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466067342.md | 5 +++ plugins/gocd/README.md | 57 +---------------------------- plugins/gocd/package.json | 6 ++- 3 files changed, 11 insertions(+), 57 deletions(-) create mode 100644 .changeset/migrate-1713466067342.md diff --git a/.changeset/migrate-1713466067342.md b/.changeset/migrate-1713466067342.md new file mode 100644 index 0000000000..ea922660a4 --- /dev/null +++ b/.changeset/migrate-1713466067342.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-gocd': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/gocd/README.md b/plugins/gocd/README.md index 4f42b01124..368d872874 100644 --- a/plugins/gocd/README.md +++ b/plugins/gocd/README.md @@ -1,56 +1,3 @@ -# GoCD +# Deprecated -This plugin is an open-source tool which is used in software development to help teams and organizations automate the continuous delivery of software. - -- View recent GoCD Builds - -![gocd-builds-card](./docs/gocd-plugin-screenshot.png) - -## Installation - -GoCD Plugin exposes an entity tab component named `EntityGoCdContent`. You can include it in the -[`EntityPage.tsx`](https://github.com/backstage/backstage/blob/master/packages/app/src/components/catalog/EntityPage.tsx)`: - -```tsx -// At the top imports -import { EntityGoCdContent } from '@backstage/plugin-gocd'; - -// Farther down at the component declaration -const componentEntityPage = ( - - {/* Place the following section where you want the tab to appear */} - - - -``` - -Now your plugin should be visible as a tab at the top of the entity pages, -specifically for components that are of the type `component`. -However, it warns of a missing `gocd.org/pipelines` annotation. - -Add the annotation to your component [catalog-info.yaml](https://github.com/backstage/backstage/blob/master/catalog-info.yaml). You can refer to multiple GoCD pipelines by defining their names separated by commas, as shown in the highlighted example below: - -```yaml -metadata: - annotations: - gocd.org/pipelines: '[,]' -``` - -The plugin requires to configure a GoCD API proxy with a `GOCD_AUTH_CREDENTIALS` for authentication in the [app-config.yaml](https://github.com/backstage/backstage/blob/master/app-config.yaml). Its value is an opaque token you can obtain directly from your GoCD instance, in the shape `base64(user + ':' + pass)`. For example, a user "root" and password "root" would become `base64('root:root') = cm9vdDpyb290`: - -```yaml -proxy: - '/gocd': - target: '/go/api' - allowedMethods: ['GET'] - allowedHeaders: ['Authorization'] - headers: - Authorization: Basic ${GOCD_AUTH_CREDENTIALS} -``` - -You should also include the `gocd` section to allow for the plugin to redirect back to GoCD pipelines in your deployed instance: - -```yaml -gocd: - baseUrl: -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-gocd` instead. diff --git a/plugins/gocd/package.json b/plugins/gocd/package.json index 6a9fffd751..d284a07e4e 100644 --- a/plugins/gocd/package.json +++ b/plugins/gocd/package.json @@ -3,7 +3,8 @@ "version": "0.1.40", "description": "A Backstage plugin that integrates towards GoCD", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-gocd" }, "publishConfig": { "access": "public", @@ -65,5 +66,6 @@ "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-gocd instead." } From 5ce702f794c678bfc87566951cc82d68f89bf9b0 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:47:57 +0200 Subject: [PATCH 34/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466074733.md | 5 ++ plugins/graphiql/README.md | 71 +---------------------------- plugins/graphiql/package.json | 4 +- 3 files changed, 10 insertions(+), 70 deletions(-) create mode 100644 .changeset/migrate-1713466074733.md diff --git a/.changeset/migrate-1713466074733.md b/.changeset/migrate-1713466074733.md new file mode 100644 index 0000000000..a74fa7ec53 --- /dev/null +++ b/.changeset/migrate-1713466074733.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-graphiql': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/graphiql/README.md b/plugins/graphiql/README.md index ed47b96967..48e44a6c5d 100644 --- a/plugins/graphiql/README.md +++ b/plugins/graphiql/README.md @@ -1,70 +1,3 @@ -# @backstage/plugin-graphiql +# Deprecated -This plugin integrates [GraphiQL](https://github.com/graphql/graphiql) as a tool to browse GraphiQL endpoints inside Backstage. - -The purpose of the plugin is to provide a convenient way for developers to try out GraphQL queries in their own environment. -By exposing GraphiQL as a plugin instead of a standalone app, it's possible to provide a preconfigured environment for engineers, and also tie into authentication providers already inside Backstage. - -## Getting Started - -### Installing the plugin - -Start out by installing the plugin in your Backstage app: - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-graphiql -``` - -```diff -# in packages/app/src/App.tsx -+import { GraphiQLPage } from '@backstage/plugin-graphiql'; - - const routes = ( - -+ } /> -``` - -### Adding GraphQL endpoints - -For the plugin to function, you need to supply GraphQL endpoints through the GraphQLBrowse API. This is done by implementing the `graphQlBrowseApiRef` exported by this plugin. - -If all you need is a static list of endpoints, the plugin exports a `GraphQLEndpoints` class that implements the `GraphQLBrowseApi` for you. Here's an example of how you could expose two GraphQL endpoints in your App: - -```diff -# in packages/app/src/apis.ts -+import { -+ graphQlBrowseApiRef, -+ GraphQLEndpoints, -+} from '@backstage/plugin-graphiql'; - - export const apis = [ -+ createApiFactory({ -+ api: graphQlBrowseApiRef, -+ deps: { errorApi: errorApiRef, githubAuthApi: githubAuthApiRef }, -+ factory: ({ errorApi, githubAuthApi }) => -+ GraphQLEndpoints.from([ -+ // Use the .create function if all you need is a static URL and headers. -+ GraphQLEndpoints.create({ -+ id: 'gitlab', -+ title: 'GitLab', -+ url: 'https://gitlab.com/api/graphql', -+ // Optional extra headers -+ headers: { Extra: 'Header' }, -+ }), -+ { -+ id: 'hooli-search', -+ title: 'Hooli Search', -+ // Custom fetch function, this one is equivalent to using GraphQLEndpoints.create() -+ // with url set to https://internal.hooli.com/search -+ fetcher: async (params: any) => { -+ return fetch('https://internal.hooli.com/search', { -+ method: 'POST', -+ headers: { 'Content-Type': 'application/json' }, -+ body: JSON.stringify(params), -+ }).then(res => res.json()); -+ }, -+ } -+ ]), -+ }), -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-graphiql` instead. diff --git a/plugins/graphiql/package.json b/plugins/graphiql/package.json index eeaa0f8e68..cd246db8b8 100644 --- a/plugins/graphiql/package.json +++ b/plugins/graphiql/package.json @@ -3,7 +3,8 @@ "version": "0.3.7", "description": "Backstage plugin for browsing GraphQL APIs", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-graphiql" }, "publishConfig": { "access": "public" @@ -74,6 +75,7 @@ "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-graphiql instead.", "experimentalInstallationRecipe": { "type": "frontend-plugin", "steps": [ From 4ecd452cddaee0fa2623944fff3993129c6e2c34 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:48:04 +0200 Subject: [PATCH 35/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466081822.md | 5 ++ plugins/graphql-voyager/README.md | 77 +--------------------------- plugins/graphql-voyager/package.json | 40 ++++++++------- 3 files changed, 28 insertions(+), 94 deletions(-) create mode 100644 .changeset/migrate-1713466081822.md diff --git a/.changeset/migrate-1713466081822.md b/.changeset/migrate-1713466081822.md new file mode 100644 index 0000000000..e2a9481158 --- /dev/null +++ b/.changeset/migrate-1713466081822.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-graphql-voyager': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/graphql-voyager/README.md b/plugins/graphql-voyager/README.md index d37ffdecca..84b3e565c5 100644 --- a/plugins/graphql-voyager/README.md +++ b/plugins/graphql-voyager/README.md @@ -1,76 +1,3 @@ -# graphql-voyager +# Deprecated -Welcome to the graphql-voyager plugin! - -Presents a graph structure of your entire GraphQL API, with tabs for multiple API urls: -![](./src/assets/plugin.png) - -## Getting started - -### Installing - -To get started, first install the plugin with the following command: - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-graphql-voyager -``` - -### Adding the page - -In order to be able to navigate to the graphQL voyager page, a new route needs to be added to the app. This can be done in the following way: - -```tsx -// packages/app/App.tsx - - import { GraphQLVoyagerPage } from '@backstage/plugin-graphql-voyager'; - - const routes = ( - - }/> -``` - -### Configuration - -In order for the plugin to function correctly. GraphQL endpoints need to be added / configured through the GraphQLVoyager API. This can be done by implementing the `graphQlVoyagerApiRef` exported by this plugin. - -Add your own configuration to the `packages/app/src/apis.ts` file the following way: - -```ts -import { identityApiRef } from '@backstage/core-plugin-api'; -import { GraphQLVoyagerEndpoints } from '@backstage/plugin-graphql-voyager'; - -export const apis: AnyApiFactory[] = [ - createApiFactory({ - api: graphQlVoyagerApiRef, - deps: { identityApi: identityApiRef }, - factory: ({ identityApiRef }) => { - return GraphQLVoyagerEndpoints.from([ - { - id: `graphql-voyager-endpoint-id`, - title: 'endpoint-title', - introspectionErrorMessage: - 'Unable to perform introspection, make sure you are on the correct environment.', - introspection: async (query: any) => { - const token = 'someSecretJWTComingFromIdentityApiRef'; - - const res = await fetch('graphQLEndpoint', { - method: 'POST', - body: JSON.stringify({ query }), - headers: { - 'Content-Type': 'application/json', - Authorization: token, - }, - }); - - return res.json(); - }, - voyagerProps: { - hideDocs: true, - }, - }, - ]); - }, - }), -]; -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-graphql-voyager` instead. diff --git a/plugins/graphql-voyager/package.json b/plugins/graphql-voyager/package.json index f7d8c49bea..d60ef8b6d9 100644 --- a/plugins/graphql-voyager/package.json +++ b/plugins/graphql-voyager/package.json @@ -1,33 +1,37 @@ { "name": "@backstage/plugin-graphql-voyager", - "description": "Backstage plugin for GraphQL Voyager", "version": "0.1.16", - "main": "src/index.ts", - "types": "src/index.ts", - "license": "Apache-2.0", + "description": "Backstage plugin for GraphQL Voyager", + "backstage": { + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-graphql-voyager" + }, "publishConfig": { "access": "public", "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, - "backstage": { - "role": "frontend-plugin" - }, "homepage": "https://backstage.io", "repository": { "type": "git", "url": "https://github.com/backstage/backstage", "directory": "plugins/graphql-voyager" }, + "license": "Apache-2.0", "sideEffects": false, + "main": "src/index.ts", + "types": "src/index.ts", + "files": [ + "dist" + ], "scripts": { - "start": "backstage-cli package start", "build": "backstage-cli package build", - "lint": "backstage-cli package lint", - "test": "backstage-cli package test", "clean": "backstage-cli package clean", + "lint": "backstage-cli package lint", "prepack": "backstage-cli package prepack", - "postpack": "backstage-cli package postpack" + "postpack": "backstage-cli package postpack", + "start": "backstage-cli package start", + "test": "backstage-cli package test" }, "dependencies": { "@backstage/core-components": "workspace:^", @@ -37,11 +41,6 @@ "graphql-voyager": "^1.0.0-rc.31", "react-use": "^17.2.4" }, - "peerDependencies": { - "react": "^16.13.1 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", - "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - }, "devDependencies": { "@backstage/cli": "workspace:^", "@backstage/test-utils": "workspace:^", @@ -49,7 +48,10 @@ "@testing-library/jest-dom": "^6.0.0", "@testing-library/react": "^15.0.0" }, - "files": [ - "dist" - ] + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", + "react-router-dom": "6.0.0-beta.0 || ^6.3.0" + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-graphql-voyager instead." } From fd7fe5e6fa55a4f6a14cba134823b70f6474d4ab Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:48:11 +0200 Subject: [PATCH 36/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466088770.md | 5 ++ plugins/ilert/README.md | 128 +--------------------------- plugins/ilert/package.json | 6 +- 3 files changed, 11 insertions(+), 128 deletions(-) create mode 100644 .changeset/migrate-1713466088770.md diff --git a/.changeset/migrate-1713466088770.md b/.changeset/migrate-1713466088770.md new file mode 100644 index 0000000000..ad09feb31f --- /dev/null +++ b/.changeset/migrate-1713466088770.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-ilert': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/ilert/README.md b/plugins/ilert/README.md index 434cf8c0f0..fb8875a9d6 100644 --- a/plugins/ilert/README.md +++ b/plugins/ilert/README.md @@ -1,127 +1,3 @@ -# @backstage/plugin-ilert +# Deprecated -## Introduction - -[iLert](https://www.ilert.com) is a platform for alerting, on-call management and uptime monitoring. It helps teams to reduce response times to critical incidents by extending monitoring tools with reliable alerting, automatic escalations, on-call schedules and other features to support the incident response process, such as informing stakeholders or creating tickets in external incident management tools. - -## Overview - -This plugin gives an overview about ongoing iLert incidents, on-call and uptime monitor status. -See who is on-call, which incidents are active and trigger incidents directly from backstage for the configured alert sources. - -In detail this plugin provides: - -- Information details about the person on-call (all escalation levels of the current time) -- A way to override the current on-call person -- A list of active incidents -- A way to trigger a new incident -- A way to reassign/acknowledge/resolve an incident -- A way to trigger an incident action -- A way to trigger an immediate maintenance -- A way to disable/enable an alert source -- A list of uptime monitors - -## Setup instructions - -Install the plugin: - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-ilert -``` - -Add it to the `EntityPage.tsx`: - -```ts -import { - isPluginApplicableToEntity as isILertAvailable, - EntityILertCard, -} from '@backstage/plugin-ilert'; - -// ... - - - - - - -; -// ... -``` - -> To force an iLert card for each entity just add the `` component. An instruction card will appear if no integration key is set. - -## Add iLert explorer to the app sidebar - -Modify your app routes in [`App.tsx`](https://github.com/backstage/backstage/blob/master/packages/app/src/App.tsx) to include the Router component exported by the plugin - for example: - -```tsx -import { ILertPage } from '@backstage/plugin-ilert'; - - // ... - } /> - // ... -; -``` - -Modify your sidebar in [`Root.tsx`](https://github.com/backstage/backstage/blob/master/packages/app/src/components/Root/Root.tsx) to include the icon component exported by the plugin - for example: - -```tsx -import { ILertIcon } from '@backstage/plugin-ilert'; - - // ... - - // ... -; -``` - -## Client configuration - -If you want to override the default URL for api calls and detail pages, you can add it to `app-config.yaml`. - -In `app-config.yaml`: - -```yaml -ilert: - baseUrl: https://my-org.ilert.com/ -``` - -## Providing the Authorization Header - -In order to make the API calls, you need to provide a new proxy config which will redirect to the [iLert API](https://api.ilert.com/api-docs/) endpoint. It needs an [Authorization Header](https://api.ilert.com/api-docs/#section/Authentication). - -Add the proxy configuration in `app-config.yaml` - -```yaml -proxy: - ... - '/ilert': - target: https://api.ilert.com - allowedMethods: ['GET', 'POST', 'PUT'] - allowedHeaders: ['Authorization'] - headers: - Authorization: ${ILERT_AUTH_HEADER} -``` - -Then start the backend, passing the authorization header (bearer token or basic auth) as environment variable: - -```bash -$ ILERT_AUTH_HEADER='' yarn start -``` - -## Integration Key - -The information displayed for each entity is based on the alert source integration key. - -### Adding the integration key to the entity annotation - -If you want to use this plugin for an entity, you need to label it with the below annotation: - -```yml -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: example - annotations: - ilert.com/integration-key: [INTEGRATION_KEY] -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-ilert` instead. diff --git a/plugins/ilert/package.json b/plugins/ilert/package.json index c4608dceba..f21fdd3cf6 100644 --- a/plugins/ilert/package.json +++ b/plugins/ilert/package.json @@ -3,7 +3,8 @@ "version": "0.2.23", "description": "A Backstage plugin that integrates towards iLert", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-ilert" }, "publishConfig": { "access": "public", @@ -61,5 +62,6 @@ "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-ilert instead." } From 8ee3bcb48c341feefe60eabba820be6a8a50b399 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:48:18 +0200 Subject: [PATCH 37/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466095837.md | 7 + plugins/jenkins-backend/README.md | 256 +-------------------------- plugins/jenkins-backend/package.json | 6 +- plugins/jenkins-common/README.md | 4 +- plugins/jenkins-common/package.json | 6 +- plugins/jenkins/README.md | 136 +------------- plugins/jenkins/package.json | 6 +- 7 files changed, 25 insertions(+), 396 deletions(-) create mode 100644 .changeset/migrate-1713466095837.md diff --git a/.changeset/migrate-1713466095837.md b/.changeset/migrate-1713466095837.md new file mode 100644 index 0000000000..a79280d503 --- /dev/null +++ b/.changeset/migrate-1713466095837.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-jenkins': patch +'@backstage/plugin-jenkins-backend': patch +'@backstage/plugin-jenkins-common': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/jenkins-backend/README.md b/plugins/jenkins-backend/README.md index 4cca86f86d..a31890d880 100644 --- a/plugins/jenkins-backend/README.md +++ b/plugins/jenkins-backend/README.md @@ -1,255 +1,3 @@ -# Jenkins Plugin (Alpha) +# Deprecated -Welcome to the Jenkins backend plugin! Website: [https://jenkins.io/](https://jenkins.io/) - -This is the backend half of the 2 Jenkins plugins and is responsible for: - -- finding an appropriate instance of Jenkins for an entity -- finding the appropriate job(s) on that instance for an entity -- connecting to Jenkins and gathering data to present to the frontend - -## New Backend System - -The jenkins backend plugin has support for the [new backend system](https://backstage.io/docs/backend-system/), here's how you can set that up: - -In your `packages/backend/src/index.ts` make the following changes: - -```diff - import { createBackend } from '@backstage/backend-defaults'; - const backend = createBackend(); - // ... other feature additions - backend.add(import('@backstage/plugin-jenkins-backend')); - backend.start(); -``` - -## Integrating into a backstage instance - -This plugin needs to be added to an existing backstage instance. - -```bash -# From your Backstage root directory -yarn --cwd packages/backend add @backstage/plugin-jenkins-backend -``` - -Typically, this means creating a `src/plugins/jenkins.ts` file and adding a reference to it to `src/index.ts` - -### jenkins.ts - -```typescript -import { - createRouter, - DefaultJenkinsInfoProvider, -} from '@backstage/plugin-jenkins-backend'; -import { CatalogClient } from '@backstage/catalog-client'; -import { Router } from 'express'; -import { PluginEnvironment } from '../types'; - -export default async function createPlugin( - env: PluginEnvironment, -): Promise { - const catalog = new CatalogClient({ - discoveryApi: env.discovery, - }); - - return await createRouter({ - logger: env.logger, - jenkinsInfoProvider: DefaultJenkinsInfoProvider.fromConfig({ - config: env.config, - catalog, - }), - permissions: env.permissions, - }); -} -``` - -### src/index.ts - -```diff -diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts -index f2b14b2..2c64f47 100644 ---- a/packages/backend/src/index.ts -+++ b/packages/backend/src/index.ts -@@ -22,6 +22,7 @@ import { Config } from '@backstage/config'; - import app from './plugins/app'; -+import jenkins from './plugins/jenkins'; - import scaffolder from './plugins/scaffolder'; -@@ -56,6 +57,7 @@ async function main() { - const authEnv = useHotMemoize(module, () => createEnv('auth')); -+ const jenkinsEnv = useHotMemoize(module, () => createEnv('jenkins')); - const proxyEnv = useHotMemoize(module, () => createEnv('proxy')); -@@ -63,6 +65,7 @@ async function main() { - - const apiRouter = Router(); - apiRouter.use('/catalog', await catalog(catalogEnv)); -+ apiRouter.use('/jenkins', await jenkins(jenkinsEnv)); - apiRouter.use('/scaffolder', await scaffolder(scaffolderEnv)); -``` - -This plugin must be provided with a JenkinsInfoProvider, this is a strategy object for finding the Jenkins instance and job for an entity. - -There is a standard one provided, but the Integrator is free to build their own. - -### DefaultJenkinsInfoProvider - -Allows configuration of either a single or multiple global Jenkins instances and annotating entities with the job name on that instance (and optionally the name of the instance). - -#### Example - Single global instance - -The following will look for jobs for this entity at `https://jenkins.example.com/job/teamA/job/artistLookup-build` - -Config - -```yaml -jenkins: - baseUrl: https://jenkins.example.com - username: backstage-bot - apiKey: 123456789abcdef0123456789abcedf012 - # optionally add extra headers - # extraRequestHeaders: - # extra-header: my-value -``` - -Catalog - -```yaml -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: artist-lookup - annotations: - 'jenkins.io/job-full-name': teamA/artistLookup-build -``` - -The old annotation name of `jenkins.io/github-folder` is equivalent to `jenkins.io/job-full-name` - -#### Example - Multiple global instances - -The following will look for jobs for this entity at `https://jenkins-foo.example.com/job/teamA/job/artistLookup-build` - -Config - -```yaml -jenkins: - instances: - - name: default - baseUrl: https://jenkins.example.com - username: backstage-bot - apiKey: 123456789abcdef0123456789abcedf012 - - name: departmentFoo - baseUrl: https://jenkins-foo.example.com - username: backstage-bot - apiKey: 123456789abcdef0123456789abcedf012 -``` - -Catalog - -```yaml -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: artist-lookup - annotations: - 'jenkins.io/job-full-name': departmentFoo:teamA/artistLookup-build -``` - -If the `departmentFoo:` part is omitted, the default instance will be assumed. - -The following config is an equivalent (but less clear) version of the above: - -```yaml -jenkins: - baseUrl: https://jenkins.example.com - username: backstage-bot - apiKey: 123456789abcdef0123456789abcedf012 - instances: - - name: departmentFoo - baseUrl: https://jenkins-foo.example.com - username: backstage-bot - apiKey: 123456789abcdef0123456789abcedf012 -``` - -### Custom JenkinsInfoProvider - -An example of a bespoke JenkinsInfoProvider which uses an organisation specific annotation to look up the Jenkins info (including jobFullName): - -```typescript -class AcmeJenkinsInfoProvider implements JenkinsInfoProvider { - constructor(private readonly catalog: CatalogClient) {} - - async getInstance(opt: { - entityRef: EntityName; - jobFullName?: string; - }): Promise { - const PAAS_ANNOTATION = 'acme.example.com/paas-project-name'; - - // lookup pass-project-name from entity annotation - const entity = await this.catalog.getEntityByRef(opt.entityRef); - if (!entity) { - throw new Error( - `Couldn't find entity with name: ${stringifyEntityRef(opt.entityRef)}`, - ); - } - - const paasProjectName = entity.metadata.annotations?.[PAAS_ANNOTATION]; - if (!paasProjectName) { - throw new Error( - `Couldn't find paas annotation (${PAAS_ANNOTATION}) on entity with name: ${stringifyEntityRef( - opt.entityRef, - )}`, - ); - } - - // lookup department and team for paas project name - const { team, dept } = this.lookupPaasInfo(paasProjectName); - - const baseUrl = `https://jenkins-${dept}.example.com/`; - const jobFullName = `${team}/${paasProjectName}`; - const username = 'backstage-bot'; - const apiKey = this.getJenkinsApiKey(paasProjectName); - const creds = btoa(`${username}:${apiKey}`); - - return { - baseUrl, - headers: { - Authorization: `Basic ${creds}`, - }, - jobFullName, - }; - } - - private lookupPaasInfo(_: string): { team: string; dept: string } { - // Mock implementation, this would get info from the paas system somehow in reality. - return { - team: 'teamA', - dept: 'DepartmentFoo', - }; - } - - private getJenkinsApiKey(_: string): string { - // Mock implementation, this would get info from the paas system somehow in reality. - return '123456789abcdef0123456789abcedf012'; - } -} -``` - -No config would be needed if using this JenkinsInfoProvider - -A Catalog entity of the following will look for jobs for this entity at `https://jenkins-departmentFoo.example.com/job/teamA/job/artistLookupService` - -```yaml -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: artist-lookup - annotations: - 'acme.example.com/paas-project-name': artistLookupService -``` - -## Jenkins' terminology notes - -The domain model for Jenkins is not particularly clear but for the purposes of this plugin the following model has been assumed: - -Jenkins contains a tree of *job*s which have children of either; other *job*s (making it a _folder_) or *build*s (making it a _project_). -Concepts like _pipeline_ and *view*s are meaningless (pipelines are just jobs for our purposes, views are (as the name suggests) just views of subsets of jobs) - -A _job full name_ is a slash separated list of the names of the job, and the folders which contain it. For example `teamA/artistLookupService/develop`, and the same way that a filesystem path has folders and file names. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-jenkins-backend` instead. diff --git a/plugins/jenkins-backend/package.json b/plugins/jenkins-backend/package.json index a074ebb333..6e7d3836ed 100644 --- a/plugins/jenkins-backend/package.json +++ b/plugins/jenkins-backend/package.json @@ -3,7 +3,8 @@ "version": "0.4.4", "description": "A Backstage backend plugin that integrates towards Jenkins", "backstage": { - "role": "backend-plugin" + "role": "backend-plugin", + "moved": "@backstage-community/plugin-jenkins-backend" }, "publishConfig": { "access": "public", @@ -56,5 +57,6 @@ "@types/jenkins": "^1.0.0", "@types/supertest": "^2.0.8" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-jenkins-backend instead." } diff --git a/plugins/jenkins-common/README.md b/plugins/jenkins-common/README.md index 54a79fc287..b22a05247c 100644 --- a/plugins/jenkins-common/README.md +++ b/plugins/jenkins-common/README.md @@ -1,3 +1,3 @@ -# Jenkins Common +# Deprecated -Shared isomorphic code for the Jenkins plugin. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-jenkins-common` instead. diff --git a/plugins/jenkins-common/package.json b/plugins/jenkins-common/package.json index f29dbfe86b..3f90860b7d 100644 --- a/plugins/jenkins-common/package.json +++ b/plugins/jenkins-common/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-jenkins-common", "version": "0.1.25", "backstage": { - "role": "common-library" + "role": "common-library", + "moved": "@backstage-community/plugin-jenkins-common" }, "publishConfig": { "access": "public", @@ -37,5 +38,6 @@ }, "devDependencies": { "@backstage/cli": "workspace:^" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-jenkins-common instead." } diff --git a/plugins/jenkins/README.md b/plugins/jenkins/README.md index bdbe0ac0d9..c7a86e2d03 100644 --- a/plugins/jenkins/README.md +++ b/plugins/jenkins/README.md @@ -1,135 +1,3 @@ -# Jenkins Plugin (Alpha) +# Deprecated -Website: [https://jenkins.io/](https://jenkins.io/) - -Last master build -Folder results -Build details -Job builds records -Modify Table Columns - -## Setup - -1. If you have a standalone app (you didn't clone this repo), then do - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-jenkins -``` - -2. Add and configure the [jenkins-backend](../jenkins-backend) plugin according to it's instructions - -3. Add the `EntityJenkinsContent` extension to the `CI/CD` page and `EntityLatestJenkinsRunCard` to the `overview` page in the app (or wherever you'd prefer): - -Note that if you configured a custom JenkinsInfoProvider in step 2, you may need a custom isJenkinsAvailable. Also if you're transitioning to a new default branch name, you can pass multiple branch names as a comma-separated list and it will check for each branch name. - -```tsx -// In packages/app/src/components/catalog/EntityPage.tsx -import { - EntityJenkinsContent, - EntityLatestJenkinsRunCard, - isJenkinsAvailable, -} from '@backstage/plugin-jenkins'; - -// You can add the tab to any number of pages, the service page is shown as an -// example here -const serviceEntityPage = ( - - - {/* ... */} - - - - - - - {/* ... */} - - - {/* other tabs... */} - - - - - - {/* ... */} - - - {/* ... */} - -); -``` - -4. Run app with `yarn start` -5. Add the Jenkins folder annotation to your `catalog-info.yaml`. - -Currently, this plugin only supports folders and Git SCM. -Note that if you configured a custom JenkinsInfoProvider in step 2, you may need to use a different annotation scheme here - -```yaml -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: 'your-component' - description: 'a description' - annotations: - jenkins.io/github-folder: 'folder-name/project-name' # deprecated - jenkins.io/job-full-name: 'folder-name/project-name' # use this instead - -spec: - type: service - lifecycle: experimental - owner: your-name -``` - -7. Register your component - -8. Click the component in the catalog. You should now see Jenkins builds, and a - last build result for your master build. - -## Features - -- View all runs inside a folder -- Last build status for specified branch -- View summary of a build - -## Limitations - -- Only works with organization folder projects backed by GitHub -- No pagination support currently, limited to 50 projects - don't run this on a - Jenkins instance with lots of builds - -## EntityJobRunsTable - -- View all builds of a particular job -- shows average build time for successful builds - -## Modify Columns of EntityJenkinsContent - -- now you can pass down column props to show the columns/metadata as per your use case. - -```tsx -export const generatedColumns: TableColumn[] = [ - { - title: 'Timestamp', - field: 'lastBuild.timestamp', - render: (row: Partial) => ( - <> - - {` - ${new Date(row.lastBuild?.timestamp).toLocaleDateString()} - ${new Date(row.lastBuild?.timestamp).toLocaleTimeString()} - `} - - - ), - }, -] - -// ... - -// ... -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-jenkins` instead. diff --git a/plugins/jenkins/package.json b/plugins/jenkins/package.json index 3aff7f3c32..2b969243d6 100644 --- a/plugins/jenkins/package.json +++ b/plugins/jenkins/package.json @@ -3,7 +3,8 @@ "version": "0.9.9", "description": "A Backstage plugin that integrates towards Jenkins", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-jenkins" }, "publishConfig": { "access": "public", @@ -62,5 +63,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-jenkins instead." } From 6b580057bc3a6e1a054f073f4a81bbfb4764bfb9 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:48:25 +0200 Subject: [PATCH 38/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466103067.md | 6 ++ plugins/kafka-backend/README.md | 56 +------------ plugins/kafka-backend/package.json | 6 +- plugins/kafka/README.md | 120 +--------------------------- plugins/kafka/package.json | 6 +- 5 files changed, 18 insertions(+), 176 deletions(-) create mode 100644 .changeset/migrate-1713466103067.md diff --git a/.changeset/migrate-1713466103067.md b/.changeset/migrate-1713466103067.md new file mode 100644 index 0000000000..abfada39d6 --- /dev/null +++ b/.changeset/migrate-1713466103067.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-kafka': patch +'@backstage/plugin-kafka-backend': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/kafka-backend/README.md b/plugins/kafka-backend/README.md index 637a5773e0..5d8adb6e93 100644 --- a/plugins/kafka-backend/README.md +++ b/plugins/kafka-backend/README.md @@ -1,55 +1,3 @@ -# Kafka Backend +# Deprecated -This is the backend part of the Kafka plugin. It responds to Kafka requests -from the frontend. - -## Configuration - -This configures how to connect to the brokers in your Kafka cluster. - -### `clientId` - -The name of the client to use when connecting to the cluster. - -### `brokers` - -A list of the brokers' host names and ports to connect to. - -### `ssl` (optional) - -Configure TLS connection to the Kafka cluster. The options are passed directly -to [tls.connect] and used to create the TLS secure context. Normally these -would include `key` and `cert`. - -Example: - -```yaml -kafka: - clientId: backstage - clusters: - - name: prod - brokers: - - localhost:9092 -``` - -### `sasl` (optional) - -Configure SASL authentication for the Kafka client. - -```yaml -kafka: - clientId: backstage - clusters: - - name: prod - brokers: - - my-cluster:9092 - ssl: true - sasl: - mechanism: plain # or 'scram-sha-256' or 'scram-sha-512' - username: my-username - password: my-password -``` - -### ACLs - -If you are using ACLs on Kafka, you will need to have the `DESCRIBE` ACL on both consumer groups and topics. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-kafka-backend` instead. diff --git a/plugins/kafka-backend/package.json b/plugins/kafka-backend/package.json index ea2c531945..7323d9c76c 100644 --- a/plugins/kafka-backend/package.json +++ b/plugins/kafka-backend/package.json @@ -3,7 +3,8 @@ "version": "0.3.15", "description": "A Backstage backend plugin that integrates towards Kafka", "backstage": { - "role": "backend-plugin" + "role": "backend-plugin", + "moved": "@backstage-community/plugin-kafka-backend" }, "publishConfig": { "access": "public" @@ -68,5 +69,6 @@ "jest-when": "^3.1.0", "supertest": "^6.1.3" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-kafka-backend instead." } diff --git a/plugins/kafka/README.md b/plugins/kafka/README.md index 77106baba7..09d2cada11 100644 --- a/plugins/kafka/README.md +++ b/plugins/kafka/README.md @@ -1,119 +1,3 @@ -# Kafka Plugin +# Deprecated - - -## Setup - -1. Run: - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-kafka -yarn --cwd packages/backend add @backstage/plugin-kafka-backend -``` - -2. Add the plugin backend: - -In a new file named `kafka.ts` under `backend/src/plugins`: - -```js -import { createRouter } from '@backstage/plugin-kafka-backend'; -import { Router } from 'express'; -import { PluginEnvironment } from '../types'; - -export default async function createPlugin( - env: PluginEnvironment, -): Promise { - return await createRouter({ - logger: env.logger, - config: env.config, - }); -} -``` - -And then add to `packages/backend/src/index.ts`: - -```js -// In packages/backend/src/index.ts -import kafka from './plugins/kafka'; -// ... -async function main() { - // ... - const kafkaEnv = useHotMemoize(module, () => createEnv('kafka')); - // ... - apiRouter.use('/kafka', await kafka(kafkaEnv)); -``` - -3. Add the plugin as a tab to your service entities: - -```jsx -// In packages/app/src/components/catalog/EntityPage.tsx -import { EntityKafkaContent } from '@backstage/plugin-kafka'; - -const serviceEntityPage = ( - - {/* other tabs... */} - - - -``` - -4. Add broker configs for the backend in your `app-config.yaml` (see - [kafka-backend](https://github.com/backstage/backstage/blob/master/plugins/kafka-backend/README.md) - for more options): - -```yaml -kafka: - clientId: backstage - clusters: - - name: cluster-name - brokers: - - localhost:9092 -``` - -5. Add the `kafka.apache.org/consumer-groups` annotation to your services: - -Can be a comma separated list. - -```yaml -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - # ... - annotations: - kafka.apache.org/consumer-groups: cluster-name/consumer-group-name -spec: - type: service -``` - -6. Configure dashboard urls: - -You have two options. -Either configure it with an annotation called `kafka.apache.org/dashboard-urls` - -```yaml -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - # ... - annotations: - kafka.apache.org/dashboard-urls: cluster-name/consumer-group-name/dashboard-url -spec: - type: service -``` - -> The consumer-group-name is optional. - -or with configs in `app-config.yaml` - -```yaml -kafka: - # ... - clusters: - - name: cluster-name - dashboardUrl: https://dashboard.com -``` - -## Features - -- List topics offsets and consumer group offsets for configured services. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-kafka` instead. diff --git a/plugins/kafka/package.json b/plugins/kafka/package.json index 449648879d..da7965b306 100644 --- a/plugins/kafka/package.json +++ b/plugins/kafka/package.json @@ -3,7 +3,8 @@ "version": "0.3.34", "description": "A Backstage plugin that integrates towards Kafka", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-kafka" }, "publishConfig": { "access": "public", @@ -57,5 +58,6 @@ "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-kafka instead." } From 53346b94ac052cd7a7c2cc56e0be0b2f4bc830f1 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:48:32 +0200 Subject: [PATCH 39/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466110116.md | 7 ++ plugins/lighthouse-backend/README.md | 97 +------------------- plugins/lighthouse-backend/package.json | 6 +- plugins/lighthouse-common/README.md | 4 +- plugins/lighthouse-common/package.json | 6 +- plugins/lighthouse/README.md | 116 +----------------------- plugins/lighthouse/package.json | 6 +- 7 files changed, 25 insertions(+), 217 deletions(-) create mode 100644 .changeset/migrate-1713466110116.md diff --git a/.changeset/migrate-1713466110116.md b/.changeset/migrate-1713466110116.md new file mode 100644 index 0000000000..fcd43006e0 --- /dev/null +++ b/.changeset/migrate-1713466110116.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-lighthouse': patch +'@backstage/plugin-lighthouse-backend': patch +'@backstage/plugin-lighthouse-common': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/lighthouse-backend/README.md b/plugins/lighthouse-backend/README.md index df6c2415d9..c6f9098380 100644 --- a/plugins/lighthouse-backend/README.md +++ b/plugins/lighthouse-backend/README.md @@ -1,96 +1,3 @@ -# Lighthouse Backend +# Deprecated -Lighthouse Backend allows you to run scheduled lighthouse Tests for each Website with the annotation `lighthouse.com/website-url`. - -## Setup - -1. Install the plugin using: - -```bash -# From your Backstage root directory -yarn --cwd packages/backend add @backstage/plugin-lighthouse-backend -``` - -2. Create a `lighthouse.ts` file inside `packages/backend/src/plugins/`: - -```typescript -import { createScheduler } from '@backstage/plugin-lighthouse-backend'; -import { PluginEnvironment } from '../types'; -import { CatalogClient } from '@backstage/catalog-client'; - -export default async function createPlugin(env: PluginEnvironment) { - const { logger, scheduler, config, tokenManager } = env; - - const catalogClient = new CatalogClient({ - discoveryApi: env.discovery, - }); - - await createScheduler({ - logger, - scheduler, - config, - catalogClient, - tokenManager, - }); -} -``` - -3. Modify your `packages/backend/src/index.ts` to include: - -```diff - ... - - import { Config } from '@backstage/config'; - import app from './plugins/app'; -+import lighthouse from './plugins/lighthouse'; - import scaffolder from './plugins/scaffolder'; - - ... - - async function main() { - - ... - - const authEnv = useHotMemoize(module, () => createEnv('auth')); -+ const lighthouseEnv = useHotMemoize(module, () => createEnv('lighthouse')); - const proxyEnv = useHotMemoize(module, () => createEnv('proxy')); - - ... - - const apiRouter = Router(); - apiRouter.use('/catalog', await catalog(catalogEnv)); - apiRouter.use('/scaffolder', await scaffolder(scaffolderEnv)); - -+ await lighthouse(lighthouseEnv) -``` - -#### New Backend System - -The Lighthouse backend plugin has support for the [new backend system](https://backstage.io/docs/backend-system/), here's how you can set that up: - -In your `packages/backend/src/index.ts` make the following changes: - -```diff - import { createBackend } from '@backstage/backend-defaults'; - - const backend = createBackend(); - - // ... other feature additions - -+ backend.add(import('@backstage/plugin-lighthouse-backend')); - - backend.start(); -``` - -## Configuration - -You can define how often and when the scheduler should run the audits: - -```yaml -lighthouse: - schedule: - frequency: - hours: 12 # Default: 1 day - timeout: - minutes: 30 # Default: 10 minutes -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-lighthouse-backend` instead. diff --git a/plugins/lighthouse-backend/package.json b/plugins/lighthouse-backend/package.json index 1f10624a2c..4e34fdc370 100644 --- a/plugins/lighthouse-backend/package.json +++ b/plugins/lighthouse-backend/package.json @@ -3,7 +3,8 @@ "version": "0.4.10", "description": "Backend functionalities for lighthouse", "backstage": { - "role": "backend-plugin" + "role": "backend-plugin", + "moved": "@backstage-community/plugin-lighthouse-backend" }, "publishConfig": { "access": "public", @@ -53,5 +54,6 @@ "devDependencies": { "@backstage/cli": "workspace:^" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-lighthouse-backend instead." } diff --git a/plugins/lighthouse-common/README.md b/plugins/lighthouse-common/README.md index 9ab6d9a86d..ad1a90bf7c 100644 --- a/plugins/lighthouse-common/README.md +++ b/plugins/lighthouse-common/README.md @@ -1,3 +1,3 @@ -# @backstage/plugin-lighthouse-common +# Deprecated -Common types and functionalities for lighthouse, to be shared between lighthouse and lighthouse-backend. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-lighthouse-common` instead. diff --git a/plugins/lighthouse-common/package.json b/plugins/lighthouse-common/package.json index 1c5976f508..b9c5352239 100644 --- a/plugins/lighthouse-common/package.json +++ b/plugins/lighthouse-common/package.json @@ -3,7 +3,8 @@ "version": "0.1.5", "description": "Common functionalities for lighthouse, to be shared between lighthouse and lighthouse-backend plugin", "backstage": { - "role": "common-library" + "role": "common-library", + "moved": "@backstage-community/plugin-lighthouse-common" }, "publishConfig": { "access": "public", @@ -43,5 +44,6 @@ }, "devDependencies": { "@backstage/cli": "workspace:^" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-lighthouse-common instead." } diff --git a/plugins/lighthouse/README.md b/plugins/lighthouse/README.md index ee0e1dfd1d..d229494981 100644 --- a/plugins/lighthouse/README.md +++ b/plugins/lighthouse/README.md @@ -1,115 +1,3 @@ -# @backstage/plugin-lighthouse +# Deprecated -A frontend for [lighthouse-audit-service](https://github.com/spotify/lighthouse-audit-service), this plugin allows you to trigger Lighthouse audits on websites and track them over time. - -## Introduction - -Google's [Lighthouse](https://developers.google.com/web/tools/lighthouse) auditing tool for websites -is a great open-source resource for benchmarking and improving the accessibility, performance, SEO, and best practices of your site. -At Spotify, we keep track of Lighthouse audit scores over time to look at trends and overall areas for investment. - -This plugin allows you to generate on-demand Lighthouse audits for websites, and to track the trends for the -top-level categories of Lighthouse at a glance. - -You can learn more in our blog post [Introducing Lighthouse for Backstage](https://backstage.io/blog/2020/04/06/lighthouse-plugin). - -| List of audits | Specific audit | -| ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| ![Screen shot of the main Lighthouse plugin page](images/lighthouse-page.png) | ![Screen shot of the resulting audit in the Lighthouse plugin](images/audit-view.png) | - -In the future, we hope to add support for scheduling audits (which we do internally), as well as allowing -custom runs of Lighthouse to be ingested (for auditing sites that require authentication or some session state). - -## Getting Started - -To get started, you will need a running instance of [`lighthouse-audit-service`](https://github.com/spotify/lighthouse-audit-service). -_It's likely you will need to [enable CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) to integrate with Backstage, so initialize the `lighthouse-audit-service` with the environment variable `LAS_CORS` set to `true`._ - -When you have an instance running that Backstage can hook into, first install the plugin into your app: - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-lighthouse -``` - -Modify your app routes in `App.tsx` to include the `LighthousePage` component exported from the plugin, for example: - -```tsx -// In packages/app/src/App.tsx -import { LighthousePage } from '@backstage/plugin-lighthouse'; - -const routes = ( - - {/* ...other routes */} - } /> -``` - -Then configure the `lighthouse-audit-service` URL in your [`app-config.yaml`](https://github.com/backstage/backstage/blob/master/app-config.yaml). - -```yaml -backend: - csp: - frame-src: - - http://your-service-url -lighthouse: - baseUrl: http://your-service-url -``` - -## Integration with the Catalog - -The Lighthouse plugin can be integrated into the catalog so that Lighthouse audit information relating to a component -can be displayed within that component's entity page. In order to link an Entity to its Lighthouse audits, the entity -must be annotated as follows: - -```yaml -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - # ... - annotations: - lighthouse.com/website-url: # A single website url e.g. https://backstage.io/ -``` - -> NOTE: The plugin only supports one website URL per component at this time. - -Add a Lighthouse tab to the entity page: - -```tsx -// In packages/app/src/components/catalog/EntityPage.tsx -import { EntityLighthouseContent } from '@backstage/plugin-lighthouse'; - -const websiteEntityPage = ( - - {/* other tabs... */} - - - -``` - -> NOTE: The embedded router renders page content without a header section -> allowing it to be rendered within a catalog plugin page. - -Add a **Lighthouse card** to the overview tab on the EntityPage: - -```tsx -// In packages/app/src/components/catalog/EntityPage.tsx -import { - EntityLastLighthouseAuditCard, - isLighthouseAvailable, -} from '@backstage/plugin-lighthouse'; - -const overviewContent = ( - - {/* ...other content */} - - - - - - - -``` - -## Schedule - -If you want to run automated scheduled runs, you can install the [@backstage/lighthouse-backend](../lighthouse-backend/README.md) plugin +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-lighthouse` instead. diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json index 7605aeb6e1..c0e8d58826 100644 --- a/plugins/lighthouse/package.json +++ b/plugins/lighthouse/package.json @@ -3,7 +3,8 @@ "version": "0.4.19", "description": "A Backstage plugin that integrates towards Lighthouse", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-lighthouse" }, "publishConfig": { "access": "public", @@ -78,5 +79,6 @@ } } } - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-lighthouse instead." } From e5ed00de48f6e368027ff470dcb4539bca643614 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:48:44 +0200 Subject: [PATCH 40/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466117436.md | 5 ++ plugins/microsoft-calendar/README.md | 74 +------------------------ plugins/microsoft-calendar/package.json | 56 ++++++++++--------- 3 files changed, 36 insertions(+), 99 deletions(-) create mode 100644 .changeset/migrate-1713466117436.md diff --git a/.changeset/migrate-1713466117436.md b/.changeset/migrate-1713466117436.md new file mode 100644 index 0000000000..d29e71be3f --- /dev/null +++ b/.changeset/migrate-1713466117436.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-microsoft-calendar': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/microsoft-calendar/README.md b/plugins/microsoft-calendar/README.md index f5ba17bde3..c5ab92af7f 100644 --- a/plugins/microsoft-calendar/README.md +++ b/plugins/microsoft-calendar/README.md @@ -1,73 +1,3 @@ -# Microsoft-Calendar Plugin +# Deprecated -This plugin is contributed by [StatusNeo](https://statusneo.com/) - -## Features - -1. You can switch between calendars, using the select menu on the calendar card header. -2. Card showing the list of events on the selected date and the selected calendar (provided by Outlook calendar). -3. Link to join the online meeting on the event card if provided. so you can join your meetings right away hassle-free. -4. Hovering over the event will pop over a card showing the event summary message, and list of attendees. -5. attendee's chips will have a badge over them symbolizing their responses. - - green --> accepted - - red --> declined - - nothing --> not responded yet - -## Setup - -The following sections will help you set up the Microsoft calendar plugin. - -### Microsoft azure authentication provider - -> You need to setup [Microsoft Azure authentication provider](https://backstage.io/docs/auth/microsoft/provider), before you move forward with any of the below step if you haven't already. - -1. Install the plugin by running this command - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-microsoft-calendar -``` - -2. Import the Microsoft calendar React component from `@backstage/plugin-microsoft-calendar`. -3. You can then use the provided React component `MicrosoftCalendar` in the backstage frontend where ever you want - -```tsx -import { MicrosoftCalendarCard } from '@backstage/plugin-microsoft-calendar'; - -// ... - - -; -// ... -``` - -If your homepage is not static JSX add `microsoftCalendarApiRef` to the App's `apis.ts`: - -```ts -import { - MicrosoftCalendarApiClient, - microsoftCalendarApiRef, -} from '@backstage/plugin-microsoft-calendar'; -import { - // ... - fetchApiRef, - // ... -} from '@backstage/core-plugin-api'; - -export const apis = [ - // ... - createApiFactory({ - api: microsoftCalendarApiRef, - deps: { authApi: microsoftAuthApiRef, fetchApi: fetchApiRef }, - factory: deps => new MicrosoftCalendarApiClient(deps), - }), -]; -``` - -![Microsoft Calendar plugin demo](https://user-images.githubusercontent.com/23618736/215717491-25db5fa6-b237-487f-8c00-28f572e8da05.mp4) - -![Sample](./docs/microsoft-calendar-plugin.png) - -You can also serve the plugin in isolation by running `yarn start` in the plugin directory. -This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. -It is only meant for local development, and the setup for it can be found inside the [/dev](./dev) directory. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-microsoft-calendar` instead. diff --git a/plugins/microsoft-calendar/package.json b/plugins/microsoft-calendar/package.json index fcd655252b..93c8df235d 100644 --- a/plugins/microsoft-calendar/package.json +++ b/plugins/microsoft-calendar/package.json @@ -1,51 +1,55 @@ { "name": "@backstage/plugin-microsoft-calendar", "version": "0.1.16", - "main": "src/index.ts", - "types": "src/index.ts", - "license": "Apache-2.0", + "backstage": { + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-microsoft-calendar" + }, "publishConfig": { "access": "public", "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, - "backstage": { - "role": "frontend-plugin" - }, "homepage": "https://backstage.io", "repository": { "type": "git", "url": "https://github.com/backstage/backstage", "directory": "plugins/microsoft-calendar" }, + "license": "Apache-2.0", "author": { "name": "Statusneo", "email": "reach@statusneo.com", "url": "https://statusneo.com/" }, - "contributors": [ - { - "email": "abhaysoni.developer@gmail.com", - "url": "https://github.com/Abhay-soni-developer", - "name": "abhaysoni" - } - ], "maintainers": [ { + "name": "abhaysoni", "email": "abhaysoni.developer@gmail.com", - "url": "https://github.com/Abhay-soni-developer", - "name": "abhaysoni" + "url": "https://github.com/Abhay-soni-developer" + } + ], + "contributors": [ + { + "name": "abhaysoni", + "email": "abhaysoni.developer@gmail.com", + "url": "https://github.com/Abhay-soni-developer" } ], "sideEffects": false, + "main": "src/index.ts", + "types": "src/index.ts", + "files": [ + "dist" + ], "scripts": { - "start": "backstage-cli package start", "build": "backstage-cli package build", - "lint": "backstage-cli package lint", - "test": "backstage-cli package test", "clean": "backstage-cli package clean", + "lint": "backstage-cli package lint", "prepack": "backstage-cli package prepack", - "postpack": "backstage-cli package postpack" + "postpack": "backstage-cli package postpack", + "start": "backstage-cli package start", + "test": "backstage-cli package test" }, "dependencies": { "@backstage/core-components": "workspace:^", @@ -63,11 +67,6 @@ "material-ui-popup-state": "^1.9.3", "react-use": "^17.2.4" }, - "peerDependencies": { - "react": "^16.13.1 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", - "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - }, "devDependencies": { "@backstage/cli": "workspace:^", "@backstage/dev-utils": "workspace:^", @@ -75,7 +74,10 @@ "@testing-library/jest-dom": "^6.0.0", "@testing-library/react": "^15.0.0" }, - "files": [ - "dist" - ] + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", + "react-router-dom": "6.0.0-beta.0 || ^6.3.0" + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-microsoft-calendar instead." } From c9faa0bf427e50f831d73c8b08e40772d7fa83d2 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:48:51 +0200 Subject: [PATCH 41/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466129151.md | 6 ++ plugins/newrelic-dashboard/README.md | 80 +----------------- plugins/newrelic-dashboard/package.json | 6 +- plugins/newrelic/README.md | 106 +----------------------- plugins/newrelic/package.json | 6 +- 5 files changed, 18 insertions(+), 186 deletions(-) create mode 100644 .changeset/migrate-1713466129151.md diff --git a/.changeset/migrate-1713466129151.md b/.changeset/migrate-1713466129151.md new file mode 100644 index 0000000000..bf130e6b8e --- /dev/null +++ b/.changeset/migrate-1713466129151.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-newrelic': patch +'@backstage/plugin-newrelic-dashboard': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/newrelic-dashboard/README.md b/plugins/newrelic-dashboard/README.md index a31042b3fe..f0a83f5a27 100644 --- a/plugins/newrelic-dashboard/README.md +++ b/plugins/newrelic-dashboard/README.md @@ -1,79 +1,3 @@ -# New Relic Dashboard Plugin +# Deprecated -Welcome to the newrelic-dashboard plugin! - -## Features - -- Adds New Relic Dashboard Pages Links to Overview section of the catalog -- Shows Snapshots of dashboards in New Relic - -## Getting started - -This plugin uses the Backstage proxy to securely communicate with New Relic's APIs. We use NerdGraph (New Relic's GraphQL API) - -To generate a New Relic API Key , you can visit this [link](https://one.newrelic.com/launcher/api-keys-ui.api-keys-launcher) - -1. Add the following to your app-config.yaml to enable this configuration: - -``` -// app-config.yaml -proxy: - '/newrelic/api': - target: https://api.newrelic.com - headers: - X-Api-Key: ${NEW_RELIC_USER_KEY} -``` - -2. Add the following to `EntityPage.tsx` to display New Relic Dashboard Tab - -``` -// In packages/app/src/components/catalog/EntityPage.tsx -import { - isNewRelicDashboardAvailable, - EntityNewRelicDashboardContent, - EntityNewRelicDashboardCard, -} from '@backstage/plugin-newrelic-dashboard'; - -const serviceEntityPage = ( - - {/* other tabs... */} - - - -``` - -3. Add the following in `EntityPage.tsx` to display dashboard links in overview page - -``` -const overviewContent = ( - {/* other tabs... */} - - - - - - - -``` - -4. Add `newrelic.com/dashboard-guid` annotation in catalog descriptor file - -To Obtain the dashboard's GUID: Click the info icon by the dashboard's name to access the See metadata and manage tags modal and see the dashboard's GUID. - -``` -// catalog-info.yaml -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - # ... - annotations: - newrelic.com/dashboard-guid: -spec: - type: service -``` - -All set , you will be able to see the plugin in action! +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-newrelic-dashboard` instead. diff --git a/plugins/newrelic-dashboard/package.json b/plugins/newrelic-dashboard/package.json index a1105c37c3..ba6f0685e9 100644 --- a/plugins/newrelic-dashboard/package.json +++ b/plugins/newrelic-dashboard/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-newrelic-dashboard", "version": "0.3.9", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-newrelic-dashboard" }, "publishConfig": { "access": "public", @@ -52,5 +53,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-newrelic-dashboard instead." } diff --git a/plugins/newrelic/README.md b/plugins/newrelic/README.md index 14e2c0005d..b7148b00c2 100644 --- a/plugins/newrelic/README.md +++ b/plugins/newrelic/README.md @@ -1,105 +1,3 @@ -# New Relic Plugin (Alpha) +# Deprecated -Website: [https://newrelic.com](https://newrelic.com) - -New Relic Plugin APM -New Relic Plugin Tools - -## Getting Started - -This plugin uses the Backstage proxy to securely communicate with New Relic's -APIs. - -1. Add the following to your `app-config.yaml` to enable this configuration: - - ```yaml - proxy: - '/newrelic/apm/api': - target: https://api.newrelic.com/v2 - headers: - X-Api-Key: ${NEW_RELIC_REST_API_KEY} - allowedHeaders: - - link - ``` - - There is some types of api key on new relic, to this use must be `User` type of key, In your production deployment of Backstage, you would also need to ensure that - you've set the `NEW_RELIC_REST_API_KEY` environment variable before starting - the backend. - - While working locally, you may wish to hard-code your API key in your - `app-config.local.yaml` like this: - - ```yaml - # app-config.local.yaml - proxy: - '/newrelic/apm/api': - headers: - X-Api-Key: NRRA-YourActualApiKey - allowedHeaders: - - link - ``` - - Read more about how to find or generate this key in - [New Relic's Documentation](https://docs.newrelic.com/docs/apis/get-started/intro-apis/types-new-relic-api-keys#rest-api-key). - - See if it's working by visiting the New Relic Plugin Path: - [/newrelic](http://localhost:3000/newrelic) - -2. Add a dependency to your `packages/app/package.json`: - ```sh - # From your Backstage root directory - yarn --cwd packages/app add @backstage/plugin-newrelic - ``` -3. Add the `NewRelicPage` to your `packages/app/src/App.tsx`: - - ```tsx - - … - } /> - - ``` - -4. Add link to New Relic to your sidebar - - ```typescript - // packages/app/src/components/Root/Root.tsx - import ExtensionIcon from '@material-ui/icons/ExtensionOutlined'; - - ... - - export const Root = ({ children }: PropsWithChildren<{}>) => ( - - - ... - - ... - - - ); - - ``` - -5. Navigate to your.domain.com/newrelic. - - At this step you must be able to see a page like that - New Relic Plugin APM - -## Features - -- View New Relic Application Performance Monitoring (APM) data such as: - - Application Name - - Response Time (ms) - - Throughput (rpm) - - Error Rate - - Instance Count - - Apdex Score - -## Limitations - -- Currently only supports New Relic APM data - ---- - -You can also serve the plugin in isolation by running `yarn start` in the plugin directory. -This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. -It is only meant for local development, and the setup for it can be found inside the [/dev](./dev) directory. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-newrelic` instead. diff --git a/plugins/newrelic/package.json b/plugins/newrelic/package.json index 4619a2b8c1..0dff93362c 100644 --- a/plugins/newrelic/package.json +++ b/plugins/newrelic/package.json @@ -3,7 +3,8 @@ "version": "0.3.49", "description": "A Backstage plugin that integrates towards New Relic", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-newrelic" }, "publishConfig": { "access": "public", @@ -59,5 +60,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-newrelic instead." } From 9c7e19ea951c62461cd43593255bd85b83e84385 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:49:01 +0200 Subject: [PATCH 42/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466136342.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/migrate-1713466136342.md diff --git a/.changeset/migrate-1713466136342.md b/.changeset/migrate-1713466136342.md new file mode 100644 index 0000000000..c57b69218f --- /dev/null +++ b/.changeset/migrate-1713466136342.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-newrelic-dashboard': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. From b241ad093b6a2eb916768242e9b6faab26e7283f Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:49:10 +0200 Subject: [PATCH 43/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466146663.md | 5 ++ plugins/octopus-deploy/README.md | 135 +--------------------------- plugins/octopus-deploy/package.json | 6 +- 3 files changed, 11 insertions(+), 135 deletions(-) create mode 100644 .changeset/migrate-1713466146663.md diff --git a/.changeset/migrate-1713466146663.md b/.changeset/migrate-1713466146663.md new file mode 100644 index 0000000000..8f83f146a1 --- /dev/null +++ b/.changeset/migrate-1713466146663.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-octopus-deploy': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/octopus-deploy/README.md b/plugins/octopus-deploy/README.md index 745a1793e8..521d940afe 100644 --- a/plugins/octopus-deploy/README.md +++ b/plugins/octopus-deploy/README.md @@ -1,134 +1,3 @@ -# Octopus Deploy Plugin +# Deprecated -Welcome to the octopus-deploy plugin! - -## Features - -- Display the deployment status of the most recent releases for a project in Octopus Deploy straight from the Backstage catalog - -## Getting started - -### Installing - -To get started, first install the plugin with the following command: - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-octopus-deploy -``` - -### Setup - -This plugin (currently) uses the Backstage proxy to securely communicate with the Octopus Deploy API. - -To use it, you will need to generate an [API Key](https://octopus.com/docs/octopus-rest-api/how-to-create-an-api-key) within Octopus Deploy. - -Add the following to your app-config.yaml to enable the proxy: - -``` -// app-config.yaml -proxy: - endpoints: - '/octopus-deploy': - target: 'https:///api' - headers: - X-Octopus-ApiKey: ${OCTOPUS_API_KEY} -``` - -Optionally, also add the following section to your app-config.yaml if you wish to enable linking to the Project Release page in the Octopus Deploy UI from the footer of the Backstage Release Table. Typically this will be the server URL above without the /api postfix. - -``` -octopusdeploy: - webBaseUrl: "" -``` - -#### Adding the Entities - -Add the following to `EntityPage.tsx` to display Octopus Releases - -``` -// In packages/app/src/components/catalog/EntityPage.tsx -import { - isOctopusDeployAvailable, - EntityOctopusDeployContent -} from '@backstage/plugin-octopus-deploy'; - -const cicdContent = ( - - {/* other components... */} - - - - -) -``` - -Add `octopus.com/project-id` annotation in the catalog descriptor file. - -To obtain a projects ID you will have to query the Octopus API. In the future we'll add support for using a projects slug as well. - -``` -// catalog-info.yaml -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - # ... - annotations: - octopus.com/project-id: Projects-102 -spec: - type: service -``` - -If your project is not part of the default space you can add the space ID to the annotation as a prefix. For example: - -``` -// catalog-info.yaml -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - # ... - annotations: - octopus.com/project-id: Spaces-2/Projects-102 -spec: - type: service -``` - -You can get the ID of the space from the URL in the Octopus Deploy UI. - -All set, you will be able to see the plugin in action! - -### Adding Scaffolder field extensions - -To add the Octopus Deploy custom fields extensions, add the following to your `App.tsx`: - -```tsx -// In packages/app/src/App.tsx -import { OctopusDeployDropdownFieldExtension } from '@backstage/plugin-octopus-deploy'; -const routes = ( - - ... - }> - - - - - ... - -``` - -To use the Octopus Deploy custom field extensions, add the following to your `template.yaml`: - -```yaml -# In the template.yaml -apiVersion: scaffolder.backstage.io/v1beta3 -kind: Template -metadata: - # ... - parameters: - - title: Octopus Project Group - properties: - projectName: - title: Octopus Project Group - type: string - ui:field: OctopusDeployProjectGroupDropdown -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-octopus-deploy` instead. diff --git a/plugins/octopus-deploy/package.json b/plugins/octopus-deploy/package.json index 336c487a42..3fffb0ef45 100644 --- a/plugins/octopus-deploy/package.json +++ b/plugins/octopus-deploy/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-octopus-deploy", "version": "0.2.16", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-octopus-deploy" }, "publishConfig": { "access": "public", @@ -54,5 +55,6 @@ "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-octopus-deploy instead." } From 5cb829bb79509c4c0b4e6806837ffe2184625feb Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:49:17 +0200 Subject: [PATCH 44/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466155177.md | 5 ++ plugins/opencost/README.md | 80 +---------------------------- plugins/opencost/package.json | 6 ++- 3 files changed, 11 insertions(+), 80 deletions(-) create mode 100644 .changeset/migrate-1713466155177.md diff --git a/.changeset/migrate-1713466155177.md b/.changeset/migrate-1713466155177.md new file mode 100644 index 0000000000..ae85338d4b --- /dev/null +++ b/.changeset/migrate-1713466155177.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-opencost': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/opencost/README.md b/plugins/opencost/README.md index 1dec15dcc1..d25046aad3 100644 --- a/plugins/opencost/README.md +++ b/plugins/opencost/README.md @@ -1,79 +1,3 @@ -# OpenCost +# Deprecated -Welcome to the [OpenCost](https://opencost.io) plugin! - -Currently this is a port of the [OpenCost UI](https://github.com/opencost/opencost/tree/develop/ui), but we will continue to expand it to expose any relevant data or pre-configured views that may be preferred. - -All of the code was originally ported from https://github.com/opencost/opencost/blob/develop/ui/ which is under by the Apache v2 License and also managed by the CNCF. - -## Installation - -1. Add the OpenCost dependency to the `packages/app/package.json`: - ```sh - # From your Backstage root directory - yarn --cwd packages/app add @backstage/plugin-opencost - ``` -2. Add the `OpenCostPage` to your `packages/app/src/App.tsx`: - - ```tsx - import { OpenCostPage } from '@backstage/plugin-opencost'; - ``` - -and - - ```tsx - - … - } /> - - ``` - -3. Import the `MoneyIcon` and add link to OpenCost to your sidebar - - ```typescript - // packages/app/src/components/Root/Root.tsx - import MoneyIcon from '@material-ui/icons/MonetizationOn'; - - ... - - export const Root = ({ children }: PropsWithChildren<{}>) => ( - - - ... - - ... - - - ); - - ``` - -## Plugin Configuration - -Since OpenCost doesn't have any authentication at this point, you just need to give API access to the plugin to access your data. - -If you haven't set up an ingress rule, you can port-forward the API with - -``` -kubectl -n opencost port-forward deployment/opencost 9003 -``` - -Add the following to your `app-config.yaml`: - -```yaml -opencost: - baseUrl: http://localhost:9003 -``` - -## Ideas/Next Steps - -- More testing -- Use the OpenCost mascot for the sidebar logo -- Use the Backstage proxy to communicate with the OpenCost API if necessary for authentication -- Convert AllocationReport.js to use the [Backstage Table](https://backstage.io/storybook/?path=/story/data-display-table--default-table) -- Allow for user-provided default reports and/or disabling controls -- Support multiple hard-coded reports -- clean up deprecation warnings and upgrade to all the latest React components -- Fork(?) to support `Kubecost`, which could provide Alerts and Recommendations, similar to the Cost Explorer plugin - -![Screenshot](screenshot.png) +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-opencost` instead. diff --git a/plugins/opencost/package.json b/plugins/opencost/package.json index b66dd827e8..6afa76ac04 100644 --- a/plugins/opencost/package.json +++ b/plugins/opencost/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-opencost", "version": "0.2.9", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-opencost" }, "publishConfig": { "access": "public", @@ -54,5 +55,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "*" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-opencost instead." } From 64164776a0697e5ea7586d610dd1d6f652797b6b Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:49:24 +0200 Subject: [PATCH 45/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466162074.md | 6 +++ plugins/org-react/README.md | 32 +-------------- plugins/org-react/package.json | 6 ++- plugins/org/README.md | 62 +---------------------------- plugins/org/package.json | 6 ++- 5 files changed, 18 insertions(+), 94 deletions(-) create mode 100644 .changeset/migrate-1713466162074.md diff --git a/.changeset/migrate-1713466162074.md b/.changeset/migrate-1713466162074.md new file mode 100644 index 0000000000..a23aa24226 --- /dev/null +++ b/.changeset/migrate-1713466162074.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-org': patch +'@backstage/plugin-org-react': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/org-react/README.md b/plugins/org-react/README.md index 1f87a5e7e6..e406877e66 100644 --- a/plugins/org-react/README.md +++ b/plugins/org-react/README.md @@ -1,31 +1,3 @@ -# org-react +# Deprecated -## features - -- Group list picker component - -### GroupListPicker - -The `GroupListPicker` component displays a select box which also has autocomplete functionality. - -To use the `GroupListPicker` component you'll need to import it and add it to your desired place. - -```diff -+ import { GroupListPicker } from '@backstage/plugin-org-react'; -+ import React, { useState } from 'react'; - -+ const [group, setGroup] = useState(); - - - -+ - - -``` - -The `GroupListPicker` comes with four props: - -- `groupTypes`: gives the user the option which group types the component should load. If no value is provided all group types will be loaded in; -- `placeholder`: the placeholder that the select box in the component should display. This might be helpful in informing your users what the functionality of the component is. -- `onChange`: a prop to help the user to give access to the selected group -- `defaultValue`: gives the user the option to define a default value that will be shown initially before making a selection +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-org-react` instead. diff --git a/plugins/org-react/package.json b/plugins/org-react/package.json index b56d916e89..801d7f187f 100644 --- a/plugins/org-react/package.json +++ b/plugins/org-react/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-org-react", "version": "0.1.23", "backstage": { - "role": "web-library" + "role": "web-library", + "moved": "@backstage-community/plugin-org-react" }, "publishConfig": { "access": "public", @@ -59,5 +60,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-org-react instead." } diff --git a/plugins/org/README.md b/plugins/org/README.md index 9cf165f06d..c3ec43c7e3 100644 --- a/plugins/org/README.md +++ b/plugins/org/README.md @@ -1,61 +1,3 @@ -# Org Plugin for Backstage +# Deprecated -> Disclaimer: -> If you are looking for documentation on the experimental new frontend system support, please go [here](./README-alpha.md). - -## Features - -- Show Group Page -- Show User Profile -- Quick access to Groups - -### Group Page - -Here's an example of what the Group Page looks like: - -![Group Page example](./docs/group-page-example.png) - -### User Profile - -Here's an example of what the User Profile looks like: - -![Group Page example](./docs/user-profile-example.png) - -### MyGroupsSidebarItem - -The MyGroupsSidebarItem provides quick access to the group(s) the logged in user is a member of directly in the sidebar. - -To use the MyGroupsSidebarItem you'll need to add it to your `Root.tsx` - found at `packages\app\src\components\Root` - like this: - -```diff -+ import { MyGroupsSidebarItem } from '@backstage/plugin-org'; -+ import GroupIcon from '@material-ui/icons/People'; - - - - //... - }> - {/* Global nav, not org-specific */} - //... - -+ - //... - - - -``` - -Once added MyGroupsSidebarItem will work in three ways: - -1. The user is not logged in or the logged in user is not a member of any group: the MyGroupsSidebarItem will not display anything in the sidebar -2. The user is logged in and a member of only one group: the MyGroupsSidebarItem will display a single item in the sidebar like this: - - ![MyGroupsSidebarItem single example](./docs/mygroupssidebaritem-single.png) - -3. The user is logged in and a member of more than one group: the MyGroupsSidebarItem will display a single items with a sub-menu with all the related groups like this: - - ![MyGroupsSidebarItem multiple example](./docs/mygroupssidebaritem-multiple.png) +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-org` instead. diff --git a/plugins/org/package.json b/plugins/org/package.json index 173495d846..54b248a4b8 100644 --- a/plugins/org/package.json +++ b/plugins/org/package.json @@ -3,7 +3,8 @@ "version": "0.6.24", "description": "A Backstage plugin that helps you create entity pages for your organization", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-org" }, "publishConfig": { "access": "public" @@ -82,5 +83,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-org instead." } From 7c756da97cff00d5d08bd6b7f795cc43129c8b66 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:49:31 +0200 Subject: [PATCH 46/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466169253.md | 6 +++ plugins/periskop-backend/README.md | 6 +-- plugins/periskop-backend/package.json | 6 ++- plugins/periskop/README.md | 67 +-------------------------- plugins/periskop/package.json | 6 ++- 5 files changed, 18 insertions(+), 73 deletions(-) create mode 100644 .changeset/migrate-1713466169253.md diff --git a/.changeset/migrate-1713466169253.md b/.changeset/migrate-1713466169253.md new file mode 100644 index 0000000000..06de197773 --- /dev/null +++ b/.changeset/migrate-1713466169253.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-periskop': patch +'@backstage/plugin-periskop-backend': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/periskop-backend/README.md b/plugins/periskop-backend/README.md index 02552fe5b4..8697d58fb3 100644 --- a/plugins/periskop-backend/README.md +++ b/plugins/periskop-backend/README.md @@ -1,5 +1,3 @@ -# periskop-backend +# Deprecated -Simple plugin that proxies requests to the Periskop server APIs. - -To be used with the [Periskop plugin](../periskop/README.md). +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-periskop-backend` instead. diff --git a/plugins/periskop-backend/package.json b/plugins/periskop-backend/package.json index 2bc5c1773d..c49f2e324e 100644 --- a/plugins/periskop-backend/package.json +++ b/plugins/periskop-backend/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-periskop-backend", "version": "0.2.15", "backstage": { - "role": "backend-plugin" + "role": "backend-plugin", + "moved": "@backstage-community/plugin-periskop-backend" }, "publishConfig": { "access": "public" @@ -58,5 +59,6 @@ "@backstage/cli": "workspace:^", "@types/supertest": "^2.0.8", "supertest": "^6.1.6" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-periskop-backend instead." } diff --git a/plugins/periskop/README.md b/plugins/periskop/README.md index 85bced7c1b..f61eef8db7 100644 --- a/plugins/periskop/README.md +++ b/plugins/periskop/README.md @@ -1,66 +1,3 @@ -# periskop +# Deprecated -[Periskop](https://periskop.io/) is a pull-based, language agnostic exception aggregator for microservice environments. - -![periskop-logo](https://i.imgur.com/z8BLePO.png) - -## Periskop aggregated errors - -The Periskop Backstage Plugin exposes a component named `EntityPeriskopErrorsCard`. -Each of the entries in the table will direct you to the error details in your deployed Periskop instance location. - -![periskop-errors-card](./docs/periskop-plugin-screenshot.png) - -## Setup - -1. Configure the [periskop backend plugin](https://github.com/backstage/backstage/tree/master/plugins/periskop-backend/) - -2. Install the plugin by running: - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-periskop -``` - -3. Add to the app `EntityPage` component: - -```tsx -// In packages/app/src/components/catalog/EntityPage.tsx -import { EntityPeriskopErrorsCard } from '@backstage/plugin-periskop'; - -const componentPage = ( - - {/* other tabs... */} - - - - - - - -``` - -4. [Setup the `app-config.yaml`](#instances) `periskop` block - -5. Annotate entities with the periskop service name - -```yaml -annotations: - periskop.io/service-name: '' -``` - -6. Run app with `yarn start` and navigate to `/periskop` or a catalog entity 'Periskop' tab - -### Instances - -The periskop plugin can be configured to fetch aggregated errors from multiple deployment instances. -This is especially useful if you have a multi-zone deployment, or a federated setup and would like to drill deeper into a single instance of the federation. Each of the configured instances will be included in the plugin's UI via a dropdown on the errors table. - -The plugin requires to configure _at least one_ Periskop API location in the [app-config.yaml](https://github.com/backstage/backstage/blob/master/app-config.yaml): - -```yaml -periskop: - instances: - - name: - url: -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-periskop` instead. diff --git a/plugins/periskop/package.json b/plugins/periskop/package.json index 1ab1ad729c..a758f3bce9 100644 --- a/plugins/periskop/package.json +++ b/plugins/periskop/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-periskop", "version": "0.1.32", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-periskop" }, "publishConfig": { "access": "public", @@ -55,5 +56,6 @@ "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-periskop instead." } From ed7d7c0fcf786ef4a900116dda7428ca500b5784 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:49:38 +0200 Subject: [PATCH 47/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466176492.md | 7 + plugins/playlist-backend/README.md | 105 +------------- plugins/playlist-backend/package.json | 6 +- plugins/playlist-common/README.md | 4 +- plugins/playlist-common/package.json | 6 +- plugins/playlist/README.md | 193 +------------------------- plugins/playlist/package.json | 6 +- 7 files changed, 25 insertions(+), 302 deletions(-) create mode 100644 .changeset/migrate-1713466176492.md diff --git a/.changeset/migrate-1713466176492.md b/.changeset/migrate-1713466176492.md new file mode 100644 index 0000000000..bf9103a530 --- /dev/null +++ b/.changeset/migrate-1713466176492.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-playlist': patch +'@backstage/plugin-playlist-backend': patch +'@backstage/plugin-playlist-common': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/playlist-backend/README.md b/plugins/playlist-backend/README.md index d4474e2331..f8c66335a4 100644 --- a/plugins/playlist-backend/README.md +++ b/plugins/playlist-backend/README.md @@ -1,104 +1,3 @@ -# Playlist Backend +# Deprecated -Welcome to the playlist backend plugin! - -## Installation - -### Install the package - -```bash -# From your Backstage root directory -yarn --cwd packages/backend add @backstage/plugin-playlist-backend -``` - -### Adding the plugin to your `packages/backend` - -You'll need to add the plugin to the router in your `backend` package. You can do this by creating a file called `packages/backend/src/plugins/playlist.ts` - -```tsx -import { createRouter } from '@backstage/plugin-playlist-backend'; -import { Router } from 'express'; -import { PluginEnvironment } from '../types'; - -export default async function createPlugin( - env: PluginEnvironment, -): Promise { - return await createRouter({ - database: env.database, - discovery: env.discovery, - identity: env.identity, - logger: env.logger, - permissions: env.permissions, - }); -} -``` - -With the `playlist.ts` router setup in place, add the router to `packages/backend/src/index.ts`: - -```diff -+import playlist from './plugins/playlist'; - -async function main() { - ... - const createEnv = makeCreateEnv(config); - - const catalogEnv = useHotMemoize(module, () => createEnv('catalog')); -+ const playlistEnv = useHotMemoize(module, () => createEnv('playlist')); - - const apiRouter = Router(); -+ apiRouter.use('/playlist', await playlist(playlistEnv)); - ... - apiRouter.use(notFoundHandler()); - -``` - -## Setting up plugin permissions - -You configure permissions for specific playlist actions by importing the supported set of permissions from the [playlist-common](../playlist-common/README.md) package along with the custom rules/conditions provided here to incorporate into your [permission policy](https://backstage.io/docs/permissions/writing-a-policy). - -This package also exports a `DefaultPlaylistPermissionPolicy` which contains a recommended default permissions policy you can apply as a "sub-policy" in your app: - -```diff -# packages/backend/src/plugins/permission.ts - -+import { DefaultPlaylistPermissionPolicy, isPlaylistPermission } from '@backstage/plugin-playlist-backend'; -... -class BackstagePermissionPolicy implements PermissionPolicy { -+ private playlistPermissionPolicy = new DefaultPlaylistPermissionPolicy(); - - async handle( - request: PolicyQuery, - user?: BackstageIdentityResponse, - ): Promise { -+ if (isPlaylistPermission(request.permission)) { -+ return this.playlistPermissionPolicy.handle(request, user); -+ } - ... - } -} - -export default async function createPlugin(env: PluginEnvironment): Promise { - return await createRouter({ - config: env.config, - logger: env.logger, - discovery: env.discovery, - policy: new BackstagePermissionPolicy(), - ... -``` - -### New Backend System - -The Playlist backend plugin has support for the [new backend system](https://backstage.io/docs/backend-system/), here's how you can set that up: - -In your `packages/backend/src/index.ts` make the following changes: - -```diff -import { createBackend } from '@backstage/backend-defaults'; - -const backend = createBackend(); - -backend.add(import('@backstage/plugin-playlist-backend')); -// ... other feature additions - -backend.start(); -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-playlist-backend` instead. diff --git a/plugins/playlist-backend/package.json b/plugins/playlist-backend/package.json index aaf8e0a2c8..06be21964e 100644 --- a/plugins/playlist-backend/package.json +++ b/plugins/playlist-backend/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-playlist-backend", "version": "0.3.21", "backstage": { - "role": "backend-plugin" + "role": "backend-plugin", + "moved": "@backstage-community/plugin-playlist-backend" }, "publishConfig": { "access": "public", @@ -56,5 +57,6 @@ "@backstage/cli": "workspace:^", "@types/supertest": "^2.0.8", "supertest": "^6.1.3" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-playlist-backend instead." } diff --git a/plugins/playlist-common/README.md b/plugins/playlist-common/README.md index 72f502386c..8bbf2d49da 100644 --- a/plugins/playlist-common/README.md +++ b/plugins/playlist-common/README.md @@ -1,3 +1,3 @@ -# Playlist Common +# Deprecated -Common functionalities, types, and permissions for the playlist plugin. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-playlist-common` instead. diff --git a/plugins/playlist-common/package.json b/plugins/playlist-common/package.json index 093586da31..08c9440eb7 100644 --- a/plugins/playlist-common/package.json +++ b/plugins/playlist-common/package.json @@ -3,7 +3,8 @@ "version": "0.1.15", "description": "Common functionalities for the playlist plugin", "backstage": { - "role": "common-library" + "role": "common-library", + "moved": "@backstage-community/plugin-playlist-common" }, "publishConfig": { "access": "public", @@ -37,5 +38,6 @@ }, "devDependencies": { "@backstage/cli": "workspace:^" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-playlist-common instead." } diff --git a/plugins/playlist/README.md b/plugins/playlist/README.md index d326bcdedb..f745919785 100644 --- a/plugins/playlist/README.md +++ b/plugins/playlist/README.md @@ -1,192 +1,3 @@ -# Playlist Plugin +# Deprecated -Welcome to the playlist plugin! - -This plugin allows you to create, share, and follow custom collections of entities available in the Backstage catalog. - -## Setup - -The following sections will help you get the Playlist plugin setup and running - -### Backend - -You need to setup the [Playlist backend plugin](https://github.com/backstage/backstage/tree/master/plugins/playlist-backend) before you move forward with any of these steps if you haven't already - -### Installation - -Install this plugin: - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-playlist -``` - -### Add the plugin to your `packages/app` - -Add the pages that the playlist plugin provides to your app. You can -choose any base path for the route, but we recommend the following: - -```diff -// packages/app/src/App.tsx -+import { PlaylistIndexPage, PlaylistPage } from '@backstage/plugin-playlist'; - - - - } /> - }> - {entityPage} - -+ } /> -+ } /> - ... - -``` - -You may also want to add a link to the playlist page to your application sidebar: - -```diff -// packages/app/src/components/Root/Root.tsx -+import PlaylistPlayIcon from '@material-ui/icons/PlaylistPlay'; - -export const Root = ({ children }: PropsWithChildren<{}>) => ( - - -+ - ... - -``` - -### Entity Pages - -You can also make the following changes to add the playlist context menu to your `EntityPage.tsx` -to be able to add entities to playlists directly from your entity pages: - -First we need to add the following imports: - -```ts -import { EntityPlaylistDialog } from '@backstage/plugin-playlist'; -import PlaylistAddIcon from '@material-ui/icons/PlaylistAdd'; -``` - -Next we'll update the React import that looks like this: - -```ts -import React from 'react'; -``` - -To look like this: - -```ts -import React, { ReactNode, useMemo, useState } from 'react'; -``` - -Then we have to add this chunk of code after all the imports but before any of the other code: - -```ts -const EntityLayoutWrapper = (props: { children?: ReactNode }) => { - const [playlistDialogOpen, setPlaylistDialogOpen] = useState(false); - - const extraMenuItems = useMemo(() => { - return [ - { - title: 'Add to playlist', - Icon: PlaylistAddIcon, - onClick: () => setPlaylistDialogOpen(true), - }, - ]; - }, []); - - return ( - <> - - {props.children} - - setPlaylistDialogOpen(false)} - /> - - ); -}; -``` - -The last step is to wrap all the entity pages in the `EntityLayoutWrapper` like this: - -```diff -const defaultEntityPage = ( -+ - - {overviewContent} - - - - - - - - - -+ -); -``` - -Note: the above only shows an example for the `defaultEntityPage` for a full example of this you can look at [this EntityPage](../../packages/app/src/components/catalog/EntityPage.tsx) - -## Custom Title - -You can define a custom title to be shown in all the components of this plugin to replace the default term "playlist" in the UI. To do this you just need to add some config in your **app-config.yaml**, here's an example: - -```yaml -playlist: - title: Collection -``` - -## Custom Index Page - -You can customize your playlist index page by composing your own implementation. See the [`DefaultPlaylistIndexPage`](./src/components/PlaylistIndexPage/DefaultPlaylistIndexPage.tsx) for a reference of what components are available from the default setup. - -```ts -- } /> -+ }> -+ -+ - } /> -``` - -## Features - -### View All Playlists - -![View all playlists example](./docs/playlist-view-all.png) - -### View Playlist - -![View Playlist example](./docs/playlist-view-single.png) - -### Create New Playlist - -![Create New Playlist example](./docs/playlist-create-new.png) - -### Duplicate Playlist Error - -![Duplicate Playlist Error example](./docs/playlist-duplicate-error.png) - -### Edit Existing Playlist - -![Edit Existing Playlist example](./docs/playlist-edit-existing.png) - -### Add Entities to Playlist - -![Add Entities to Playlist example](./docs/playlist-add-entities.png) - -### Add to Playlist from Entity - -![Add to Playlist from Entity example](./docs/playlist-add-from-entity.png) - -### Delete Playlist - -![Delete Playlist example](./docs/playlist-delete.png) - -## Links - -- [playlist-backend](../playlist-backend) provides the backend API for this frontend. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-playlist` instead. diff --git a/plugins/playlist/package.json b/plugins/playlist/package.json index 8fa8682f17..aca822f63e 100644 --- a/plugins/playlist/package.json +++ b/plugins/playlist/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-playlist", "version": "0.2.8", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-playlist" }, "publishConfig": { "access": "public", @@ -70,5 +71,6 @@ "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-playlist instead." } From 8ad4b4c34c192d33eee984ceb81c7ec4fe59d972 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:49:46 +0200 Subject: [PATCH 48/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466183571.md | 5 +++ plugins/puppetdb/README.md | 64 +---------------------------- plugins/puppetdb/package.json | 6 ++- 3 files changed, 11 insertions(+), 64 deletions(-) create mode 100644 .changeset/migrate-1713466183571.md diff --git a/.changeset/migrate-1713466183571.md b/.changeset/migrate-1713466183571.md new file mode 100644 index 0000000000..eab8ace070 --- /dev/null +++ b/.changeset/migrate-1713466183571.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-puppetdb': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/puppetdb/README.md b/plugins/puppetdb/README.md index c4fa06b874..2107d6ca6e 100644 --- a/plugins/puppetdb/README.md +++ b/plugins/puppetdb/README.md @@ -1,63 +1,3 @@ -# PuppetDB Plugin +# Deprecated -A frontend plugin to integrate PuppetDB with Backstage. When combined with the -[catalog-backend-module-puppetdb](https://github.com/backstage/backstage/blob/master/plugins/catalog-backend-module-puppetdb/README.md) plugin, this -frontend plugin allows viewing PuppetDB reports, including their logs and events, of Backstage resource entities. - -## Getting started - -### Prerequisites - -To get started, you need a running instance of PuppetDB. You can find instructions on how to install it -[here](https://www.puppet.com/docs/puppetdb/7/install_via_module.html). -The PuppetDB [should be configured](https://www.puppet.com/docs/puppetdb/7/configure.html#host) to allow being accessed from your Backstage instance. - -In addition, your Backstage instance need to either have -[catalog-backend-module-puppetdb](https://github.com/backstage/backstage/blob/master/plugins/catalog-backend-module-puppetdb/README.md) plugin installed -or you need to ensure your Resource entities have `puppet.com/certname` annotation set to the PuppetDB node name in some other way. - -### Installation - -1. Install the plugin with `yarn` in the root of your Backstage application directory: - -```bash -yarn --cwd packages/app add @backstage/plugin-puppetdb -``` - -1. Import and use the plugin in `packages/app/src/App.tsx`: - -```tsx -import { PuppetDbPage } from '@backstage/plugin-puppetdb'; - -const routes = ( - - {/* ...other routes */} - } /> - -); -``` - -### Configuration - -1. Configure `puppetdb` proxy. As this plugin uses the Backstage proxy to securely communicate with PuppetDB API, - add the following to your `app-config.yaml` to enable this configuration: - -```yaml -proxy: - '/puppetdb': - target: https://your.puppetdb.instance.com -``` - -## Screenshots - -#### Main page with the reports list: - -![Reports list](https://raw.githubusercontent.com/backstage/backstage/42b65232e763d3e39e2e641b105d2ad469db7a59/plugins/puppetdb/assets/Reports.png) - -#### Events for the specific report: - -![Events](https://raw.githubusercontent.com/backstage/backstage/1b39e86db17f139dc995f02daca4896533e53eb0/plugins/puppetdb/assets/Events.png) - -#### Logs of the specific report: - -![Logs](https://raw.githubusercontent.com/backstage/backstage/1b39e86db17f139dc995f02daca4896533e53eb0/plugins/puppetdb/assets/Logs.png) +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-puppetdb` instead. diff --git a/plugins/puppetdb/package.json b/plugins/puppetdb/package.json index 5d65129e09..1407dcb2a6 100644 --- a/plugins/puppetdb/package.json +++ b/plugins/puppetdb/package.json @@ -3,7 +3,8 @@ "version": "0.1.17", "description": "Backstage plugin to visualize resource information and Puppet facts from PuppetDB.", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-puppetdb" }, "publishConfig": { "access": "public", @@ -60,5 +61,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-puppetdb instead." } From 8d8e7219528fa00cba14deecd8df963b3669c85b Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:49:53 +0200 Subject: [PATCH 49/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466190774.md | 6 +++ plugins/rollbar-backend/README.md | 73 +--------------------------- plugins/rollbar-backend/package.json | 6 ++- plugins/rollbar/README.md | 67 +------------------------ plugins/rollbar/package.json | 6 ++- 5 files changed, 18 insertions(+), 140 deletions(-) create mode 100644 .changeset/migrate-1713466190774.md diff --git a/.changeset/migrate-1713466190774.md b/.changeset/migrate-1713466190774.md new file mode 100644 index 0000000000..4f95905cf2 --- /dev/null +++ b/.changeset/migrate-1713466190774.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-rollbar': patch +'@backstage/plugin-rollbar-backend': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/rollbar-backend/README.md b/plugins/rollbar-backend/README.md index 1f5977f5df..22414c3a9d 100644 --- a/plugins/rollbar-backend/README.md +++ b/plugins/rollbar-backend/README.md @@ -1,72 +1,3 @@ -# Rollbar Backend +# Deprecated -Simple plugin that proxies requests to the [Rollbar](https://rollbar.com) API. - -## Setup - -1. Install the plugin using: - -```bash -# From your Backstage root directory -yarn --cwd packages/backend add @backstage/plugin-rollbar-backend -``` - -2. Create a `rollbar.ts` file inside `packages/backend/src/plugins/`: - -```typescript -import { createRouter } from '@backstage/plugin-rollbar-backend'; -import { Router } from 'express'; -import { PluginEnvironment } from '../types'; - -export default async function createPlugin( - env: PluginEnvironment, -): Promise { - return await createRouter({ - logger: env.logger, - config: env.config, - }); -} -``` - -3. Modify your `packages/backend/src/index.ts` to include: - -```diff - ... - - import { Config } from '@backstage/config'; - import app from './plugins/app'; -+import rollbar from './plugins/rollbar'; - import scaffolder from './plugins/scaffolder'; - - ... - - async function main() { - - ... - - const authEnv = useHotMemoize(module, () => createEnv('auth')); -+ const rollbarEnv = useHotMemoize(module, () => createEnv('rollbar')); - const proxyEnv = useHotMemoize(module, () => createEnv('proxy')); - - ... - - const apiRouter = Router(); - apiRouter.use('/catalog', await catalog(catalogEnv)); -+ apiRouter.use('/rollbar', await rollbar(rollbarEnv)); - apiRouter.use('/scaffolder', await scaffolder(scaffolderEnv)); -``` - -The following values are read from the configuration file. - -```yaml -rollbar: - accountToken: ${ROLLBAR_ACCOUNT_TOKEN} -``` - -_NOTE: The `ROLLBAR_ACCOUNT_TOKEN` environment variable must be set to a read -access account token._ - -## Links - -- [Frontend part of the plugin](https://github.com/backstage/backstage/tree/master/plugins/rollbar) -- [The Backstage homepage](https://backstage.io) +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-rollbar-backend` instead. diff --git a/plugins/rollbar-backend/package.json b/plugins/rollbar-backend/package.json index 4a2d07623f..c7efcccfb1 100644 --- a/plugins/rollbar-backend/package.json +++ b/plugins/rollbar-backend/package.json @@ -3,7 +3,8 @@ "version": "0.1.62", "description": "A Backstage backend plugin that integrates towards Rollbar", "backstage": { - "role": "backend-plugin" + "role": "backend-plugin", + "moved": "@backstage-community/plugin-rollbar-backend" }, "publishConfig": { "access": "public", @@ -58,5 +59,6 @@ "msw": "^1.0.0", "supertest": "^6.1.3" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-rollbar-backend instead." } diff --git a/plugins/rollbar/README.md b/plugins/rollbar/README.md index 2b1fb7e40d..44b53bc789 100644 --- a/plugins/rollbar/README.md +++ b/plugins/rollbar/README.md @@ -1,66 +1,3 @@ -# Rollbar Plugin +# Deprecated -Website: [https://rollbar.com/](https://rollbar.com/) - -## Setup - -1. Configure the [rollbar backend plugin](https://github.com/backstage/backstage/tree/master/plugins/rollbar-backend/README.md) - -2. If you have standalone app (you didn't clone this repo), then do - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-rollbar -``` - -3. Add to the app `EntityPage` component: - -```tsx -// In packages/app/src/components/catalog/EntityPage.tsx -import { EntityRollbarContent } from '@backstage/plugin-rollbar'; - -const serviceEntityPage = ( - - {/* other tabs... */} - - - -``` - -4. Setup the `app-config.yaml` and account token environment variable - -```yaml -# app.config.yaml -rollbar: - organization: organization-name - # used by rollbar-backend - accountToken: ${ROLLBAR_ACCOUNT_TOKEN} -``` - -5. Annotate entities with the rollbar project slug - -```yaml -# pump-station-catalog-component.yaml -# ... -metadata: - annotations: - rollbar.com/project-slug: organization-name/project-name - # -- or just --- - rollbar.com/project-slug: project-name -``` - -6. Run app with `yarn start` and navigate to `/rollbar` or a catalog entity - -## Features - -- List rollbar entities that are annotated with `rollbar.com/project-slug` -- View top active items for each rollbar annotated entity - -## Limitations - -- Rollbar has rate limits per token - -## Links - -- [Backend part of the plugin](https://github.com/backstage/backstage/tree/master/plugins/rollbar-backend) -- [The Backstage homepage](https://backstage.io) +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-rollbar` instead. diff --git a/plugins/rollbar/package.json b/plugins/rollbar/package.json index 263eb41d05..f89dda5620 100644 --- a/plugins/rollbar/package.json +++ b/plugins/rollbar/package.json @@ -3,7 +3,8 @@ "version": "0.4.34", "description": "A Backstage plugin that integrates towards Rollbar", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-rollbar" }, "publishConfig": { "access": "public", @@ -62,5 +63,6 @@ "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-rollbar instead." } From 7cd92e1c34f64c36609c8be4c8e6bce8c8acf18c Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:50:00 +0200 Subject: [PATCH 50/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466197726.md | 5 ++ plugins/sentry/README.md | 104 +--------------------------- plugins/sentry/package.json | 6 +- 3 files changed, 11 insertions(+), 104 deletions(-) create mode 100644 .changeset/migrate-1713466197726.md diff --git a/.changeset/migrate-1713466197726.md b/.changeset/migrate-1713466197726.md new file mode 100644 index 0000000000..ab70d3e27c --- /dev/null +++ b/.changeset/migrate-1713466197726.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-sentry': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/sentry/README.md b/plugins/sentry/README.md index 78f31952b2..2443369cae 100644 --- a/plugins/sentry/README.md +++ b/plugins/sentry/README.md @@ -1,103 +1,3 @@ -# Sentry Plugin +# Deprecated -The Sentry Plugin displays issues from [Sentry](https://sentry.io). - -![Sentry Card](./docs/sentry-card.png) - -## Getting Started - -1. Install the Sentry Plugin: - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-sentry -``` - -2. Add the `EntitySentryCard` to the EntityPage: - -```jsx -// packages/app/src/components/catalog/EntityPage.tsx - -import { EntitySentryCard } from '@backstage/plugin-sentry'; - -const overviewContent = ( - - // ... - - - - // ... - -); -``` - -> You can also import the full-page `EntitySentryContent` extension if you want to have a dedicated sentry page: -> -> ```tsx -> // packages/app/src/components/catalog/EntityPage.tsx -> -> import { EntitySentryContent } from '@backstage/plugin-sentry'; -> -> const serviceEntityPage = ( -> -> // ... -> -> -> -> // ... -> -> ); -> ``` - -3. Add the proxy config: - -```yaml -# app-config.yaml - -proxy: - '/sentry/api': - target: https://sentry.io/api/ - allowedMethods: ['GET'] - headers: - Authorization: Bearer ${SENTRY_TOKEN} - -sentry: - organization: -``` - -4. Create a new internal integration with the permissions `Issues & Events: Read` (https://docs.sentry.io/product/integrations/integration-platform/) and provide it as `SENTRY_TOKEN` as env variable. - -5. Add the `sentry.io/project-slug` annotation to your catalog-info.yaml file: - -```yaml -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: backstage - description: | - Backstage is an open-source developer portal that puts the developer experience first. - annotations: - sentry.io/project-slug: YOUR_PROJECT_SLUG -spec: - type: library - owner: CNCF - lifecycle: experimental -``` - -### Demo Mode - -The plugin provides a MockAPI that always returns dummy data instead of talking to the sentry backend. -You can add it by overriding the `sentryApiRef`: - -```ts -// packages/app/src/apis.ts - -import { createApiFactory } from '@backstage/core-plugin-api'; -import { MockSentryApi, sentryApiRef } from '@backstage/plugin-sentry'; - -export const apis = [ - // ... - - createApiFactory(sentryApiRef, new MockSentryApi()), -]; -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-sentry` instead. diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json index 77ad095c19..b511a49b17 100644 --- a/plugins/sentry/package.json +++ b/plugins/sentry/package.json @@ -3,7 +3,8 @@ "version": "0.5.19", "description": "A Backstage plugin that integrates towards Sentry", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-sentry" }, "publishConfig": { "access": "public", @@ -64,5 +65,6 @@ "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-sentry instead." } From a3f2522771613689bd833d6244bdd1cc7dca0a41 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:50:07 +0200 Subject: [PATCH 51/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466204983.md | 5 ++ plugins/shortcuts/README.md | 96 +---------------------------- plugins/shortcuts/package.json | 6 +- 3 files changed, 11 insertions(+), 96 deletions(-) create mode 100644 .changeset/migrate-1713466204983.md diff --git a/.changeset/migrate-1713466204983.md b/.changeset/migrate-1713466204983.md new file mode 100644 index 0000000000..b2c8f467ea --- /dev/null +++ b/.changeset/migrate-1713466204983.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-shortcuts': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/shortcuts/README.md b/plugins/shortcuts/README.md index 18deb7ae37..752b88a92c 100644 --- a/plugins/shortcuts/README.md +++ b/plugins/shortcuts/README.md @@ -1,95 +1,3 @@ -# shortcuts +# Deprecated -The shortcuts plugin allows a user to have easy access to pages within a Backstage app by storing them as "shortcuts" in the Sidebar. - -## Usage - -### Install the package: - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-shortcuts -``` - -### Register plugin: - -This plugin requires explicit registration, so you will need to add it to your App's `plugins.ts` file: - -```ts -// ... -export { shortcutsPlugin } from '@backstage/plugin-shortcuts'; -``` - -If you don't have a `plugins.ts` file see: [troubleshooting](#troubleshooting) - -### Add the `` component within your ``: - -Edit file `packages/app/src/components/Root/Root.tsx` - -```tsx -import { - Sidebar, - SidebarDivider, - SidebarSpace, -} from '@backstage/core-components'; -import { Shortcuts } from '@backstage/plugin-shortcuts'; - -export const SidebarComponent = () => ( - - {/* ... */} - - - - -); -``` - -To allow external links to be added as shortcut, you can add `allowExternalLinks` property to the `` component. - -The plugin exports a `shortcutApiRef` but the plugin includes a default implementation of the `ShortcutApi` that uses `localStorage` to store each user's shortcuts. - -To overwrite the default implementation add it to the App's `apis.ts`: - -```ts -import { shortcutsApiRef } from '@backstage/plugin-shortcuts'; -import { CustomShortcutsImpl } from '...'; - -export const apis = [ - // ... - createApiFactory({ - api: shortcutsApiRef, - deps: {}, - factory: () => new CustomShortcutsImpl(), - }), -]; -``` - -# Troubleshooting - -If you don't have a `plugins.ts` file, you can create it with the path `packages/app/src/plugins.ts` and then import it into your `App.tsx`: - -```diff -+ import * as plugins from './plugins'; - -const app = createApp({ - apis, -+ plugins: Object.values(plugins), - bindRoutes({ bind }) { - /* ... */ - }, -}); -``` - -Or simply edit `App.tsx` with: - -```diff -+ import { shortcutsPlugin } from '@backstage/plugin-shortcuts - -const app = createApp({ - apis, -+ plugins: [shortcutsPlugin], - bindRoutes({ bind }) { - /* ... */ - }, -}); -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-shortcuts` instead. diff --git a/plugins/shortcuts/package.json b/plugins/shortcuts/package.json index 745ae3fe28..7d16a2bf03 100644 --- a/plugins/shortcuts/package.json +++ b/plugins/shortcuts/package.json @@ -3,7 +3,8 @@ "version": "0.3.23", "description": "A Backstage plugin that provides a shortcuts feature to the sidebar", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-shortcuts" }, "publishConfig": { "access": "public", @@ -58,5 +59,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-shortcuts instead." } From a5b7218de4ae89f22bb5993d35434537defd9338 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:50:14 +0200 Subject: [PATCH 52/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466212008.md | 7 + plugins/sonarqube-backend/README.md | 186 +------------------------ plugins/sonarqube-backend/package.json | 6 +- plugins/sonarqube-react/README.md | 3 + plugins/sonarqube-react/package.json | 6 +- plugins/sonarqube/README.md | 65 +-------- plugins/sonarqube/package.json | 6 +- 7 files changed, 26 insertions(+), 253 deletions(-) create mode 100644 .changeset/migrate-1713466212008.md create mode 100644 plugins/sonarqube-react/README.md diff --git a/.changeset/migrate-1713466212008.md b/.changeset/migrate-1713466212008.md new file mode 100644 index 0000000000..bd0cc9e76a --- /dev/null +++ b/.changeset/migrate-1713466212008.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-sonarqube': patch +'@backstage/plugin-sonarqube-backend': patch +'@backstage/plugin-sonarqube-react': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/sonarqube-backend/README.md b/plugins/sonarqube-backend/README.md index 6206cd8257..224fb087b5 100644 --- a/plugins/sonarqube-backend/README.md +++ b/plugins/sonarqube-backend/README.md @@ -1,185 +1,3 @@ -# sonarqube-backend +# Deprecated -Welcome to the sonarqube-backend backend plugin! - -## New Backend System - -The Sonarqube backend plugin has support for the [new backend system](https://backstage.io/docs/backend-system/), here's how you can set that up: - -In your `packages/backend/src/index.ts` make the following changes: - -```diff - import { createBackend } from '@backstage/backend-defaults'; - const backend = createBackend(); - // ... other feature additions -+ backend.add(import('@backstage/plugin-sonarqube-backend')); - backend.start(); -``` - -## Integrating into a backstage instance - -This plugin needs to be added to an existing backstage instance. - -```bash -# From your Backstage root directory -yarn --cwd packages/backend add @backstage/plugin-sonarqube-backend -``` - -Typically, this means creating a `src/plugins/sonarqube.ts` file and adding a reference to it to `src/index.ts` in the backend package. - -### sonarqube.ts - -```typescript -import { - createRouter, - DefaultSonarqubeInfoProvider, -} from '@backstage/plugin-sonarqube-backend'; -import { Router } from 'express'; -import { PluginEnvironment } from '../types'; - -export default async function createPlugin( - env: PluginEnvironment, -): Promise { - return await createRouter({ - logger: env.logger, - sonarqubeInfoProvider: DefaultSonarqubeInfoProvider.fromConfig(env.config), - }); -} -``` - -### src/index.ts - -```diff -diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts -index 1942c36ad1..7fdc48ba24 100644 ---- a/packages/backend/src/index.ts -+++ b/packages/backend/src/index.ts -@@ -50,6 +50,7 @@ import scaffolder from './plugins/scaffolder'; - import proxy from './plugins/proxy'; - import search from './plugins/search'; - import techdocs from './plugins/techdocs'; -+import sonarqube from './plugins/sonarqube'; - import techInsights from './plugins/techInsights'; - import todo from './plugins/todo'; - import graphql from './plugins/graphql'; -@@ -133,6 +134,7 @@ async function main() { - createEnv('tech-insights'), - ); - const permissionEnv = useHotMemoize(module, () => createEnv('permission')); -+ const sonarqubeEnv = useHotMemoize(module, () => createEnv('sonarqube')); - - const apiRouter = Router(); - apiRouter.use('/catalog', await catalog(catalogEnv)); -@@ -152,6 +154,7 @@ async function main() { - apiRouter.use('/badges', await badges(badgesEnv)); - apiRouter.use('/jenkins', await jenkins(jenkinsEnv)); - apiRouter.use('/permission', await permission(permissionEnv)); -+ apiRouter.use('/sonarqube', await sonarqube(sonarqubeEnv)); - apiRouter.use(notFoundHandler()); - - const service = createServiceBuilder(module) - -``` - -This plugin must be provided with a `SonarqubeInfoProvider`, this is a strategy object for finding Sonarqube instances in configuration and retrieving data from an instance. - -There is a standard one provided (`DefaultSonarqubeInfoProvider`), but the Integrator is free to build their own. - -### DefaultSonarqubeInfoProvider - -Allows configuration of either a single or multiple global Sonarqube instances and annotating entities with the instance name. This instance name in the entities is optional, if not provided the default instance in configuration will be used. That allow to keep configuration from before multiple instances capability to keep working without changes. - -#### Example - Single global instance - -##### Config - -```yaml -sonarqube: - baseUrl: https://sonarqube.example.com - apiKey: 123456789abcdef0123456789abcedf012 -``` - -##### Catalog - -```yaml -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: backstage - annotations: - sonarqube.org/project-key: YOUR_INSTANCE_NAME/YOUR_PROJECT_KEY -``` - -#### Example - Multiple global instance - -The following will look for findings at `https://special-project-sonarqube.example.com` for the project of key `YOUR_PROJECT_KEY`. - -##### Config - -```yaml -sonarqube: - instances: - - name: default - baseUrl: https://default-sonarqube.example.com - apiKey: 123456789abcdef0123456789abcedf012 - - name: specialProject - baseUrl: https://special-project-sonarqube.example.com - apiKey: abcdef0123456789abcedf0123456789ab -``` - -##### Catalog - -```yaml -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: backstage - annotations: - sonarqube.org/project-key: specialProject/YOUR_PROJECT_KEY -``` - -If the `specialProject/` part is omitted (or replaced with `default/`), the Sonarqube instance of name `default` will be used. - -The following config is an equivalent (but less clear) version of the above: - -```yaml -sonarqube: - baseUrl: https://default-sonarqube.example.com - apiKey: 123456789abcdef0123456789abcedf012 - instances: - - name: specialProject - baseUrl: https://special-project-sonarqube.example.com - apiKey: abcdef0123456789abcedf0123456789ab -``` - -#### Example - Different frontend and backend URLs - -In some instances, you might want to use one URL for the backend and another for the frontend. -This can be achieved by using the optional `externalBaseUrl` property in the config. - -##### Single instance config - -```yaml -sonarqube: - baseUrl: https://sonarqube-internal.example.com - externalBaseUrl: https://sonarqube.example.com - apiKey: 123456789abcdef0123456789abcedf012 -``` - -##### Multiple instance config - -```yaml -sonarqube: - instances: - - name: default - baseUrl: https://default-sonarqube-internal.example.com - externalBaseUrl: https://default-sonarqube.example.com - apiKey: 123456789abcdef0123456789abcedf012 - - name: specialProject - baseUrl: https://special-project-sonarqube.example.com - apiKey: abcdef0123456789abcedf0123456789ab -``` - -## Links - -- [Sonarqube Frontend](../sonarqube/README.md) +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-sonarqube-backend` instead. diff --git a/plugins/sonarqube-backend/package.json b/plugins/sonarqube-backend/package.json index 2189484d37..3ec57b7582 100644 --- a/plugins/sonarqube-backend/package.json +++ b/plugins/sonarqube-backend/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-sonarqube-backend", "version": "0.2.19", "backstage": { - "role": "backend-plugin" + "role": "backend-plugin", + "moved": "@backstage-community/plugin-sonarqube-backend" }, "publishConfig": { "access": "public", @@ -49,5 +50,6 @@ "msw": "^1.0.0", "supertest": "^6.2.4" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-sonarqube-backend instead." } diff --git a/plugins/sonarqube-react/README.md b/plugins/sonarqube-react/README.md new file mode 100644 index 0000000000..1e0cf041dd --- /dev/null +++ b/plugins/sonarqube-react/README.md @@ -0,0 +1,3 @@ +# Deprecated + +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-sonarqube-react` instead. diff --git a/plugins/sonarqube-react/package.json b/plugins/sonarqube-react/package.json index d0335b1fe2..37506598b0 100644 --- a/plugins/sonarqube-react/package.json +++ b/plugins/sonarqube-react/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-sonarqube-react", "version": "0.1.15", "backstage": { - "role": "web-library" + "role": "web-library", + "moved": "@backstage-community/plugin-sonarqube-react" }, "publishConfig": { "access": "public" @@ -56,5 +57,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-sonarqube-react instead." } diff --git a/plugins/sonarqube/README.md b/plugins/sonarqube/README.md index 9d3bc701f9..343d61b15c 100644 --- a/plugins/sonarqube/README.md +++ b/plugins/sonarqube/README.md @@ -1,64 +1,3 @@ -# SonarQube Plugin +# Deprecated -The SonarQube Plugin displays code statistics from [SonarCloud](https://sonarcloud.io) or [SonarQube](https://sonarqube.com). - -![Sonar Card](./docs/sonar-card.png) - -## Getting Started - -1. Install the SonarQube Plugin: - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-sonarqube -``` - -2. Add the `EntitySonarQubeCard` to the EntityPage: - -```diff - // packages/app/src/components/catalog/EntityPage.tsx -+ import { EntitySonarQubeCard } from '@backstage/plugin-sonarqube'; - - ... - - const overviewContent = ( - - - - -+ -+ -+ - - ); -``` - -3. Run the following commands in the root folder of the project to install and compile the changes. - -```yaml -yarn install -yarn tsc -``` - -4. Add the `sonarqube.org/project-key` annotation to the `catalog-info.yaml` file of the target repo for which code quality analysis is needed. - -```yaml -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: backstage - description: | - Backstage is an open-source developer portal that puts the developer experience first. - annotations: - sonarqube.org/project-key: YOUR_INSTANCE_NAME/YOUR_PROJECT_KEY -spec: - type: library - owner: CNCF - lifecycle: experimental -``` - -`YOUR_INSTANCE_NAME/` is optional and will query the default instance if not provided. - -## Links - -- [Sonarqube Backend](../sonarqube-backend/README.md) +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-sonarqube` instead. diff --git a/plugins/sonarqube/package.json b/plugins/sonarqube/package.json index 7f1835b6a3..483accb57a 100644 --- a/plugins/sonarqube/package.json +++ b/plugins/sonarqube/package.json @@ -3,7 +3,8 @@ "version": "0.7.16", "description": "", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-sonarqube" }, "publishConfig": { "access": "public", @@ -69,5 +70,6 @@ "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-sonarqube instead." } From 7409696ccd68fbb0244adeb7a988f9a156efc295 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:50:21 +0200 Subject: [PATCH 53/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466219338.md | 5 + plugins/splunk-on-call/README.md | 156 +--------------------------- plugins/splunk-on-call/package.json | 6 +- 3 files changed, 11 insertions(+), 156 deletions(-) create mode 100644 .changeset/migrate-1713466219338.md diff --git a/.changeset/migrate-1713466219338.md b/.changeset/migrate-1713466219338.md new file mode 100644 index 0000000000..df513ee739 --- /dev/null +++ b/.changeset/migrate-1713466219338.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-splunk-on-call': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/splunk-on-call/README.md b/plugins/splunk-on-call/README.md index ceeec2fa4c..3910e1d759 100644 --- a/plugins/splunk-on-call/README.md +++ b/plugins/splunk-on-call/README.md @@ -1,155 +1,3 @@ -# Splunk On-Call +# Deprecated -## Overview - -This plugin displays Splunk On-Call (formerly VictorOps) information associated with an entity. - -It also provides the ability to trigger new incidents to specific users and/or specific teams from within Backstage. - -This plugin requires that entities feature either a `splunk.com/on-call-team` or a `splunk.com/on-call-routing-key` annotation. See below for further details. - -This plugin provides: - -- A list of incidents -- A way to trigger a new incident to specific users and/or teams -- A way to acknowledge/resolve an incident -- Information details about the persons on-call - -## Setup instructions - -Install the plugin: - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-splunk-on-call -``` - -Add it to your `EntityPage`: - -```ts -// packages/app/src/components/catalog/EntityPage.tsx -import { - isSplunkOnCallAvailable, - EntitySplunkOnCallCard, -} from '@backstage/plugin-splunk-on-call'; -// ... -const overviewContent = ( - - - - - - - - -``` - -### `readOnly` mode - -To suppress the rendering of the actionable create-acknowledge-resolve incident buttons and UI controls, the `EntitySplunkOnCallCard` can also be instantiated in `readOnly` mode: - -```ts - -``` - -## Client configuration - -In order to be able to perform certain actions (create-acknowledge-resolve an action), you need to provide a REST Endpoint. - -To enable the REST Endpoint integration you can go on https://portal.victorops.com/ inside Integrations > 3rd Party Integrations > REST – Generic. -You can now copy the URL to notify: `/$routing_key` - -In `app-config.yaml`: - -```yaml -splunkOnCall: - eventsRestEndpoint: -``` - -In order to make the API calls, you need to provide a new proxy config which will redirect to the Splunk On-Call API endpoint and add authentication information in the headers: - -```yaml -# app-config.yaml -proxy: - # ... - '/splunk-on-call': - target: https://api.victorops.com/api-public - headers: - X-VO-Api-Id: ${SPLUNK_ON_CALL_API_ID} - X-VO-Api-Key: ${SPLUNK_ON_CALL_API_KEY} -``` - -In addition, to make certain API calls (trigger-resolve-acknowledge an incident) you need to add the `PATCH` method to the backend `cors` methods list: `[GET, POST, PUT, DELETE, PATCH]`. - -**WARNING**: In current implementation, the Splunk OnCall plugin requires the `/splunk-on-call` proxy endpoint be exposed by the Backstage backend as an unprotected endpoint, in effect enabling Splunk OnCall API access using the configured `SPLUNK_ON_CALL_API_KEY` for any user or process with access to the `/splunk-on-call` Backstage backend endpoint. See below for further configuration options enabling protection of this endpoint. If you regard this as problematic, consider using the plugin in `readOnly` mode (``) using the following proxy configuration: - -```yaml -proxy: - '/splunk-on-call': - target: https://api.victorops.com/api-public - headers: - X-VO-Api-Id: ${SPLUNK_ON_CALL_API_ID} - X-VO-Api-Key: ${SPLUNK_ON_CALL_API_KEY} - # prohibit the `/splunk-on-call` proxy endpoint from servicing non-GET requests - allowedMethods: ['GET'] -``` - -### Adding your team name to the entity annotation - -The information displayed for each entity is based on either an associated team name or an associated routing key. - -To use this plugin for an entity, the entity must be labeled with either a `splunk.com/on-call-team` or a `splunk.com/on-call-routing-key` annotation. - -For example, by specifying a `splunk.com/on-call-team`, the plugin displays Splunk On-Call data associated with the specified team: - -```yaml -annotations: - splunk.com/on-call-team: -``` - -Alternatively, by specifying a `splunk.com/on-call-routing-key`, the plugin displays Splunk On-Call data associated with _each_ of the teams associated with the specified routing key: - -```yaml -annotations: - splunk.com/on-call-routing-key: -``` - -### Create the Routing Key - -To be able to use the REST Endpoint seen above, you must have created a routing key with the **same name** as the provided team. - -You can create a new routing key on https://portal.victorops.com/ by going to Settings > Routing Keys. - -You can read [Create & Manage Alert Routing Keys](https://help.victorops.com/knowledge-base/routing-keys/#routing-key-tips-tricks) for further information. - -## Providing the API key and API id - -In order for the client to make requests to the [Splunk On-Call API](https://portal.victorops.com/public/api-docs.html#/) it needs an [API ID and an API Key](https://help.victorops.com/knowledge-base/api/). - -Then start the backend passing the values as an environment variable: - -```bash -$ SPLUNK_ON_CALL_API_KEY='' SPLUNK_ON_CALL_API_ID='' yarn start -``` - -This will proxy the request by adding `X-VO-Api-Id` and `X-VO-Api-Key` headers with the provided values. - -You can also add the values in your helm template: - -```yaml -# backend-secret.yaml -stringData: - # ... - SPLUNK_ON_CALL_API_ID: { { .Values.auth.splunkOnCallApiId } } - SPLUNK_ON_CALL_API_KEY: { { .Values.auth.splunkOnCallApiKey } } -``` - -To enable it you need to provide them in the chart's values: - -```yaml -# values.yaml -auth: - # ... - splunkOnCallApiId: h - splunkOnCallApiKey: h -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-splunk-on-call` instead. diff --git a/plugins/splunk-on-call/package.json b/plugins/splunk-on-call/package.json index 7830778195..4685986344 100644 --- a/plugins/splunk-on-call/package.json +++ b/plugins/splunk-on-call/package.json @@ -3,7 +3,8 @@ "version": "0.4.23", "description": "A Backstage plugin that integrates towards Splunk On-Call", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-splunk-on-call" }, "publishConfig": { "access": "public", @@ -64,5 +65,6 @@ "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-splunk-on-call instead." } From 441e20753de7cfca547128c126262a2103a36d52 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:50:29 +0200 Subject: [PATCH 54/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466226880.md | 6 +++ plugins/stack-overflow-backend/README.md | 4 +- plugins/stack-overflow-backend/package.json | 6 ++- plugins/stack-overflow/README.md | 55 +-------------------- plugins/stack-overflow/package.json | 6 ++- 5 files changed, 18 insertions(+), 59 deletions(-) create mode 100644 .changeset/migrate-1713466226880.md diff --git a/.changeset/migrate-1713466226880.md b/.changeset/migrate-1713466226880.md new file mode 100644 index 0000000000..263fd06e4e --- /dev/null +++ b/.changeset/migrate-1713466226880.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-stack-overflow': patch +'@backstage/plugin-stack-overflow-backend': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/stack-overflow-backend/README.md b/plugins/stack-overflow-backend/README.md index 8129d36e38..4bfcc2dd62 100644 --- a/plugins/stack-overflow-backend/README.md +++ b/plugins/stack-overflow-backend/README.md @@ -1,3 +1,3 @@ -# Stack Overflow Backend +# Deprecated -Deprecated, consider using `@backstage/plugin-search-backend-module-stack-overflow-collator` instead. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-stack-overflow-backend` instead. diff --git a/plugins/stack-overflow-backend/package.json b/plugins/stack-overflow-backend/package.json index 8a106d0b18..c6451766f3 100644 --- a/plugins/stack-overflow-backend/package.json +++ b/plugins/stack-overflow-backend/package.json @@ -3,7 +3,8 @@ "version": "0.2.21", "description": "Deprecated, consider using @backstage/plugin-search-backend-module-stack-overflow-collator instead", "backstage": { - "role": "backend-plugin" + "role": "backend-plugin", + "moved": "@backstage-community/plugin-stack-overflow-backend" }, "publishConfig": { "access": "public", @@ -46,5 +47,6 @@ "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-stack-overflow-backend instead." } diff --git a/plugins/stack-overflow/README.md b/plugins/stack-overflow/README.md index 96a8f524e3..291e4c8b4f 100644 --- a/plugins/stack-overflow/README.md +++ b/plugins/stack-overflow/README.md @@ -1,54 +1,3 @@ -# Stack Overflow +# Deprecated -A plugin that provides stack overflow specific functionality that can be used in different ways (e.g. for homepage and search) to compose your Backstage App. - -## Getting started - -Before we begin, make sure: - -- You have created your own standalone Backstage app using @backstage/create-app and not using a fork of the backstage repository. If you haven't setup Backstage already, start [here](https://backstage.io/docs/getting-started/). - -To use any of the functionality this plugin provides, you need to start by configuring your App with the following config: - -```yaml -stackoverflow: - baseUrl: https://api.stackexchange.com/2.2 # alternative: your internal stack overflow instance -``` - -## Areas of Responsibility - -This stack overflow frontend plugin is primarily responsible for the following: - -- Exposing various stack-overflow related components like `` which can be used for composing the search page, and `` which can be used for composing the homepage. - -#### Use specific search result list item for Stack Overflow Question - -> Note: For Stack Overflow specific search results to be returned, it needs to be indexed. Use the [stack-overflow-backend plugin](https://github.com/backstage/backstage/blob/master/plugins/stack-overflow-backend/README.md) to index Stack Overflow Questions to search. - -When you have your `packages/app/src/components/search/SearchPage.tsx` file ready to make modifications, add the following code snippet to add the `StackOverflowSearchResultListItem` when the type of the search results are `stack-overflow`. - -```tsx - case 'stack-overflow': - return ( - - ); -``` - -#### Use Stack Overflow Questions on your homepage - -Before you are able to add the stack overflow question component to your homepage, you need to go through the [homepage getting started guide](https://backstage.io/docs/getting-started/homepage). When its ready, add the following code snippet to your `packages/app/src/components/home/HomePage.tsx` file. - -```tsx - - - -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-stack-overflow` instead. diff --git a/plugins/stack-overflow/package.json b/plugins/stack-overflow/package.json index fe56e2106b..0adc288080 100644 --- a/plugins/stack-overflow/package.json +++ b/plugins/stack-overflow/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-stack-overflow", "version": "0.1.29", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-stack-overflow" }, "publishConfig": { "access": "public" @@ -75,5 +76,6 @@ "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-stack-overflow instead." } From 506cd2c8602eeed475b4dd2baee4ff57eed19ffe Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:50:37 +0200 Subject: [PATCH 55/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466234510.md | 5 +++ plugins/stackstorm/README.md | 62 +---------------------------- plugins/stackstorm/package.json | 6 ++- 3 files changed, 11 insertions(+), 62 deletions(-) create mode 100644 .changeset/migrate-1713466234510.md diff --git a/.changeset/migrate-1713466234510.md b/.changeset/migrate-1713466234510.md new file mode 100644 index 0000000000..42eed581f0 --- /dev/null +++ b/.changeset/migrate-1713466234510.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-stackstorm': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/stackstorm/README.md b/plugins/stackstorm/README.md index 0d5caeaca2..404cff38ab 100644 --- a/plugins/stackstorm/README.md +++ b/plugins/stackstorm/README.md @@ -1,61 +1,3 @@ -# StackStorm Plugin +# Deprecated -Welcome to the StackStorm plugin! - -A Backstage integration for the [StackStorm](https://docs.stackstorm.com/overview.html). -This plugin allows you to display a list of executions, view execution details, -browse installed packs, actions and more. - -## Getting started - -To get started, first you need a running instance of StackStorm. -One of the quickest ways is [running StackStorm with Docker](https://docs.stackstorm.com/install/docker.html). - -### Installation - -1. Install the plugin with `yarn` in the root of your Backstage directory - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-stackstorm -``` - -2. Import and use the plugin in `packages/app/src/App.tsx` - -```tsx -import { StackstormPage } from '@backstage/plugin-stackstorm'; - -const routes = ( - - {/* ...other routes */} - } /> - -``` - -### Configuration - -1. Configure `webUrl` for links to the StackStorm Web UI in `app-config.yaml`. - -```yaml -stackstorm: - webUrl: 'https://your.stackstorm.webui.com' -``` - -2. Configure `stackstorm` proxy - This plugin uses the Backstage proxy to securely communicate with StackStorm API. - Add the following to your `app-config.yaml` to enable this configuration: - -```yaml -proxy: - '/stackstorm': - target: https://your.stackstorm.instance.com/api - headers: - St2-Api-Key: ${ST2_API_KEY} -``` - -In your production deployment of Backstage, you would also need to ensure that -you've set the `ST2_API_KEY` environment variable before starting -the backend. - -Read more about how to find or generate this key in the -[StackStorm Authentication Documentation](https://docs.stackstorm.com/authentication.html#api-keys). +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-stackstorm` instead. diff --git a/plugins/stackstorm/package.json b/plugins/stackstorm/package.json index 36510d02b5..f33d2dc0e6 100644 --- a/plugins/stackstorm/package.json +++ b/plugins/stackstorm/package.json @@ -3,7 +3,8 @@ "version": "0.1.15", "description": "A Backstage plugin that integrates towards StackStorm", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-stackstorm" }, "publishConfig": { "access": "public", @@ -62,5 +63,6 @@ "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-stackstorm instead." } From 4565cda05e2bb43ec1f0d2ca8e89f6e2dd34ca42 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:50:44 +0200 Subject: [PATCH 56/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466242003.md | 9 + .../README.md | 156 +------ .../package.json | 6 +- plugins/tech-insights-backend/README.md | 387 +----------------- plugins/tech-insights-backend/package.json | 6 +- plugins/tech-insights-common/README.md | 4 +- plugins/tech-insights-common/package.json | 6 +- plugins/tech-insights-node/README.md | 4 +- plugins/tech-insights-node/package.json | 6 +- plugins/tech-insights/README.md | 153 +------ plugins/tech-insights/package.json | 6 +- 11 files changed, 39 insertions(+), 704 deletions(-) create mode 100644 .changeset/migrate-1713466242003.md diff --git a/.changeset/migrate-1713466242003.md b/.changeset/migrate-1713466242003.md new file mode 100644 index 0000000000..f9dcca2ad2 --- /dev/null +++ b/.changeset/migrate-1713466242003.md @@ -0,0 +1,9 @@ +--- +'@backstage/plugin-tech-insights': patch +'@backstage/plugin-tech-insights-backend': patch +'@backstage/plugin-tech-insights-backend-module-jsonfc': patch +'@backstage/plugin-tech-insights-common': patch +'@backstage/plugin-tech-insights-node': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/tech-insights-backend-module-jsonfc/README.md b/plugins/tech-insights-backend-module-jsonfc/README.md index 33b3ad7718..6f96adcaf7 100644 --- a/plugins/tech-insights-backend-module-jsonfc/README.md +++ b/plugins/tech-insights-backend-module-jsonfc/README.md @@ -1,155 +1,3 @@ -# Tech Insights Backend JSON Rules engine fact checker module +# Deprecated -This is an extension to module to tech-insights-backend plugin, which provides basic framework and functionality to implement tech insights within Backstage. - -This module provides functionality to run checks against a [json-rules-engine](https://github.com/CacheControl/json-rules-engine) and provide boolean logic by simply building checks using JSON conditions. - -## Getting started - -To add this FactChecker into your Tech Insights you need to install the module into your backend application: - -```bash -# From your Backstage root directory -yarn --cwd packages/backend add @backstage/plugin-tech-insights-backend-module-jsonfc -``` - -### Add to the backend - -```ts title="packages/backend/src/index.ts" -backend.add(import('@backstage/plugin-tech-insights-backend-module-jsonfc')); -``` - -This setup requires checks to be provided using the config. - -### Add to the backend (old) - -Modify the `techInsights.ts` file to contain a reference to the FactCheckers implementation. - -```diff -+import { JsonRulesEngineFactCheckerFactory } from '@backstage/plugin-tech-insights-backend-module-jsonfc'; - -+const myFactCheckerFactory = new JsonRulesEngineFactCheckerFactory({ -+ checks: [], -+ logger: env.logger, -+}), - - const builder = buildTechInsightsContext({ - logger: env.logger, - config: env.config, - database: env.database, - discovery: env.discovery, - tokenManager: env.tokenManager, - factRetrievers: [myFactRetrieverRegistration], -+ factCheckerFactory: myFactCheckerFactory - }); -``` - -By default, this implementation comes with an in-memory storage to store checks. You can inject an additional data store by adding an implementation of `TechInsightCheckRegistry` into the constructor options when creating a `JsonRulesEngineFactCheckerFactory`. That can be done as follows - -```diff - const myTechInsightCheckRegistry: TechInsightCheckRegistry = // snip - const myFactCheckerFactory = new JsonRulesEngineFactCheckerFactory({ - checks: [], - logger: env.logger, -+ checkRegistry: myTechInsightCheckRegistry - }), - -``` - -## Adding checks in code - -Checks for this FactChecker are constructed as [`json-rules-engine` compatible JSON rules](https://github.com/CacheControl/json-rules-engine/blob/master/docs/rules.md#conditions). A check could look like the following for example: - -```ts -import { - JSON_RULE_ENGINE_CHECK_TYPE, - TechInsightJsonRuleCheck, -} from '@backstage/plugin-tech-insights-backend-module-jsonfc'; - -export const exampleCheck: TechInsightJsonRuleCheck = { - id: 'demodatacheck', // Unique identifier of this check - name: 'demodatacheck', // A human readable name of this check to be displayed in the UI - type: JSON_RULE_ENGINE_CHECK_TYPE, // Type identifier of the check. Used to run logic against, determine persistence option to use and render correct components on the UI - description: 'A fact check for demoing purposes', // A description to be displayed in the UI - factIds: ['documentation-number-factretriever'], // References to fact ids that this check uses. See documentation on FactRetrievers for more information on these - rule: { - // The actual rule - conditions: { - all: [ - // 2 options are available, all and any conditions. - { - fact: 'examplenumberfact', // Reference to an individual fact to check against - operator: 'greaterThanInclusive', // Operator to use. See: https://github.com/CacheControl/json-rules-engine/blob/master/docs/rules.md#operators for more - value: 2, // The threshold value that the fact must satisfy - }, - ], - }, - }, - successMetadata: { - // Additional metadata to be returned if the check has passed - link: 'https://link.to.some.information.com', - }, - failureMetadata: { - // Additional metadata to be returned if the check has failed - link: 'https://sonar.mysonarqube.com/increasing-number-value', - }, -}; -``` - -## Adding checks in config - -Example: - -```yaml title="app-config.yaml" -techInsights: - factChecker: - checks: - groupOwnerCheck: - type: json-rules-engine - name: Group Owner Check - description: Verifies that a group has been set as the spec.owner for this entity - factIds: - - entityOwnershipFactRetriever - rule: - conditions: - all: - - fact: hasGroupOwner - operator: equal - value: true -``` - -### More than one `factIds` for a check. - -When more than one is supplied, the requested fact **MUST** be present in at least one of the fact retrievers. -The order of the fact retrievers defined in the `factIds` array has no bearing on the checks, the check will merge all facts from the various retrievers, and then check against latest fact . - -# Custom operators - -json-rules-engine supports a limited [number of built-in operators](https://github.com/CacheControl/json-rules-engine/blob/master/docs/rules.md#operators) that can be used in conditions. You can add your own operators by adding them to the `operators` array in the `JsonRulesEngineFactCheckerFactory` constructor. For example: - -```diff -+ import { Operator } from 'json-rules-engine'; - -const myFactCheckerFactory = new JsonRulesEngineFactCheckerFactory({ - checks: [], - logger: env.logger, -+ operators: [ new Operator("startsWith", (a, b) => a.startsWith(b) ] -}) -``` - -And you can then use it in your checks like this: - -```js -... -rule: { - conditions: { - any: [ - { - fact: 'version', - operator: 'startsWith', - value: '12', - }, - ], - }, -} -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-tech-insights-backend-module-jsonfc` instead. diff --git a/plugins/tech-insights-backend-module-jsonfc/package.json b/plugins/tech-insights-backend-module-jsonfc/package.json index 1bde53d76d..db9438aa21 100644 --- a/plugins/tech-insights-backend-module-jsonfc/package.json +++ b/plugins/tech-insights-backend-module-jsonfc/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-tech-insights-backend-module-jsonfc", "version": "0.1.49", "backstage": { - "role": "backend-plugin-module" + "role": "backend-plugin-module", + "moved": "@backstage-community/plugin-tech-insights-backend-module-jsonfc" }, "publishConfig": { "access": "public", @@ -53,5 +54,6 @@ "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^" }, - "configSchema": "config.json" + "configSchema": "config.json", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-tech-insights-backend-module-jsonfc instead." } diff --git a/plugins/tech-insights-backend/README.md b/plugins/tech-insights-backend/README.md index 56b927a10e..3b19c5a310 100644 --- a/plugins/tech-insights-backend/README.md +++ b/plugins/tech-insights-backend/README.md @@ -1,386 +1,3 @@ -# Tech Insights Backend +# Deprecated -This is the backend for the default Backstage Tech Insights feature. -This provides the API for the frontend tech insights, scorecards and fact visualization functionality, -as well as a framework to run fact retrievers and store fact values in to a data store. - -## Installation - -### Install the package - -```bash -# From your Backstage root directory -yarn --cwd packages/backend add @backstage/plugin-tech-insights-backend -``` - -### Adding the plugin to your `packages/backend` - -```ts title="packages/backend/src/index.ts" -backend.add(import('@backstage/plugin-tech-insights-backend')); -``` - -You can use the extension points [@backstage/plugin-tech-insights-node](../tech-insights-node) -to add your `FactRetriever` or set a `FactCheckerFactory`. - -The built-in `FactRetrievers`: - -- `entityMetadataFactRetriever` -- `entityOwnershipFactRetriever` -- `techdocsFactRetriever` - -`FactRetrievers` only get registered if they get configured: - -```yaml title="app-config.yaml" -techInsights: - factRetrievers: - entityOwnershipFactRetriever: - cadence: '*/15 * * * *' - lifecycle: { timeToLive: { weeks: 2 } } -``` - -### Adding the plugin to your `packages/backend` (old) - -You'll need to add the plugin to the router in your `backend` package. You can -do this by creating a file called `packages/backend/src/plugins/techInsights.ts`. An example content for `techInsights.ts` could be something like this. - -```ts -import { - createRouter, - buildTechInsightsContext, -} from '@backstage/plugin-tech-insights-backend'; -import { Router } from 'express'; -import { PluginEnvironment } from '../types'; - -export default async function createPlugin( - env: PluginEnvironment, -): Promise { - const builder = buildTechInsightsContext({ - logger: env.logger, - config: env.config, - database: env.database, - discovery: env.discovery, - scheduler: env.scheduler, - tokenManager: env.tokenManager, - factRetrievers: [], // Fact retrievers registrations you want tech insights to use - }); - - return await createRouter({ - ...(await builder), - logger: env.logger, - config: env.config, - }); -} -``` - -With the `techInsights.ts` router setup in place, add the router to -`packages/backend/src/index.ts`: - -```diff -+import techInsights from './plugins/techInsights'; - - async function main() { - ... - const createEnv = makeCreateEnv(config); - - const catalogEnv = useHotMemoize(module, () => createEnv('catalog')); -+ const techInsightsEnv = useHotMemoize(module, () => createEnv('tech_insights')); - - const apiRouter = Router(); -+ apiRouter.use('/tech-insights', await techInsights(techInsightsEnv)); - ... - apiRouter.use(notFoundHandler()); - } -``` - -### Adding fact retrievers - -At this point the Tech Insights backend is installed in your backend package, but -you will not have any fact retrievers present in your application. To have the implemented FactRetrieverEngine within this package to be able to retrieve and store fact data into the database, you need to add these. - -To create factRetrieverRegistration you need to implement `FactRetriever` interface defined in `@backstage/plugin-tech-insights-node` package (see [Creating fact retrievers](#creating-fact-retrievers) for details). After you have implemented this interface you can wrap that into a registration object like follows: - -```ts -import { createFactRetrieverRegistration } from '@backstage/plugin-tech-insights-backend'; - -const myFactRetriever = { - /** - * snip - */ -}; - -const myFactRetrieverRegistration = createFactRetrieverRegistration({ - cadence: '1 * 2 * * ', // On the first minute of the second day of the month - factRetriever: myFactRetriever, -}); -``` - -FactRetrieverRegistration also accepts an optional `lifecycle` configuration value. This can be either MaxItems or TTL (time to live). Valid options for this value are either a number for MaxItems or a Luxon duration like object for TTL. For example: - -```ts -const maxItems = { maxItems: 7 }; // Deletes all but 7 latest facts for each id/entity pair -const ttl = { timeToLive: 1209600000 }; // (2 weeks) Deletes items older than 2 weeks -const ttlWithAHumanReadableValue = { timeToLive: { weeks: 2 } }; // Deletes items older than 2 weeks -``` - -To register these fact retrievers to your application you can modify the example `techInsights.ts` file shown above like this: - -```diff -const builder = buildTechInsightsContext({ - logger: env.logger, - config: env.config, - database: env.database, - discovery: env.discovery, - tokenManager: env.tokenManager, - scheduler: env.scheduler, -- factRetrievers: [], -+ factRetrievers: [myFactRetrieverRegistration], -}); -``` - -#### Running fact retrievers in a multi-instance installation - -The Tech Insights plugin utilizes the `PluginTaskScheduler` for scheduling tasks and coordinating the task invocation across instances. See [the PluginTaskScheduler documentation](https://backstage.io/docs/reference/backend-tasks.plugintaskscheduler) for more information. - -### Creating Fact Retrievers - -A Fact Retriever consist of four required and one optional parts: - -1. `id` - unique identifier of a fact retriever -2. `version`: A semver string indicating the current version of the schema and the handler -3. `schema` - A versioned schema defining the shape of data a fact retriever returns -4. `handler` - An asynchronous function handling the logic of retrieving and returning facts for an entity -5. `entityFilter` - (Optional) EntityFilter object defining the entity kinds, types and/or names this fact retriever handles - -An example implementation of a FactRetriever could for example be as follows: - -```ts -import { FactRetriever } from '@backstage/plugin-tech-insights-node'; - -const myFactRetriever: FactRetriever = { - id: 'documentation-number-factretriever', // unique identifier of the fact retriever - version: '0.1.1', // SemVer version number of this fact retriever schema. This should be incremented if the implementation changes - entityFilter: [{ kind: 'component' }], // EntityFilter to be used in the future (creating checks, graphs etc.) to figure out which entities this fact retrieves data for. - schema: { - // Name/identifier of an individual fact that this retriever returns - examplenumberfact: { - type: 'integer', // Type of the fact - description: 'A fact of a number', // Description of the fact - }, - }, - handler: async ctx => { - // Handler function that retrieves the fact - const { discovery, config, logger } = ctx; - const catalogClient = new CatalogClient({ - discoveryApi: discovery, - }); - const entities = await catalogClient.getEntities( - { - filter: [{ kind: 'component' }], - }, - { token }, - ); - /** - * snip: Do complex logic to retrieve facts from external system or calculate fact values - */ - - // Respond with an array of entity/fact values - return entities.items.map(it => { - return { - // Entity information that this fact relates to - entity: { - namespace: it.metadata.namespace, - kind: it.kind, - name: it.metadata.name, - }, - - // All facts that this retriever returns - facts: { - examplenumberfact: 2, // - }, - // (optional) timestamp to use as a Luxon DateTime object - }; - }); - }, -}; -``` - -### Adding a fact checker - -This module comes with a possibility to additionally add a fact checker and expose fact checking endpoints from the API. To be able to enable this feature you need to add a FactCheckerFactory implementation to be part of the `DefaultTechInsightsBuilder` constructor call. - -There is a default FactChecker implementation provided in module `@backstage/plugin-tech-insights-backend-module-jsonfc`. This implementation uses `json-rules-engine` as the underlying functionality to run checks. If you want to implement your own FactChecker, for example to be able to handle other than `boolean` result types, you can do so by implementing `FactCheckerFactory` and `FactChecker` interfaces from `@backstage/plugin-tech-insights-common` package. - -To add the default FactChecker into your Tech Insights you need to install the module into your backend application: - -```bash -# From your Backstage root directory -yarn --cwd packages/backend add @backstage/plugin-tech-insights-backend-module-jsonfc -``` - -and modify the `techInsights.ts` file to contain a reference to the FactChecker implementation. - -```diff -+import { JsonRulesEngineFactCheckerFactory } from '@backstage/plugin-tech-insights-backend-module-jsonfc'; - -+const myFactCheckerFactory = new JsonRulesEngineFactCheckerFactory({ -+ checks: [], -+ logger: env.logger, -+}), - - const builder = new DefaultTechInsightsBuilder({ - logger: env.logger, - config: env.config, - database: env.database, - discovery: env.discovery, - tokenManager: env.tokenManager, - factRetrievers: [myFactRetrieverRegistration], -+ factCheckerFactory: myFactCheckerFactory - }); -``` - -NOTE: You need a Fact Checker Factory to get access to the backend routes that will allow the facts to be checked. If you don't have a Fact Checker Factory you will see 404s and potentially other errors. - -To be able to run checks, you need to additionally add individual checks into your FactChecker implementation. For examples how to add these, you can check the documentation of the individual implementation of the FactChecker - -#### Modifying check persistence - -The default FactChecker implementation comes with an in-memory storage to store checks. You can inject an additional data store by adding an implementation of `TechInsightCheckRegistry` into the constructor options when creating a `JsonRulesEngineFactCheckerFactory`. That can be done as follows: - -```diff -const myTechInsightCheckRegistry: TechInsightCheckRegistry = // snip -const myFactCheckerFactory = new JsonRulesEngineFactCheckerFactory({ - checks: [], - logger: env.logger, -+ checkRegistry: myTechInsightCheckRegistry -}), - -``` - -## Included FactRetrievers - -There are three FactRetrievers that come out of the box with Tech Insights: - -- `entityMetadataFactRetriever`: Generates facts which indicate the completeness of entity metadata -- `entityOwnershipFactRetriever`: Generates facts which indicate the quality of data in the spec.owner field -- `techdocsFactRetriever`: Generates facts related to the completeness of techdocs configuration for entities - -## Backend Example - -Here's an example backend setup that will use the three included fact retrievers so you can get an idea of how this all works. This will be the entire contents of your `techInsights.ts` file found at `\packages\backend\src\plugins` as per [Adding the plugin to your `packages/backend`](#adding-the-plugin-to-your-packagesbackend) - -```ts -import { - createRouter, - buildTechInsightsContext, - createFactRetrieverRegistration, - entityOwnershipFactRetriever, - entityMetadataFactRetriever, - techdocsFactRetriever, -} from '@backstage/plugin-tech-insights-backend'; -import { Router } from 'express'; -import { PluginEnvironment } from '../types'; -import { - JsonRulesEngineFactCheckerFactory, - JSON_RULE_ENGINE_CHECK_TYPE, -} from '@backstage/plugin-tech-insights-backend-module-jsonfc'; - -const ttlTwoWeeks = { timeToLive: { weeks: 2 } }; - -export default async function createPlugin( - env: PluginEnvironment, -): Promise { - const techInsightsContext = await buildTechInsightsContext({ - logger: env.logger, - config: env.config, - database: env.database, - discovery: env.discovery, - tokenManager: env.tokenManager, - scheduler: env.scheduler, - factRetrievers: [ - createFactRetrieverRegistration({ - cadence: '0 */6 * * *', // Run every 6 hours - https://crontab.guru/#0_*/6_*_*_* - factRetriever: entityOwnershipFactRetriever, - lifecycle: ttlTwoWeeks, - }), - createFactRetrieverRegistration({ - cadence: '0 */6 * * *', - factRetriever: entityMetadataFactRetriever, - lifecycle: ttlTwoWeeks, - }), - createFactRetrieverRegistration({ - cadence: '0 */6 * * *', - factRetriever: techdocsFactRetriever, - lifecycle: ttlTwoWeeks, - }), - ], - factCheckerFactory: new JsonRulesEngineFactCheckerFactory({ - logger: env.logger, - checks: [ - { - id: 'groupOwnerCheck', - type: JSON_RULE_ENGINE_CHECK_TYPE, - name: 'Group Owner Check', - description: - 'Verifies that a Group has been set as the owner for this entity', - factIds: ['entityOwnershipFactRetriever'], - rule: { - conditions: { - all: [ - { - fact: 'hasGroupOwner', - operator: 'equal', - value: true, - }, - ], - }, - }, - }, - { - id: 'titleCheck', - type: JSON_RULE_ENGINE_CHECK_TYPE, - name: 'Title Check', - description: - 'Verifies that a Title, used to improve readability, has been set for this entity', - factIds: ['entityMetadataFactRetriever'], - rule: { - conditions: { - all: [ - { - fact: 'hasTitle', - operator: 'equal', - value: true, - }, - ], - }, - }, - }, - { - id: 'techDocsCheck', - type: JSON_RULE_ENGINE_CHECK_TYPE, - name: 'TechDocs Check', - description: - 'Verifies that TechDocs has been enabled for this entity', - factIds: ['techdocsFactRetriever'], - rule: { - conditions: { - all: [ - { - fact: 'hasAnnotationBackstageIoTechdocsRef', - operator: 'equal', - value: true, - }, - ], - }, - }, - }, - ], - }), - }); - - return await createRouter({ - ...techInsightsContext, - logger: env.logger, - config: env.config, - }); -} -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-tech-insights-backend` instead. diff --git a/plugins/tech-insights-backend/package.json b/plugins/tech-insights-backend/package.json index c536ae287a..64a6d651e8 100644 --- a/plugins/tech-insights-backend/package.json +++ b/plugins/tech-insights-backend/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-tech-insights-backend", "version": "0.5.31", "backstage": { - "role": "backend-plugin" + "role": "backend-plugin", + "moved": "@backstage-community/plugin-tech-insights-backend" }, "publishConfig": { "access": "public", @@ -67,5 +68,6 @@ "supertest": "^6.1.3", "wait-for-expect": "^3.0.2" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-tech-insights-backend instead." } diff --git a/plugins/tech-insights-common/README.md b/plugins/tech-insights-common/README.md index af14ef0e0d..9cfc812797 100644 --- a/plugins/tech-insights-common/README.md +++ b/plugins/tech-insights-common/README.md @@ -1,3 +1,3 @@ -# Tech Insights Common +# Deprecated -Common types and functionalities for tech insights shared in an isomorphic manner between BE and FE implementations. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-tech-insights-common` instead. diff --git a/plugins/tech-insights-common/package.json b/plugins/tech-insights-common/package.json index bcaaca84e5..394003c575 100644 --- a/plugins/tech-insights-common/package.json +++ b/plugins/tech-insights-common/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-tech-insights-common", "version": "0.2.12", "backstage": { - "role": "common-library" + "role": "common-library", + "moved": "@backstage-community/plugin-tech-insights-common" }, "publishConfig": { "access": "public", @@ -42,5 +43,6 @@ }, "devDependencies": { "@backstage/cli": "workspace:^" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-tech-insights-common instead." } diff --git a/plugins/tech-insights-node/README.md b/plugins/tech-insights-node/README.md index 4065611837..1de6003843 100644 --- a/plugins/tech-insights-node/README.md +++ b/plugins/tech-insights-node/README.md @@ -1,3 +1,3 @@ -# Tech Insights Node +# Deprecated -Common types and functionalities for tech insights backend implementations to be shared between tech-insights-backend and individual implementations of FactRetrievers, FactCheckers and their persistence options. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-tech-insights-node` instead. diff --git a/plugins/tech-insights-node/package.json b/plugins/tech-insights-node/package.json index 4d18010237..aab0a666b8 100644 --- a/plugins/tech-insights-node/package.json +++ b/plugins/tech-insights-node/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-tech-insights-node", "version": "0.6.0", "backstage": { - "role": "node-library" + "role": "node-library", + "moved": "@backstage-community/plugin-tech-insights-node" }, "publishConfig": { "access": "public", @@ -45,5 +46,6 @@ }, "devDependencies": { "@backstage/cli": "workspace:^" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-tech-insights-node instead." } diff --git a/plugins/tech-insights/README.md b/plugins/tech-insights/README.md index 9145e892e7..46c9f2d9a2 100644 --- a/plugins/tech-insights/README.md +++ b/plugins/tech-insights/README.md @@ -1,152 +1,3 @@ -# Tech Insights +# Deprecated -This plugin provides the UI for the `@backstage/tech-insights-backend` plugin, in order to display results of the checks running following the rules and the logic defined in the `@backstage/tech-insights-backend` plugin itself. - -Main areas covered by this plugin currently are: - -- Providing an overview for default boolean checks in a form of Scorecards. - -- Providing an option to render different custom components based on type of the checks running in the backend. - -## Installation - -### Install the plugin - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-tech-insights -``` - -### Add boolean checks overview (Scorecards) page to the EntityPage: - -```tsx -// packages/app/src/components/catalog/EntityPage.tsx - -import { EntityTechInsightsScorecardContent } from '@backstage/plugin-tech-insights'; - -const serviceEntityPage = ( - - - {overviewContent} - - - {cicdContent} - - ... - - - - ... - -); -``` - -It is obligatory to pass `title` prop to `EntityTechInsightsScorecardContent`, `description` prop is optional. - -If you like to display multiple cards in a `EntityLayout.Route` use `EntityTechInsightsScorecardCard`. - -You can pass an array `checksId` as a prop with the [Fact Retrievers ids](../tech-insights-backend#creating-fact-retrievers) to limit which checks you want to show in this card. If you don't pass, the default value is show all checks. - -```tsx - -``` - -If you want to show checks in the overview of an entity use `EntityTechInsightsScorecardCard`. - -```tsx -// packages/app/src/components/catalog/EntityPage.tsx - -import { EntityTechInsightsScorecardCard } from '@backstage/plugin-tech-insights'; - -const overviewContent = ( - - {entityWarningContent} - - - - - - - ... - - - - -); -``` - -## Boolean Scorecard Example - -If you follow the [Backend Example](https://github.com/backstage/backstage/tree/master/plugins/tech-insights-backend#backend-example), once the needed facts have been generated the default boolean scorecard will look like this: - -![Boolean Scorecard Example](./docs/boolean-scorecard-example.png) - -## Adding custom rendering components - -Default scorecard implementation displays only `json-rules-engine` check results. If you would like to support different types, you need to inject custom rendering components to the `TechInsightsClient` constructor. - -```ts -// packages/app/src/apis.ts - -export const apis: AnyApiFactory[] = [ -... - createApiFactory({ - api: techInsightsApiRef, - deps: { discoveryApi: discoveryApiRef, identityApi: identityApiRef }, - factory: ({ discoveryApi, identityApi }) => - new TechInsightsClient({ - discoveryApi, - identityApi, - renderers: [ - jsonRulesEngineCheckResultRenderer, // default json-rules-engine renderer - myCustomBooleanRenderer, // custom renderer - ], - }), - }), -... -]; -``` - -```tsx -// packages/app/src/components/myCustomBooleanRenderer.tsx - -export const myCustomBooleanRenderer: CheckResultRenderer = { - type: 'boolean', - component: (checkResult: CheckResult) => ( - - ), -}; -``` - -It's also possible to customize the description. Both strings and React components are accepted. As an example, you would like -to display another information if the check has failed. In such cases, you could do something like the following: - -```tsx -// packages/app/src/components/myCustomBooleanRenderer.tsx - -export const myCustomBooleanRenderer: CheckResultRenderer = { - type: 'boolean', - component: (checkResult: CheckResult) => ( - - ), - description: (checkResult: CheckResult) => ( - <> - { - checkResult.result - ? checkResult.check.description // In case of success, return the same description - : `The check has failed! ${checkResult.check.description}` // Add a prefix text if the check failed - } - - ), -}; -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-tech-insights` instead. diff --git a/plugins/tech-insights/package.json b/plugins/tech-insights/package.json index 61ed06e44e..1716f1fd35 100644 --- a/plugins/tech-insights/package.json +++ b/plugins/tech-insights/package.json @@ -2,7 +2,8 @@ "name": "@backstage/plugin-tech-insights", "version": "0.3.26", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-tech-insights" }, "publishConfig": { "access": "public", @@ -57,5 +58,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-tech-insights instead." } From f17c56de87bceda98f2f6df00991fdd86a9747fa Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:50:52 +0200 Subject: [PATCH 57/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466249417.md | 7 ++ plugins/vault-backend/README.md | 184 +--------------------------- plugins/vault-backend/package.json | 6 +- plugins/vault-node/README.md | 4 +- plugins/vault-node/package.json | 6 +- plugins/vault/README.md | 113 +---------------- plugins/vault/package.json | 6 +- 7 files changed, 25 insertions(+), 301 deletions(-) create mode 100644 .changeset/migrate-1713466249417.md diff --git a/.changeset/migrate-1713466249417.md b/.changeset/migrate-1713466249417.md new file mode 100644 index 0000000000..9f62804b00 --- /dev/null +++ b/.changeset/migrate-1713466249417.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-vault': patch +'@backstage/plugin-vault-backend': patch +'@backstage/plugin-vault-node': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/vault-backend/README.md b/plugins/vault-backend/README.md index 2c7dd06e52..7a2fd2714c 100644 --- a/plugins/vault-backend/README.md +++ b/plugins/vault-backend/README.md @@ -1,183 +1,3 @@ -# @backstage/plugin-vault-backend +# Deprecated -A backend for [Vault](https://www.vaultproject.io/), this plugin adds a few routes that are used by the frontend plugin to fetch the information from Vault. - -## Introduction - -Vault is an identity-based secrets and encryption management system. A secret is anything that you want to tightly control access to, such as API encryption keys, passwords, or certificates. Vault provides encryption services that are gated by authentication and authorization methods. - -This plugins allows you to view all the available secrets at a certain location, and redirect you to the official UI so backstage can rely on LIST permissions, which is safer. - -## Getting started - -To get started, first you need a running instance of Vault. You can follow [this tutorial](https://learn.hashicorp.com/tutorials/vault/getting-started-intro?in=vault/getting-started) to install vault and start your server locally. - -1. When your Vault instance is up and running, then you will need to install the plugin into your app: - - ```bash - # From your Backstage root directory - yarn --cwd packages/backend add @backstage/plugin-vault-backend - ``` - -2. Create a file in `src/plugins/vault.ts` and add a reference to it in `src/index.ts`: - - ```typescript - // In packages/backend/src/plugins/vault.ts - import { createRouter } from '@backstage/plugin-vault-backend'; - import { Router } from 'express'; - import { PluginEnvironment } from '../types'; - - export default async function createPlugin( - env: PluginEnvironment, - ): Promise { - return await createRouter({ - logger: env.logger, - config: env.config, - scheduler: env.scheduler, - }); - } - ``` - - ```diff - diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts - index f2b14b2..2c64f47 100644 - --- a/packages/backend/src/index.ts - +++ b/packages/backend/src/index.ts - @@ -22,6 +22,7 @@ import { Config } from '@backstage/config'; - import app from './plugins/app'; - +import vault from './plugins/vault'; - import scaffolder from './plugins/scaffolder'; - @@ -56,6 +57,7 @@ async function main() { - const authEnv = useHotMemoize(module, () => createEnv('auth')); - + const vaultEnv = useHotMemoize(module, () => createEnv('vault')); - const proxyEnv = useHotMemoize(module, () => createEnv('proxy')); - @@ -63,6 +65,7 @@ async function main() { - - const apiRouter = Router(); - apiRouter.use('/catalog', await catalog(catalogEnv)); - + apiRouter.use('/vault', await vault(vaultEnv)); - apiRouter.use('/scaffolder', await scaffolder(scaffolderEnv)); - ``` - -3. Add some extra configurations in your [`app-config.yaml`](https://github.com/backstage/backstage/blob/master/app-config.yaml). - - ```yaml - vault: - baseUrl: http://your-internal-vault-url.svc - publicUrl: https://your-vault-url.example.com - token: - secretEngine: 'customSecretEngine' # Optional. By default it uses 'secrets'. Can be overwritten by the annotation of the entity - kvVersion: # Optional. The K/V version that your instance is using. The available options are '1' or '2' - schedule: # Optional. If the token renewal is enabled this schedule will be used instead of the hourly one - frequency: { hours: 1 } - timeout: { hours: 1 } - ``` - -4. Get a `VAULT_TOKEN` with **LIST** permissions, as it's enough for the plugin. You can check [this tutorial](https://learn.hashicorp.com/tutorials/vault/tokens) for more info. - -5. If you also want to use the `renew` functionality, you need to attach the following block to your custom policy, so that Backstage can perform a token-renew: - ``` - # Allow tokens to renew themselves - path "auth/token/renew-self" { - capabilities = ["update"] - } - ``` - -## New Backend System - -The Vault backend plugin has support for the [new backend system](https://backstage.io/docs/backend-system/), here's how you can set that up: - -In your `packages/backend/src/index.ts` make the following changes: - -```diff - import { createBackend } from '@backstage/backend-defaults'; - const backend = createBackend(); - // ... other feature additions -+ backend.add(import('@backstage/plugin-vault-backend'); - backend.start(); -``` - -The token renewal is enabled automatically in the new backend system depending on the `app-config.yaml`. If the `schedule` is not defined there, no -task will be executed. If you want to use the default renewal scheduler (which runs hourly), set `schedule: true`. In case you want a custom schedule -just use a configuration like the one set above. - -## Integration with the Catalog - -The plugin can be integrated into each Component in the catalog. To allow listing the available secrets a new annotation must be added to the `catalog-info.yaml`: - -```yaml -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - # ... - annotations: - vault.io/secrets-path: path/to/secrets -``` - -The path is relative to your secrets engine folder. So if you want to get the secrets for backstage and you have the following directory structure: - - . - ├── ... - ├── secrets # Your secret engine name (usually it is `secrets`) - │ ├── test # Folder with test secrets - │ │ ├── backstage # In this folder there are secrets for Backstage - │ ├── other # Other folder with more secrets inside - │ └── folder # And another folder - └── ... - -You will set the `vault.io/secret-path` to `test/backstage`. If the folder `backstage` contains other sub-folders, the plugin will fetch the secrets inside them and adapt the **View** and **Edit** URLs to point to the correct place. - -In case you need to support different secret engines for entities of the catalog you can provide optional annotation to the entity in `catalog-info.yaml`: - -```diff - apiVersion: backstage.io/v1alpha1 - kind: Component - metadata: - # ... - annotations: - vault.io/secrets-path: path/to/secrets -+ vault.io/secrets-engine: customSecretEngine # Optional. By default it uses the 'secretEngine' value from your app-config. -``` - -That will overwrite the default secret engine from the configuration. - -## Renew token - -In a secure Vault instance, it's usual that the tokens are refreshed after some time. In order to always have a valid token to fetch the secrets, it might be necessary to execute a renew action after some time. By default this is deactivated, but it can be easily activated and configured to be executed periodically (hourly by default, but customizable by the user within the app-config.yaml file). In order to do that, modify your `src/plugins/vault.ts` file to look like this one: - -```typescript -import { VaultBuilder } from '@backstage/plugin-vault-backend'; -import { Router } from 'express'; -import { PluginEnvironment } from '../types'; - -export default async function createPlugin( - env: PluginEnvironment, -): Promise { - const builder = await VaultBuilder.createBuilder({ - logger: env.logger, - config: env.config, - scheduler: env.scheduler, - }).enableTokenRenew( - env.scheduler.createScheduledTaskRunner({ - frequency: { minutes: 10 }, - timeout: { minutes: 1 }, - }), - ); - - const { router } = builder.build(); - - return router; -} -``` - -If the `taskRunner` is not set when calling the `enableTokenRenew`, the plugin will automatically check what is set in the `app-config.yaml` file. Refer to [the new backend system setup](#new-backend-system) for more information about it. - -## Features - -- List the secrets present in a certain path -- Use different secret engines for different entities -- Open a link to view the secret -- Open a link to edit the secret -- Renew the token automatically with a defined periodicity - -The secrets cannot be edited/viewed from within Backstage to make it more secure. Backstage will only have permissions to LIST data from Vault or to renew its own token if that is needed. And the user who wants to edit/view a certain secret needs the correct permissions to do so. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-vault-backend` instead. diff --git a/plugins/vault-backend/package.json b/plugins/vault-backend/package.json index 1a19d7f3db..2dce7dd324 100644 --- a/plugins/vault-backend/package.json +++ b/plugins/vault-backend/package.json @@ -3,7 +3,8 @@ "version": "0.4.10", "description": "A Backstage backend plugin that integrates towards Vault", "backstage": { - "role": "backend-plugin" + "role": "backend-plugin", + "moved": "@backstage-community/plugin-vault-backend" }, "publishConfig": { "access": "public", @@ -62,5 +63,6 @@ "msw": "^1.0.0", "supertest": "^6.1.6" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-vault-backend instead." } diff --git a/plugins/vault-node/README.md b/plugins/vault-node/README.md index 5f777e792b..21993e11f7 100644 --- a/plugins/vault-node/README.md +++ b/plugins/vault-node/README.md @@ -1,3 +1,3 @@ -# @backstage/plugin-vault-node +# Deprecated -Houses types and utilities for building the vault modules +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-vault-node` instead. diff --git a/plugins/vault-node/package.json b/plugins/vault-node/package.json index 74a42ba8ef..6d4fab666c 100644 --- a/plugins/vault-node/package.json +++ b/plugins/vault-node/package.json @@ -3,7 +3,8 @@ "version": "0.1.10", "description": "Node.js library for the vault plugin", "backstage": { - "role": "node-library" + "role": "node-library", + "moved": "@backstage-community/plugin-vault-node" }, "publishConfig": { "access": "public", @@ -34,5 +35,6 @@ }, "devDependencies": { "@backstage/cli": "workspace:^" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-vault-node instead." } diff --git a/plugins/vault/README.md b/plugins/vault/README.md index fe86a30bd2..0e9b26032b 100644 --- a/plugins/vault/README.md +++ b/plugins/vault/README.md @@ -1,112 +1,3 @@ -# @backstage/plugin-vault +# Deprecated -A frontend for [Vault](https://www.vaultproject.io/), this plugin allows you to display a list of secrets in a certain path inside your vault instance. There are also some useful links to edit and/or view them using the official UI. - -![Screenshot of the vault plugin table](images/vault-table.png) - -## Introduction - -Vault is an identity-based secrets and encryption management system. A secret is anything that you want to tightly control access to, such as API encryption keys, passwords, or certificates. Vault provides encryption services that are gated by authentication and authorization methods. - -This plugins allows you to view all the available secrets at a certain location, and redirect you to the official UI so backstage can rely on LIST permissions, which is safer. - -## Getting started - -To get started, first you need a running instance of Vault. You can follow [this tutorial](https://learn.hashicorp.com/tutorials/vault/getting-started-intro?in=vault/getting-started) to install vault and start your server locally. - -1. When your Vault instance is up and running, then you will need to install the plugin into your app: - - ```bash - # From your Backstage root directory - yarn --cwd packages/app add @backstage/plugin-vault - ``` - -2. Add the Vault card to the overview tab on the EntityPage: - - ```typescript - // In packages/app/src/components/catalog/EntityPage.tsx - import { EntityVaultCard } from '@backstage/plugin-vault'; - - const overviewContent = ( - - {/* ...other content */} - - - - ); - ``` - -3. Add some extra configurations in your [`app-config.yaml`](https://github.com/backstage/backstage/blob/master/app-config.yaml). - - ```yaml - vault: - baseUrl: http://your-vault-url - token: - secretEngine: 'customSecretEngine' # Optional. By default it uses 'secrets'. Can be overwritten by the annotation of the entity - kvVersion: # Optional. The K/V version that your instance is using. The available options are '1' or '2' - ``` - -4. Get a `VAULT_TOKEN` with **LIST** permissions, as it's enough for the plugin. You can check [this tutorial](https://learn.hashicorp.com/tutorials/vault/tokens) for more info. - -5. If you also want to use the `renew` functionality, you need to attach the following block to your custom policy, so that Backstage can perform a token-renew: - ``` - # Allow tokens to renew themselves - path "auth/token/renew-self" { - capabilities = ["update"] - } - ``` - -## Integration with the Catalog - -The plugin can be integrated into each Component in the catalog. To allow listing the available secrets a new annotation must be added to the `catalog-info.yaml`: - -```yaml -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - # ... - annotations: - vault.io/secrets-path: path/to/secrets - vault.io/secrets-engine: customSecretEngine # Optional. By default it uses the 'secretEngine' value from your app-config. -``` - -The path is relative to your secrets engine folder. So if you want to get the secrets for backstage and you have the following directory structure: - - . - ├── ... - ├── secrets # Your secret engine name (usually it is `secrets`) - │ ├── test # Folder with test secrets - │ │ ├── backstage # In this folder there are secrets for Backstage - │ ├── other # Other folder with more secrets inside - │ └── folder # And another folder - └── ... - -You will set the `vault.io/secret-path` to `test/backstage`. If the folder `backstage` contains other sub-folders, the plugin will fetch the secrets inside them and adapt the **View** and **Edit** URLs to point to the correct place. - -If the annotation is missing for a certain component, then the card will show some information to the user: - -![Screenshot of the vault plugin with missing annotation](images/annotation-missing.png) - -In case you need to support different secret engines for entities of the catalog you can provide optional annotation to the entity in `catalog-info.yaml`: - -```diff - apiVersion: backstage.io/v1alpha1 - kind: Component - metadata: - # ... - annotations: - vault.io/secrets-path: path/to/secrets -+ vault.io/secrets-engine: customSecretEngine # Optional. By default it uses 'secertEngine' value from configuration. -``` - -That will overwrite the default secret engine from the configuration. - -## Features - -- List the secrets present in a certain path -- Use different secret engines for different components -- Open a link to view the secret -- Open a link to edit the secret -- Renew the token automatically with a defined periodicity - -The secrets cannot be edited/viewed from within Backstage to make it more secure. Backstage will only have permissions to LIST data from Vault. And the user who wants to edit/view a certain secret needs the correct permissions to do so. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-vault` instead. diff --git a/plugins/vault/package.json b/plugins/vault/package.json index a3b1281e33..3a1f7bf0cd 100644 --- a/plugins/vault/package.json +++ b/plugins/vault/package.json @@ -3,7 +3,8 @@ "version": "0.1.29", "description": "A Backstage plugin that integrates towards Vault", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-vault" }, "publishConfig": { "access": "public", @@ -62,5 +63,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-vault instead." } From a5613e38beff4aff680ad625d7cb2a474979c1ff Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:50:59 +0200 Subject: [PATCH 58/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713466257285.md | 5 ++++ plugins/xcmetrics/README.md | 38 ++--------------------------- plugins/xcmetrics/package.json | 6 +++-- 3 files changed, 11 insertions(+), 38 deletions(-) create mode 100644 .changeset/migrate-1713466257285.md diff --git a/.changeset/migrate-1713466257285.md b/.changeset/migrate-1713466257285.md new file mode 100644 index 0000000000..a7e9b68136 --- /dev/null +++ b/.changeset/migrate-1713466257285.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-xcmetrics': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/xcmetrics/README.md b/plugins/xcmetrics/README.md index 0823cbbb24..2fb0f202ae 100644 --- a/plugins/xcmetrics/README.md +++ b/plugins/xcmetrics/README.md @@ -1,37 +1,3 @@ -# XCMetrics +# Deprecated -[XCMetrics](https://xcmetrics.io) is a tool for collecting build metrics from XCode. -With this plugin, you can view data from XCMetrics directly in Backstage. - -![XCMetrics-overview](./docs/XCMetrics-overview.png) - -## Getting started - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-xcmetrics -``` - -In `packages/app/src/App.tsx`, add the following: - -```ts -import { XcmetricsPage } from '@backstage/plugin-xcmetrics'; -``` - -```tsx - - {/* Other routes... */} - } /> - -``` - -Add the URL to your XCMetrics backend instance in `app-config.yaml` like so: - -```yaml -proxy: - ... - '/xcmetrics': - target: http://127.0.0.1:8080/v1 -``` - -Start Backstage and navigate to `/xcmetrics` to view your build metrics! +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-xcmetrics` instead. diff --git a/plugins/xcmetrics/package.json b/plugins/xcmetrics/package.json index 2ba48c6fcb..768abe6ac9 100644 --- a/plugins/xcmetrics/package.json +++ b/plugins/xcmetrics/package.json @@ -3,7 +3,8 @@ "version": "0.2.52", "description": "A Backstage plugin that shows XCode build metrics for your components", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-xcmetrics" }, "publishConfig": { "access": "public", @@ -59,5 +60,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-xcmetrics instead." } From 1f6582f7d0c0b8d14e0fe6a10721c01dbc257117 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 19 Apr 2024 10:29:42 +0200 Subject: [PATCH 59/63] chore: update deprecations for circle CI Signed-off-by: blam --- .changeset/migrate-1713465727782.md | 7 ------- .changeset/migrate-1713465921873.md | 2 +- plugins/circleci/package.json | 5 ++--- 3 files changed, 3 insertions(+), 11 deletions(-) delete mode 100644 .changeset/migrate-1713465727782.md diff --git a/.changeset/migrate-1713465727782.md b/.changeset/migrate-1713465727782.md deleted file mode 100644 index 29c186cd48..0000000000 --- a/.changeset/migrate-1713465727782.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-adr': patch -'@backstage/plugin-adr-backend': patch -'@backstage/plugin-adr-common': patch ---- - -These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/.changeset/migrate-1713465921873.md b/.changeset/migrate-1713465921873.md index 47918fc80d..82e9e426aa 100644 --- a/.changeset/migrate-1713465921873.md +++ b/.changeset/migrate-1713465921873.md @@ -2,4 +2,4 @@ '@backstage/plugin-circleci': patch --- -These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. +This package has been deprecated in favour of the [Circle-CI](https://github.com/CircleCI-Public/backstage-plugin) plugin. Please migrate to that plugin instead. diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json index 117ba0d17e..d3cacc7f7a 100644 --- a/plugins/circleci/package.json +++ b/plugins/circleci/package.json @@ -3,8 +3,7 @@ "version": "0.3.34", "description": "A Backstage plugin that integrates towards Circle CI", "backstage": { - "role": "frontend-plugin", - "moved": "@backstage-community/plugin-circleci" + "role": "frontend-plugin" }, "publishConfig": { "access": "public", @@ -61,5 +60,5 @@ "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, - "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-circleci instead." + "deprecated": "This package has been moved to the to the https://github.com/CircleCI-Public/backstage-plugin repository. You should migrate to using that instead." } From 778101104775cffe7c6936df6dc99ca703616ca5 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 19 Apr 2024 11:31:41 +0200 Subject: [PATCH 60/63] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713519093920.md | 5 + plugins/tech-radar/README.md | 262 +--------------------------- plugins/tech-radar/package.json | 6 +- 3 files changed, 11 insertions(+), 262 deletions(-) create mode 100644 .changeset/migrate-1713519093920.md diff --git a/.changeset/migrate-1713519093920.md b/.changeset/migrate-1713519093920.md new file mode 100644 index 0000000000..50e4c680b6 --- /dev/null +++ b/.changeset/migrate-1713519093920.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-tech-radar': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/tech-radar/README.md b/plugins/tech-radar/README.md index f90bd2748e..12dbd7196c 100644 --- a/plugins/tech-radar/README.md +++ b/plugins/tech-radar/README.md @@ -1,261 +1,3 @@ -# @backstage/plugin-tech-radar +# Deprecated -Screenshot of Tech Radar plugin - -The Backstage integration for the Tech Radar based on [Zalando's Tech Radar](https://opensource.zalando.com/tech-radar/) open sourced on [GitHub](https://github.com/zalando/tech-radar). This is used at [Spotify](https://spotify.github.io) for visualizing the official guidelines of different areas of software development such as languages, frameworks, infrastructure and processes. - -Read the [blog post on backstage.io about the Tech Radar](https://backstage.io/blog/2020/05/14/tech-radar-plugin). - -## Purpose - -Zalando has a fantastic description [on their website](https://opensource.zalando.com/tech-radar/): - -> The Tech Radar is a tool to inspire and support engineering teams at Zalando to pick the best technologies for new projects; it provides a platform to share knowledge and experience in technologies, to reflect on technology decisions and continuously evolve our technology landscape. Based on the pioneering work of ThoughtWorks, our Tech Radar sets out the changes in technologies that are interesting in software development — changes that we think our engineering teams should pay attention to and consider using in their projects. - -It serves and scales well for teams and companies of all sizes that want to have alignment across dozens of technologies and visualize it in a simple way. - -## Getting Started - -The Tech Radar can be used in two ways: - -- **Simple (Recommended)** - This gives you an out-of-the-box Tech Radar experience. It lives on the `/tech-radar` URL of your Backstage installation. -- **Advanced** - This gives you the React UI component directly. It enables you to insert the Radar on your own layout or page for a more customized feel. - -### Install - -For either simple or advanced installations, you'll need to add the dependency using Yarn: - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-tech-radar -``` - -### Configuration - -Modify your app routes to include the Router component exported from the tech radar, for example: - -```tsx -// In packages/app/src/App.tsx -import { TechRadarPage } from '@backstage/plugin-tech-radar'; - -const routes = ( - - {/* ...other routes */} - } - /> -``` - -If you'd like to configure it more, see the `TechRadarPageProps` and `TechRadarComponentProps` types for options: - -```ts -export type TechRadarPageProps = TechRadarComponentProps & { - title?: string; - subtitle?: string; - pageTitle?: string; -}; - -export interface TechRadarPageProps { - width: number; - height: number; - svgProps?: object; -} -``` - -### Radar properties - -When defining the radar entries you can see the available properties on the file [api](./src/api.ts) - -## Tech radar data model - -| Name | Type | Description | Required? | -| ----------- | ----------------------- | -------------------------------------------------------------------- | --------- | -| `title` | string | The title of the radar | Yes | -| `quadrants` | [quadrant[]](#quadrant) | The 4 quadrants of the radar, clockwise starting at the bottom right | Yes | -| `rings` | [ring[]](#ring) | The radar rings, starting from the inside | Yes | -| `entries` | [entry[]](#entry) | The radar entries | Yes | - -### quadrant - -| Name | Type | Description | Required? | -| ------ | ------ | ------------------------ | --------- | -| `id` | string | The id of the quadrant | Yes | -| `name` | string | The name of the quadrant | Yes | - -### ring - -| Name | Type | Description | Required? | -| ------------- | ------ | ------------------------------------------------- | --------- | -| `id` | string | The id of the ring | Yes | -| `name` | string | The name of the ring | Yes | -| `color` | string | The color of the ring and entries inside the ring | Yes | -| `description` | string | Description of the Ring | No | - -### entry - -| Name | Type | Description | Required? | -| ------------- | ----------------------- | ----------------------------------------------- | --------- | -| `id` | string | The unique id from the entry | Yes | -| `title` | string | The title that is shown in the radar | Yes | -| `description` | string | The full description of the entry | No | -| key | string | The entry key | Yes | -| `url` | string | The URL to the entry internal or external page | No | -| `quadrant` | string | The name of the quadrant connected to the entry | Yes | -| `timeline` | [timeline[]](#timeline) | Requires minimal one timeline entry | Yes | - -### timeline - -| Name | Type | Description | Required? | -| ------------- | ------ | ------------------------------------------------------------- | --------- | -| `moved` | number | Possible values are: -1 (moved out), 0 (stayed), 1 (moved in) | Yes | -| `ringId` | string | The ring id | Yes | -| `date` | string | Date in format (YYYY-MM-dd) | Yes | -| `description` | string | A long description | Yes | - -### Sample - -This is a sample on how the JSON file could look like. -The TS example can be found [here](src/sample.ts). - -```JSON -{ - "title": "Title of your Tech radar", - "quadrants": [ - { - "id": "1", - "name": "Bottom right" - }, - { - "id": "2", - "name": "Bottom left" - }, - { - "id": "3", - "name": "Top left" - }, - { - "id": "4", - "name": "Top right" - } - ], - "rings": [ - { - "id": "adopt", - "name": "ADOPT", - "color": "#93c47d" - }, - { - "id": "trial", - "name": "TRIAL", - "color": "#93d2c2" - }, - { - "id": "assess", - "name": "ASSESS", - "color": "#fbdb84" - }, - { - "id": "hold", - "name": "HOLD", - "color": "#efafa9" - } - ], - "entries": [ - { - "id": "typescript", - "title": "Typescript", - "description": "Long description for Typescript", - "key": "typescript", - "url": "#", - "quadrant": "1", - "timeline": [ - { - "moved": 1, - "ringId": "adopt", - "date": "2022-02-08", - "description": "Long description for adopt" - }, - { - "moved": 0, - "ringId": "trial", - "date": "2022-02-06", - "description": "Long description for trial" - } - ] - }, - ... - ] -} -``` - -## Frequently Asked Questions - -### Who created the Tech Radar? - -[ThoughtWorks](https://thoughtworks.com/radar) created the Tech Radar concept, and [Zalando created the visualization](https://opensource.zalando.com/tech-radar/) that we use at Spotify and in this plugin. - -### How do I load in my own data? - -The `TechRadar` plugin uses the `techRadarApiRef` to get a client which implements the `TechRadarApi` interface. The default sample one is located [here](https://github.com/backstage/backstage/blob/master/plugins/tech-radar/src/sample.ts). To load your own data, you'll need to provide a class that implements the `TechRadarApi` and override the `techRadarApiRef` in the `app/src/apis.ts`. - -```ts -// app/src/lib/MyClient.ts -import { - TechRadarApi, - TechRadarLoaderResponse, -} from '@backstage/plugin-tech-radar'; - -export class MyOwnClient implements TechRadarApi { - async load(id: string | undefined): Promise { - // if needed id prop can be used to fetch the correct data - - const data = await fetch('https://mydata.json').then(res => res.json()); - - // For example, this converts the timeline dates into date objects - return { - ...data, - entries: data.entries.map(entry => ({ - ...entry, - timeline: entry.timeline.map(timeline => ({ - ...timeline, - date: new Date(timeline.date), - })), - })), - }; - } -} - -// app/src/apis.ts -import { MyOwnClient } from './lib/MyClient'; -import { techRadarApiRef } from '@backstage/plugin-tech-radar'; - -export const apis: AnyApiFactory[] = [ - /* - ... - */ - createApiFactory(techRadarApiRef, new MyOwnClient()), -]; -``` - -### How do I write tests? - -You can use the `svgProps` option to pass custom React props to the `` element we create for the Tech Radar. This complements well with the `data-testid` attribute and the `@testing-library/react` library we use in Backstage. - -```tsx - - -// Then, in your tests... -// const { getByTestId } = render(...); -// expect(getByTestId('tech-radar-svg')).toBeInTheDocument(); -``` - -### How do I support multiple radars - -The `TechRadarPage` and `TechRadarComponent` components both take an optional `id` prop which is subsequently passed to the `load` method of the API to distinguish which radar's data to load. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-tech-radar` instead. diff --git a/plugins/tech-radar/package.json b/plugins/tech-radar/package.json index 0b03684f78..b6de7cd30d 100644 --- a/plugins/tech-radar/package.json +++ b/plugins/tech-radar/package.json @@ -3,7 +3,8 @@ "version": "0.7.3", "description": "A Backstage plugin that lets you display a Tech Radar for your organization", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-tech-radar" }, "publishConfig": { "access": "public" @@ -76,5 +77,6 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-tech-radar instead." } From 9c8919411583ae2c88a0e366f432c2bc117dad0a Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 19 Apr 2024 11:32:22 +0200 Subject: [PATCH 61/63] chore: keep the org plugin for now Signed-off-by: blam --- plugins/org-react/README.md | 32 ++++++++++++++++-- plugins/org-react/package.json | 6 ++-- plugins/org/README.md | 62 ++++++++++++++++++++++++++++++++-- plugins/org/package.json | 6 ++-- 4 files changed, 94 insertions(+), 12 deletions(-) diff --git a/plugins/org-react/README.md b/plugins/org-react/README.md index e406877e66..1f87a5e7e6 100644 --- a/plugins/org-react/README.md +++ b/plugins/org-react/README.md @@ -1,3 +1,31 @@ -# Deprecated +# org-react -This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-org-react` instead. +## features + +- Group list picker component + +### GroupListPicker + +The `GroupListPicker` component displays a select box which also has autocomplete functionality. + +To use the `GroupListPicker` component you'll need to import it and add it to your desired place. + +```diff ++ import { GroupListPicker } from '@backstage/plugin-org-react'; ++ import React, { useState } from 'react'; + ++ const [group, setGroup] = useState(); + + + ++ + + +``` + +The `GroupListPicker` comes with four props: + +- `groupTypes`: gives the user the option which group types the component should load. If no value is provided all group types will be loaded in; +- `placeholder`: the placeholder that the select box in the component should display. This might be helpful in informing your users what the functionality of the component is. +- `onChange`: a prop to help the user to give access to the selected group +- `defaultValue`: gives the user the option to define a default value that will be shown initially before making a selection diff --git a/plugins/org-react/package.json b/plugins/org-react/package.json index 801d7f187f..b56d916e89 100644 --- a/plugins/org-react/package.json +++ b/plugins/org-react/package.json @@ -2,8 +2,7 @@ "name": "@backstage/plugin-org-react", "version": "0.1.23", "backstage": { - "role": "web-library", - "moved": "@backstage-community/plugin-org-react" + "role": "web-library" }, "publishConfig": { "access": "public", @@ -60,6 +59,5 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - }, - "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-org-react instead." + } } diff --git a/plugins/org/README.md b/plugins/org/README.md index c3ec43c7e3..9cf165f06d 100644 --- a/plugins/org/README.md +++ b/plugins/org/README.md @@ -1,3 +1,61 @@ -# Deprecated +# Org Plugin for Backstage -This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-org` instead. +> Disclaimer: +> If you are looking for documentation on the experimental new frontend system support, please go [here](./README-alpha.md). + +## Features + +- Show Group Page +- Show User Profile +- Quick access to Groups + +### Group Page + +Here's an example of what the Group Page looks like: + +![Group Page example](./docs/group-page-example.png) + +### User Profile + +Here's an example of what the User Profile looks like: + +![Group Page example](./docs/user-profile-example.png) + +### MyGroupsSidebarItem + +The MyGroupsSidebarItem provides quick access to the group(s) the logged in user is a member of directly in the sidebar. + +To use the MyGroupsSidebarItem you'll need to add it to your `Root.tsx` - found at `packages\app\src\components\Root` - like this: + +```diff ++ import { MyGroupsSidebarItem } from '@backstage/plugin-org'; ++ import GroupIcon from '@material-ui/icons/People'; + + + + //... + }> + {/* Global nav, not org-specific */} + //... + ++ + //... + + + +``` + +Once added MyGroupsSidebarItem will work in three ways: + +1. The user is not logged in or the logged in user is not a member of any group: the MyGroupsSidebarItem will not display anything in the sidebar +2. The user is logged in and a member of only one group: the MyGroupsSidebarItem will display a single item in the sidebar like this: + + ![MyGroupsSidebarItem single example](./docs/mygroupssidebaritem-single.png) + +3. The user is logged in and a member of more than one group: the MyGroupsSidebarItem will display a single items with a sub-menu with all the related groups like this: + + ![MyGroupsSidebarItem multiple example](./docs/mygroupssidebaritem-multiple.png) diff --git a/plugins/org/package.json b/plugins/org/package.json index 54b248a4b8..173495d846 100644 --- a/plugins/org/package.json +++ b/plugins/org/package.json @@ -3,8 +3,7 @@ "version": "0.6.24", "description": "A Backstage plugin that helps you create entity pages for your organization", "backstage": { - "role": "frontend-plugin", - "moved": "@backstage-community/plugin-org" + "role": "frontend-plugin" }, "publishConfig": { "access": "public" @@ -83,6 +82,5 @@ "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" - }, - "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-org instead." + } } From d9e576043d1c9a8603f3adeb53473f516c9708a7 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 19 Apr 2024 11:35:02 +0200 Subject: [PATCH 62/63] chore: remove org changeset Signed-off-by: blam --- .changeset/migrate-1713466162074.md | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 .changeset/migrate-1713466162074.md diff --git a/.changeset/migrate-1713466162074.md b/.changeset/migrate-1713466162074.md deleted file mode 100644 index a23aa24226..0000000000 --- a/.changeset/migrate-1713466162074.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-org': patch -'@backstage/plugin-org-react': patch ---- - -These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. From ec333c29db7d961b6868c45bfa1f5de1c2691fda Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 19 Apr 2024 12:05:20 +0200 Subject: [PATCH 63/63] chore: remove extraneous changeset Signed-off-by: blam --- .changeset/migrate-1713466136342.md | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 .changeset/migrate-1713466136342.md diff --git a/.changeset/migrate-1713466136342.md b/.changeset/migrate-1713466136342.md deleted file mode 100644 index c57b69218f..0000000000 --- a/.changeset/migrate-1713466136342.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-newrelic-dashboard': patch ---- - -These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository.