From 9a2e3b93de060e5ffb11c7a6b5550502a374ab6b Mon Sep 17 00:00:00 2001 From: ebarrios Date: Thu, 27 Aug 2020 17:39:22 +0200 Subject: [PATCH 1/7] Added Widget for listing workflows run --- .../src/components/Widget/Widget.tsx | 53 ++++++++++++++++++- .../src/components/Widget/index.ts | 2 +- 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/plugins/github-actions/src/components/Widget/Widget.tsx b/plugins/github-actions/src/components/Widget/Widget.tsx index 031364c8ce..201004f46e 100644 --- a/plugins/github-actions/src/components/Widget/Widget.tsx +++ b/plugins/github-actions/src/components/Widget/Widget.tsx @@ -15,7 +15,7 @@ */ import React, { useEffect } from 'react'; import { useWorkflowRuns } from '../useWorkflowRuns'; -import { WorkflowRun } from '../WorkflowRunsTable'; +import { WorkflowRun, WorkflowRunsTable } from '../WorkflowRunsTable'; import { Entity } from '@backstage/catalog-model'; import { WorkflowRunStatus } from '../WorkflowRunStatus'; import { @@ -108,3 +108,54 @@ export const Widget = ({ ); }; + +const WidgetListContent = ({ + error, + loading, + branch, +}: { + error?: Error; + loading?: boolean; + lastRun: WorkflowRun; + branch: string; +}) => { + if (error) return Couldn't fetch {branch} runs; + if (loading) return ; + return ; +}; + +export const WidgetList = ({ + entity, + branch = 'master', +}: { + entity: Entity; + branch: string; +}) => { + const errorApi = useApi(errorApiRef); + const [owner, repo] = ( + entity?.metadata.annotations?.['backstage.io/github-actions-id'] ?? '/' + ).split('/'); + const [{ runs, loading, error }] = useWorkflowRuns({ + owner, + repo, + branch, + }); + + const lastRun = runs?.[0] ?? ({} as WorkflowRun); + useEffect(() => { + if (error) { + errorApi.post(error); + } + }, [error, errorApi]); + + return ( + + + + ); +}; diff --git a/plugins/github-actions/src/components/Widget/index.ts b/plugins/github-actions/src/components/Widget/index.ts index 2b34671ab5..0efc84d952 100644 --- a/plugins/github-actions/src/components/Widget/index.ts +++ b/plugins/github-actions/src/components/Widget/index.ts @@ -13,4 +13,4 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -export { Widget } from './Widget'; +export { Widget, WidgetList } from './Widget'; From 96d67a24ce04a4714409f2772d7422ba471ebe08 Mon Sep 17 00:00:00 2001 From: ebarrios Date: Thu, 27 Aug 2020 18:25:39 +0200 Subject: [PATCH 2/7] Added Widget for listing workflows run to catalog under CI/CD tab --- .../components/CatalogPage/CatalogLayout.tsx | 1 - .../components/CatalogPage/utils/timeUtil.js | 2 +- .../src/components/EntityPage/EntityPage.tsx | 2 ++ .../components/EntityPageCi/EntityPageCi.tsx | 35 +++++++++++++++++++ 4 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 plugins/catalog/src/components/EntityPageCi/EntityPageCi.tsx diff --git a/plugins/catalog/src/components/CatalogPage/CatalogLayout.tsx b/plugins/catalog/src/components/CatalogPage/CatalogLayout.tsx index 39b3c66013..dfa4f2d39d 100644 --- a/plugins/catalog/src/components/CatalogPage/CatalogLayout.tsx +++ b/plugins/catalog/src/components/CatalogPage/CatalogLayout.tsx @@ -38,7 +38,6 @@ const CatalogLayout = ({ children }: Props) => {
diff --git a/plugins/catalog/src/components/CatalogPage/utils/timeUtil.js b/plugins/catalog/src/components/CatalogPage/utils/timeUtil.js index 327f4177a8..c32bebc4f8 100644 --- a/plugins/catalog/src/components/CatalogPage/utils/timeUtil.js +++ b/plugins/catalog/src/components/CatalogPage/utils/timeUtil.js @@ -67,6 +67,6 @@ export function getTimeBasedGreeting() { const greetingsKey = random(Object.keys(greetings)); return { language: greetingsKey, - greeting: greetings[greetingsKey], + greeting: greetings.English, }; } diff --git a/plugins/catalog/src/components/EntityPage/EntityPage.tsx b/plugins/catalog/src/components/EntityPage/EntityPage.tsx index adbc758067..558f4b6551 100644 --- a/plugins/catalog/src/components/EntityPage/EntityPage.tsx +++ b/plugins/catalog/src/components/EntityPage/EntityPage.tsx @@ -36,6 +36,7 @@ import { catalogApiRef } from '../..'; import { EntityContextMenu } from '../EntityContextMenu/EntityContextMenu'; import { EntityPageDocs } from '../EntityPageDocs/EntityDocsPage'; import { EntityPageApi } from '../EntityPageApi/EntityPageApi'; +import { EntityPageCi } from '../EntityPageCi/EntityPageCi'; import { EntityPageOverview } from '../EntityPageOverview/EntityPageOverview'; import { FavouriteEntity } from '../FavouriteEntity/FavouriteEntity'; import { UnregisterEntityDialog } from '../UnregisterEntityDialog/UnregisterEntityDialog'; @@ -129,6 +130,7 @@ export const EntityPage: FC<{}> = () => { { id: 'ci', label: 'CI/CD', + content: (e: Entity) => , }, { id: 'tests', diff --git a/plugins/catalog/src/components/EntityPageCi/EntityPageCi.tsx b/plugins/catalog/src/components/EntityPageCi/EntityPageCi.tsx new file mode 100644 index 0000000000..01de6dc9a2 --- /dev/null +++ b/plugins/catalog/src/components/EntityPageCi/EntityPageCi.tsx @@ -0,0 +1,35 @@ +/* + * 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 { Entity } from '@backstage/catalog-model'; +import { Content } from '@backstage/core'; +import { WidgetList as GithubActionsListWidget } from '@backstage/plugin-github-actions'; +import { Grid } from '@material-ui/core'; +import React, { FC } from 'react'; + +export const EntityPageCi: FC<{ entity: Entity }> = ({ entity }) => { + return ( + + + {entity.metadata?.annotations?.['backstage.io/github-actions-id'] && ( + + + + )} + + + ); +}; From 691b8ad8fbe44e465f9645e5d6fa0d08289b8a03 Mon Sep 17 00:00:00 2001 From: ebarrios Date: Fri, 28 Aug 2020 10:56:05 +0200 Subject: [PATCH 3/7] Reverted change applied to master by mistake --- plugins/catalog/src/components/CatalogPage/CatalogLayout.tsx | 1 + plugins/catalog/src/components/CatalogPage/utils/timeUtil.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/catalog/src/components/CatalogPage/CatalogLayout.tsx b/plugins/catalog/src/components/CatalogPage/CatalogLayout.tsx index dfa4f2d39d..39b3c66013 100644 --- a/plugins/catalog/src/components/CatalogPage/CatalogLayout.tsx +++ b/plugins/catalog/src/components/CatalogPage/CatalogLayout.tsx @@ -38,6 +38,7 @@ const CatalogLayout = ({ children }: Props) => {
diff --git a/plugins/catalog/src/components/CatalogPage/utils/timeUtil.js b/plugins/catalog/src/components/CatalogPage/utils/timeUtil.js index c32bebc4f8..327f4177a8 100644 --- a/plugins/catalog/src/components/CatalogPage/utils/timeUtil.js +++ b/plugins/catalog/src/components/CatalogPage/utils/timeUtil.js @@ -67,6 +67,6 @@ export function getTimeBasedGreeting() { const greetingsKey = random(Object.keys(greetings)); return { language: greetingsKey, - greeting: greetings.English, + greeting: greetings[greetingsKey], }; } From b0a6218c1a65e07ea3a10a2623c1840ea6c5002a Mon Sep 17 00:00:00 2001 From: ebarrios Date: Fri, 28 Aug 2020 10:56:48 +0200 Subject: [PATCH 4/7] Reverted change applied to master by mistake --- plugins/catalog/src/components/EntityPage/EntityPage.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/plugins/catalog/src/components/EntityPage/EntityPage.tsx b/plugins/catalog/src/components/EntityPage/EntityPage.tsx index 558f4b6551..adbc758067 100644 --- a/plugins/catalog/src/components/EntityPage/EntityPage.tsx +++ b/plugins/catalog/src/components/EntityPage/EntityPage.tsx @@ -36,7 +36,6 @@ import { catalogApiRef } from '../..'; import { EntityContextMenu } from '../EntityContextMenu/EntityContextMenu'; import { EntityPageDocs } from '../EntityPageDocs/EntityDocsPage'; import { EntityPageApi } from '../EntityPageApi/EntityPageApi'; -import { EntityPageCi } from '../EntityPageCi/EntityPageCi'; import { EntityPageOverview } from '../EntityPageOverview/EntityPageOverview'; import { FavouriteEntity } from '../FavouriteEntity/FavouriteEntity'; import { UnregisterEntityDialog } from '../UnregisterEntityDialog/UnregisterEntityDialog'; @@ -130,7 +129,6 @@ export const EntityPage: FC<{}> = () => { { id: 'ci', label: 'CI/CD', - content: (e: Entity) => , }, { id: 'tests', From 93b54256608ce7115c5f01c63eb9447ff71819f8 Mon Sep 17 00:00:00 2001 From: ebarrios Date: Fri, 28 Aug 2020 10:57:11 +0200 Subject: [PATCH 5/7] Reverted change applied to master by mistake --- .../components/EntityPageCi/EntityPageCi.tsx | 35 ------------------- 1 file changed, 35 deletions(-) delete mode 100644 plugins/catalog/src/components/EntityPageCi/EntityPageCi.tsx diff --git a/plugins/catalog/src/components/EntityPageCi/EntityPageCi.tsx b/plugins/catalog/src/components/EntityPageCi/EntityPageCi.tsx deleted file mode 100644 index 01de6dc9a2..0000000000 --- a/plugins/catalog/src/components/EntityPageCi/EntityPageCi.tsx +++ /dev/null @@ -1,35 +0,0 @@ -/* - * 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 { Entity } from '@backstage/catalog-model'; -import { Content } from '@backstage/core'; -import { WidgetList as GithubActionsListWidget } from '@backstage/plugin-github-actions'; -import { Grid } from '@material-ui/core'; -import React, { FC } from 'react'; - -export const EntityPageCi: FC<{ entity: Entity }> = ({ entity }) => { - return ( - - - {entity.metadata?.annotations?.['backstage.io/github-actions-id'] && ( - - - - )} - - - ); -}; From babfe5716b7940d7f5737fb8dca2b7ead9fc157b Mon Sep 17 00:00:00 2001 From: ebarrios Date: Thu, 27 Aug 2020 17:39:22 +0200 Subject: [PATCH 6/7] Added Widget for listing workflows run --- .../src/components/Widget/Widget.tsx | 53 ++++++++++++++++++- .../src/components/Widget/index.ts | 2 +- 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/plugins/github-actions/src/components/Widget/Widget.tsx b/plugins/github-actions/src/components/Widget/Widget.tsx index 031364c8ce..201004f46e 100644 --- a/plugins/github-actions/src/components/Widget/Widget.tsx +++ b/plugins/github-actions/src/components/Widget/Widget.tsx @@ -15,7 +15,7 @@ */ import React, { useEffect } from 'react'; import { useWorkflowRuns } from '../useWorkflowRuns'; -import { WorkflowRun } from '../WorkflowRunsTable'; +import { WorkflowRun, WorkflowRunsTable } from '../WorkflowRunsTable'; import { Entity } from '@backstage/catalog-model'; import { WorkflowRunStatus } from '../WorkflowRunStatus'; import { @@ -108,3 +108,54 @@ export const Widget = ({ ); }; + +const WidgetListContent = ({ + error, + loading, + branch, +}: { + error?: Error; + loading?: boolean; + lastRun: WorkflowRun; + branch: string; +}) => { + if (error) return Couldn't fetch {branch} runs; + if (loading) return ; + return ; +}; + +export const WidgetList = ({ + entity, + branch = 'master', +}: { + entity: Entity; + branch: string; +}) => { + const errorApi = useApi(errorApiRef); + const [owner, repo] = ( + entity?.metadata.annotations?.['backstage.io/github-actions-id'] ?? '/' + ).split('/'); + const [{ runs, loading, error }] = useWorkflowRuns({ + owner, + repo, + branch, + }); + + const lastRun = runs?.[0] ?? ({} as WorkflowRun); + useEffect(() => { + if (error) { + errorApi.post(error); + } + }, [error, errorApi]); + + return ( + + + + ); +}; diff --git a/plugins/github-actions/src/components/Widget/index.ts b/plugins/github-actions/src/components/Widget/index.ts index 2b34671ab5..0efc84d952 100644 --- a/plugins/github-actions/src/components/Widget/index.ts +++ b/plugins/github-actions/src/components/Widget/index.ts @@ -13,4 +13,4 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -export { Widget } from './Widget'; +export { Widget, WidgetList } from './Widget'; From 1cbc3c62693f8fee783e29283ef0ff50da6e284f Mon Sep 17 00:00:00 2001 From: ebarrios Date: Fri, 28 Aug 2020 13:58:05 +0200 Subject: [PATCH 7/7] Rename function WidgetList to RecentWorkflowRunsCard and WidgetListContet to RecentWorkflowRunsCardContent. Also remove lastrun parameter that was not beeing used on the RecentWorkflowRunsCardContent function --- .../github-actions/src/components/Widget/Widget.tsx | 11 ++++------- plugins/github-actions/src/components/Widget/index.ts | 2 +- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/plugins/github-actions/src/components/Widget/Widget.tsx b/plugins/github-actions/src/components/Widget/Widget.tsx index 201004f46e..59e1cc5289 100644 --- a/plugins/github-actions/src/components/Widget/Widget.tsx +++ b/plugins/github-actions/src/components/Widget/Widget.tsx @@ -109,14 +109,13 @@ export const Widget = ({ ); }; -const WidgetListContent = ({ +const RecentWorkflowRunsCardContent = ({ error, loading, branch, }: { error?: Error; loading?: boolean; - lastRun: WorkflowRun; branch: string; }) => { if (error) return Couldn't fetch {branch} runs; @@ -124,7 +123,7 @@ const WidgetListContent = ({ return ; }; -export const WidgetList = ({ +export const RecentWorkflowRunsCard = ({ entity, branch = 'master', }: { @@ -135,13 +134,12 @@ export const WidgetList = ({ const [owner, repo] = ( entity?.metadata.annotations?.['backstage.io/github-actions-id'] ?? '/' ).split('/'); - const [{ runs, loading, error }] = useWorkflowRuns({ + const [{ loading, error }] = useWorkflowRuns({ owner, repo, branch, }); - const lastRun = runs?.[0] ?? ({} as WorkflowRun); useEffect(() => { if (error) { errorApi.post(error); @@ -150,11 +148,10 @@ export const WidgetList = ({ return ( - ); diff --git a/plugins/github-actions/src/components/Widget/index.ts b/plugins/github-actions/src/components/Widget/index.ts index 0efc84d952..0bd5dad98a 100644 --- a/plugins/github-actions/src/components/Widget/index.ts +++ b/plugins/github-actions/src/components/Widget/index.ts @@ -13,4 +13,4 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -export { Widget, WidgetList } from './Widget'; +export { Widget, RecentWorkflowRunsCard } from './Widget';