Lighthouse Backend
Lighthouse Backend allows you to run scheduled lighthouse Tests for each Website with the annotation lighthouse.com/website-url.
Setup
- Install the plugin using:
# From your Backstage root directory
yarn add --cwd packages/backend @backstage/plugin-lighthouse-backend
- Create a
lighthouse.tsfile insidepackages/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 });
}
- Modify your
packages/backend/src/index.tsto 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