Files
backstage/plugins/lighthouse-backend
Florian JUDITH 60ee2448d0 Fixed scheduled defaults
Signed-off-by: Florian JUDITH <florian.judith.b@gmail.com>
2023-11-29 22:29:06 -05:00
..
2023-11-25 10:15:02 -05:00
2023-11-28 13:37:18 +00:00
2023-11-25 11:01:48 -05:00
2023-11-29 22:29:06 -05: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, tokenManager } = env;

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

  await createScheduler({
    logger,
    scheduler,
    config,
    catalogClient,
    tokenManager,
  });
}
  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:
    frequency:
      hours: 12 # Default: 1 day
    timeout:
      minutes: 30 # Default: 10 minutes