From 0736fa057560ee5e98ef03bd43d8ace8c194cede Mon Sep 17 00:00:00 2001 From: Mymoon Beevi Saleem Date: Wed, 26 Jun 2024 17:29:40 +0530 Subject: [PATCH 1/5] Add new plugin for backstage bitbucket pullrequest --- app-config.yaml | 10 + packages/app/package.json | 1 + .../app/src/components/catalog/EntityPage.tsx | 6 + .../.eslintrc.js | 1 + .../README.md | 71 ++++++ .../dev/index.tsx | 19 ++ .../docs/bitbucketprimg.png | Bin 0 -> 161308 bytes .../docs/index.md | 1 + .../docs/releasing.md | 11 + .../package.json | 67 ++++++ .../src/api/BitbucketApi.ts | 77 ++++++ .../src/components/PullRequestList.test.tsx | 84 +++++++ .../src/components/PullRequestList.tsx | 152 ++++++++++++ .../src/components/PullRequestsPage.tsx | 36 +++ .../src/components/Router.tsx | 38 +++ .../src/components/StatusFilter.tsx | 60 +++++ .../src/index.ts | 16 ++ .../src/plugin.test.ts | 22 ++ .../src/plugin.ts | 45 ++++ .../src/responseStubs.ts | 225 ++++++++++++++++++ .../src/routes.ts | 20 ++ .../src/setupTests.ts | 20 ++ .../src/utils/isBITBUCKETSlugSet.ts | 24 ++ yarn.lock | 14 +- 24 files changed, 1013 insertions(+), 7 deletions(-) create mode 100644 plugins/frontend/backstage-plugin-bitbucket-pullrequest/.eslintrc.js create mode 100644 plugins/frontend/backstage-plugin-bitbucket-pullrequest/README.md create mode 100644 plugins/frontend/backstage-plugin-bitbucket-pullrequest/dev/index.tsx create mode 100644 plugins/frontend/backstage-plugin-bitbucket-pullrequest/docs/bitbucketprimg.png create mode 100644 plugins/frontend/backstage-plugin-bitbucket-pullrequest/docs/index.md create mode 100644 plugins/frontend/backstage-plugin-bitbucket-pullrequest/docs/releasing.md create mode 100644 plugins/frontend/backstage-plugin-bitbucket-pullrequest/package.json create mode 100644 plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/api/BitbucketApi.ts create mode 100644 plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/PullRequestList.test.tsx create mode 100644 plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/PullRequestList.tsx create mode 100644 plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/PullRequestsPage.tsx create mode 100644 plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/Router.tsx create mode 100644 plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/StatusFilter.tsx create mode 100644 plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/index.ts create mode 100644 plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/plugin.test.ts create mode 100644 plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/plugin.ts create mode 100644 plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/responseStubs.ts create mode 100644 plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/routes.ts create mode 100644 plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/setupTests.ts create mode 100644 plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/utils/isBITBUCKETSlugSet.ts diff --git a/app-config.yaml b/app-config.yaml index b353536ef..77e029178 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -34,6 +34,8 @@ integrations: # - host: ghe.example.net # apiBaseUrl: https://ghe.example.net/api/v3 # token: ${GHE_TOKEN} +bitbucket: + proxyPath: /bitbucket/api proxy: '/test': @@ -62,6 +64,14 @@ proxy: X-Atlassian-Token: 'no-check' User-Agent: 'Roadie-Backstage' + '/bitbucket/api': + target: https://bitbucket.org + changeOrigin: true + headers: + Authorization: Bearer ${BITBUCKET_TOKEN} + Accept: 'application/json' + Content-Type: 'application/json' + '/travisci/api': target: https://api.travis-ci.com changeOrigin: true diff --git a/packages/app/package.json b/packages/app/package.json index cc0f8c22c..5a3780aff 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -39,6 +39,7 @@ "@roadiehq/backstage-plugin-datadog": "^2.2.8", "@roadiehq/backstage-plugin-github-insights": "^2.3.29", "@roadiehq/backstage-plugin-github-pull-requests": "^2.5.26", + "@roadiehq/backstage-plugin-bitbucket-pullrequest": "^1.0.0", "@roadiehq/backstage-plugin-home-markdown": "^2.5.24", "@roadiehq/backstage-plugin-home-rss": "^1.3.12", "@roadiehq/backstage-plugin-iframe": "^1.3.17", diff --git a/packages/app/src/components/catalog/EntityPage.tsx b/packages/app/src/components/catalog/EntityPage.tsx index f283583a6..db7f65973 100644 --- a/packages/app/src/components/catalog/EntityPage.tsx +++ b/packages/app/src/components/catalog/EntityPage.tsx @@ -55,6 +55,9 @@ import { EntityGithubPullRequestsContent, EntityGithubPullRequestsOverviewCard, } from '@roadiehq/backstage-plugin-github-pull-requests'; + +import { EntityBitbucketPage } from '@roadiehq/backstage-plugin-bitbucket-pullrequest'; + import { isAWSLambdaAvailable, EntityAWSLambdaOverviewCard, @@ -290,6 +293,9 @@ const serviceEntityPage = ( + + + diff --git a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/.eslintrc.js b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/.eslintrc.js new file mode 100644 index 000000000..e2a53a6ad --- /dev/null +++ b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/README.md b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/README.md new file mode 100644 index 000000000..4ba10f30a --- /dev/null +++ b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/README.md @@ -0,0 +1,71 @@ +# Bitbucket PullRequest Plugin for Backstage + +![list of pull requests in the Bitbucket repo](./docs/bitbucketprimg.png) + +## Features + +- List of PR's from particular bitbucket repo +- Filtering like OPEN/CLOSED/MERGED/ALL PR and Search +- Able to view Creator name, Created date and last update etc. +- We can go to Particular PR by clicking ID. + +## How to add Bitbucket PR plugin to Backstage app + +1. Install the plugin into Backstage. + +```bash +cd packages/app +yarn add @roadiehq/backstage-plugin-bitbucket-pullrequest +``` + +2. Add plugin API to your Backstage instance. + +```ts +// packages/app/src/components/catalog/EntityPage.tsx +import { EntityBitbucketPage } from '@roadiehq/backstage-plugin-bitbucket-pullrequest'; + +... + +const serviceEntityPage = ( + + ... + + + + ... + +``` + +3. Add proxy config + +```yaml +// app-config.yaml +proxy: + '/bitbucket/api': + target: https://bitbucket.org + changeOrigin: true + headers: + Authorization: Bearer ${BITBUCKET_TOKEN} + Accept: 'application/json' + Content-Type: 'application/json' +bitbucket: + # Defaults to /bitbucket/api and can be omitted if proxy is configured for that url + proxyPath: /bitbucket/api +``` + +4. Run backstage app with `yarn start` and navigate to services tabs. + +## How to use Bitbucket PR plugin in Backstage + +- Add annotation to the yaml config file of a component + +```yaml +metadata: + annotations: + bitbucket.com/project-slug: / +``` + +## Links + +- [Backstage](https://backstage.io) +- Get hosted, managed Backstage for your company: https://roadie.io diff --git a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/dev/index.tsx b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/dev/index.tsx new file mode 100644 index 000000000..4eda14367 --- /dev/null +++ b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/dev/index.tsx @@ -0,0 +1,19 @@ +/* + * Copyright 2024 Larder Software Limited + * + * 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 { createDevApp } from '@backstage/dev-utils'; +import { bitbucketPlugin } from '../src/plugin'; + +createDevApp().registerPlugin(bitbucketPlugin).render(); diff --git a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/docs/bitbucketprimg.png b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/docs/bitbucketprimg.png new file mode 100644 index 0000000000000000000000000000000000000000..bf18c9ed448c71ebad39b318d90ac8e9ab445df2 GIT binary patch literal 161308 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 DLgmB+ literal 0 HcmV?d00001 diff --git a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/docs/index.md b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/docs/index.md new file mode 100644 index 000000000..4952b0b8a --- /dev/null +++ b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/docs/index.md @@ -0,0 +1 @@ +Docs go here diff --git a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/docs/releasing.md b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/docs/releasing.md new file mode 100644 index 000000000..f92a0f764 --- /dev/null +++ b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/docs/releasing.md @@ -0,0 +1,11 @@ +# How to release + +This plugin uses the [npm-publish-action](https://github.com/marketplace/actions/publish-to-npm) GutHub Action to automate releases. It expects commits to be titled in a very specific way. + +To publish a new version, + +1. Manually bump the version in the `package.json` file. +2. Commit the version bump the exact title: "Release 1.2.3". + +Do **not** use `yarn version --new-version [version]`. Doing so will automatically add a commit +and tag which will then clash with the commit and tag that the automation creates. diff --git a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/package.json b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/package.json new file mode 100644 index 000000000..a905fe244 --- /dev/null +++ b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/package.json @@ -0,0 +1,67 @@ +{ + "name": "@roadiehq/backstage-plugin-bitbucket-pullrequest", + "version": "1.0.0", + "main": "src/index.ts", + "types": "src/index.ts", + "license": "Apache-2.0", + "private": true, + "publishConfig": { + "access": "public", + "main": "dist/index.esm.js", + "types": "dist/index.d.ts" + }, + "repository": { + "type": "git", + "url": "github:RoadieHQ/roadie-backstage-plugins", + "directory": "plugins/frontend/backstage-plugin-bitbucket-pullrequest" + }, + "backstage": { + "role": "frontend-plugin" + }, + "sideEffects": false, + "scripts": { + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "clean": "backstage-cli package clean", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack" + }, + "dependencies": { + "@backstage/core-components": "^0.14.4", + "@backstage/core-plugin-api": "^1.9.2", + "@backstage/theme": "^0.5.3", + "@material-ui/core": "^4.9.13", + "@material-ui/icons": "^4.9.1", + "@material-ui/lab": "^4.0.0-alpha.60", + "react-use": "^17.2.4", + "@backstage/plugin-catalog-react": "^1.10.0", + "@backstage/catalog-model": "^1.4.4", + "moment": "^2.29.1", + "msw": "^1.0.1", + "cross-fetch": "4.0.0" + }, + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", + "react-router": "6.0.0-beta.0 || ^6.3.0" + }, + "devDependencies": { + "@types/luxon": "^3.0.0", + "@backstage/cli": "^0.26.4", + "@backstage/core-app-api": "^1.12.4", + "@backstage/dev-utils": "^1.0.31", + "@backstage/test-utils": "^1.5.4", + "@testing-library/jest-dom": "^6.0.0", + "@testing-library/react": "^14.0.0", + "jest-environment-jsdom": "^29.2.1", + "rollup-plugin-dts": "^5.2.0", + "@rollup/plugin-commonjs": "^24.0.1", + "@rollup/plugin-node-resolve": "^15.0.1", + "rollup-plugin-esbuild": "^5.0.0" + }, + "files": [ + "dist" + ] +} diff --git a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/api/BitbucketApi.ts b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/api/BitbucketApi.ts new file mode 100644 index 000000000..0f4157ff2 --- /dev/null +++ b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/api/BitbucketApi.ts @@ -0,0 +1,77 @@ +/* + * Copyright 2024 Larder Software Limited + * + * 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 fetch from 'cross-fetch'; + +import { createApiRef, DiscoveryApi } from '@backstage/core-plugin-api'; + +export const bitbucketApiRef = createApiRef({ + id: 'plugin.bitbucket.service', +}); +export type PullRequest = { + id: number; + title: string; + author: string; + created_on: string; + updated_on: string; + state: string; + description: string; + url: string; +}; +const DEFAULT_PROXY_PATH = '/bitbucket/api'; +type Options = { + discoveryApi: DiscoveryApi; +}; +export class BitbucketApi { + private readonly discoveryApi: DiscoveryApi; + + constructor(options: Options) { + this.discoveryApi = options.discoveryApi; + } + + async fetchPullRequestList( + project: string, + repo: string, + state?: string, + ): Promise { + const proxyUrl = await this.discoveryApi.getBaseUrl('proxy'); + const response = await fetch( + `${proxyUrl}${DEFAULT_PROXY_PATH}/projects/${project}/repos/${repo}/pull-requests?state=${ + state || '' + }`, + { + headers: { + 'Content-Type': 'application/json', + }, + }, + ); + if (!response.ok) { + throw new Error('Failed to fetch pull requests'); + } + + const data = await response.json(); + + return data.values.map((pr: any) => ({ + id: pr.id, + title: pr.title, + author: pr.author.user.name, + created_on: pr.createdDate, + updated_on: pr.updatedDate, + state: pr.state, + url: pr.links.self[0].href, + description: pr.description, + })); + } +} diff --git a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/PullRequestList.test.tsx b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/PullRequestList.test.tsx new file mode 100644 index 000000000..e7ca6fe08 --- /dev/null +++ b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/PullRequestList.test.tsx @@ -0,0 +1,84 @@ +/* + * Copyright 2024 Larder Software Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; +import { UrlPatternDiscovery } from '@backstage/core-app-api'; +import { AnyApiRef } from '@backstage/core-plugin-api'; +import { EntityProvider } from '@backstage/plugin-catalog-react'; +import { rest } from 'msw'; +import { + setupRequestMockHandlers, + TestApiProvider, +} from '@backstage/test-utils'; +import { setupServer } from 'msw/node'; +import { bitbucketApiRef, BitbucketApi } from '../api/BitbucketApi'; +import PullRequestList from '../components/PullRequestList'; +import { pullRequestsResponseStub, entityStub } from '../responseStubs'; +import { render, screen, waitFor } from '@testing-library/react'; + +const discoveryApi = UrlPatternDiscovery.compile('http://exampleapi.com'); + +const apis: [AnyApiRef, Partial][] = [ + [bitbucketApiRef, new BitbucketApi({ discoveryApi })], +]; + +describe('PullRequestList', () => { + const worker = setupServer(); + setupRequestMockHandlers(worker); + + beforeEach(() => jest.resetAllMocks()); + + it('should display a table with the data from the requests', async () => { + worker.use( + rest.get( + 'http://exampleapi.com/bitbucket/api/projects/testproject/repos/testrepo/pull-requests', + (_, res, ctx) => res(ctx.json(pullRequestsResponseStub)), + ), + ); + render( + + + + + , + ); + + // test the table header + await waitFor(() => { + expect(screen.getByText('Bitbucket Pull Requests')).toBeInTheDocument(); + }); + + // test the table title + await waitFor(() => { + expect(screen.getByText('testproject/testrepo')).toBeInTheDocument(); + }); + + // test each column title + await waitFor(() => { + expect(screen.getByText(/ID/i)).toBeInTheDocument(); + expect(screen.getByText(/TITLE/i)).toBeInTheDocument(); + expect(screen.getByText(/AUTHOR/i)).toBeInTheDocument(); + expect(screen.getByText(/STATE/i)).toBeInTheDocument(); + expect(screen.getByText(/CREATED/i)).toBeInTheDocument(); + expect(screen.getByText(/LAST UPDATED/i)).toBeInTheDocument(); + }); + + // check the count of row equal to mock response count + await waitFor(() => { + const rows = screen.getAllByRole('row'); + expect(rows).toHaveLength(3); + }); + }); +}); diff --git a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/PullRequestList.tsx b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/PullRequestList.tsx new file mode 100644 index 000000000..d5f166837 --- /dev/null +++ b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/PullRequestList.tsx @@ -0,0 +1,152 @@ +/* + * Copyright 2024 Larder Software Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React, { useEffect, useState } from 'react'; +import { + Content, + TableColumn, + Table, + ContentHeader, + MarkdownContent, +} from '@backstage/core-components'; +import moment from 'moment'; +import { useApi } from '@backstage/core-plugin-api'; +import { Box } from '@material-ui/core'; +import { isBITBUCKETSlugSet } from '../utils/isBITBUCKETSlugSet'; + +import { bitbucketApiRef, PullRequest } from '../api/BitbucketApi'; +import CheckCircleIcon from '@material-ui/icons/CheckCircle'; +import CancelIcon from '@material-ui/icons/Cancel'; +import HourglassEmptyIcon from '@material-ui/icons/HourglassEmpty'; +import StatusFilter from '../components/StatusFilter'; +import { useEntity } from '@backstage/plugin-catalog-react'; + +const PullRequestList: React.FC = () => { + const [pullRequests, setPullRequests] = useState([]); + const [stateFilter, setStateFilter] = useState('All'); + const { entity } = useEntity(); + const PROJECT = isBITBUCKETSlugSet(entity); + const bitbucketApi = useApi(bitbucketApiRef); + const projectName = PROJECT.split('/')[0]; + const repoName = PROJECT.split('/')[1]; + const fetchpullreq = async () => { + await bitbucketApi + .fetchPullRequestList( + projectName, + repoName, + stateFilter !== 'All' ? stateFilter : undefined, + ) + .then(data => setPullRequests(data)) + .catch(error => error); + }; + useEffect(() => { + fetchpullreq(); + }); + + const GetElapsedTime = ({ start }: { start: string }) => + moment(start).fromNow(); + const RenderStateIcon = ({ status }: { status: string }) => { + switch (status) { + case 'OPEN': + return ; + case 'MERGED': + return ; + case 'DECLINED': + return ; + default: + return null; + } + }; + + const columns: TableColumn[] = [ + { + title: 'ID', + field: 'id', + highlight: true, + width: '20%', + render: (row: Partial) => ( + + + #{row.id} + + + ), + }, + { + title: 'TITLE', + field: 'title', + highlight: true, + width: '30%', + render: rowData => {rowData.title}, + }, + { + title: 'STATE', + field: 'state', + highlight: true, + width: '10%', + render: rowData => , + }, + { + title: 'AUTHOR', + field: 'author', + highlight: true, + width: '20%', + render: (row: Partial) => ( + {row.author} + ), + }, + + { + title: 'CREATED', + field: 'created_on', + highlight: true, + width: '20%', + render: (row: Partial) => ( + + ), + }, + { + title: 'LAST UPDATED', + field: 'updated_on', + highlight: true, + width: '20%', + render: rowData => , + }, + ]; + + return ( +

