diff --git a/.changeset/hot-ants-scream.md b/.changeset/hot-ants-scream.md new file mode 100644 index 000000000..de8080d65 --- /dev/null +++ b/.changeset/hot-ants-scream.md @@ -0,0 +1,22 @@ +--- +'app': minor +--- + +The [Nexus Repository Manager](https://github.com/janus-idp/backstage-plugins/tree/main/plugins/nexus-repository-manager) plugin has been added with the in the Entity Page Image Registry tab. + +Since the Nexus Repository Manager plugin requires a proxy endpoint, these changes are required to `app-config.yaml` if you want to add the Nexus Repository Manager plugin. Please read the [README](https://github.com/janus-idp/backstage-showcase/blob/main/README.md) and [Getting Started](https://github.com/janus-idp/backstage-showcase/blob/main/showcase-docs/getting-started.md) for more details. + +```diff +proxy: + # Other proxy configurations... + ++ '/nexus-repository-manager': ++ target: ${NEXUS_REPOSITORY_MANAGER_URL} ++ headers: ++ X-Requested-With: 'XMLHttpRequest' ++ # Uncomment the following line to access a private Nexus Repository Manager using a token ++ # Authorization: 'Bearer ' ++ changeOrigin: true ++ # Change to "false" in case of using self hosted Nexus Repository Manager instance with a self-signed certificate ++ secure: ${NEXUS_REPOSITORY_MANAGER_SECURE} +``` diff --git a/README.md b/README.md index 224e7cd8e..4a6fbdba9 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,7 @@ Our current list of plugins within the showcase app include: - [Dynatrace plugin](https://github.com/backstage/backstage/tree/master/plugins/dynatrace) - [Gitlab Scaffolder actions](https://github.com/backstage/backstage/tree/master/plugins/scaffolder-backend-module-gitlab) - [Utils Scaffolder actions](https://github.com/RoadieHQ/roadie-backstage-plugins/tree/main/plugins/scaffolder-actions/scaffolder-backend-module-utils) +- [Nexus Repository Manager plugin](https://github.com/janus-idp/backstage-plugins/tree/main/plugins/nexus-repository-manager) ## Getting Started diff --git a/app-config.yaml b/app-config.yaml index 5c6a9ca56..0e19656ad 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -147,6 +147,17 @@ proxy: # For more info on how to generate this token: https://www.dynatrace.com/support/help/dynatrace-api/basics/dynatrace-api-authentication Authorization: 'Api-Token ${DYNATRACE_ACCESS_TOKEN}' + # Plugin: Nexus Repository Manager + '/nexus-repository-manager': + target: ${NEXUS_REPOSITORY_MANAGER_URL} + headers: + X-Requested-With: 'XMLHttpRequest' + # Uncomment the following line to access a private Nexus Repository Manager using a token + # Authorization: 'Bearer ' + changeOrigin: true + # Change to "false" in case of using self hosted Nexus Repository Manager instance with a self-signed certificate + secure: ${NEXUS_REPOSITORY_MANAGER_SECURE} + # Reference documentation http://backstage.io/docs/features/techdocs/configuration # Note: After experimenting with basic setup, use CI/CD to generate docs # and an external cloud storage when deploying TechDocs for production use-case. diff --git a/packages/app/package.json b/packages/app/package.json index 9ed577994..883c910a4 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -14,7 +14,6 @@ "lint": "backstage-cli package lint" }, "dependencies": { - "@backstage/plugin-dynatrace": "7.0.3", "@backstage/app-defaults": "1.4.2", "@backstage/catalog-model": "1.4.1", "@backstage/cli": "0.22.12", @@ -29,6 +28,7 @@ "@backstage/plugin-catalog-graph": "0.2.35", "@backstage/plugin-catalog-import": "0.9.13", "@backstage/plugin-catalog-react": "1.8.3", + "@backstage/plugin-dynatrace": "7.0.3", "@backstage/plugin-github-actions": "0.6.4", "@backstage/plugin-github-issues": "0.2.12", "@backstage/plugin-home": "0.5.7", @@ -54,6 +54,7 @@ "@immobiliarelabs/backstage-plugin-gitlab": "6.2.0", "@janus-idp/backstage-plugin-analytics-provider-segment": "1.1.1", "@janus-idp/backstage-plugin-jfrog-artifactory": "1.1.2", + "@janus-idp/backstage-plugin-nexus-repository-manager": "1.1.0", "@janus-idp/backstage-plugin-ocm": "3.2.0", "@janus-idp/backstage-plugin-quay": "1.3.0", "@janus-idp/backstage-plugin-tekton": "1.9.4", diff --git a/packages/app/src/components/catalog/EntityPage/Content/ImageRegistry.tsx b/packages/app/src/components/catalog/EntityPage/Content/ImageRegistry.tsx index 5e94d44db..e136c9e57 100644 --- a/packages/app/src/components/catalog/EntityPage/Content/ImageRegistry.tsx +++ b/packages/app/src/components/catalog/EntityPage/Content/ImageRegistry.tsx @@ -5,6 +5,10 @@ import { isJfrogArtifactoryAvailable, } from '@janus-idp/backstage-plugin-jfrog-artifactory'; import { QuayPage, isQuayAvailable } from '@janus-idp/backstage-plugin-quay'; +import { + isNexusRepositoryManagerAvailable, + NexusRepositoryManagerPage, +} from '@janus-idp/backstage-plugin-nexus-repository-manager'; import Grid from '@mui/material/Grid'; import React from 'react'; @@ -24,12 +28,20 @@ export const imageRegistry = ( - + + + + + + + + + ); diff --git a/showcase-docs/getting-started.md b/showcase-docs/getting-started.md index 00a28847f..610f0e8dc 100644 --- a/showcase-docs/getting-started.md +++ b/showcase-docs/getting-started.md @@ -255,6 +255,23 @@ The easiest and fastest method for getting started: Backstage Showcase app, runn oauth2Proxy: {} ``` + - Setup the Nexus Repository Manager plugin + + - `${NEXUS_REPOSITORY_MANAGER_URL}`: The URL to the Nexus Repository Manager instance. + - `${NEXUS_REPOSITORY_MANAGER_SECURE}`: Change to `false` in case of using self hosted artifactory instance with a self-signed certificate + - If using a private Nexus Repository Manager instance, you will need to add an Authorization header for the nexus proxy in your `app-config.yaml` or `app-config.local.yaml`: + + ```yaml + '/nexus-repository-manager': + target: ${NEXUS_REPOSITORY_MANAGER_URL} + headers: + X-Requested-With: 'XMLHttpRequest' + # Uncomment the following line to access a private Nexus Repository Manager using a token + Authorization: 'Bearer ${NEXUS_REPOSITORY_MANAGER_TOKEN}' + ``` + + - `${NEXUS_REPOSITORY_MANAGER_TOKEN}` (Only for private Nexus Repository Manager instances): Nexus instance API token (see [documentation](https://help.sonatype.com/repomanager3/nexus-repository-administration/user-authentication/user-tokens)) with `nx-repository-view-*-*-read` [permissions](https://help.sonatype.com/repomanager3/nexus-repository-administration/access-control/privileges), or read permissions to view all the repositories you want to display in the plugin. + 4. Run `yarn install` to install the dependencies 5. Start the application using `yarn start` diff --git a/yarn.lock b/yarn.lock index 007bee293..bcff66f58 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4958,6 +4958,22 @@ uuid "^9.0.0" winston "^3.2.1" +"@janus-idp/backstage-plugin-nexus-repository-manager@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@janus-idp/backstage-plugin-nexus-repository-manager/-/backstage-plugin-nexus-repository-manager-1.1.0.tgz#d25075288bdbd83253b564ea7c142bae9acb20e1" + integrity sha512-C20H52Zm3s4YnebCh1IBiVQYb4WjK6KCFr9Gfn8nrmZAjMP2BGDDar1bvq+L0tfe0TmmpJ4CNmEPCPXjFQhelA== + dependencies: + "@backstage/catalog-model" "^1.4.1" + "@backstage/core-components" "^0.13.3" + "@backstage/core-plugin-api" "^1.5.3" + "@backstage/plugin-catalog-react" "^1.8.0" + "@backstage/theme" "^0.4.1" + "@janus-idp/shared-react" "1.3.0" + "@material-ui/core" "^4.9.13" + "@material-ui/icons" "^4.9.1" + "@material-ui/lab" "^4.0.0-alpha.45" + react-use "^17.2.4" + "@janus-idp/backstage-plugin-ocm-backend@3.2.1": version "3.2.1" resolved "https://registry.yarnpkg.com/@janus-idp/backstage-plugin-ocm-backend/-/backstage-plugin-ocm-backend-3.2.1.tgz#33c25d2f7d88e855fa4ed8448007dabc3ca3dff9"