Files
backstage/plugins/lighthouse-backend
github-actions[bot] f8c8e8de37 Version Packages (next)
2023-08-22 11:37:48 +00:00
..
2023-07-31 17:11:00 +02:00
2023-08-22 11:37:48 +00:00
2023-08-22 11:37:48 +00:00

Lighthouse Backend

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:
# From your Backstage root directory
yarn add --cwd packages/backend @backstage/plugin-lighthouse-backend
  1. Create a lighthouse.ts file inside packages/backend/src/plugins/:
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 } = env;

  const catalogClient = new CatalogClient({
    discoveryApi: env.discovery,
  });

  await createScheduler({ logger, scheduler, config, catalogClient });
}
  1. Modify your packages/backend/src/index.ts to include:
 ...

 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, here's how you can set that up:

In your packages/backend/src/index.ts make the following changes:

  import { createBackend } from '@backstage/backend-defaults';
+ import { lighthousePlugin } from '@backstage/plugin-lighthouse-backend';
  const backend = createBackend();
  // ... other feature additions
+ backend.add(lighthousePlugin());
  backend.start();

Configuration

You can define how often and when the scheduler should run the audits:

lighthouse:
  schedule:
    days: 1