From 35725e2b83c47a2590297d4a41e5c2f585dd1630 Mon Sep 17 00:00:00 2001 From: Philipp Hugenroth Date: Thu, 9 Nov 2023 12:03:39 +0100 Subject: [PATCH 01/30] Update dependencies in frontend plugin templates Signed-off-by: Philipp Hugenroth --- .changeset/tiny-kiwis-know.md | 5 +++++ packages/cli/templates/default-plugin/package.json.hbs | 4 ++-- .../templates/default-react-plugin-package/package.json.hbs | 4 ++-- packages/cli/templates/web-library-package/package.json.hbs | 2 +- 4 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 .changeset/tiny-kiwis-know.md diff --git a/.changeset/tiny-kiwis-know.md b/.changeset/tiny-kiwis-know.md new file mode 100644 index 0000000000..b0de24ce0a --- /dev/null +++ b/.changeset/tiny-kiwis-know.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Update dependencies in `defaul-plugin` template diff --git a/packages/cli/templates/default-plugin/package.json.hbs b/packages/cli/templates/default-plugin/package.json.hbs index 011a50ba37..15b22bc8e1 100644 --- a/packages/cli/templates/default-plugin/package.json.hbs +++ b/packages/cli/templates/default-plugin/package.json.hbs @@ -45,8 +45,8 @@ "@backstage/core-app-api": "{{versionQuery '@backstage/core-app-api'}}", "@backstage/dev-utils": "{{versionQuery '@backstage/dev-utils'}}", "@backstage/test-utils": "{{versionQuery '@backstage/test-utils'}}", - "@testing-library/jest-dom": "{{versionQuery '@testing-library/jest-dom' '5.10.1'}}", - "@testing-library/react": "{{versionQuery '@testing-library/react' '12.1.3'}}", + "@testing-library/jest-dom": "{{versionQuery '@testing-library/jest-dom' '6.0.0'}}", + "@testing-library/react": "{{versionQuery '@testing-library/react' '14.0.0'}}", "@testing-library/user-event": "{{versionQuery '@testing-library/user-event' '14.0.0'}}", "msw": "{{versionQuery 'msw' '1.0.0'}}" }, diff --git a/packages/cli/templates/default-react-plugin-package/package.json.hbs b/packages/cli/templates/default-react-plugin-package/package.json.hbs index 230ecc5f03..f68bd14a1d 100644 --- a/packages/cli/templates/default-react-plugin-package/package.json.hbs +++ b/packages/cli/templates/default-react-plugin-package/package.json.hbs @@ -39,8 +39,8 @@ "devDependencies": { "@backstage/cli": "{{versionQuery '@backstage/cli'}}", "@backstage/test-utils": "{{versionQuery '@backstage/test-utils'}}", - "@testing-library/jest-dom": "{{versionQuery '@testing-library/jest-dom' '5.10.1'}}", - "@testing-library/react": "{{versionQuery '@testing-library/react' '12.1.3'}}" + "@testing-library/jest-dom": "{{versionQuery '@testing-library/jest-dom' '6.0.0'}}", + "@testing-library/react": "{{versionQuery '@testing-library/react' '14.0.0'}}" }, "files": [ "dist" diff --git a/packages/cli/templates/web-library-package/package.json.hbs b/packages/cli/templates/web-library-package/package.json.hbs index f9f703f523..271417a525 100644 --- a/packages/cli/templates/web-library-package/package.json.hbs +++ b/packages/cli/templates/web-library-package/package.json.hbs @@ -30,7 +30,7 @@ }, "devDependencies": { "@backstage/cli": "{{versionQuery '@backstage/cli'}}", - "@testing-library/jest-dom": "{{versionQuery '@testing-library/jest-dom' '5.10.1'}}" + "@testing-library/jest-dom": "{{versionQuery '@testing-library/jest-dom' '6.0.0'}}" }, "files": [ "dist" From cbc6157d486f3d1cf046a0fd000942ab6930c9bd Mon Sep 17 00:00:00 2001 From: Philipp Hugenroth Date: Thu, 9 Nov 2023 12:03:52 +0100 Subject: [PATCH 02/30] Add changeset Signed-off-by: Philipp Hugenroth --- .changeset/tiny-kiwis-know.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/tiny-kiwis-know.md b/.changeset/tiny-kiwis-know.md index b0de24ce0a..add4736527 100644 --- a/.changeset/tiny-kiwis-know.md +++ b/.changeset/tiny-kiwis-know.md @@ -2,4 +2,4 @@ '@backstage/cli': patch --- -Update dependencies in `defaul-plugin` template +Updated dependencies in frontend plugin templates From e6a9b2dead06c3486eabc93d826f54f4beab571b Mon Sep 17 00:00:00 2001 From: PurseChicken Date: Fri, 17 Nov 2023 12:07:40 -0800 Subject: [PATCH 03/30] Cloud build plugin list results by entity metatadata name or annotations Signed-off-by: PurseChicken --- plugins/cloudbuild/api-report.md | 2 + plugins/cloudbuild/src/api/CloudbuildApi.ts | 1 + .../cloudbuild/src/api/CloudbuildClient.ts | 3 +- .../cloudbuild/src/components/Cards/Cards.tsx | 3 ++ .../WorkflowRunsTable/WorkflowRunsTable.tsx | 3 ++ .../src/components/useCloudBuildFilter.ts | 43 +++++++++++++++++++ .../src/components/useWorkflowRuns.ts | 8 +++- 7 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 plugins/cloudbuild/src/components/useCloudBuildFilter.ts diff --git a/plugins/cloudbuild/api-report.md b/plugins/cloudbuild/api-report.md index 3fbb15000d..f8fbd9ee92 100644 --- a/plugins/cloudbuild/api-report.md +++ b/plugins/cloudbuild/api-report.md @@ -58,6 +58,7 @@ export const CLOUDBUILD_ANNOTATION = 'google.com/cloudbuild-project-slug'; export type CloudbuildApi = { listWorkflowRuns: (options: { projectId: string; + cloudBuildFilter: string; }) => Promise; getWorkflow: (options: { projectId: string; @@ -94,6 +95,7 @@ export class CloudbuildClient implements CloudbuildApi { // (undocumented) listWorkflowRuns(options: { projectId: string; + cloudBuildFilter: string; }): Promise; // (undocumented) reRunWorkflow(options: { projectId: string; runId: string }): Promise; diff --git a/plugins/cloudbuild/src/api/CloudbuildApi.ts b/plugins/cloudbuild/src/api/CloudbuildApi.ts index cb29b49fbf..cdcfbab88d 100644 --- a/plugins/cloudbuild/src/api/CloudbuildApi.ts +++ b/plugins/cloudbuild/src/api/CloudbuildApi.ts @@ -29,6 +29,7 @@ export const cloudbuildApiRef = createApiRef({ export type CloudbuildApi = { listWorkflowRuns: (options: { projectId: string; + cloudBuildFilter: string; }) => Promise; getWorkflow: (options: { projectId: string; diff --git a/plugins/cloudbuild/src/api/CloudbuildClient.ts b/plugins/cloudbuild/src/api/CloudbuildClient.ts index cb6747e803..b41506f852 100644 --- a/plugins/cloudbuild/src/api/CloudbuildClient.ts +++ b/plugins/cloudbuild/src/api/CloudbuildClient.ts @@ -45,11 +45,12 @@ export class CloudbuildClient implements CloudbuildApi { async listWorkflowRuns(options: { projectId: string; + cloudBuildFilter: string; }): Promise { const workflowRuns = await fetch( `https://cloudbuild.googleapis.com/v1/projects/${encodeURIComponent( options.projectId, - )}/builds`, + )}/builds?filter=${encodeURIComponent(options.cloudBuildFilter)}`, { headers: new Headers({ Accept: '*/*', diff --git a/plugins/cloudbuild/src/components/Cards/Cards.tsx b/plugins/cloudbuild/src/components/Cards/Cards.tsx index 2b7a8607b7..cd15bae6b9 100644 --- a/plugins/cloudbuild/src/components/Cards/Cards.tsx +++ b/plugins/cloudbuild/src/components/Cards/Cards.tsx @@ -22,6 +22,7 @@ import { WorkflowRunStatus } from '../WorkflowRunStatus'; import { Theme, makeStyles, LinearProgress } from '@material-ui/core'; import ExternalLinkIcon from '@material-ui/icons/Launch'; import { CLOUDBUILD_ANNOTATION } from '../useProjectName'; +import { getCloudbuildFilter } from '../useCloudBuildFilter'; import { InfoCard, @@ -79,9 +80,11 @@ export const LatestWorkflowRunCard = (props: { branch: string }) => { const { entity } = useEntity(); const errorApi = useApi(errorApiRef); const projectId = entity?.metadata.annotations?.[CLOUDBUILD_ANNOTATION] || ''; + const cloudBuildFilter = getCloudbuildFilter(entity); const [{ runs, loading, error }] = useWorkflowRuns({ projectId, + cloudBuildFilter, }); const lastRun = runs?.[0] ?? ({} as WorkflowRun); useEffect(() => { diff --git a/plugins/cloudbuild/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx b/plugins/cloudbuild/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx index 294847a700..210a67d0dc 100644 --- a/plugins/cloudbuild/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx +++ b/plugins/cloudbuild/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx @@ -26,6 +26,7 @@ import { buildRouteRef } from '../../routes'; import { DateTime } from 'luxon'; import { Table, TableColumn, Link } from '@backstage/core-components'; import { useRouteRef } from '@backstage/core-plugin-api'; +import { getCloudbuildFilter } from '../useCloudBuildFilter'; const generatedColumns: TableColumn[] = [ { @@ -162,9 +163,11 @@ export const WorkflowRunsTableView = ({ export const WorkflowRunsTable = (props: { entity: Entity }) => { const { value: projectName, loading } = useProjectName(props.entity); const [projectId] = (projectName ?? '/').split('/'); + const cloudBuildFilter = getCloudbuildFilter(props.entity); const [tableProps, { retry, setPage, setPageSize }] = useWorkflowRuns({ projectId, + cloudBuildFilter, }); return ( diff --git a/plugins/cloudbuild/src/components/useCloudBuildFilter.ts b/plugins/cloudbuild/src/components/useCloudBuildFilter.ts new file mode 100644 index 0000000000..a71cc1e9b6 --- /dev/null +++ b/plugins/cloudbuild/src/components/useCloudBuildFilter.ts @@ -0,0 +1,43 @@ +/* + * Copyright 2020 The Backstage Authors + * + * 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'; + +const CLOUDBUILD_FILTER_REPO_STRING = 'substitutions.REPO_NAME='; +const CLOUDBUILD_FILTER_REPO_ANNOTATION = 'google.com/cloudbuild-repo-name'; +const CLOUDBUILD_FILTER_TRIGGER_STRING = 'substitutions.TRIGGER_NAME='; +const CLOUDBUILD_FILTER_TRIGGER_ANNOTATION = + 'google.com/cloudbuild-trigger-name'; + +/** @public */ + +export const getCloudbuildFilter = (entity: Entity) => { + const repoAnnotation = + entity?.metadata.annotations?.[CLOUDBUILD_FILTER_REPO_ANNOTATION] ?? ''; + const triggerAnnotation = + entity?.metadata.annotations?.[CLOUDBUILD_FILTER_TRIGGER_ANNOTATION] ?? ''; + if (repoAnnotation) { + const cloudbuildFilter = CLOUDBUILD_FILTER_REPO_STRING + repoAnnotation; + return cloudbuildFilter; + } else if (triggerAnnotation) { + const cloudbuildFilter = + CLOUDBUILD_FILTER_TRIGGER_STRING + triggerAnnotation; + return cloudbuildFilter; + } + const entityName = entity?.metadata.name ?? ''; + const cloudbuildFilter = CLOUDBUILD_FILTER_REPO_STRING + entityName; + return cloudbuildFilter; +}; diff --git a/plugins/cloudbuild/src/components/useWorkflowRuns.ts b/plugins/cloudbuild/src/components/useWorkflowRuns.ts index 424f08e38d..86168018d4 100644 --- a/plugins/cloudbuild/src/components/useWorkflowRuns.ts +++ b/plugins/cloudbuild/src/components/useWorkflowRuns.ts @@ -33,8 +33,11 @@ export type WorkflowRun = { rerun: () => void; }; -export function useWorkflowRuns(options: { projectId: string }) { - const { projectId } = options; +export function useWorkflowRuns(options: { + projectId: string; + cloudBuildFilter: string; +}) { + const { projectId, cloudBuildFilter } = options; const api = useApi(cloudbuildApiRef); const errorApi = useApi(errorApiRef); @@ -51,6 +54,7 @@ export function useWorkflowRuns(options: { projectId: string }) { return api .listWorkflowRuns({ projectId, + cloudBuildFilter, }) .then( ( From 31474decad26c08499a72915ea4ec74cbae9c013 Mon Sep 17 00:00:00 2001 From: PurseChicken Date: Fri, 17 Nov 2023 12:41:14 -0800 Subject: [PATCH 04/30] Update ReadMe Signed-off-by: PurseChicken --- plugins/cloudbuild/README.md | 48 +++++++++++++++++++++++++++++++++--- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/plugins/cloudbuild/README.md b/plugins/cloudbuild/README.md index 07999c85a1..edb0d69e5d 100644 --- a/plugins/cloudbuild/README.md +++ b/plugins/cloudbuild/README.md @@ -1,4 +1,4 @@ -# Google Cloud Build +# Google Cloud Build Plugin ### Welcome to the Google Cloud Build plugin! @@ -47,7 +47,7 @@ const cicdContent = ( ##### OPTIONAL -If you don't use GitHub Actions, or don't want to show it on your CI/CD page, then you can remove the switch case for it +If you don't use GitHub Actions, or don't want to show it on your CI/CD page, then you can remove the switch case for it: ```diff // packages/app/src/components/catalog/EntityPage.tsx @@ -62,9 +62,9 @@ const cicdContent = ( - ``` -### Add annotation to your component-info.yaml file. +### Add annotation(s) to your component-info.yaml file -Any component, that you would like the Cloud Build Plugin to populate for, should include the following annotation: +Any component, that you would like the Cloud Build Plugin to populate for, should include the following `cloudbuild-project-slug` annotation. This annotation sets the GCP project name to be used for pulling the cloud build details from. ```diff // component-info.yaml @@ -79,3 +79,43 @@ spec: type: website lifecycle: development ``` + +By default, the cloud build results list is filtered by repository name equal to the name you have set in your component-info.yaml file. This is `metadata.name`. So if your metadata.name is `backstage` then it will only show builds matching the backstage repo name. + +#### Change Filtering + +If you need the page to be filtered on a different repository name, then you can use the following annotation: + +```diff +// component-info.yaml +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: backstage + description: Backstage application. + annotations: + google.com/cloudbuild-project-slug: your-project-name ++ google.com/cloudbuild-repo-name: my-backstage +spec: + type: website + lifecycle: development +``` + +You can also automatically filter the results based on trigger name instead of repository name. To so so, use the following annotation: + +```diff +// component-info.yaml +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: backstage + description: Backstage application. + annotations: + google.com/cloudbuild-project-slug: your-project-name ++ google.com/cloudbuild-trigger-name: my-trigger-name +spec: + type: website + lifecycle: development +``` + +`Note:` The `cloudbuild-repo-name` annotation takes precedence over the `cloudbuild-trigger-name` annotation. So if you happen to use both annotations, cloudbuild-repo-name will be used. It is recommended to use one or the other if required. From c55d501b564ee5ce369629a6e60206cccc26720e Mon Sep 17 00:00:00 2001 From: PurseChicken Date: Fri, 17 Nov 2023 12:47:55 -0800 Subject: [PATCH 05/30] Use REF_NAME instead of BRANCH_NAME Signed-off-by: PurseChicken --- plugins/cloudbuild/api-report.md | 2 +- plugins/cloudbuild/src/api/types.ts | 2 +- .../src/components/WorkflowRunDetails/WorkflowRunDetails.tsx | 4 ++-- .../components/WorkflowRunsTable/WorkflowRunsTable.test.tsx | 2 +- .../src/components/WorkflowRunsTable/WorkflowRunsTable.tsx | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/plugins/cloudbuild/api-report.md b/plugins/cloudbuild/api-report.md index f8fbd9ee92..0e152baa0f 100644 --- a/plugins/cloudbuild/api-report.md +++ b/plugins/cloudbuild/api-report.md @@ -237,7 +237,7 @@ export interface StorageSource { // @public (undocumented) export interface Substitutions { // (undocumented) - BRANCH_NAME: string; + REF_NAME: string; // (undocumented) COMMIT_SHA: string; // (undocumented) diff --git a/plugins/cloudbuild/src/api/types.ts b/plugins/cloudbuild/src/api/types.ts index 1dd03265bc..b721e8dca1 100644 --- a/plugins/cloudbuild/src/api/types.ts +++ b/plugins/cloudbuild/src/api/types.ts @@ -81,7 +81,7 @@ export interface Options { export interface Substitutions { COMMIT_SHA: string; SHORT_SHA: string; - BRANCH_NAME: string; + REF_NAME: string; REPO_NAME: string; REVISION_ID: string; } diff --git a/plugins/cloudbuild/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx b/plugins/cloudbuild/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx index a35d9b6f6c..ee282848bc 100644 --- a/plugins/cloudbuild/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx +++ b/plugins/cloudbuild/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx @@ -97,9 +97,9 @@ export const WorkflowRunDetails = (props: { entity: Entity }) => { - Branch + Ref - {details.value?.substitutions.BRANCH_NAME} + {details.value?.substitutions.REF_NAME} diff --git a/plugins/cloudbuild/src/components/WorkflowRunsTable/WorkflowRunsTable.test.tsx b/plugins/cloudbuild/src/components/WorkflowRunsTable/WorkflowRunsTable.test.tsx index 0152f9d964..92a806bee7 100644 --- a/plugins/cloudbuild/src/components/WorkflowRunsTable/WorkflowRunsTable.test.tsx +++ b/plugins/cloudbuild/src/components/WorkflowRunsTable/WorkflowRunsTable.test.tsx @@ -35,7 +35,7 @@ describe('', () => { substitutions: { COMMIT_SHA: 'e3adasd2e3adasd2e3adasd2', SHORT_SHA: 'f12j1231', - BRANCH_NAME: 'main', + REF_NAME: 'main', REPO_NAME: 'backstage', REVISION_ID: 'g123123', }, diff --git a/plugins/cloudbuild/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx b/plugins/cloudbuild/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx index 210a67d0dc..dbefffc617 100644 --- a/plugins/cloudbuild/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx +++ b/plugins/cloudbuild/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx @@ -72,7 +72,7 @@ const generatedColumns: TableColumn[] = [ title: 'Ref', render: (row: Partial) => ( - {row.substitutions?.BRANCH_NAME} + {row.substitutions?.REF_NAME} ), }, From 0328d1b6b921d870f2676ea899b541eb97e606b0 Mon Sep 17 00:00:00 2001 From: PurseChicken Date: Fri, 17 Nov 2023 13:04:23 -0800 Subject: [PATCH 06/30] Write Changeset Signed-off-by: PurseChicken --- .changeset/tough-drinks-scream.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .changeset/tough-drinks-scream.md diff --git a/.changeset/tough-drinks-scream.md b/.changeset/tough-drinks-scream.md new file mode 100644 index 0000000000..fc174f3158 --- /dev/null +++ b/.changeset/tough-drinks-scream.md @@ -0,0 +1,9 @@ +--- +'@backstage/plugin-cloudbuild': minor +--- + +Changed build list view to automatically filter repositories based on component-info's metadata.name. +Added `google.com/cloudbuild-repo-name` annotation which allows you to specify a different repository to filter on. +Added `google.com/cloudbuild-trigger-name` annotation which allows you to filter based on a trigger name instead of a repo name. +Updated the ReadMe with information about the filtering and some other minor verbiage updates. +Changed `substitutions.BRANCH_NAME` to `substitutions.REF_NAME` so that the Ref field is populated properly. From fcaa2ce61f6ade93443c52af88006a77c4ab4d83 Mon Sep 17 00:00:00 2001 From: PurseChicken Date: Fri, 17 Nov 2023 13:18:08 -0800 Subject: [PATCH 07/30] Fix type in ReadMe Signed-off-by: PurseChicken --- plugins/cloudbuild/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/cloudbuild/README.md b/plugins/cloudbuild/README.md index edb0d69e5d..cde383b8c4 100644 --- a/plugins/cloudbuild/README.md +++ b/plugins/cloudbuild/README.md @@ -101,7 +101,7 @@ spec: lifecycle: development ``` -You can also automatically filter the results based on trigger name instead of repository name. To so so, use the following annotation: +You can also automatically filter the results based on trigger name instead of repository name. To do so, use the following annotation: ```diff // component-info.yaml From 568121143a10db1a54ca6a394be49522de3fd206 Mon Sep 17 00:00:00 2001 From: PurseChicken Date: Fri, 17 Nov 2023 13:25:37 -0800 Subject: [PATCH 08/30] Run build:api-reports Signed-off-by: PurseChicken --- plugins/cloudbuild/api-report.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/cloudbuild/api-report.md b/plugins/cloudbuild/api-report.md index 0e152baa0f..5a8f2ed1db 100644 --- a/plugins/cloudbuild/api-report.md +++ b/plugins/cloudbuild/api-report.md @@ -236,11 +236,11 @@ export interface StorageSource { // @public (undocumented) export interface Substitutions { - // (undocumented) - REF_NAME: string; // (undocumented) COMMIT_SHA: string; // (undocumented) + REF_NAME: string; + // (undocumented) REPO_NAME: string; // (undocumented) REVISION_ID: string; From 8745a6fa8a908f451902492c064247bcc7879f71 Mon Sep 17 00:00:00 2001 From: PurseChicken Date: Mon, 27 Nov 2023 11:36:48 -0800 Subject: [PATCH 09/30] Update plugin to support different Build locations. Update changeset and ReadMe. Signed-off-by: PurseChicken --- .changeset/tough-drinks-scream.md | 9 ++++-- plugins/cloudbuild/README.md | 21 ++++++++++++- plugins/cloudbuild/api-report.md | 13 +++++++- plugins/cloudbuild/src/api/CloudbuildApi.ts | 4 +++ .../cloudbuild/src/api/CloudbuildClient.ts | 12 ++++++++ .../cloudbuild/src/components/Cards/Cards.tsx | 3 ++ .../WorkflowRunDetails/WorkflowRunDetails.tsx | 4 ++- .../useWorkflowRunsDetails.ts | 3 +- .../WorkflowRunsTable/WorkflowRunsTable.tsx | 4 ++- .../cloudbuild/src/components/useLocation.ts | 30 +++++++++++++++++++ .../src/components/useWorkflowRuns.ts | 5 +++- 11 files changed, 99 insertions(+), 9 deletions(-) create mode 100644 plugins/cloudbuild/src/components/useLocation.ts diff --git a/.changeset/tough-drinks-scream.md b/.changeset/tough-drinks-scream.md index fc174f3158..3d2f154016 100644 --- a/.changeset/tough-drinks-scream.md +++ b/.changeset/tough-drinks-scream.md @@ -2,8 +2,11 @@ '@backstage/plugin-cloudbuild': minor --- -Changed build list view to automatically filter repositories based on component-info's metadata.name. -Added `google.com/cloudbuild-repo-name` annotation which allows you to specify a different repository to filter on. -Added `google.com/cloudbuild-trigger-name` annotation which allows you to filter based on a trigger name instead of a repo name. +Changed build list view to automatically filter builds based on repository name matching component-info's metadata.name. +Added optional `google.com/cloudbuild-repo-name` annotation which allows you to specify a different repository to filter on. +Added optional `google.com/cloudbuild-trigger-name` annotation which allows you to filter based on a trigger name instead of a repo name. Updated the ReadMe with information about the filtering and some other minor verbiage updates. Changed `substitutions.BRANCH_NAME` to `substitutions.REF_NAME` so that the Ref field is populated properly. +Added optional `google.com/cloudbuild-location` annotation which allows you to specify the Cloud Build location of your builds. Default is global scope. +Changed build list view to show builds in a specific location if the location annotation is used. +Updated ReadMe with information about the use of the location filtering. diff --git a/plugins/cloudbuild/README.md b/plugins/cloudbuild/README.md index cde383b8c4..2677d02b13 100644 --- a/plugins/cloudbuild/README.md +++ b/plugins/cloudbuild/README.md @@ -64,7 +64,7 @@ const cicdContent = ( ### Add annotation(s) to your component-info.yaml file -Any component, that you would like the Cloud Build Plugin to populate for, should include the following `cloudbuild-project-slug` annotation. This annotation sets the GCP project name to be used for pulling the cloud build details from. +Any component, that you would like the Cloud Build Plugin to populate for, should include the following `cloudbuild-project-slug` annotation. This annotation sets the GCP project name to be used for pulling the Cloud Build details from. ```diff // component-info.yaml @@ -82,6 +82,8 @@ spec: By default, the cloud build results list is filtered by repository name equal to the name you have set in your component-info.yaml file. This is `metadata.name`. So if your metadata.name is `backstage` then it will only show builds matching the backstage repo name. +Additionally, build results are pulled from the `global` region by default. + #### Change Filtering If you need the page to be filtered on a different repository name, then you can use the following annotation: @@ -119,3 +121,20 @@ spec: ``` `Note:` The `cloudbuild-repo-name` annotation takes precedence over the `cloudbuild-trigger-name` annotation. So if you happen to use both annotations, cloudbuild-repo-name will be used. It is recommended to use one or the other if required. + +If you need to pull Cloud Build results from a location or region other than the global scope, then use the following annotation: + +```diff +// component-info.yaml +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: backstage + description: Backstage application. + annotations: + google.com/cloudbuild-project-slug: your-project-name ++ google.com/cloudbuild-location: us-central1 +spec: + type: website + lifecycle: development +``` diff --git a/plugins/cloudbuild/api-report.md b/plugins/cloudbuild/api-report.md index 5a8f2ed1db..2ce42d5e34 100644 --- a/plugins/cloudbuild/api-report.md +++ b/plugins/cloudbuild/api-report.md @@ -58,18 +58,22 @@ export const CLOUDBUILD_ANNOTATION = 'google.com/cloudbuild-project-slug'; export type CloudbuildApi = { listWorkflowRuns: (options: { projectId: string; + location: string; cloudBuildFilter: string; }) => Promise; getWorkflow: (options: { projectId: string; + location: string; id: string; }) => Promise; getWorkflowRun: (options: { projectId: string; + location: string; id: string; }) => Promise; reRunWorkflow: (options: { projectId: string; + location: string; runId: string; }) => Promise; }; @@ -85,20 +89,27 @@ export class CloudbuildClient implements CloudbuildApi { // (undocumented) getWorkflow(options: { projectId: string; + location: string; id: string; }): Promise; // (undocumented) getWorkflowRun(options: { projectId: string; + location: string; id: string; }): Promise; // (undocumented) listWorkflowRuns(options: { projectId: string; + location: string; cloudBuildFilter: string; }): Promise; // (undocumented) - reRunWorkflow(options: { projectId: string; runId: string }): Promise; + reRunWorkflow(options: { + projectId: string; + location: string; + runId: string; + }): Promise; } // @public (undocumented) diff --git a/plugins/cloudbuild/src/api/CloudbuildApi.ts b/plugins/cloudbuild/src/api/CloudbuildApi.ts index cdcfbab88d..9e2d63fc01 100644 --- a/plugins/cloudbuild/src/api/CloudbuildApi.ts +++ b/plugins/cloudbuild/src/api/CloudbuildApi.ts @@ -29,18 +29,22 @@ export const cloudbuildApiRef = createApiRef({ export type CloudbuildApi = { listWorkflowRuns: (options: { projectId: string; + location: string; cloudBuildFilter: string; }) => Promise; getWorkflow: (options: { projectId: string; + location: string; id: string; }) => Promise; getWorkflowRun: (options: { projectId: string; + location: string; id: string; }) => Promise; reRunWorkflow: (options: { projectId: string; + location: string; runId: string; }) => Promise; }; diff --git a/plugins/cloudbuild/src/api/CloudbuildClient.ts b/plugins/cloudbuild/src/api/CloudbuildClient.ts index b41506f852..3717e3d1db 100644 --- a/plugins/cloudbuild/src/api/CloudbuildClient.ts +++ b/plugins/cloudbuild/src/api/CloudbuildClient.ts @@ -27,11 +27,14 @@ export class CloudbuildClient implements CloudbuildApi { async reRunWorkflow(options: { projectId: string; + location: string; runId: string; }): Promise { await fetch( `https://cloudbuild.googleapis.com/v1/projects/${encodeURIComponent( options.projectId, + )}/locations/${encodeURIComponent( + options.location, )}/builds/${encodeURIComponent(options.runId)}:retry`, { method: 'POST', @@ -45,11 +48,14 @@ export class CloudbuildClient implements CloudbuildApi { async listWorkflowRuns(options: { projectId: string; + location: string; cloudBuildFilter: string; }): Promise { const workflowRuns = await fetch( `https://cloudbuild.googleapis.com/v1/projects/${encodeURIComponent( options.projectId, + )}/locations/${encodeURIComponent( + options.location, )}/builds?filter=${encodeURIComponent(options.cloudBuildFilter)}`, { headers: new Headers({ @@ -67,11 +73,14 @@ export class CloudbuildClient implements CloudbuildApi { async getWorkflow(options: { projectId: string; + location: string; id: string; }): Promise { const workflow = await fetch( `https://cloudbuild.googleapis.com/v1/projects/${encodeURIComponent( options.projectId, + )}/locations/${encodeURIComponent( + options.location, )}/builds/${encodeURIComponent(options.id)}`, { headers: new Headers({ @@ -88,11 +97,14 @@ export class CloudbuildClient implements CloudbuildApi { async getWorkflowRun(options: { projectId: string; + location: string; id: string; }): Promise { const workflow = await fetch( `https://cloudbuild.googleapis.com/v1/projects/${encodeURIComponent( options.projectId, + )}/locations/${encodeURIComponent( + options.location, )}/builds/${encodeURIComponent(options.id)}`, { headers: new Headers({ diff --git a/plugins/cloudbuild/src/components/Cards/Cards.tsx b/plugins/cloudbuild/src/components/Cards/Cards.tsx index cd15bae6b9..e1d9199b7e 100644 --- a/plugins/cloudbuild/src/components/Cards/Cards.tsx +++ b/plugins/cloudbuild/src/components/Cards/Cards.tsx @@ -22,6 +22,7 @@ import { WorkflowRunStatus } from '../WorkflowRunStatus'; import { Theme, makeStyles, LinearProgress } from '@material-ui/core'; import ExternalLinkIcon from '@material-ui/icons/Launch'; import { CLOUDBUILD_ANNOTATION } from '../useProjectName'; +import { getLocation } from '../useLocation'; import { getCloudbuildFilter } from '../useCloudBuildFilter'; import { @@ -80,10 +81,12 @@ export const LatestWorkflowRunCard = (props: { branch: string }) => { const { entity } = useEntity(); const errorApi = useApi(errorApiRef); const projectId = entity?.metadata.annotations?.[CLOUDBUILD_ANNOTATION] || ''; + const location = getLocation(entity); const cloudBuildFilter = getCloudbuildFilter(entity); const [{ runs, loading, error }] = useWorkflowRuns({ projectId, + location, cloudBuildFilter, }); const lastRun = runs?.[0] ?? ({} as WorkflowRun); diff --git a/plugins/cloudbuild/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx b/plugins/cloudbuild/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx index ee282848bc..5be2401ae4 100644 --- a/plugins/cloudbuild/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx +++ b/plugins/cloudbuild/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx @@ -35,6 +35,7 @@ import { useProjectName } from '../useProjectName'; import { WorkflowRunStatus } from '../WorkflowRunStatus'; import { useWorkflowRunsDetails } from './useWorkflowRunsDetails'; import { Breadcrumbs, Link, WarningPanel } from '@backstage/core-components'; +import { getLocation } from '../useLocation'; const useStyles = makeStyles(theme => ({ root: { @@ -64,8 +65,9 @@ const useStyles = makeStyles(theme => ({ export const WorkflowRunDetails = (props: { entity: Entity }) => { const { value: projectName, loading, error } = useProjectName(props.entity); const [projectId] = (projectName ?? '/').split('/'); + const location = getLocation(props.entity); - const details = useWorkflowRunsDetails(projectId); + const details = useWorkflowRunsDetails(projectId, location); const classes = useStyles(); if (error) { diff --git a/plugins/cloudbuild/src/components/WorkflowRunDetails/useWorkflowRunsDetails.ts b/plugins/cloudbuild/src/components/WorkflowRunDetails/useWorkflowRunsDetails.ts index 549ab1eaf2..abc146fb6c 100644 --- a/plugins/cloudbuild/src/components/WorkflowRunDetails/useWorkflowRunsDetails.ts +++ b/plugins/cloudbuild/src/components/WorkflowRunDetails/useWorkflowRunsDetails.ts @@ -18,13 +18,14 @@ import { cloudbuildApiRef } from '../../api'; import { useApi, useRouteRefParams } from '@backstage/core-plugin-api'; import { buildRouteRef } from '../../routes'; -export const useWorkflowRunsDetails = (projectId: string) => { +export const useWorkflowRunsDetails = (projectId: string, location: string) => { const api = useApi(cloudbuildApiRef); const { id } = useRouteRefParams(buildRouteRef); const details = useAsync(async () => { return projectId ? api.getWorkflowRun({ projectId, + location, id: id, }) : Promise.reject('No projectId provided'); diff --git a/plugins/cloudbuild/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx b/plugins/cloudbuild/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx index dbefffc617..65b5ca149f 100644 --- a/plugins/cloudbuild/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx +++ b/plugins/cloudbuild/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx @@ -26,6 +26,7 @@ import { buildRouteRef } from '../../routes'; import { DateTime } from 'luxon'; import { Table, TableColumn, Link } from '@backstage/core-components'; import { useRouteRef } from '@backstage/core-plugin-api'; +import { getLocation } from '../useLocation'; import { getCloudbuildFilter } from '../useCloudBuildFilter'; const generatedColumns: TableColumn[] = [ @@ -163,10 +164,11 @@ export const WorkflowRunsTableView = ({ export const WorkflowRunsTable = (props: { entity: Entity }) => { const { value: projectName, loading } = useProjectName(props.entity); const [projectId] = (projectName ?? '/').split('/'); + const location = getLocation(props.entity); const cloudBuildFilter = getCloudbuildFilter(props.entity); - const [tableProps, { retry, setPage, setPageSize }] = useWorkflowRuns({ projectId, + location, cloudBuildFilter, }); diff --git a/plugins/cloudbuild/src/components/useLocation.ts b/plugins/cloudbuild/src/components/useLocation.ts new file mode 100644 index 0000000000..54a3c8f776 --- /dev/null +++ b/plugins/cloudbuild/src/components/useLocation.ts @@ -0,0 +1,30 @@ +/* + * Copyright 2020 The Backstage Authors + * + * 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'; + +const CLOUDBUILD_LOCATION_ANNOTATION = 'google.com/cloudbuild-location'; + +/** @public */ + +export const getLocation = (entity: Entity) => { + const locationAnnotation = + entity?.metadata.annotations?.[CLOUDBUILD_LOCATION_ANNOTATION] ?? ''; + if (locationAnnotation) { + return locationAnnotation; + } + return 'global'; +}; diff --git a/plugins/cloudbuild/src/components/useWorkflowRuns.ts b/plugins/cloudbuild/src/components/useWorkflowRuns.ts index 86168018d4..7e3e148dd1 100644 --- a/plugins/cloudbuild/src/components/useWorkflowRuns.ts +++ b/plugins/cloudbuild/src/components/useWorkflowRuns.ts @@ -35,9 +35,10 @@ export type WorkflowRun = { export function useWorkflowRuns(options: { projectId: string; + location: string; cloudBuildFilter: string; }) { - const { projectId, cloudBuildFilter } = options; + const { projectId, location, cloudBuildFilter } = options; const api = useApi(cloudbuildApiRef); const errorApi = useApi(errorApiRef); @@ -54,6 +55,7 @@ export function useWorkflowRuns(options: { return api .listWorkflowRuns({ projectId, + location, cloudBuildFilter, }) .then( @@ -69,6 +71,7 @@ export function useWorkflowRuns(options: { try { await api.reRunWorkflow({ projectId, + location, runId: run.id, }); } catch (e) { From f3b9bcf2c98f1818cdd1fe9d8ae6e9b75be94b5c Mon Sep 17 00:00:00 2001 From: Tzahi Ben Shabat Date: Fri, 8 Dec 2023 11:46:02 -0500 Subject: [PATCH 10/30] Update aws-app-development.yaml Signed-off-by: Tzahi Ben Shabat --- microsite/data/plugins/aws-app-development.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/microsite/data/plugins/aws-app-development.yaml b/microsite/data/plugins/aws-app-development.yaml index 3944bbb4e0..47b40b8b3b 100644 --- a/microsite/data/plugins/aws-app-development.yaml +++ b/microsite/data/plugins/aws-app-development.yaml @@ -1,10 +1,10 @@ --- -title: AWS App Developer Tools +title: OPA on AWS author: Amazon Web Services authorUrl: https://aws.amazon.com/ category: Infrastructure -description: Create and manage AWS Apps within Backstage -documentation: https://github.com/awslabs/app-development-for-backstage-io-on-aws#readme -iconUrl: https://github.com/awslabs/app-development-for-backstage-io-on-aws/blob/main/docs/images/AWS_logo.png?raw=true +description: Orchestrate Platforms and Applications (OPA) allows customers to build and manage AWS Apps & Environments within Backstage +documentation: https://opaonaws.io +iconUrl: https://github.com/awslabs/app-development-for-backstage-io-on-aws/blob/main/website/static/img/white_OPA_text02.png?raw=true npmPackageName: '@aws/plugin-aws-apps-for-backstage' addedDate: '2023-05-10' From ae05256e11b2af474e84112f52e4331042710c2e Mon Sep 17 00:00:00 2001 From: Aditya Singhal Date: Sat, 30 Dec 2023 04:38:03 +0530 Subject: [PATCH 11/30] chore: add github codespces plugin to microsite Signed-off-by: Aditya Singhal --- microsite/data/plugins/github-codespaces.yaml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 microsite/data/plugins/github-codespaces.yaml diff --git a/microsite/data/plugins/github-codespaces.yaml b/microsite/data/plugins/github-codespaces.yaml new file mode 100644 index 0000000000..f6a59888e7 --- /dev/null +++ b/microsite/data/plugins/github-codespaces.yaml @@ -0,0 +1,15 @@ +--- +title: GitHub Codespaces +author: Aditya Singhal +authorUrl: https://github.com/adityasinghal26 +category: Development +description: Integrates GitHub Codespaces for a Backstage component with the Authenticated User. +documentation: https://github.com/adityasinghal26/backstage-plugins/tree/main/plugins/github-codespaces +iconUrl: https://github.com/adityasinghal26/backstage-plugins/blob/00c9c00ba9acc3135014d6454ccf04f573195eef/plugins/github-codespaces/images/GitHubLogo.png +npmPackageName: '@adityasinghal26/plugin-github-codespaces' +tags: + - github + - codespaces + - development + - devcontainers +addedDate: '2023-12-30' \ No newline at end of file From d099a3badf103ad1d52d825046c3c836151f3c79 Mon Sep 17 00:00:00 2001 From: Aditya Singhal Date: Sat, 30 Dec 2023 18:58:58 +0530 Subject: [PATCH 12/30] fix: remove extra whitespace Signed-off-by: Aditya Singhal --- microsite/data/plugins/github-codespaces.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microsite/data/plugins/github-codespaces.yaml b/microsite/data/plugins/github-codespaces.yaml index f6a59888e7..e4480cf4e2 100644 --- a/microsite/data/plugins/github-codespaces.yaml +++ b/microsite/data/plugins/github-codespaces.yaml @@ -5,7 +5,7 @@ authorUrl: https://github.com/adityasinghal26 category: Development description: Integrates GitHub Codespaces for a Backstage component with the Authenticated User. documentation: https://github.com/adityasinghal26/backstage-plugins/tree/main/plugins/github-codespaces -iconUrl: https://github.com/adityasinghal26/backstage-plugins/blob/00c9c00ba9acc3135014d6454ccf04f573195eef/plugins/github-codespaces/images/GitHubLogo.png +iconUrl: https://github.com/adityasinghal26/backstage-plugins/blob/00c9c00ba9acc3135014d6454ccf04f573195eef/plugins/github-codespaces/images/GitHubLogo.png npmPackageName: '@adityasinghal26/plugin-github-codespaces' tags: - github From cb0afaad2b30e4dbbe98a3317a9fe051f24b8908 Mon Sep 17 00:00:00 2001 From: R-Beck-2020 <78100403+R-Beck-2020@users.noreply.github.com> Date: Tue, 9 Jan 2024 12:31:41 +0000 Subject: [PATCH 13/30] Improved Azure DevOps support for mono-repos Signed-off-by: R-Beck-2020 <78100403+R-Beck-2020@users.noreply.github.com> --- .changeset/wicked-elephants-scream.md | 5 ++ .../src/hooks/useBuildRuns.test.tsx | 2 +- .../src/hooks/useGitTags.test.tsx | 2 +- .../src/hooks/usePullRequests.test.tsx | 2 +- .../azure-devops/src/hooks/useReadme.test.tsx | 2 +- .../getAnnotationValuesFromEntity.test.ts | 55 +++++++++++++++++- .../utils/getAnnotationValuesFromEntity.ts | 57 ++++++++++++------- 7 files changed, 98 insertions(+), 27 deletions(-) create mode 100644 .changeset/wicked-elephants-scream.md diff --git a/.changeset/wicked-elephants-scream.md b/.changeset/wicked-elephants-scream.md new file mode 100644 index 0000000000..ab3918afba --- /dev/null +++ b/.changeset/wicked-elephants-scream.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-azure-devops': minor +--- + +Prefer dev.azure.com/build-definition annotation when it is provided, as it is more specific than dev.azure.com/project-repo diff --git a/plugins/azure-devops/src/hooks/useBuildRuns.test.tsx b/plugins/azure-devops/src/hooks/useBuildRuns.test.tsx index 409602eec4..f9415aea55 100644 --- a/plugins/azure-devops/src/hooks/useBuildRuns.test.tsx +++ b/plugins/azure-devops/src/hooks/useBuildRuns.test.tsx @@ -99,7 +99,7 @@ describe('useBuildRuns', () => { renderHook(() => useBuildRuns(entity), { wrapper: Wrapper, }), - ).toThrow('Value for annotation "dev.azure.com/project" was not found'); + ).toThrow('"dev.azure.com" annotations are missing'); }); it('should return throw when annotation invalid', async () => { diff --git a/plugins/azure-devops/src/hooks/useGitTags.test.tsx b/plugins/azure-devops/src/hooks/useGitTags.test.tsx index 1a5620e16e..fc385697ea 100644 --- a/plugins/azure-devops/src/hooks/useGitTags.test.tsx +++ b/plugins/azure-devops/src/hooks/useGitTags.test.tsx @@ -103,7 +103,7 @@ describe('useGitTags', () => { renderHook(() => useGitTags(entity), { wrapper: Wrapper, }), - ).toThrow('Value for annotation "dev.azure.com/project" was not found'); + ).toThrow('"dev.azure.com" annotations are missing'); }); it('should return throw when annotation invalid', async () => { diff --git a/plugins/azure-devops/src/hooks/usePullRequests.test.tsx b/plugins/azure-devops/src/hooks/usePullRequests.test.tsx index 3e51c003e6..8fe6c6b312 100644 --- a/plugins/azure-devops/src/hooks/usePullRequests.test.tsx +++ b/plugins/azure-devops/src/hooks/usePullRequests.test.tsx @@ -102,7 +102,7 @@ describe('usePullRequests', () => { renderHook(() => usePullRequests(entity), { wrapper: Wrapper, }), - ).toThrow('Value for annotation "dev.azure.com/project" was not found'); + ).toThrow('"dev.azure.com" annotations are missing'); }); it('should return throw when annotation invalid', async () => { diff --git a/plugins/azure-devops/src/hooks/useReadme.test.tsx b/plugins/azure-devops/src/hooks/useReadme.test.tsx index ffc33c136b..76cf2cf0cf 100644 --- a/plugins/azure-devops/src/hooks/useReadme.test.tsx +++ b/plugins/azure-devops/src/hooks/useReadme.test.tsx @@ -81,7 +81,7 @@ describe('useReadme', () => { renderHook(() => useReadme(entity), { wrapper: Wrapper, }), - ).toThrow('Value for annotation "dev.azure.com/project" was not found'); + ).toThrow('"dev.azure.com" annotations are missing'); }); it('should return throw when annotation invalid', async () => { diff --git a/plugins/azure-devops/src/utils/getAnnotationValuesFromEntity.test.ts b/plugins/azure-devops/src/utils/getAnnotationValuesFromEntity.test.ts index c13dc526d8..58481ec388 100644 --- a/plugins/azure-devops/src/utils/getAnnotationValuesFromEntity.test.ts +++ b/plugins/azure-devops/src/utils/getAnnotationValuesFromEntity.test.ts @@ -140,7 +140,7 @@ describe('getAnnotationValuesFromEntity', () => { }); describe('with only project annotation', () => { - it('should should throw annotation not found error', () => { + it('should throw annotation not found error', () => { const entity: Entity = { apiVersion: 'backstage.io/v1alpha1', kind: 'Component', @@ -163,7 +163,7 @@ describe('getAnnotationValuesFromEntity', () => { }); describe('with only build-definition annotation', () => { - it('should should throw annotation not found error', () => { + it('should throw annotation not found error', () => { const entity: Entity = { apiVersion: 'backstage.io/v1alpha1', kind: 'Component', @@ -381,4 +381,55 @@ describe('getAnnotationValuesFromEntity', () => { ); }); }); + + describe('projectRepo and buildDefinition are provided', () => { + it('should return project, repo and buildDefinition', () => { + const entity: Entity = { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + namespace: 'default', + name: 'project-repo', + annotations: { + 'dev.azure.com/build-definition': 'buildDefinitionName', + 'dev.azure.com/project-repo': 'projectName/repoName', + }, + }, + }; + const values = getAnnotationValuesFromEntity(entity); + expect(values).toEqual({ + project: 'projectName', + repo: 'repoName', + definition: 'buildDefinitionName', + host: undefined, + org: undefined, + }); + }); + }); + + describe('project, projectRepo and buildDefinition are provided', () => { + it('should prefer project over project-repo.project and return no repo', () => { + const entity: Entity = { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + namespace: 'default', + name: 'project-repo', + annotations: { + 'dev.azure.com/project': 'projectName', + 'dev.azure.com/build-definition': 'buildDefinitionName', + 'dev.azure.com/project-repo': 'ignoredProject/repoName', + }, + }, + }; + const values = getAnnotationValuesFromEntity(entity); + expect(values).toEqual({ + project: 'projectName', + repo: undefined, + definition: 'buildDefinitionName', + host: undefined, + org: undefined, + }); + }); + }); }); diff --git a/plugins/azure-devops/src/utils/getAnnotationValuesFromEntity.ts b/plugins/azure-devops/src/utils/getAnnotationValuesFromEntity.ts index 83091fb155..66a9753da4 100644 --- a/plugins/azure-devops/src/utils/getAnnotationValuesFromEntity.ts +++ b/plugins/azure-devops/src/utils/getAnnotationValuesFromEntity.ts @@ -29,34 +29,49 @@ export function getAnnotationValuesFromEntity(entity: Entity): { host?: string; org?: string; } { - const { host, org } = getHostOrg(entity.metadata.annotations); - - const projectRepoValues = getProjectRepo(entity.metadata.annotations); - if (projectRepoValues.project && projectRepoValues.repo) { - return { - project: projectRepoValues.project, - repo: projectRepoValues.repo, - host, - org, - }; - } - + const hostOrg = getHostOrg(entity.metadata.annotations); + const projectRepo = getProjectRepo(entity.metadata.annotations); const project = entity.metadata.annotations?.[AZURE_DEVOPS_PROJECT_ANNOTATION]; - if (!project) { + const definition = + entity.metadata.annotations?.[AZURE_DEVOPS_BUILD_DEFINITION_ANNOTATION]; + + if (definition) { + if (project) { + return { + project, + definition, + ...hostOrg, + }; + } + if (projectRepo.project) { + return { + project: projectRepo.project, + repo: projectRepo.repo, + definition, + ...hostOrg, + }; + } throw new Error( `Value for annotation "${AZURE_DEVOPS_PROJECT_ANNOTATION}" was not found`, ); + } else { + if (projectRepo.project) { + return { + project: projectRepo.project, + repo: projectRepo.repo, + ...hostOrg, + }; + } + + if (project) { + throw new Error( + `Value for annotation "${AZURE_DEVOPS_BUILD_DEFINITION_ANNOTATION}" was not found`, + ); + } } - const definition = - entity.metadata.annotations?.[AZURE_DEVOPS_BUILD_DEFINITION_ANNOTATION]; - if (!definition) { - throw new Error( - `Value for annotation "${AZURE_DEVOPS_BUILD_DEFINITION_ANNOTATION}" was not found`, - ); - } - return { project, definition, host, org }; + throw new Error('"dev.azure.com" annotations are missing'); } function getProjectRepo(annotations?: Record): { From 8c9f3a1e19a8f2837875e0947e4e1eee4b1ec436 Mon Sep 17 00:00:00 2001 From: R-Beck-2020 <78100403+R-Beck-2020@users.noreply.github.com> Date: Wed, 10 Jan 2024 14:11:32 +0000 Subject: [PATCH 14/30] Add additional tests around isAzurePipelinesAvailable Signed-off-by: R-Beck-2020 <78100403+R-Beck-2020@users.noreply.github.com> --- plugins/azure-devops/src/plugin.test.ts | 82 ++++++++++++++++++++++++- 1 file changed, 81 insertions(+), 1 deletion(-) diff --git a/plugins/azure-devops/src/plugin.test.ts b/plugins/azure-devops/src/plugin.test.ts index f23639798f..398b19700c 100644 --- a/plugins/azure-devops/src/plugin.test.ts +++ b/plugins/azure-devops/src/plugin.test.ts @@ -13,10 +13,90 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { azureDevOpsPlugin } from './plugin'; +import { Entity } from '@backstage/catalog-model'; +import { azureDevOpsPlugin, isAzurePipelinesAvailable } from './plugin'; describe('azure-devops', () => { it('should export plugin', () => { expect(azureDevOpsPlugin).toBeDefined(); }); + + describe('isAzurePipelinesAvailable', () => { + it('should be true when project-repo annotation is present', () => { + const entity: Entity = { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + namespace: 'default', + name: 'sample', + annotations: { + 'dev.azure.com/project-repo': 'projectName/repoName', + }, + }, + }; + expect(isAzurePipelinesAvailable(entity)).toBe(true); + }); + + it('should be true when project and build-definition annotation is present', () => { + const entity: Entity = { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + namespace: 'default', + name: 'sample', + annotations: { + 'dev.azure.com/project': 'projectName', + 'dev.azure.com/build-definition': 'buildDefinitionName', + }, + }, + }; + expect(isAzurePipelinesAvailable(entity)).toBe(true); + }); + + it('should be true when project-repo and build-definition annotation is present', () => { + const entity: Entity = { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + namespace: 'default', + name: 'sample', + annotations: { + 'dev.azure.com/project-repo': 'projectName/repoName', + 'dev.azure.com/build-definition': 'buildDefinitionName', + }, + }, + }; + expect(isAzurePipelinesAvailable(entity)).toBe(true); + }); + + it('should be false when only project annotation is present', () => { + const entity: Entity = { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + namespace: 'default', + name: 'sample', + annotations: { + 'dev.azure.com/project': 'projectName', + }, + }, + }; + expect(isAzurePipelinesAvailable(entity)).toBe(false); + }); + + it('should be false when only build-definition annotation is present', () => { + const entity: Entity = { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + namespace: 'default', + name: 'sample', + annotations: { + 'dev.azure.com/build-definition': 'buildDefinitionName', + }, + }, + }; + expect(isAzurePipelinesAvailable(entity)).toBe(false); + }); + }); }); From c4f43d5cc8996b0f8f884ace0682d1fa3158ff86 Mon Sep 17 00:00:00 2001 From: R-Beck-2020 <78100403+R-Beck-2020@users.noreply.github.com> Date: Thu, 11 Jan 2024 16:06:53 +0000 Subject: [PATCH 15/30] PR Feedback Signed-off-by: R-Beck-2020 <78100403+R-Beck-2020@users.noreply.github.com> --- .changeset/wicked-elephants-scream.md | 2 +- plugins/azure-devops/README.md | 19 +++++++++++++++++++ .../src/hooks/useBuildRuns.test.tsx | 2 +- .../src/hooks/useGitTags.test.tsx | 2 +- .../src/hooks/usePullRequests.test.tsx | 2 +- .../azure-devops/src/hooks/useReadme.test.tsx | 2 +- plugins/azure-devops/src/plugin.test.ts | 12 ++++++++++++ .../utils/getAnnotationValuesFromEntity.ts | 2 +- 8 files changed, 37 insertions(+), 6 deletions(-) diff --git a/.changeset/wicked-elephants-scream.md b/.changeset/wicked-elephants-scream.md index ab3918afba..820c8b5d97 100644 --- a/.changeset/wicked-elephants-scream.md +++ b/.changeset/wicked-elephants-scream.md @@ -2,4 +2,4 @@ '@backstage/plugin-azure-devops': minor --- -Prefer dev.azure.com/build-definition annotation when it is provided, as it is more specific than dev.azure.com/project-repo +Prefer `dev.azure.com/build-definition` annotation when it is provided, as it is more specific than `dev.azure.com/project-repo`. This can also be used as a filter for mono-repos. diff --git a/plugins/azure-devops/README.md b/plugins/azure-devops/README.md index d7335e54c8..f867fcfe75 100644 --- a/plugins/azure-devops/README.md +++ b/plugins/azure-devops/README.md @@ -61,6 +61,25 @@ spec: # ... ``` +#### Mono repos + +If you have multiple entities within a single repo, you will need to specify which pipelines belong to each entity. + +```yaml +dev.azure.com/project-repo: / +dev.azure.com/build-definition: +``` + +#### Pipeline in different project to repo + +If your pipeline is in a different project to the source code, you will need to specify this in the project annotation. + +```yaml +dev.azure.com/project-repo: / +dev.azure.com/build-definition: +dev.azure.com/project: +``` + #### Azure Pipelines Only If you are only using Azure Pipelines along with a different SCM tool then you can use the following two annotations to see Builds: diff --git a/plugins/azure-devops/src/hooks/useBuildRuns.test.tsx b/plugins/azure-devops/src/hooks/useBuildRuns.test.tsx index f9415aea55..e165236fe8 100644 --- a/plugins/azure-devops/src/hooks/useBuildRuns.test.tsx +++ b/plugins/azure-devops/src/hooks/useBuildRuns.test.tsx @@ -99,7 +99,7 @@ describe('useBuildRuns', () => { renderHook(() => useBuildRuns(entity), { wrapper: Wrapper, }), - ).toThrow('"dev.azure.com" annotations are missing'); + ).toThrow('Expected "dev.azure.com" annotations were not found'); }); it('should return throw when annotation invalid', async () => { diff --git a/plugins/azure-devops/src/hooks/useGitTags.test.tsx b/plugins/azure-devops/src/hooks/useGitTags.test.tsx index fc385697ea..1c07b8868e 100644 --- a/plugins/azure-devops/src/hooks/useGitTags.test.tsx +++ b/plugins/azure-devops/src/hooks/useGitTags.test.tsx @@ -103,7 +103,7 @@ describe('useGitTags', () => { renderHook(() => useGitTags(entity), { wrapper: Wrapper, }), - ).toThrow('"dev.azure.com" annotations are missing'); + ).toThrow('Expected "dev.azure.com" annotations were not found'); }); it('should return throw when annotation invalid', async () => { diff --git a/plugins/azure-devops/src/hooks/usePullRequests.test.tsx b/plugins/azure-devops/src/hooks/usePullRequests.test.tsx index 8fe6c6b312..65579a2adf 100644 --- a/plugins/azure-devops/src/hooks/usePullRequests.test.tsx +++ b/plugins/azure-devops/src/hooks/usePullRequests.test.tsx @@ -102,7 +102,7 @@ describe('usePullRequests', () => { renderHook(() => usePullRequests(entity), { wrapper: Wrapper, }), - ).toThrow('"dev.azure.com" annotations are missing'); + ).toThrow('Expected "dev.azure.com" annotations were not found'); }); it('should return throw when annotation invalid', async () => { diff --git a/plugins/azure-devops/src/hooks/useReadme.test.tsx b/plugins/azure-devops/src/hooks/useReadme.test.tsx index 76cf2cf0cf..fdb9080bba 100644 --- a/plugins/azure-devops/src/hooks/useReadme.test.tsx +++ b/plugins/azure-devops/src/hooks/useReadme.test.tsx @@ -81,7 +81,7 @@ describe('useReadme', () => { renderHook(() => useReadme(entity), { wrapper: Wrapper, }), - ).toThrow('"dev.azure.com" annotations are missing'); + ).toThrow('Expected "dev.azure.com" annotations were not found'); }); it('should return throw when annotation invalid', async () => { diff --git a/plugins/azure-devops/src/plugin.test.ts b/plugins/azure-devops/src/plugin.test.ts index 398b19700c..d69fed6bab 100644 --- a/plugins/azure-devops/src/plugin.test.ts +++ b/plugins/azure-devops/src/plugin.test.ts @@ -69,6 +69,18 @@ describe('azure-devops', () => { expect(isAzurePipelinesAvailable(entity)).toBe(true); }); + it('should be false when no annotations are present', () => { + const entity: Entity = { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + namespace: 'default', + name: 'sample', + }, + }; + expect(isAzurePipelinesAvailable(entity)).toBe(false); + }); + it('should be false when only project annotation is present', () => { const entity: Entity = { apiVersion: 'backstage.io/v1alpha1', diff --git a/plugins/azure-devops/src/utils/getAnnotationValuesFromEntity.ts b/plugins/azure-devops/src/utils/getAnnotationValuesFromEntity.ts index 66a9753da4..7533c473ed 100644 --- a/plugins/azure-devops/src/utils/getAnnotationValuesFromEntity.ts +++ b/plugins/azure-devops/src/utils/getAnnotationValuesFromEntity.ts @@ -71,7 +71,7 @@ export function getAnnotationValuesFromEntity(entity: Entity): { } } - throw new Error('"dev.azure.com" annotations are missing'); + throw new Error('Expected "dev.azure.com" annotations were not found'); } function getProjectRepo(annotations?: Record): { From f5c0586b44b1993c2a29585b183f8470898d0ffb Mon Sep 17 00:00:00 2001 From: R-Beck-2020 <78100403+R-Beck-2020@users.noreply.github.com> Date: Thu, 11 Jan 2024 20:13:52 +0000 Subject: [PATCH 16/30] Update .changeset/wicked-elephants-scream.md Co-authored-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Signed-off-by: R-Beck-2020 <78100403+R-Beck-2020@users.noreply.github.com> --- .changeset/wicked-elephants-scream.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/wicked-elephants-scream.md b/.changeset/wicked-elephants-scream.md index 820c8b5d97..f002a48ba8 100644 --- a/.changeset/wicked-elephants-scream.md +++ b/.changeset/wicked-elephants-scream.md @@ -1,5 +1,5 @@ --- -'@backstage/plugin-azure-devops': minor +'@backstage/plugin-azure-devops': patch --- Prefer `dev.azure.com/build-definition` annotation when it is provided, as it is more specific than `dev.azure.com/project-repo`. This can also be used as a filter for mono-repos. From 187b30b1ce7e6610ba0816dc9839bb0f6c54d32a Mon Sep 17 00:00:00 2001 From: R-Beck-2020 <78100403+R-Beck-2020@users.noreply.github.com> Date: Fri, 12 Jan 2024 13:43:38 +0000 Subject: [PATCH 17/30] Additional review comments Signed-off-by: R-Beck-2020 <78100403+R-Beck-2020@users.noreply.github.com> --- plugins/azure-devops/README.md | 4 ++-- .../utils/getAnnotationValuesFromEntity.test.ts | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/plugins/azure-devops/README.md b/plugins/azure-devops/README.md index f867fcfe75..7119cb0980 100644 --- a/plugins/azure-devops/README.md +++ b/plugins/azure-devops/README.md @@ -75,9 +75,9 @@ dev.azure.com/build-definition: If your pipeline is in a different project to the source code, you will need to specify this in the project annotation. ```yaml -dev.azure.com/project-repo: / +dev.azure.com/project-repo: / dev.azure.com/build-definition: -dev.azure.com/project: +dev.azure.com/project: ``` #### Azure Pipelines Only diff --git a/plugins/azure-devops/src/utils/getAnnotationValuesFromEntity.test.ts b/plugins/azure-devops/src/utils/getAnnotationValuesFromEntity.test.ts index 58481ec388..94f179e8fb 100644 --- a/plugins/azure-devops/src/utils/getAnnotationValuesFromEntity.test.ts +++ b/plugins/azure-devops/src/utils/getAnnotationValuesFromEntity.test.ts @@ -18,6 +18,22 @@ import { Entity } from '@backstage/catalog-model'; import { getAnnotationValuesFromEntity } from './getAnnotationValuesFromEntity'; describe('getAnnotationValuesFromEntity', () => { + describe('without any annotations', () => { + it('should return ???', () => { + const entity: Entity = { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + namespace: 'default', + name: 'project-repo', + }, + }; + expect(() => getAnnotationValuesFromEntity(entity)).toThrow( + 'Expected "dev.azure.com" annotations were not found', + ); + }); + }); + describe('with valid project-repo annotation', () => { it('should return project and repo', () => { const entity: Entity = { From 9da4c78e628de0918682271f81c348dd408af787 Mon Sep 17 00:00:00 2001 From: R-Beck-2020 <78100403+R-Beck-2020@users.noreply.github.com> Date: Fri, 12 Jan 2024 13:48:42 +0000 Subject: [PATCH 18/30] Add missed file Signed-off-by: R-Beck-2020 <78100403+R-Beck-2020@users.noreply.github.com> --- .../src/utils/getAnnotationValuesFromEntity.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/azure-devops/src/utils/getAnnotationValuesFromEntity.test.ts b/plugins/azure-devops/src/utils/getAnnotationValuesFromEntity.test.ts index 94f179e8fb..9325a79039 100644 --- a/plugins/azure-devops/src/utils/getAnnotationValuesFromEntity.test.ts +++ b/plugins/azure-devops/src/utils/getAnnotationValuesFromEntity.test.ts @@ -19,7 +19,7 @@ import { getAnnotationValuesFromEntity } from './getAnnotationValuesFromEntity'; describe('getAnnotationValuesFromEntity', () => { describe('without any annotations', () => { - it('should return ???', () => { + it('should throw annotations not found', () => { const entity: Entity = { apiVersion: 'backstage.io/v1alpha1', kind: 'Component', From 79d13122add341aa871f5479be3ddeab3020c08f Mon Sep 17 00:00:00 2001 From: Ben Wilcock Date: Fri, 12 Jan 2024 14:12:07 +0000 Subject: [PATCH 19/30] Adding the 'Backchat' plugin to the microsite. Signed-off-by: Ben Wilcock --- microsite/data/plugins/backchat.yaml | 11 +++++++++++ microsite/static/img/backchat-logo.png | Bin 0 -> 237155 bytes 2 files changed, 11 insertions(+) create mode 100644 microsite/data/plugins/backchat.yaml create mode 100644 microsite/static/img/backchat-logo.png diff --git a/microsite/data/plugins/backchat.yaml b/microsite/data/plugins/backchat.yaml new file mode 100644 index 0000000000..d86ab81383 --- /dev/null +++ b/microsite/data/plugins/backchat.yaml @@ -0,0 +1,11 @@ +--- +--- +title: Backchat GenAI +author: benwilcock +authorUrl: https://github.com/benwilcock +category: Services +description: Use open source GenAI privately, without leaving Backstage. Access Ollama, Text Gen Web UI, ChatBot UI or Big AGI UI in your portal. Choose from hundreds of compatible LLMs. Run your inferencing servers wherever you like - local or remote, CPU or GPU - it's up to you! See the GitHub repo for more details. +documentation: https://github.com/benwilcock/backstage-plugin-backchat +iconUrl: /img/backchat-logo.png +npmPackageName: '@benbravo73/backstage-plugin-backchat' +addedDate: '2024-01-12' diff --git a/microsite/static/img/backchat-logo.png b/microsite/static/img/backchat-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2d589480077ef370be50185748c09a6394eda1e4 GIT binary patch literal 237155 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

-- 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

QgLL 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%0A%2l#dmZcIUN>oV{cM@Cxg4mbL zMDF>ocbSJw00~mnQB_t?x83*{8Gx8T3d~IW=YHoq-#NC4STuroG6hZ7p)(B(1l)5` zE0<6zw7U6n1)l384FT8}8UwIYj zOa{jvdIqH*g)S5i01*PA2kBJ7 zs(B$DI|1fTq!r?ZEzR0~p!fk4!2C+b|W=SfCUNq0cWiT<0AS z`Hoierdxq3KNopV!hk%~SU((Mc4liwnq4+yT>d=%xuP zoN(UnPn`yQ6(7vMA;v}1#Mpu=n4D64gST)=zpzK23Sk8-Ju<;5jjxpEbR zGWdayTD1blaq!SX598pWLm1pLh(@DxJv+Ip2_vYu6k~S3sX){u5S3b9ytlZ}oxIsbRdX)7|0sN^B5MJT5Z5_n)T1d#%|o1x9qwg}W@6xnPS4vlQZ?wwoEkxjy~ zbVZ5cQlTt_80V6FqT#Dns=3dkyWtq@p02o<^Fg)_K0cfzpi-Wm{^(V_7|?0 zs(6>sps|+9*#0VGZTvz&D1|bjlB9=yVFk?s>7;zd0}81oX}N^6J8c z3n746pyT_Ii1TjTjAs(I*{f51w}jj!h1kZW+7fWt=Z0ZYN-#nxBnZNgBMf=-Vx|-n z4-tkT0yuDqLamU;%ItL0El$^=879m~9Er{@WcqrM?&(FkryJ317Fr|<%Z?y2ltACM zZIDn1Lyl^tf>Lf7#l_Irbgj~5(eh6oA8UEZ7SZ6ngZNW}O-~}P1$H8UGxSg(Fyai(*=`2FaZVL6N zf(in-g#!Fip$RuF4|mnFe^sqWPbdZ5Ffh1l501b7D@YyOhkN&?k)K~iqazD)>?o9> zW9-Uh%zyXKvGe>6?A*H({agAl*x!$sX<_{4EqwTs_c1+ruW2J|m>Ax%69Ny1D1t;h zhEyg6J8HLpwFRgf*l@BA)a{D*HK=P_X(ZSHXzD>?{fim*)!w*euiLaR7Hc0Nd9(B8 z9)wqiXp|sod5CHOs!;(#7ff(aDZyGk2TIBHZn(wbtc?IR2(wpT|8l~QD4;?sCXGCT~#zpiWSY2hvphq;>( zzI214ULdQEcceYqwN0}CMF7T>vf`X(28${+{9e_kf0oaApTGI>SZ(z9Ynx!c3Fw>k zU!Vj~s5uVmufF=~a{bb!@glOHa=jYuh#46T*j282uT)*}EYXa9!!Qg1NotJ-8jS{o zXsX%$AVd&y2)Pa(Jn+E-f87^`=1^Lg!Tgv3O*f&N79y!MGX4F?4h$gO*N1p#2lQAJ z)Uc39rVvkOFtB46JkLj^w1VQ|GKxz}s4gwRu{7wKhD<625d@f>nMSo*fmE_Z|EX5O z6oIJ$T}g(Wy%su?7A6)QjLik8`2v2ai1MvF(0c};Z5aS89ac65S@96KLDL{-RfWHH z(QjJWy4-8Umafk_+dE96S~j&6(0D+L5Wu-4l`Dy-xS7{7hHWjG@djYW`6r*Qb-esp(tq9dEeUwyBE zse97^0eZVTv1iu^vYAvX^h2%#`YN{H*Nv{ndx~{`d$g&Z*Dz1E0J?cwja^*@+f{?1 z=Kl3MXv;8w2t263h4dOwUJcT%LU~mnbU{Q2DmbVVAVRd($>heQ_7)w#4(97W-)e`x z4&EF4XSHzvzCpOAlzK3E?hC+t_2cS|5(UBl!W1NvsPYg?6^UER0=E|>a&-;VNMmrQ z2m5x9VAt>#WU>hurXfI7Lr5_vg}hX+xgSVLKX58y?#&BxUMr39=c+f}c!S-&dM=yH zrcN4WC>l06W}L&0JT%6PUSlD`DsnAjE8|YRjfB&E%WMb zMv+KFZPwr02}^JOD%Tn=N_7WLAP{f~Ka}veKq#8CaMf~66C#B0L-@o20YSBpLt%On z%+#S9Cd^nI$*yi>di#**?m?`p3wkOAVn+~7XA$k}LhqpisMo5T1tbAad0l6L{sTRLmzZ`8T{^Tg!v_?zyn=f%Ud0fwr0B&49w7AM4~W~2}qs7 zZPX#%1{S6#aqrRv*t>Rs^>jk-$iR!(;0g$%QRusOL)T0MpM8eesc|gM&*7sF&Vnew zbv*ckuE^4(})941k;^HDc zIP(Fx;LSYtAjEUeJdJ|~55O{YKq=fEzl%bC1w7=~HZ+KXyZe#Vs}RL{%Mn1W~-X&ZXAJEo1|S{{=!dLf6Okt=CV=CL1H$spNKB&uj^}=$BzaFMIdg6CE$18GIQ`0)KRxN_klmKPS#sMk=fR&n<12l)KLd31Gk;iZ>eMsIH~lF1|}fZ^d0Jp9PR z7#q8Z>FF8ND`n&+ub~{91~jMHCAY>2YaTHC?AnR7ri3918}Db$3(T#@7Ue2B?qih5wev|<<@GAO*i3ir^#1b${$SV&ZTW-Zu8~ag!%R6p=oV%pq-phZ5l=jrP~7W&J|<^&+|yv+msqV zu3cT3J#p#}Lqf0#=9_@NS^u?x{W}*fgrmUHkG5}r+q0~h&<$s~kS~RT4+kNSXgVVU z0~)$}J75_M^@fkS6Tk~4e6CP)If``;D-{QYN(1GZ3nvKRw>tSS6yQ=cv)Uzx3^;s0 zfI55T3;_%#BN5PmMaKn zr{Pacf)`6rVc2R&n)&36Dp(qYMhU!7A`l9u9l_T9`_O;#8B}}wFs&4-z7Mf$56Im+ zXk5Mk=h`(`)6+=p-G}VR2>e(KbrAT3G)4WUj#x(r_8;1V;}0K4XLmPZu^8rN=kUGn zoyOH`R{;ftL4c`y_wdf&{TOyMf>&Sr8hUzr@Z{rJcccU14yP4kdp$F)5|#X$sG(tw&KX3f+3yO%(|8Qr2rz^ zFtfdDQyZ!2b%K_Dv6yX5Fs9b*eX-#?Db`JDR;709YWOyJTH8F}fgfSRfL=+}Vvzvg z{-wG0eRkD$MreYyY#kET?rV$aZL^eVjegMT#svtIkh(;`1gadE%Sqgt-<+U+{OEoICf1 zHP^g{D-#|5+;u~h=7<)0ZAYKB0G#%DIRHtSRCe4`nZ6a0=|AfU z^FM{2{Pg0Lm6c6T_Dw+FtpCPp6p)yltd5L~T%dKClZ505#jgrU_RW{Q_)o6Q(y9-f zIJgZR9TC{|2C8)rJ{Pbp4e5l5?Y(J00z8l?J3jJN2f0!Mg-RnV*4&yKa9=2{alx%n za$PD;l@d$|K{;=b(5-`1SK#IsRAov7(R4yJ4da>yq6FMVT`5SJjGDn?dj`B0j`xQn zUDS(GClH(=kd#R!ED9Nmn9^m?QG{$bA{^5tv&z(cGrw5UN0VL9CfJ-3Uy@B8@h zgAbt_Ml(a5QgGhf=bxUM#z!BX#rEM5WHMged`Kt5l<_?HZ^}9t}9`3=GYz%!i1HeI)Y&F#z)9vq1 z{=DB*=D~nm(msyG22+_0cYJY+*WQ4)x5(-N@P6Ej-n$mnNyfpU|6mg2xJVp6~#bL8Y9~Wv2~~q=~Nts zWlE-N0U@*^g`5<^zf^bY?<%P-7~THzp&dWJ;BB?uc;gLr=+O4GZCl5pmj1e_v8UkV zw)y#+Hea|#NNt4>A=ZyatIP&jXDx`LP?SJ1U8-oRKsvVGKxWJNiYNX$S6&%=_ubjX zFEYR1tbg3KnYQ+iu!_Z^c*%dMG8dhh22mA&Mx;_%HxTx6sYaGp>PRHx$fgr8bPA#X zDVlv01HdSO#t0&&hD_YTKxa~H?MW8~JCkPHNf`5MZ&hKl8@91UNrQ?6kM>A4VY1H!FC`W_VLP)b506cK}=Gj3o< zcLY!G>A=^I_u<6@oj5RxbFf z2g(?NS`F?>5%u{6RPWwJdHfEXg*jy7Q5-#X1Uq-{f@zwVo0-MgvmayP?i8|JJs8@) z4TLhdPNSJ1CPdRME|bCX(jwmZyLT{l^EP(v-HXFV55sj_EH5r1^qYdeN~MgMnQ1I8 zEn$9c4(C2ThmSw`1Ry|XcNcs=M78cB8nH3b7ejX(V3N1&SlgD&)y4_ydN9w1zg_zS z(!P=2mOi#&k-IHkbOSKA{e62PSv$(F3fulOH?&*Ku7UFEkJdgrSf}#ach1-T&8y6U zT2-n`Fd{%12QdOj%ST}Os3632k>lc|!ufHA$>k^$ZNR zQc0nkrbiiBQc#yT56@I9wbM=|_?};1xblMl20{70kL$%>`?ddt|3U}z(NX$WfBL8K zo`LkvL@e@ZGG>2^N%whKyxSklo;Stf4T?sIK*|j)%GxWtCL^Fwj4EYE0;GC#=omf| zMmztbqV`{(zv@i9{PJ&m&pdNxlVacO&^PP9^*W8y0!1wJ_xJzM5_BmDWl1SKS9gM* zo72mzRC91_?+}je8$w5K0(Q+orQ*PGe8`q69z;QFdd390rWGS*WGWN4-_OM3(|2d{ z($h$U61lDJ1rIra*v|zY;GD-p9)gQdDG?Y#g_e?12NaRbJuKJK*pxxF_o{VqcE#`} z9mlEFWQGG4hT;v{-$!-5$m6ria(mLEPxd9*OE2$>?j=el-? zgJEb*;T6-tjU-e&25o2yqUAD>D?k*A5S0qBQiPnFLABAq)ZGb8j&FtQ2l&ZP&fxs{ zOBfv9fu~=19@%UPm(G8Nci(yo_a-J#EadUY*|R9EhOaalc>JlSaN@+{kd$I6SHkjA z4ih(Tq0y+r^?lsEdk>2XOE66nkw_G~5A4Hh&z=MiIDYv3AK}LJTbP(HVlvl-9UU4{ z^!`P&_7$y-p5<#A=(SCO7D%XdfKcj-eAVs?f!RRzwvoPSLv!E8-aqIl_n@K6Mn0Zk zy=7PU0?)cNIzTnY46W{5$(Dqj3J?~q3EV=$;e-3Dv)0aYT zcNRUpS)?;bSP>hhX>zJj2Lww}%9|qK7hOL%1LBXnQB>Z1f6@CzJKxdKQThkpd^r}x z;)4SGp_CPQjq&MecjH2$ZHt6^+$MXa59`^?X?M z$X}Jq&b3D#xmy3m$Yxi*3Fw>kkFDhV{Cx4?!Gj-a`Fh?Dcu6YqwJ?+e3;C*6`Rq0( zW^;Jzk$pI@XFC$v0Lu%DsFbS+LcY4g8xo=lM5;N)s2jBr**TQN@b*ZhE}X*hGG^{B zEq&g_BmLEYA8Q2afB?%Q7>K ze*%386ETCp&;Ul(DOO5=zLbWi_GGYB_E2tw$ki*DzxWwqu7lV!Ps84~3oI5#sB4f? z0h$JGn&9ySRCgZ`giu0&7D}K$J%`$@%eZp+GM1JWarfR778Y~ZzH1LooO}wydv?J# z4N$7ElFOk|E+fCZj636ZaBq4FhHl{4!;j+dvE%3)7=Y`0c=G9|plce!kmL4^Yv7!N zbB=nw0m^i2-?InLz4lccI&u&T)3fOA>BhvJNvu>H+?lW9*kBUL6kP}LwJ!BOp_FP1 zQ(5cM)%qqtYj=Ia9(udu+I_tH`eU^z&J}4zuBtYX8o>rQZl}}lo8=R<$CKhddcEzy zvP!M5keuAJ;CE(%uA&C$?IJ2Owa~cJ7CJ;{)RY&(l*Nnf(B9XU*6myRp zJ{4|SxNZXaX8q$Wb@l31=arF>YYV#ZrwyOGLa1Mnz}C7Onzv{2q)

E$w>dh`&s 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 E0KpH%yZ`_I literal 0 HcmV?d00001 From d8cd944ab7f87afda9de19ed3a8618bf3e9f8c2a Mon Sep 17 00:00:00 2001 From: Ben Wilcock Date: Sat, 13 Jan 2024 13:48:20 +0000 Subject: [PATCH 20/30] Corrected a '---' mistake in the listing that was breaking the build. Signed-off-by: Ben Wilcock --- microsite/data/plugins/backchat.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/microsite/data/plugins/backchat.yaml b/microsite/data/plugins/backchat.yaml index d86ab81383..b375ad26bc 100644 --- a/microsite/data/plugins/backchat.yaml +++ b/microsite/data/plugins/backchat.yaml @@ -1,10 +1,9 @@ --- ---- title: Backchat GenAI author: benwilcock authorUrl: https://github.com/benwilcock category: Services -description: Use open source GenAI privately, without leaving Backstage. Access Ollama, Text Gen Web UI, ChatBot UI or Big AGI UI in your portal. Choose from hundreds of compatible LLMs. Run your inferencing servers wherever you like - local or remote, CPU or GPU - it's up to you! See the GitHub repo for more details. +description: Access your favorite open source GenAI GUIs privately from Backstage. Chat wth large language models in your portal. Choose from hundreds of LLMs. Run inferencing wherever you like - local or remote, CPU or GPU - it's up to you! documentation: https://github.com/benwilcock/backstage-plugin-backchat iconUrl: /img/backchat-logo.png npmPackageName: '@benbravo73/backstage-plugin-backchat' From d6415acbaa6be9d6cb04b21368b9e698c3aefb27 Mon Sep 17 00:00:00 2001 From: Gauri Maheshwari <100439627+gauriimaheshwarii@users.noreply.github.com> Date: Tue, 16 Jan 2024 21:38:25 +0530 Subject: [PATCH 21/30] [fix]: export module as a default Signed-off-by: Gauri Maheshwari <100439627+gauriimaheshwarii@users.noreply.github.com> --- packages/cli/templates/default-backend-module/src/index.ts.hbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/templates/default-backend-module/src/index.ts.hbs b/packages/cli/templates/default-backend-module/src/index.ts.hbs index 0cf1f00d42..7075598e13 100644 --- a/packages/cli/templates/default-backend-module/src/index.ts.hbs +++ b/packages/cli/templates/default-backend-module/src/index.ts.hbs @@ -5,4 +5,4 @@ * @packageDocumentation */ -export { {{moduleVar}} } from './module'; +export { {{moduleVar}} as default } from './module'; From fd3d51caafbd8fb4caebe8ea793e8c55d6dad4a7 Mon Sep 17 00:00:00 2001 From: Patrick Jungermann Date: Mon, 8 Jan 2024 00:33:46 +0100 Subject: [PATCH 22/30] feat: support new backend system at explore-backend Add the backend plugin `explorePlugin` as default export that registers the router for the explore backend with the `StaticExploreToolProvider` loading its data from the config `explore.tools`. Signed-off-by: Patrick Jungermann --- .changeset/cyan-icons-rest.md | 14 ++++++ plugins/explore-backend/README.md | 30 +++++++++++++ plugins/explore-backend/api-report.md | 5 +++ plugins/explore-backend/package.json | 2 + plugins/explore-backend/src/index.ts | 1 + plugins/explore-backend/src/plugin.test.ts | 50 ++++++++++++++++++++++ plugins/explore-backend/src/plugin.ts | 49 +++++++++++++++++++++ yarn.lock | 2 + 8 files changed, 153 insertions(+) create mode 100644 .changeset/cyan-icons-rest.md create mode 100644 plugins/explore-backend/src/plugin.test.ts create mode 100644 plugins/explore-backend/src/plugin.ts diff --git a/.changeset/cyan-icons-rest.md b/.changeset/cyan-icons-rest.md new file mode 100644 index 0000000000..3092c1bc90 --- /dev/null +++ b/.changeset/cyan-icons-rest.md @@ -0,0 +1,14 @@ +--- +'@backstage/plugin-explore-backend': patch +--- + +Add support for the new backend system. + +A new backend plugin for the explore backend +was added and exported as `default`. + +You can use it with the new backend system like + +```ts title="packages/backend/src/index.ts" +backend.add(import('@backstage/plugin-explore-backend')); +``` diff --git a/plugins/explore-backend/README.md b/plugins/explore-backend/README.md index 543e8e2fa2..aae3ff94b8 100644 --- a/plugins/explore-backend/README.md +++ b/plugins/explore-backend/README.md @@ -9,6 +9,36 @@ for these tools. ### Adding the plugin to your `packages/backend` +Install dependencies + +```bash +# From your Backstage root directory +yarn add --cwd packages/backend @backstage/plugin-explore-backend +``` + +Add feature + +```ts title="packages/backend/src/index.ts" +backend.add(import('@backstage/plugin-explore-backend')); +``` + +Config: + +```yaml +explore: + tools: + - title: New Relic + description: new relic plugin + url: /newrelic + image: https://i.imgur.com/L37ikrX.jpg + tags: + - newrelic + - proxy + - nerdGraph +``` + +### Adding the plugin to your `packages/backend` (old) + #### Tools as Config Install dependencies diff --git a/plugins/explore-backend/api-report.md b/plugins/explore-backend/api-report.md index b652f5515b..05a057fa7b 100644 --- a/plugins/explore-backend/api-report.md +++ b/plugins/explore-backend/api-report.md @@ -3,6 +3,7 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts +import { BackendFeature } from '@backstage/backend-plugin-api'; import { Config } from '@backstage/config'; import { ExploreTool } from '@backstage/plugin-explore-common'; import express from 'express'; @@ -16,6 +17,10 @@ import type { ToolDocumentCollatorFactoryOptions as ToolDocumentCollatorFactoryO // @public (undocumented) export function createRouter(options: RouterOptions): Promise; +// @public +const explorePlugin: () => BackendFeature; +export default explorePlugin; + // @public (undocumented) export interface ExploreToolProvider { getTools(request: GetExploreToolsRequest): Promise; diff --git a/plugins/explore-backend/package.json b/plugins/explore-backend/package.json index 5af891fb02..36d0c2b7af 100644 --- a/plugins/explore-backend/package.json +++ b/plugins/explore-backend/package.json @@ -29,6 +29,7 @@ }, "dependencies": { "@backstage/backend-common": "workspace:^", + "@backstage/backend-plugin-api": "workspace:^", "@backstage/config": "workspace:^", "@backstage/plugin-explore-common": "workspace:^", "@backstage/plugin-search-backend-module-explore": "workspace:^", @@ -42,6 +43,7 @@ "yn": "^4.0.0" }, "devDependencies": { + "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^", "@types/supertest": "^2.0.8", "supertest": "^6.2.4" diff --git a/plugins/explore-backend/src/index.ts b/plugins/explore-backend/src/index.ts index 15659d6ab6..ae3ffd182b 100644 --- a/plugins/explore-backend/src/index.ts +++ b/plugins/explore-backend/src/index.ts @@ -20,6 +20,7 @@ * @packageDocumentation */ +export { explorePlugin as default } from './plugin'; export * from './service'; export * from './tools'; diff --git a/plugins/explore-backend/src/plugin.test.ts b/plugins/explore-backend/src/plugin.test.ts new file mode 100644 index 0000000000..391c00ba88 --- /dev/null +++ b/plugins/explore-backend/src/plugin.test.ts @@ -0,0 +1,50 @@ +/* + * Copyright 2024 The Backstage Authors + * + * 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 { mockServices, startTestBackend } from '@backstage/backend-test-utils'; +import { ExploreTool } from '@backstage/plugin-explore-common'; +import { explorePlugin } from './plugin'; + +describe('explorePlugin', () => { + it('should register explore plugin and its router', async () => { + const tool: ExploreTool = { + title: 'Tool Title', + image: 'https://example.com/image.png', + url: 'https://example.com', + lifecycle: 'production', + tags: ['tag1', 'tag2'], + }; + + const httpRouterMock = mockServices.httpRouter.mock(); + + await startTestBackend({ + extensionPoints: [], + features: [ + explorePlugin(), + httpRouterMock.factory, + mockServices.rootConfig.factory({ + data: { + explore: { + tools: [tool], + }, + }, + }), + ], + }); + + expect(httpRouterMock.use).toHaveBeenCalledTimes(1); + }); +}); diff --git a/plugins/explore-backend/src/plugin.ts b/plugins/explore-backend/src/plugin.ts new file mode 100644 index 0000000000..d81493c85a --- /dev/null +++ b/plugins/explore-backend/src/plugin.ts @@ -0,0 +1,49 @@ +/* + * Copyright 2024 The Backstage Authors + * + * 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 { loggerToWinstonLogger } from '@backstage/backend-common'; +import { + coreServices, + createBackendPlugin, +} from '@backstage/backend-plugin-api'; +import { createRouter } from './service'; +import { StaticExploreToolProvider } from './tools'; + +/** + * The explore backend plugin. + * + * @public + */ +export const explorePlugin = createBackendPlugin({ + pluginId: 'explore', + register(env) { + env.registerInit({ + deps: { + config: coreServices.rootConfig, + httpRouter: coreServices.httpRouter, + logger: coreServices.logger, + }, + async init({ config, httpRouter, logger }) { + httpRouter.use( + await createRouter({ + logger: loggerToWinstonLogger(logger), + toolProvider: StaticExploreToolProvider.fromConfig(config), + }), + ); + }, + }); + }, +}); diff --git a/yarn.lock b/yarn.lock index 30474455e6..6624c3bc82 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6412,6 +6412,8 @@ __metadata: resolution: "@backstage/plugin-explore-backend@workspace:plugins/explore-backend" dependencies: "@backstage/backend-common": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" "@backstage/plugin-explore-common": "workspace:^" From ff2d42806c48914688fa3f09673e41cc847516ea Mon Sep 17 00:00:00 2001 From: AmbrishRamachandiran Date: Wed, 17 Jan 2024 11:11:02 +0530 Subject: [PATCH 23/30] Updated readme Signed-off-by: AmbrishRamachandiran --- contrib/terraform/techdocs-s3-storage/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/terraform/techdocs-s3-storage/readme.md b/contrib/terraform/techdocs-s3-storage/readme.md index 9615cc8d13..8031c05028 100644 --- a/contrib/terraform/techdocs-s3-storage/readme.md +++ b/contrib/terraform/techdocs-s3-storage/readme.md @@ -1 +1 @@ -This terraform file should create a S3 bucket and setup IAM with a user with an inline policy which gives the user access to the bucket. After you have created the bucket, user and policy you should go to the user in the AWS console and create an access key. This access key should be used as the env variables in step 3a [here](https://backstage.io/docs/features/techdocs/using-cloud-storage#configuring-aws-s3-bucket-with-techdocs). +This Terraform file should build an S3 bucket and configure IAM with a user and an inline policy that grants the user access to the bucket. After you've established the bucket, user, and policy, go to the user's AWS dashboard and generate an access key. This access key should be used to set the environment variables in step 3a [here](https://backstage.io/docs/features/techdocs/using-cloud-storage#configuring-aws-s3-bucket-with-techdocs). From f899eecf0791b4942826cc646fb83497374c1484 Mon Sep 17 00:00:00 2001 From: David Weber Date: Sat, 16 Dec 2023 23:24:11 +0100 Subject: [PATCH 24/30] fix: change kind:resource icon Signed-off-by: David Weber --- .changeset/dry-lizards-taste.md | 6 ++++++ packages/app-defaults/src/defaults/icons.tsx | 4 ++-- plugins/catalog/src/apis/EntityPresentationApi/defaults.tsx | 4 ++-- 3 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 .changeset/dry-lizards-taste.md diff --git a/.changeset/dry-lizards-taste.md b/.changeset/dry-lizards-taste.md new file mode 100644 index 0000000000..90e4c9f659 --- /dev/null +++ b/.changeset/dry-lizards-taste.md @@ -0,0 +1,6 @@ +--- +'@backstage/app-defaults': patch +'@backstage/plugin-catalog': patch +--- + +Change default icon for `kind:resource` to the storage icon. diff --git a/packages/app-defaults/src/defaults/icons.tsx b/packages/app-defaults/src/defaults/icons.tsx index fbdfb14e5b..1ed5bf03c6 100644 --- a/packages/app-defaults/src/defaults/icons.tsx +++ b/packages/app-defaults/src/defaults/icons.tsx @@ -34,7 +34,7 @@ import MuiMenuBookIcon from '@material-ui/icons/MenuBook'; import MuiPeopleIcon from '@material-ui/icons/People'; import MuiPersonIcon from '@material-ui/icons/Person'; import MuiWarningIcon from '@material-ui/icons/Warning'; -import MuiWorkIcon from '@material-ui/icons/Work'; +import MuiStorageIcon from '@material-ui/icons/Storage'; import MuiFeaturedPlayListIcon from '@material-ui/icons/FeaturedPlayList'; export const icons = { @@ -58,7 +58,7 @@ export const icons = { 'kind:location': MuiLocationOnIcon as IconComponent, 'kind:system': MuiCategoryIcon as IconComponent, 'kind:user': MuiPersonIcon as IconComponent, - 'kind:resource': MuiWorkIcon as IconComponent, + 'kind:resource': MuiStorageIcon as IconComponent, 'kind:template': MuiFeaturedPlayListIcon as IconComponent, user: MuiPersonIcon as IconComponent, warning: MuiWarningIcon as IconComponent, diff --git a/plugins/catalog/src/apis/EntityPresentationApi/defaults.tsx b/plugins/catalog/src/apis/EntityPresentationApi/defaults.tsx index 84f04c6f83..3dda6ef2de 100644 --- a/plugins/catalog/src/apis/EntityPresentationApi/defaults.tsx +++ b/plugins/catalog/src/apis/EntityPresentationApi/defaults.tsx @@ -26,7 +26,7 @@ import LocationOnIcon from '@material-ui/icons/LocationOn'; import MemoryIcon from '@material-ui/icons/Memory'; import PeopleIcon from '@material-ui/icons/People'; import PersonIcon from '@material-ui/icons/Person'; -import WorkIcon from '@material-ui/icons/Work'; +import StorageIcon from '@material-ui/icons/Storage'; import { DefaultEntityPresentationApiRenderer } from './DefaultEntityPresentationApi'; export const DEFAULT_CACHE_TTL: HumanDuration = { seconds: 10 }; @@ -39,7 +39,7 @@ export const DEFAULT_ICONS: Record = { api: ExtensionIcon, component: MemoryIcon, system: BusinessIcon, - resource: WorkIcon, + resource: StorageIcon, domain: ApartmentIcon, location: LocationOnIcon, user: PersonIcon, From b5abb970f6ebd5fbb4a80452782ade870eec0616 Mon Sep 17 00:00:00 2001 From: David Weber Date: Sun, 14 Jan 2024 14:09:33 +0100 Subject: [PATCH 25/30] chore: add end of life plugin Signed-off-by: David Weber --- microsite/data/plugins/end-of-life.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 microsite/data/plugins/end-of-life.yaml diff --git a/microsite/data/plugins/end-of-life.yaml b/microsite/data/plugins/end-of-life.yaml new file mode 100644 index 0000000000..d54a6bc5f9 --- /dev/null +++ b/microsite/data/plugins/end-of-life.yaml @@ -0,0 +1,10 @@ +--- +title: End of life +author: dweber019 +authorUrl: https://github.com/dweber019 +category: Quality +description: Display end of life data for entities from endoflife.data +documentation: https://github.com/dweber019/backstage-plugin-endoflife +iconUrl: https://raw.githubusercontent.com/dweber019/backstage-plugin-endoflife/main/plugins/endoflife/docs/pluginIcon.png +npmPackageName: '@dweber019/backstage-plugin-endoflife' +addedDate: '2024-01-18' From 092a4bbf7783201f1747fea202dbdc1b8a1d1e4c Mon Sep 17 00:00:00 2001 From: AmbrishRamachandiran Date: Thu, 18 Jan 2024 18:36:56 +0530 Subject: [PATCH 26/30] Updated readme Signed-off-by: AmbrishRamachandiran --- contrib/terraform/techdocs-s3-storage/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/terraform/techdocs-s3-storage/readme.md b/contrib/terraform/techdocs-s3-storage/readme.md index 8031c05028..b4968f7c09 100644 --- a/contrib/terraform/techdocs-s3-storage/readme.md +++ b/contrib/terraform/techdocs-s3-storage/readme.md @@ -1 +1 @@ -This Terraform file should build an S3 bucket and configure IAM with a user and an inline policy that grants the user access to the bucket. After you've established the bucket, user, and policy, go to the user's AWS dashboard and generate an access key. This access key should be used to set the environment variables in step 3a [here](https://backstage.io/docs/features/techdocs/using-cloud-storage#configuring-aws-s3-bucket-with-techdocs). +This Terraform file should create an S3 bucket and set up IAM with a user and an inline policy that authorises access to the bucket. After you've set up the bucket, user, and policy, go to the user's AWS dashboard and create an access key. This access key should be used to configure the environment variables in step 3a [here](https://backstage.io/docs/features/techdocs/using-cloud-storage#configuring-aws-s3-bucket-with-techdocs). From c7259dc12dc8743570c62b55cfbfdc6c485f20ea Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 20 Jan 2024 10:25:48 +0100 Subject: [PATCH 27/30] changesets: added changeset for cli backend module template update Signed-off-by: Patrik Oldsberg --- .changeset/two-coats-smile.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/two-coats-smile.md diff --git a/.changeset/two-coats-smile.md b/.changeset/two-coats-smile.md new file mode 100644 index 0000000000..65abb7a1eb --- /dev/null +++ b/.changeset/two-coats-smile.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Updated the backend module template to make the module instance the package default export. From 86346c2c11dbe15fd2be2bd3f6e924b13239e622 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Sat, 20 Jan 2024 11:16:25 +0100 Subject: [PATCH 28/30] simplify route bindings in config MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/silent-hotels-knock.md | 25 +++++++++++++++++++ .../frontend-system/architecture/07-routes.md | 4 +-- packages/app-next/app-config.yaml | 6 ++--- .../src/routing/collectRouteIds.test.ts | 10 +++----- .../src/routing/collectRouteIds.ts | 4 +-- 5 files changed, 36 insertions(+), 13 deletions(-) create mode 100644 .changeset/silent-hotels-knock.md diff --git a/.changeset/silent-hotels-knock.md b/.changeset/silent-hotels-knock.md new file mode 100644 index 0000000000..7ff5d978d2 --- /dev/null +++ b/.changeset/silent-hotels-knock.md @@ -0,0 +1,25 @@ +--- +'@backstage/frontend-app-api': minor +--- + +**BREAKING**: The `app.routes.bindings` app-config mapping has been simplified. You now only need to specify the plugin ID and route ID on both sides of the mapping. + +Old form: + +```yaml +app: + routes: + bindings: + plugin.catalog.externalRoutes.viewTechDoc: plugin.techdocs.routes.docRoot + plugin.catalog.externalRoutes.createComponent: plugin.catalog-import.routes.importPage +``` + +New form: + +```yaml +app: + routes: + bindings: + catalog.viewTechDoc: techdocs.docRoot + catalog.createComponent: catalog-import.importPage +``` diff --git a/docs/frontend-system/architecture/07-routes.md b/docs/frontend-system/architecture/07-routes.md index 8351a864ba..11586573be 100644 --- a/docs/frontend-system/architecture/07-routes.md +++ b/docs/frontend-system/architecture/07-routes.md @@ -241,10 +241,10 @@ app: bindings: # point to the Scaffolder create component page when the Catalog create component ref is used # highlight-next-line - plugin.catalog.externalRoutes.createComponent: plugin.scaffolder.routes.index + catalog.createComponent: scaffolder.index # point to the Catalog details page when the Scaffolder component details ref is used # highlight-next-line - plugin.scaffolder.externalRoutes.componentDetails: plugin.catalog.routes.details + scaffolder.componentDetails: catalog.details ``` We also have the ability to express this in code as an option to `createApp`, but you of course only need to use one of these two methods: diff --git a/packages/app-next/app-config.yaml b/packages/app-next/app-config.yaml index 1b77205d5e..9cc3507fa4 100644 --- a/packages/app-next/app-config.yaml +++ b/packages/app-next/app-config.yaml @@ -3,9 +3,9 @@ app: packages: 'all' # ✨ routes: bindings: - plugin.pages.externalRoutes.pageX: plugin.pages.routes.pageX - plugin.catalog.externalRoutes.viewTechDoc: plugin.techdocs.routes.docRoot - plugin.catalog.externalRoutes.createComponent: plugin.catalog-import.routes.importPage + pages.pageX: pages.pageX + catalog.viewTechDoc: techdocs.docRoot + catalog.createComponent: catalog-import.importPage extensions: # - apis.plugin.graphiql.browse.gitlab: true diff --git a/packages/frontend-app-api/src/routing/collectRouteIds.test.ts b/packages/frontend-app-api/src/routing/collectRouteIds.test.ts index 95a5afd8cd..6b9fdecf70 100644 --- a/packages/frontend-app-api/src/routing/collectRouteIds.test.ts +++ b/packages/frontend-app-api/src/routing/collectRouteIds.test.ts @@ -37,15 +37,13 @@ describe('collectRouteIds', () => { createPlugin({ id: 'test', routes: { ref }, externalRoutes: { extRef } }), ]); expect(Object.fromEntries(collected.routes)).toEqual({ - 'plugin.test.routes.ref': ref, + 'test.ref': ref, }); expect(Object.fromEntries(collected.externalRoutes)).toEqual({ - 'plugin.test.externalRoutes.extRef': extRef, + 'test.extRef': extRef, }); - expect(String(ref)).toBe('RouteRef{plugin.test.routes.ref}'); - expect(String(extRef)).toBe( - 'ExternalRouteRef{plugin.test.externalRoutes.extRef}', - ); + expect(String(ref)).toBe('RouteRef{test.ref}'); + expect(String(extRef)).toBe('ExternalRouteRef{test.extRef}'); }); }); diff --git a/packages/frontend-app-api/src/routing/collectRouteIds.ts b/packages/frontend-app-api/src/routing/collectRouteIds.ts index 2fbb8b6791..d45871ae89 100644 --- a/packages/frontend-app-api/src/routing/collectRouteIds.ts +++ b/packages/frontend-app-api/src/routing/collectRouteIds.ts @@ -47,7 +47,7 @@ export function collectRouteIds(features: FrontendFeature[]): RouteRefsById { } for (const [name, ref] of Object.entries(feature.routes)) { - const refId = `plugin.${feature.id}.routes.${name}`; + const refId = `${feature.id}.${name}`; if (routesById.has(refId)) { throw new Error(`Unexpected duplicate route '${refId}'`); } @@ -62,7 +62,7 @@ export function collectRouteIds(features: FrontendFeature[]): RouteRefsById { } } for (const [name, ref] of Object.entries(feature.externalRoutes)) { - const refId = `plugin.${feature.id}.externalRoutes.${name}`; + const refId = `${feature.id}.${name}`; if (externalRoutesById.has(refId)) { throw new Error(`Unexpected duplicate external route '${refId}'`); } From e0a4dd1a2ffcc90a41a0a1e76d983d7396bc2954 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Sat, 20 Jan 2024 10:58:33 +0100 Subject: [PATCH 29/30] improve resolveInputData error messaging MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/silent-poets-grab.md | 5 +++++ .../src/tree/instantiateAppNodeTree.test.ts | 4 ++-- .../src/tree/instantiateAppNodeTree.ts | 11 ++++++++++- .../src/app/createExtensionTester.test.tsx | 4 ++-- 4 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 .changeset/silent-poets-grab.md diff --git a/.changeset/silent-poets-grab.md b/.changeset/silent-poets-grab.md new file mode 100644 index 0000000000..0d76e263d2 --- /dev/null +++ b/.changeset/silent-poets-grab.md @@ -0,0 +1,5 @@ +--- +'@backstage/frontend-app-api': patch +--- + +Improved the error message when data input/output shapes do not match diff --git a/packages/frontend-app-api/src/tree/instantiateAppNodeTree.test.ts b/packages/frontend-app-api/src/tree/instantiateAppNodeTree.test.ts index 766cb4804e..3330b9add8 100644 --- a/packages/frontend-app-api/src/tree/instantiateAppNodeTree.test.ts +++ b/packages/frontend-app-api/src/tree/instantiateAppNodeTree.test.ts @@ -615,8 +615,8 @@ describe('createAppNodeInstance', () => { ), ), }), - ).toThrow( - "Failed to instantiate extension 'app/test', input 'singleton' did not receive required extension data 'other' from extension 'app/test'", + ).toThrowErrorMatchingInlineSnapshot( + `"Failed to instantiate extension 'app/test', extension 'app/test' could not be attached because its output data ('test', 'other') does not match what the input 'singleton' requires ('other')"`, ); }); }); diff --git a/packages/frontend-app-api/src/tree/instantiateAppNodeTree.ts b/packages/frontend-app-api/src/tree/instantiateAppNodeTree.ts index 90a256fea6..63eca749b7 100644 --- a/packages/frontend-app-api/src/tree/instantiateAppNodeTree.ts +++ b/packages/frontend-app-api/src/tree/instantiateAppNodeTree.ts @@ -37,8 +37,17 @@ function resolveInputData( return mapValues(dataMap, ref => { const value = attachment.instance?.getData(ref); if (value === undefined && !ref.config.optional) { + const expected = Object.values(dataMap) + .filter(r => !r.config.optional) + .map(r => `'${r.id}'`) + .join(', '); + + const provided = [...(attachment.instance?.getDataRefs() ?? [])] + .map(r => `'${r.id}'`) + .join(', '); + throw new Error( - `input '${inputName}' did not receive required extension data '${ref.id}' from extension '${attachment.spec.id}'`, + `extension '${attachment.spec.id}' could not be attached because its output data (${provided}) does not match what the input '${inputName}' requires (${expected})`, ); } return value; diff --git a/packages/frontend-test-utils/src/app/createExtensionTester.test.tsx b/packages/frontend-test-utils/src/app/createExtensionTester.test.tsx index d53344f7fd..f59d44f6d7 100644 --- a/packages/frontend-test-utils/src/app/createExtensionTester.test.tsx +++ b/packages/frontend-test-utils/src/app/createExtensionTester.test.tsx @@ -63,8 +63,8 @@ describe('createExtensionTester', () => { factory: () => ({ path: '/foo' }), }); const tester = createExtensionTester(extension); - expect(() => tester.render()).toThrow( - "Failed to instantiate extension 'app/routes', input 'routes' did not receive required extension data 'core.reactElement' from extension 'test'", + expect(() => tester.render()).toThrowErrorMatchingInlineSnapshot( + `"Failed to instantiate extension 'app/routes', extension 'test' could not be attached because its output data ('core.routing.path') does not match what the input 'routes' requires ('core.routing.path', 'core.reactElement')"`, ); }); From e34401c3c69c24257582fbfe46a3c83dc22f5abb Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 20 Jan 2024 16:23:58 +0100 Subject: [PATCH 30/30] Update microsite/data/plugins/github-codespaces.yaml Signed-off-by: Patrik Oldsberg --- microsite/data/plugins/github-codespaces.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microsite/data/plugins/github-codespaces.yaml b/microsite/data/plugins/github-codespaces.yaml index e4480cf4e2..de2659c1e1 100644 --- a/microsite/data/plugins/github-codespaces.yaml +++ b/microsite/data/plugins/github-codespaces.yaml @@ -12,4 +12,4 @@ tags: - codespaces - development - devcontainers -addedDate: '2023-12-30' \ No newline at end of file +addedDate: '2023-12-30'