feat: add rollbar links
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
|
||||
import { getVoidLogger } from '@backstage/backend-common';
|
||||
import { ConfigReader } from '@backstage/config';
|
||||
import express from 'express';
|
||||
import request from 'supertest';
|
||||
import { RollbarApi } from '../api';
|
||||
@@ -37,6 +38,9 @@ describe('createRouter', () => {
|
||||
const router = await createRouter({
|
||||
rollbarApi,
|
||||
logger: getVoidLogger(),
|
||||
config: ConfigReader.fromConfigs([
|
||||
{ context: 'abc', data: { rollbar: { accountToken: 'foo' } } },
|
||||
]),
|
||||
});
|
||||
app = express().use(router);
|
||||
});
|
||||
|
||||
@@ -14,15 +14,17 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { errorHandler } from '@backstage/backend-common';
|
||||
import { Logger } from 'winston';
|
||||
import Router from 'express-promise-router';
|
||||
import express from 'express';
|
||||
import Router from 'express-promise-router';
|
||||
import { Logger } from 'winston';
|
||||
import { errorHandler } from '@backstage/backend-common';
|
||||
import { Config } from '@backstage/config';
|
||||
import { RollbarApi } from '../api';
|
||||
|
||||
export interface RouterOptions {
|
||||
rollbarApi?: RollbarApi;
|
||||
logger: Logger;
|
||||
config: Config;
|
||||
}
|
||||
|
||||
export async function createRouter(
|
||||
@@ -30,7 +32,10 @@ export async function createRouter(
|
||||
): Promise<express.Router> {
|
||||
const router = Router();
|
||||
const logger = options.logger.child({ plugin: 'rollbar' });
|
||||
const accessToken = !options.rollbarApi ? getRollbarAccountToken(logger) : '';
|
||||
const config = options.config.getConfig('rollbar');
|
||||
const accessToken = !options.rollbarApi
|
||||
? getRollbarAccountToken(config, logger)
|
||||
: '';
|
||||
|
||||
if (options.rollbarApi || accessToken) {
|
||||
const rollbarApi =
|
||||
@@ -82,17 +87,20 @@ export async function createRouter(
|
||||
return router;
|
||||
}
|
||||
|
||||
function getRollbarAccountToken(logger: Logger) {
|
||||
const token = process.env.ROLLBAR_ACCOUNT_TOKEN || '';
|
||||
function getRollbarAccountToken(config: Config, logger: Logger) {
|
||||
const token =
|
||||
config.getOptionalString('accountToken') ||
|
||||
process.env.ROLLBAR_ACCOUNT_TOKEN ||
|
||||
'';
|
||||
|
||||
if (!token) {
|
||||
if (process.env.NODE_ENV !== 'development') {
|
||||
throw new Error(
|
||||
'Rollbar token must be provided in ROLLBAR_ACCOUNT_TOKEN environment variable to start the API.',
|
||||
'The rollbar.accountToken must be provided in config to start the API.',
|
||||
);
|
||||
}
|
||||
logger.warn(
|
||||
'Failed to initialize rollbar backend, set ROLLBAR_ACCOUNT_TOKEN environment variable to start the API.',
|
||||
'Failed to initialize rollbar backend, set rollbar.accountToken in config to start the API.',
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -14,9 +14,13 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { createServiceBuilder } from '@backstage/backend-common';
|
||||
import { Server } from 'http';
|
||||
import { Logger } from 'winston';
|
||||
import {
|
||||
createServiceBuilder,
|
||||
loadBackendConfig,
|
||||
} from '@backstage/backend-common';
|
||||
import { ConfigReader } from '@backstage/config';
|
||||
import { createRouter } from './router';
|
||||
|
||||
export interface ServerOptions {
|
||||
@@ -24,14 +28,16 @@ export interface ServerOptions {
|
||||
enableCors: boolean;
|
||||
logger: Logger;
|
||||
}
|
||||
|
||||
export async function startStandaloneServer(
|
||||
options: ServerOptions,
|
||||
): Promise<Server> {
|
||||
const logger = options.logger.child({ service: 'rollbar-backend' });
|
||||
const config = ConfigReader.fromConfigs(await loadBackendConfig());
|
||||
|
||||
logger.debug('Creating application...');
|
||||
|
||||
const router = await createRouter({ logger });
|
||||
const router = await createRouter({ logger, config });
|
||||
|
||||
const service = createServiceBuilder(module)
|
||||
.enableCors({ origin: 'http://localhost:3000' })
|
||||
|
||||
Reference in New Issue
Block a user