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." }