+ + + + + ( + + + + )} + /> + + + ); +}; +export default PullRequestList; diff --git a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/PullRequestsPage.tsx b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/PullRequestsPage.tsx new file mode 100644 index 000000000..4acdf5523 --- /dev/null +++ b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/PullRequestsPage.tsx @@ -0,0 +1,36 @@ +/* + * Copyright 2024 Larder Software Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; +import { Grid } from '@material-ui/core'; +import { Content } from '@backstage/core-components'; + +import PullRequestList from '../components/PullRequestList'; + +const PullRequestsPage = () => { + return ( +
+ + + + + + + +
+ ); +}; + +export default PullRequestsPage; diff --git a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/Router.tsx b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/Router.tsx new file mode 100644 index 000000000..6cc2198ec --- /dev/null +++ b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/Router.tsx @@ -0,0 +1,38 @@ +/* + * Copyright 2024 Larder Software Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; +import { Entity } from '@backstage/catalog-model'; +import { Route, Routes } from 'react-router'; +import PullRequestsPage from './PullRequestsPage'; +import { BITBUCKET_PULL_REQUESTS_ANNOTATION } from '../utils/isBITBUCKETSlugSet'; +import { MissingAnnotationEmptyState } from '@backstage/core-components'; +import { useEntity } from '@backstage/plugin-catalog-react'; + +export const isBITBUCKETPullRequestsAvailable = (entity: Entity) => + Boolean(entity.metadata.annotations?.[BITBUCKET_PULL_REQUESTS_ANNOTATION]); + +export const Router = () => { + const { entity } = useEntity(); + return !isBITBUCKETPullRequestsAvailable(entity) ? ( + + ) : ( + + } /> + + ); +}; diff --git a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/StatusFilter.tsx b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/StatusFilter.tsx new file mode 100644 index 000000000..5e4ce9996 --- /dev/null +++ b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/StatusFilter.tsx @@ -0,0 +1,60 @@ +/* + * Copyright 2024 Larder Software Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React, { useState } from 'react'; +import { ButtonGroup, Button } from '@material-ui/core'; + +interface StatusFilterProps { + onFilterChange: (filter: string) => void; +} +const StatusFilter: React.FC = ({ onFilterChange }) => { + const [status, setStatus] = useState('ALL'); + + const handleStatusChange = (newStatus: any) => { + setStatus(newStatus); + onFilterChange(newStatus); + }; + + return ( + + + + + + + ); +}; + +export default StatusFilter; diff --git a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/index.ts b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/index.ts new file mode 100644 index 000000000..15f36ae86 --- /dev/null +++ b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2024 Larder Software Limited + * + * 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. + */ +export { bitbucketPlugin, EntityBitbucketPage } from './plugin'; diff --git a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/plugin.test.ts b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/plugin.test.ts new file mode 100644 index 000000000..f58a4aeaa --- /dev/null +++ b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/plugin.test.ts @@ -0,0 +1,22 @@ +/* + * Copyright 2024 Larder Software Limited + * + * 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 { bitbucketPlugin } from './plugin'; + +describe('bitbucket-Plugin', () => { + it('should export plugin', () => { + expect(bitbucketPlugin).toBeDefined(); + }); +}); diff --git a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/plugin.ts b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/plugin.ts new file mode 100644 index 000000000..0ea430023 --- /dev/null +++ b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/plugin.ts @@ -0,0 +1,45 @@ +/* + * Copyright 2024 Larder Software Limited + * + * 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 { + createPlugin, + createApiFactory, + discoveryApiRef, + createRoutableExtension, +} from '@backstage/core-plugin-api'; +import { rootRouteRef } from './routes'; +import { bitbucketApiRef, BitbucketApi } from './api/BitbucketApi'; + +export const bitbucketPlugin = createPlugin({ + id: 'bitbucket-pullrequests', + apis: [ + createApiFactory({ + api: bitbucketApiRef, + deps: { discoveryApi: discoveryApiRef }, + factory: ({ discoveryApi }) => new BitbucketApi({ discoveryApi }), + }), + ], + routes: { + root: rootRouteRef, + }, +}); + +export const EntityBitbucketPage = bitbucketPlugin.provide( + createRoutableExtension({ + name: 'EntityBitbucketPage', + component: () => import('./components/Router').then(m => m.Router), + mountPoint: rootRouteRef, + }), +); diff --git a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/responseStubs.ts b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/responseStubs.ts new file mode 100644 index 000000000..6d7a73a08 --- /dev/null +++ b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/responseStubs.ts @@ -0,0 +1,225 @@ +/* + * Copyright 2024 Larder Software Limited + * + * 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. + */ +export const entityStub = { + metadata: { + namespace: 'default', + annotations: { + 'backstage.io/managed-by-location': + 'url:https://github.com/mcalus3/sample-service/blob/master/backstage3.yaml', + 'bitbucket.com/project-slug': 'testproject/testrepo', + }, + name: 'sample-bitbucketpr-service', + description: + 'A service for testing Backstage functionality. For example, we can trigger errors\non the sample-bitbucketpr-service, these are sent to Sentry, then we can view them in the \nBackstage plugin for Sentry.\n', + }, + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + spec: { + type: 'service', + owner: 'guest@roadie.io', + lifecycle: 'experimental', + }, +}; +export const pullRequestsResponseStub = { + values: [ + { + id: 1, + title: 'Update README', + description: 'This PR updates the README file with new instructions.', + state: 'OPEN', + created_on: '2024-06-15T12:34:56.000Z', + updated_on: '2024-06-16T12:34:56.000Z', + source: { + branch: { + name: 'feature/update-readme', + }, + commit: { + hash: 'abc123', + }, + repository: { + name: 'my-repo', + full_name: 'my-team/my-repo', + }, + }, + destination: { + branch: { + name: 'main', + }, + commit: { + hash: 'def456', + }, + repository: { + name: 'my-repo', + full_name: 'my-team/my-repo', + }, + }, + author: { + display_name: 'John Doe', + uuid: '{user-uuid}', + links: { + avatar: { + href: 'https://bitbucket.org/account/johndoe/avatar/32/', + }, + }, + }, + reviewers: [ + { + display_name: 'Jane Smith', + uuid: '{reviewer-uuid}', + approved: false, + links: { + avatar: { + href: 'https://bitbucket.org/account/janesmith/avatar/32/', + }, + }, + }, + ], + links: { + self: { + href: 'https://bitbucket.org/my-team/my-repo/pull-requests/1', + }, + html: { + href: 'https://bitbucket.org/my-team/my-repo/pull-requests/1', + }, + }, + }, + { + id: 2, + title: 'Add new feature', + description: 'This PR adds a new feature.', + state: 'MERGED', + created_on: '2024-06-18T12:00:00.000Z', + updated_on: '2024-06-20T12:00:00.000Z', + source: { + branch: { + name: 'feature/new-feature', + }, + commit: { + hash: 'ghi789', + }, + repository: { + name: 'my-repo', + full_name: 'my-team/my-repo', + }, + }, + destination: { + branch: { + name: 'main', + }, + commit: { + hash: 'jkl012', + }, + repository: { + name: 'my-repo', + full_name: 'my-team/my-repo', + }, + }, + author: { + display_name: 'John Doe', + uuid: '{user-uuid}', + links: { + avatar: { + href: 'https://bitbucket.org/account/johndoe/avatar/32/', + }, + }, + }, + reviewers: [ + { + display_name: 'Jane Smith', + uuid: '{reviewer-uuid}', + approved: true, + links: { + avatar: { + href: 'https://bitbucket.org/account/janesmith/avatar/32/', + }, + }, + }, + ], + links: { + self: { + href: 'https://bitbucket.org/my-team/my-repo/pull-requests/2', + }, + html: { + href: 'https://bitbucket.org/my-team/my-repo/pull-requests/2', + }, + }, + }, + { + id: 3, + title: 'Fix bug in feature', + description: 'This PR fixes a bug in the new feature.', + state: 'DECLINED', + created_on: '2024-06-19T12:00:00.000Z', + updated_on: '2024-06-20T12:00:00.000Z', + source: { + branch: { + name: 'bugfix/fix-bug', + }, + commit: { + hash: 'mno345', + }, + repository: { + name: 'my-repo', + full_name: 'my-team/my-repo', + }, + }, + destination: { + branch: { + name: 'main', + }, + commit: { + hash: 'pqr678', + }, + repository: { + name: 'my-repo', + full_name: 'my-team/my-repo', + }, + }, + author: { + display_name: 'John Doe', + uuid: '{user-uuid}', + links: { + avatar: { + href: 'https://bitbucket.org/account/johndoe/avatar/32/', + }, + }, + }, + reviewers: [ + { + display_name: 'Jane Smith', + uuid: '{reviewer-uuid}', + approved: false, + links: { + avatar: { + href: 'https://bitbucket.org/account/janesmith/avatar/32/', + }, + }, + }, + ], + links: { + self: { + href: 'https://bitbucket.org/my-team/my-repo/pull-requests/3', + }, + html: { + href: 'https://bitbucket.org/my-team/my-repo/pull-requests/3', + }, + }, + }, + ], + page: 1, + pagelen: 10, + size: 3, +}; diff --git a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/routes.ts b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/routes.ts new file mode 100644 index 000000000..579d926ef --- /dev/null +++ b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/routes.ts @@ -0,0 +1,20 @@ +/* + * Copyright 2024 Larder Software Limited + * + * 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 { createRouteRef } from '@backstage/core-plugin-api'; + +export const rootRouteRef = createRouteRef({ + id: 'bitbucket-pullrequests', +}); diff --git a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/setupTests.ts b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/setupTests.ts new file mode 100644 index 000000000..883e70d8d --- /dev/null +++ b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/setupTests.ts @@ -0,0 +1,20 @@ +/* + * Copyright 2024 Larder Software Limited + * + * 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 '@testing-library/jest-dom'; +import 'cross-fetch/polyfill'; + +// @ts-ignore +window.HTMLCanvasElement.prototype.getContext = () => {}; diff --git a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/utils/isBITBUCKETSlugSet.ts b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/utils/isBITBUCKETSlugSet.ts new file mode 100644 index 000000000..0cfd7d3d3 --- /dev/null +++ b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/utils/isBITBUCKETSlugSet.ts @@ -0,0 +1,24 @@ +/* + * Copyright 2024 Larder Software Limited + * + * 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'; + +export const BITBUCKET_PULL_REQUESTS_ANNOTATION = 'bitbucket.com/project-slug'; + +export const isBITBUCKETSlugSet = (entity: Entity) => { + return ( + entity?.metadata.annotations?.[BITBUCKET_PULL_REQUESTS_ANNOTATION] ?? '' + ); +}; diff --git a/yarn.lock b/yarn.lock index 3211ee7bb..df096a78f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15567,6 +15567,13 @@ cross-env@^7.0.0: dependencies: cross-spawn "^7.0.1" +cross-fetch@4.0.0, cross-fetch@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-4.0.0.tgz#f037aef1580bb3a1a35164ea2a848ba81b445983" + integrity sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g== + dependencies: + node-fetch "^2.6.12" + cross-fetch@^3.0.4, cross-fetch@^3.0.6, cross-fetch@^3.1.3, cross-fetch@^3.1.4, cross-fetch@^3.1.5: version "3.1.8" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" @@ -15574,13 +15581,6 @@ cross-fetch@^3.0.4, cross-fetch@^3.0.6, cross-fetch@^3.1.3, cross-fetch@^3.1.4, dependencies: node-fetch "^2.6.12" -cross-fetch@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-4.0.0.tgz#f037aef1580bb3a1a35164ea2a848ba81b445983" - integrity sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g== - dependencies: - node-fetch "^2.6.12" - cross-inspect@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cross-inspect/-/cross-inspect-1.0.0.tgz#5fda1af759a148594d2d58394a9e21364f6849af" From a98ee17bfc52307829af3106916cdd6923e60af1 Mon Sep 17 00:00:00 2001 From: Mymoon Beevi Saleem Date: Fri, 5 Jul 2024 12:44:59 +0530 Subject: [PATCH 2/5] updated review changes --- .../app/src/components/catalog/EntityPage.tsx | 4 +-- .../README.md | 4 +-- .../src/components/PullRequestList.tsx | 5 ++- .../src/components/PullRequestsPage.tsx | 36 ------------------- .../src/components/Router.tsx | 4 +-- .../src/index.ts | 2 +- .../src/plugin.ts | 4 +-- 7 files changed, 11 insertions(+), 48 deletions(-) delete mode 100644 plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/PullRequestsPage.tsx diff --git a/packages/app/src/components/catalog/EntityPage.tsx b/packages/app/src/components/catalog/EntityPage.tsx index db7f65973..81fb4a6aa 100644 --- a/packages/app/src/components/catalog/EntityPage.tsx +++ b/packages/app/src/components/catalog/EntityPage.tsx @@ -56,7 +56,7 @@ import { EntityGithubPullRequestsOverviewCard, } from '@roadiehq/backstage-plugin-github-pull-requests'; -import { EntityBitbucketPage } from '@roadiehq/backstage-plugin-bitbucket-pullrequest'; +import { EntityBitbucketPullRequestsContent } from '@roadiehq/backstage-plugin-bitbucket-pullrequest'; import { isAWSLambdaAvailable, @@ -294,7 +294,7 @@ const serviceEntityPage = ( - + diff --git a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/README.md b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/README.md index 4ba10f30a..3dc89fe82 100644 --- a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/README.md +++ b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/README.md @@ -22,7 +22,7 @@ yarn add @roadiehq/backstage-plugin-bitbucket-pullrequest ```ts // packages/app/src/components/catalog/EntityPage.tsx -import { EntityBitbucketPage } from '@roadiehq/backstage-plugin-bitbucket-pullrequest'; +import { EntityBitbucketPullRequestsContent } from '@roadiehq/backstage-plugin-bitbucket-pullrequest'; ... @@ -30,7 +30,7 @@ const serviceEntityPage = ( ... - + ... diff --git a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/PullRequestList.tsx b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/PullRequestList.tsx index d5f166837..64ee2612d 100644 --- a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/PullRequestList.tsx +++ b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/PullRequestList.tsx @@ -20,6 +20,7 @@ import { Table, ContentHeader, MarkdownContent, + Link, } from '@backstage/core-components'; import moment from 'moment'; import { useApi } from '@backstage/core-plugin-api'; @@ -78,9 +79,7 @@ const PullRequestList: React.FC = () => { width: '20%', render: (row: Partial) => ( - - #{row.id} - + #{row.id} ), }, diff --git a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/PullRequestsPage.tsx b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/PullRequestsPage.tsx deleted file mode 100644 index 4acdf5523..000000000 --- a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/PullRequestsPage.tsx +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2024 Larder Software Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import React from 'react'; -import { Grid } from '@material-ui/core'; -import { Content } from '@backstage/core-components'; - -import PullRequestList from '../components/PullRequestList'; - -const PullRequestsPage = () => { - return ( -
- - - - - - - -
- ); -}; - -export default PullRequestsPage; diff --git a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/Router.tsx b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/Router.tsx index 6cc2198ec..0c0d9e0bf 100644 --- a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/Router.tsx +++ b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/components/Router.tsx @@ -16,7 +16,7 @@ import React from 'react'; import { Entity } from '@backstage/catalog-model'; import { Route, Routes } from 'react-router'; -import PullRequestsPage from './PullRequestsPage'; +import PullRequestList from './PullRequestList'; import { BITBUCKET_PULL_REQUESTS_ANNOTATION } from '../utils/isBITBUCKETSlugSet'; import { MissingAnnotationEmptyState } from '@backstage/core-components'; import { useEntity } from '@backstage/plugin-catalog-react'; @@ -32,7 +32,7 @@ export const Router = () => { /> ) : ( - } /> + } /> ); }; diff --git a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/index.ts b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/index.ts index 15f36ae86..e8e080549 100644 --- a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/index.ts +++ b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/index.ts @@ -13,4 +13,4 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -export { bitbucketPlugin, EntityBitbucketPage } from './plugin'; +export { bitbucketPlugin, EntityBitbucketPullRequestsContent } from './plugin'; diff --git a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/plugin.ts b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/plugin.ts index 0ea430023..c2d551863 100644 --- a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/plugin.ts +++ b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/src/plugin.ts @@ -36,9 +36,9 @@ export const bitbucketPlugin = createPlugin({ }, }); -export const EntityBitbucketPage = bitbucketPlugin.provide( +export const EntityBitbucketPullRequestsContent = bitbucketPlugin.provide( createRoutableExtension({ - name: 'EntityBitbucketPage', + name: 'EntityBitbucketPullRequestsContent', component: () => import('./components/Router').then(m => m.Router), mountPoint: rootRouteRef, }), From 02d5be51b473b2f7b9a5d1f55d8e07853a63a450 Mon Sep 17 00:00:00 2001 From: Mymoon Beevi Saleem Date: Tue, 16 Jul 2024 10:55:14 +0530 Subject: [PATCH 3/5] resolve conflict --- packages/app/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/app/package.json b/packages/app/package.json index 5a3780aff..7b70fa56d 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -40,7 +40,7 @@ "@roadiehq/backstage-plugin-github-insights": "^2.3.29", "@roadiehq/backstage-plugin-github-pull-requests": "^2.5.26", "@roadiehq/backstage-plugin-bitbucket-pullrequest": "^1.0.0", - "@roadiehq/backstage-plugin-home-markdown": "^2.5.24", + "@roadiehq/backstage-plugin-home-markdown": "^2.5.26", "@roadiehq/backstage-plugin-home-rss": "^1.3.12", "@roadiehq/backstage-plugin-iframe": "^1.3.17", "@roadiehq/backstage-plugin-jira": "^2.5.8", From 99365c2b12eef43c93d8673eb03e60c48a82bc13 Mon Sep 17 00:00:00 2001 From: Mymoon Beevi Saleem Date: Tue, 16 Jul 2024 10:57:01 +0530 Subject: [PATCH 4/5] resolve conflict --- packages/app/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/app/package.json b/packages/app/package.json index 7b70fa56d..c6aba5f59 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -39,7 +39,6 @@ "@roadiehq/backstage-plugin-datadog": "^2.2.8", "@roadiehq/backstage-plugin-github-insights": "^2.3.29", "@roadiehq/backstage-plugin-github-pull-requests": "^2.5.26", - "@roadiehq/backstage-plugin-bitbucket-pullrequest": "^1.0.0", "@roadiehq/backstage-plugin-home-markdown": "^2.5.26", "@roadiehq/backstage-plugin-home-rss": "^1.3.12", "@roadiehq/backstage-plugin-iframe": "^1.3.17", @@ -58,7 +57,8 @@ "react-router-dom": "6.0.0-beta.0", "react-use": "^15.3.3", "@backstage-community/plugin-github-actions": "^0.6.16", - "@backstage-community/plugin-tech-radar": "^0.7.4" + "@backstage-community/plugin-tech-radar": "^0.7.4", + "@roadiehq/backstage-plugin-bitbucket-pullrequest": "^1.0.0" }, "devDependencies": { "@testing-library/jest-dom": "^6.0.0", From e2838db4fcf9c17d856a9c449ea80fb5b13e362e Mon Sep 17 00:00:00 2001 From: Mymoon Beevi Saleem Date: Wed, 7 Aug 2024 15:39:41 +0530 Subject: [PATCH 5/5] fix jenkins build failed --- .../backstage-plugin-bitbucket-pullrequest/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/package.json b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/package.json index a905fe244..592450137 100644 --- a/plugins/frontend/backstage-plugin-bitbucket-pullrequest/package.json +++ b/plugins/frontend/backstage-plugin-bitbucket-pullrequest/package.json @@ -36,8 +36,8 @@ "@material-ui/icons": "^4.9.1", "@material-ui/lab": "^4.0.0-alpha.60", "react-use": "^17.2.4", - "@backstage/plugin-catalog-react": "^1.10.0", - "@backstage/catalog-model": "^1.4.4", + "@backstage/plugin-catalog-react": "^1.11.3", + "@backstage/catalog-model": "^1.4.5", "moment": "^2.29.1", "msw": "^1.0.1", "cross-fetch": "4.0.0"