diff --git a/packages/app/src/components/catalog/EntityPage.tsx b/packages/app/src/components/catalog/EntityPage.tsx
index 879e2fe6f7..cc1ae8bedc 100644
--- a/packages/app/src/components/catalog/EntityPage.tsx
+++ b/packages/app/src/components/catalog/EntityPage.tsx
@@ -14,6 +14,7 @@
* limitations under the License.
*/
import { Router as GitHubActionsRouter } from '@backstage/plugin-github-actions';
+import { Router as SentryRouter } from '@backstage/plugin-sentry';
import React from 'react';
import {
EntityPageLayout,
@@ -43,6 +44,11 @@ const ServiceEntityPage = ({ entity }: { entity: Entity }) => (
title="CI/CD"
element={}
/>
+ }
+ />
);
@@ -58,6 +64,11 @@ const WebsiteEntityPage = ({ entity }: { entity: Entity }) => (
title="CI/CD"
element={}
/>
+ }
+ />
);
diff --git a/plugins/catalog/src/components/EntityPageOverview/EntityPageOverview.tsx b/plugins/catalog/src/components/EntityPageOverview/EntityPageOverview.tsx
index f261698f7d..9b29b205cf 100644
--- a/plugins/catalog/src/components/EntityPageOverview/EntityPageOverview.tsx
+++ b/plugins/catalog/src/components/EntityPageOverview/EntityPageOverview.tsx
@@ -17,7 +17,6 @@
// TODO(shmidt-i): move to the app
import { Entity } from '@backstage/catalog-model';
import { Content } from '@backstage/core';
-import { SentryIssuesWidget } from '@backstage/plugin-sentry';
import { LatestWorkflowRunCard } from '@backstage/plugin-github-actions';
import {
JenkinsBuildsWidget,
@@ -53,16 +52,6 @@ export const EntityPageOverview: FC<{ entity: Entity }> = ({ entity }) => {
)}
- {entity.metadata?.annotations?.['backstage.io/sentry-project-id'] && (
-
-
-
- )}
);
diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json
index d5b29cc307..294d7159bf 100644
--- a/plugins/sentry/package.json
+++ b/plugins/sentry/package.json
@@ -21,6 +21,7 @@
"clean": "backstage-cli clean"
},
"dependencies": {
+ "@backstage/catalog-model": "^0.1.1-alpha.21",
"@backstage/core": "^0.1.1-alpha.21",
"@backstage/theme": "^0.1.1-alpha.21",
"@material-ui/core": "^4.9.1",
@@ -29,6 +30,7 @@
"@types/react": "^16.9",
"react": "^16.13.1",
"react-dom": "^16.13.1",
+ "react-router": "6.0.0-beta.0",
"react-sparklines": "^1.7.0",
"react-use": "^15.3.3",
"timeago.js": "^4.0.2"
diff --git a/plugins/sentry/src/components/Router.tsx b/plugins/sentry/src/components/Router.tsx
new file mode 100644
index 0000000000..7c0468fda2
--- /dev/null
+++ b/plugins/sentry/src/components/Router.tsx
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2020 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+import { Entity } from '@backstage/catalog-model';
+import { Routes, Route } from 'react-router';
+import { WarningPanel } from '@backstage/core';
+import { SentryPluginWidget } from './SentryPluginWidget/SentryPluginWidget';
+
+const SENTRY_ANNOTATION = 'sentry.io/project-id';
+
+const isPluginApplicableToEntity = (entity: Entity) =>
+ Boolean(entity.metadata.annotations?.[SENTRY_ANNOTATION]) &&
+ entity.metadata.annotations?.[SENTRY_ANNOTATION] !== '';
+
+export const Router = ({ entity }: { entity: Entity }) =>
+ !isPluginApplicableToEntity(entity) ? (
+
+ `entity.metadata.annotations['
+ {SENTRY_ANNOTATION}']` key is missing on the entity.{' '}
+
+ ) : (
+
+
+ }
+ />
+ )
+
+ );
diff --git a/plugins/sentry/src/index.ts b/plugins/sentry/src/index.ts
index 50da801a40..a0d3cab1be 100644
--- a/plugins/sentry/src/index.ts
+++ b/plugins/sentry/src/index.ts
@@ -15,4 +15,5 @@
*/
export { plugin } from './plugin';
+export { Router } from './components/Router';
export { SentryPluginWidget as SentryIssuesWidget } from './components/SentryPluginWidget/SentryPluginWidget';