Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
81 commits
Select commit Hold shift + click to select a range
6972011
Added the commercial Dynatrace plugin and updated the 3scale plugin.
benwilcock Mar 10, 2025
8e273c5
commenting out the dynamicArtifact for now.
benwilcock Mar 10, 2025
e0b26ee
removed the common package - not required.
benwilcock Mar 10, 2025
488396d
added some boilerplate activation details for Dynatrace
benwilcock Mar 10, 2025
40fb1b9
removed the screenshot image from the description
benwilcock Mar 10, 2025
afb6d04
adding more instructions to the README file and removing Dynatrace in…
benwilcock Mar 10, 2025
282fb05
fixed some typos
benwilcock Mar 10, 2025
90aaacd
added rhdh-local instructions
benwilcock Mar 10, 2025
8725a0d
Moved extensions from community to red Hat
benwilcock Mar 10, 2025
5610499
adding verification badges
benwilcock Mar 11, 2025
fd1c785
added boilerplate plugin file with some default copy ideas and added …
benwilcock Mar 11, 2025
2875196
added some more text to the community dynatrace plugin
benwilcock Mar 11, 2025
6d4d1c6
added blank square as icon
benwilcock Mar 11, 2025
1d87eb0
tested the blank icon on the Bulk Import plugin
benwilcock Mar 11, 2025
12d0c41
update azure-cotnainer-regsitry plugin
kadel Mar 11, 2025
9865dd7
update azure-container-registry
kadel Mar 11, 2025
15d47da
update argocd-scaffolder-actions
kadel Mar 11, 2025
b675160
update redhat-argocd
kadel Mar 11, 2025
9c0f71e
Multiple upates to add missing fields
benwilcock Mar 11, 2025
ad8137a
removed what I think is an unused file
benwilcock Mar 11, 2025
c520e41
added regex plus an icon for quay
benwilcock Mar 11, 2025
dfdfec3
update azure-scaffolder-actions
kadel Mar 11, 2025
c99ff9e
update azure-devops
kadel Mar 11, 2025
908998a
update azure-repositories
kadel Mar 11, 2025
daff50c
update bitbucket-cloud-catalog-integration
kadel Mar 11, 2025
418ec91
update bitbucket-cloud-catalog-integration title and description for …
kadel Mar 11, 2025
26c9612
update bitbucket-server-catalog-integration
kadel Mar 11, 2025
038ba90
add Bitbucket Cloud and Server scaffolder actions plugins
kadel Mar 11, 2025
b7718f8
update datadog
kadel Mar 11, 2025
280e6b3
update gerrit-scaffolder-actions
kadel Mar 11, 2025
3c6dac6
update github-scafolder-actions
kadel Mar 11, 2025
110e1b8
Added a bit more content to Keycloak
benwilcock Mar 11, 2025
c6456ce
update github-actions
kadel Mar 12, 2025
7811b07
added some more missing plugin data for topology etc. and added more …
benwilcock Mar 12, 2025
bdacad2
Updated 3scale
benwilcock Mar 12, 2025
9b9e2f7
update github-insights
kadel Mar 12, 2025
8d8b33c
Split K8s into frontend and backend because of different support stat…
benwilcock Mar 12, 2025
17c7342
added pagerduty missing data
benwilcock Mar 12, 2025
30470c4
added Nexus Repo Manager for Balaji
benwilcock Mar 12, 2025
2a13727
filled in the data for SonarQube
benwilcock Mar 12, 2025
bf3b866
missing data for sonarqube template actions
benwilcock Mar 12, 2025
b1cdddd
added missing data for TechDocs
benwilcock Mar 12, 2025
6e6d11d
updating tech radar with missing data
benwilcock Mar 12, 2025
a0d005f
added extra data for scaffolder utils
benwilcock Mar 12, 2025
44de592
added missing data for lighthouse
benwilcock Mar 12, 2025
0e2cbb3
added missing info for MSGraph Catalog module
benwilcock Mar 12, 2025
d2819b9
added some missing infor for Bulk Import
benwilcock Mar 12, 2025
144cabe
added missing data for HTTP Request Action
benwilcock Mar 12, 2025
84c5da9
added missing data for ServiceNow
benwilcock Mar 12, 2025
f81724d
added missing description for Azure Devops
benwilcock Mar 12, 2025
f0351de
added missing data for LDAP Catalog Integration
benwilcock Mar 12, 2025
f94038c
added missing security insigts plugin data
benwilcock Mar 12, 2025
43b5aa2
split signams into verified and non-verified and updated the common i…
benwilcock Mar 12, 2025
00e266c
modified the GitHub org integration
benwilcock Mar 12, 2025
3d14d31
added missing data for GilLab Org
benwilcock Mar 13, 2025
8bc12b1
removed mention of a screenshot from the commercial dynatrace copy
benwilcock Mar 13, 2025
7d87b67
add missing metadata for Jfrog artifactory
karthikjeeyar Mar 13, 2025
80fb911
add missing metadata for Jira
karthikjeeyar Mar 13, 2025
9c72322
Added the ansible plugins.
benwilcock Mar 13, 2025
e6d258b
add missing metadata for Ping identity
karthikjeeyar Mar 13, 2025
cf0a455
adding orchestrator
benwilcock Mar 13, 2025
58dbe4c
added missing info for extensions
benwilcock Mar 13, 2025
9ccd676
add missing metadata for Ping identity
karthikjeeyar Mar 13, 2025
f1b0fe5
update quay actions icon
karthikjeeyar Mar 13, 2025
6314abb
update github-issues
kadel Mar 13, 2025
4c6d36b
update github-pull-requests
kadel Mar 13, 2025
7055eaa
add highlights to quay and jfrog plugins
karthikjeeyar Mar 13, 2025
7d24ef9
fix author
kadel Mar 13, 2025
4005d92
update gitlab-catalog-cards
kadel Mar 13, 2025
8a22fa3
update notifications
kadel Mar 13, 2025
ec0b9d9
update notifications: create a separate plugin for email notification…
kadel Mar 13, 2025
0adcd67
ansible links
benwilcock Mar 13, 2025
7d10d31
add missing metadata for global floating action button
karthikjeeyar Mar 13, 2025
de3bac2
add missing metadata for global header
karthikjeeyar Mar 13, 2025
d9d4643
fixed author info for dynatrace plugins
benwilcock Mar 13, 2025
c2aa137
update jenkins
kadel Mar 13, 2025
65a583d
update gitlab-scaffolder-actions
kadel Mar 13, 2025
ffb7a0f
update openshift-cluster-manager
kadel Mar 13, 2025
d8aae96
make fab and global header plugins as verified plugins
karthikjeeyar Mar 13, 2025
097f851
Update description for fab and global header
karthikjeeyar Mar 13, 2025
7e0d260
Merge branch 'main' into cherry-pick-2569-to-main
kadel Mar 13, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
227 changes: 225 additions & 2 deletions catalog-entities/marketplace/README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,231 @@
# Plugins are manually created
# Creating & Editing Extension Catalog Plugins

# Packages are generated with
Spreadsheet for tracking the work is here: https://docs.google.com/spreadsheets/d/1K_LqKYma9nRM5teKD-uCnbB3qKC8Hk2E5jvcpMSfjTs/edit?gid=771893283#gid=771893283

## Working with Plugin Folders & Files

Below are some practical instructions that might help you in the process of creating and updating plugins and packages for use in the RHDH Extensions catalog plugin.

## `packages/`

Packages describe the frontend and backend packages that form part of a plugin. The packages folder contains the individual `package.yaml` files where you can set various details about your plugin packages. For an example, see the 3scale package details in `packages/backstage-community-plugin-3scale-backend.yaml`

```yaml
apiVersion: extensions.backstage.io/v1alpha1
kind: Package # Important to set the kind
metadata:
name: backstage-community-plugin-3scale-backend # This name is important - it provides a linkage from the plugin record
namespace: rhdh # This plugin package is built by us and provided in RHDH
title: "@backstage-community/plugin-3scale-backend"
links: # Links to useful sources etc.
- url: https://red.ht/rhdh
title: Homepage
- url: https://issues.redhat.com/browse/RHIDP
title: Bugs
- title: Source Code
url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/backstage-community-plugin-3scale-backend-dynamic
annotations: # Activates backstage features
backstage.io/source-location: url
https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/backstage-community-plugin-3scale-backend-dynamic
tags: []
spec: # Custom information processed by the Extensions plugin
packageName: "@backstage-community/plugin-3scale-backend"
dynamicArtifact: ./dynamic-plugins/dist/backstage-community-plugin-3scale-backend-dynamic
version: 3.2.0 # The plugin version
backstage:
role: backend-plugin
supportedVersions: 1.35.1 # The supported version of Backstage
author: Red Hat # The Author of the package
support: tech-preview # The release status of the package
lifecycle: active # The backstage lifecycle stage
partOf:
- backstage-community-plugin-3scale-backend # Links this package to others in the same group
appConfigExamples: # Information on how to configure the plugin (not used yet)
- title: Default configuration
content:
catalog:
providers:
threeScaleApiEntity:
default:
baseUrl: ${THREESCALE_BASE_URL}
accessToken: ${THREESCALE_ACCESS_TOKEN}
```


## `packages/all.yaml`

You **must** add your package yaml file to the list in the `packages/all.yaml` file to get it picked up by RHDH and loaded into the catalog. To check if it's loading, check the catalog.

## `plugins/`

The files in the `plugins` folder describe the plugins themselves. The plugins folder contains the individual `plugin.yaml` files where you can set various details about your plugin - many of which appear on screen in RHDH in the "Extensions" catalog tab. For an example, see the 3scale package details in `plugins/3scale.yaml`.

```yaml
# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json
apiVersion: extensions.backstage.io/v1alpha1
kind: Plugin # Important to set the kind
metadata:
name: 3scale # The catalog entity name
namespace: rhdh # This plugin is built by us and provided in RHDH
title: 3scale
annotations:
extensions.backstage.io/pre-installed: 'true' # Not used, but would tell us if the plugin were pre-instralled
extensions.backstage.io/verified-by: Red Hat # Set the verified status
# extensions.backstage.io/certified-by: Red Hat # Set the certified status
links: # Useful links for the plugin card when expanded
- url: https://red.ht/rhdh
title: Homepage
- url: https://issues.redhat.com/browse/RHIDP
title: Bugs
- title: Source Code
url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/backstage-community-plugin-3scale-backend-dynamic
tags:
- apis
# The description below is used in the Extension plugin's "Tile" view as the plugin description. Keep it to a few lines (short description)
description: |
3scale provides a comprehensive API management solution, enabling organizations to secure, manage, and monetize APIs.
Key features include access control, usage analytics, and policy enforcement.
The 3scale plugin synchronizes your 3scale content into the software catalog.
spec: # Custom information processed by the Extensions plugin
author: Red Hat # The Author of the plugin
support: tech-preview # The Red Hat release status of the plugin
lifecycle: active # The backstage lifecycle stage of the plugin
publisher: Red Hat # Used to collect together plugins by the same author and display an extra line on the tile e/g/ "By Red Hat"

# The long description below is used in the Extension plugin's "Expanded Info" view as the plugin's long description. You should include information here about the the purpose of the plugin and how it integrates with RHDH. The description here uses Markdown fomat, but DON'T include images - they won't load if you do.
description: |
The 3scale Backstage plugin...
(add further text here to really describe to the user what your plugin is for and how it integrates with RHDH's frontend/backend).

* Use bullets if you need to

## Adding The Plugin To Red Hat Developer Hub

See the Red Hat Developer Hub documentation in the links below for details of how to install, activate, and configure plugins.

categories: # Categories show up in the tile view (limited to one)
- API Management
highlights: # Highlights show up on the extended information page
- OpenShift support
- Access Control & Security (Managed within 3scale)
- Rate Limiting & Quotas (Managed within 3scale)
- API Monetization Tools (Managed within 3scale)
- Policy Enforcement (Managed within 3scale)

# Icons need to be base64 encoded SVG files, and can be inserted here (most are done already).
icon: data:image/svg+xml;base64,
PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9u
etc...

# By linking to packages you enable the "Versions" section in the expanded information view
packages: # Links to the pacjage name you set in the packages for this plugin
- backstage-community-plugin-3scale-backend

# unused at the moment, but could allow for an image carousel later
assets:
- type: icon
filename: img/3scale.svg
originUri: https://github.com/backstage/backstage/blob/master/microsite/static/img/3scale.svg
- type: image
filename: img/backstage_dynatrace_plugin.png
originUri: https://github.com/Dynatrace/backstage-plugin/blob/a307710edfb23a196c30790b9afceb9fb9af27df/docs/images/backstage_dynatrace_plugin.png

# Unused at the moment
history:
added: '2023-05-15'
```

## `plugins/all.yaml`

You **must** add your plugin yaml file to the list in the `plugins/all.yaml` file to get it picked up by RHDH and loaded into the catalog. To check if it's loading, check the catalog.


# Using RHDH-local

You need to reconfigure a few bits for the rhdh-1.5 image build, but when you do your local edits will show up within 15 secs...

In `app-config.yaml` do this:

```yaml:app-config.yaml

catalog:
# Speed up the metadata refresh interval (when testing)
processingInterval: { seconds: 15 }

locations:
# Extensions Plugin needs this target to pull in the information about Plugins
- type: file
target: /marketplace/catalog-entities/plugins/all.yaml
rules:
- allow: [Location, Plugin]
- type: file
target: /marketplace/catalog-entities/packages/all.yaml
rules:
- allow: [Location, Package]

```

In `docker-compose.yaml` do this:

```yaml:docker-compose.yaml
services:
rhdh:
volumes:
# Add an Extensions overwrite
- type: bind
source: <your rhdh cloned repo>/catalog-entities/marketplace/plugins/
target: /marketplace/catalog-entities/plugins
- type: bind
source: <your rhdh cloned repo>/catalog-entities/marketplace/packages/
target: /marketplace/catalog-entities/packages
```

## Troubleshooting

Some issues you may encounter and how to get around them.

### Duplicate Entries

Because Backstage doesn't remove catalog entries when the source changes, sometimes you will end up with duplicates. For example
if you rename a plugin file, you may end up with the old catalog entry sticking around. To fix this you need to purge the
backstage database. If running the in-memory database, this is easily acheived by restarting the container:

```bash
docker compose restart rhdh # or podman-compose restart rhdh
```

### Catalog stops loading or refreshing

Sometimes you might make a mistake with a plugin yaml file. If that happens you can use commenting of lines in the `plugins/all.yaml`
to stop certain plugins from being loaded into the catalog. You can allso search for `all.yaml` in the RHDH logs to see if you can
find a clue as to what caused the catalog entries to stop loading. For example:

```bash
rhdh | {"entity":"location:rhdh/plugins","level":"\u001b[33mwarn\u001b[39m","location":"file:/marketplace/catalog-entities/plugins/all.yaml","message":"YAML error at file:/marketplace/catalog-entities/plugins/keycloak-catalog-integration.yaml, YAMLParseError: Map keys must be unique at line 99, column 3:\n\n # level: tech-preview\n lifecycle: production\n ^\n","plugin":"catalog","service":"backstage","timestamp":"2025-03-11 15:56:57"}
```

### Is my plugin here or missing?

You can trace packages back to plugin entries using the VS Code "Find In Folder..." feature. For example:

1. Given the plugin ID `@backstage-community/plugin-quay` (replace with the plugin ID you need)
1. Do a "Find in Folder..." search for the `package/` file that contains this entry.
1. The `/packages/backstage-community-plugin-quay.yaml` contains this entry.
1. Open this file and look for the `metadata.name` (`backstage-community-plugin-quay`).
1. Now do a search in the plugins folder for the text `backstage-community-plugin-quay`.
1. The `plugins/backstage-community-plugin-quay.yaml` contains this text.
1. You can open the file and edit the text.

If you do not find a plugin.yaml associated with this plugin ID then it is probably missing and you need to create one. The
file `1boilerplate.yaml` has a good starting point for creating these files.


## Important Notes:

* Plugins are manually created
* Packages are generated with the command below

```bash
# in rhdh root
npx --yes @red-hat-developer-hub/marketplace-cli generate --namespace rhdh -p dynamic-plugins.default.yaml -o catalog-entities/marketplace/packages
```
1 change: 1 addition & 0 deletions catalog-entities/marketplace/collections/all.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@ spec:
#- ./openshift.yaml
#- ./recommended.yaml
#- ./redhat.yaml
#- ./dynatrace.yaml
14 changes: 14 additions & 0 deletions catalog-entities/marketplace/collections/dynatrace.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/collections.json
apiVersion: extensions.backstage.io/v1alpha1
kind: PluginCollection
metadata:
name: dynatrace
namespace: dynatrace
title: Plugins for Dynatrace
description: ''
tags: []
spec:
# filter based collections are not implemented yet!!!
type: filter-based
filter:
metadata.authors.name: Dynatrace
2 changes: 2 additions & 0 deletions catalog-entities/marketplace/packages/all.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -84,3 +84,5 @@ spec:
- ./red-hat-developer-hub-backstage-plugin-catalog-backend-module-m.yaml
- ./red-hat-developer-hub-backstage-plugin-marketplace-backend.yaml
- ./red-hat-developer-hub-backstage-plugin-marketplace.yaml
- ./dynatrace-backstage-plugin-dql.yaml
- ./dynatrace-backstage-plugin-dql-backend.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ metadata:
annotations:
backstage.io/source-location: url
https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/backstage-community-plugin-catalog-backend-module-pingidentity-dynamic
tags: []
tags:
- identity-management
spec:
packageName: "@backstage-community/plugin-catalog-backend-module-pingidentity"
dynamicArtifact: ./dynamic-plugins/dist/backstage-community-plugin-catalog-backend-module-pingidentity-dynamic
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ spec:
support: tech-preview
lifecycle: active
partOf:
- dynatrace
- dynatrace-community
appConfigExamples:
- title: Default configuration
content:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
apiVersion: extensions.backstage.io/v1alpha1
kind: Package
metadata:
name: dynatrace-backstage-plugin-dql-backend
namespace: dynatrace
title: "@dynatrace/backstage-plugin-dql-backend"
links:
- url: https://www.dynatrace.com/
title: Homepage
- url: https://github.com/Dynatrace/backstage-plugin/issues
title: Issues
- title: Source Code
url: https://github.com/Dynatrace/backstage-plugin
annotations:
backstage.io/source-location: url
https://github.com/Dynatrace/backstage-plugin
tags: []
spec:
packageName: "@dynatrace/backstage-plugin-dql-backend"
#dynamicArtifact: ./dynamic-plugins/dist/dynatrace-backstage-plugin-dql-backend
version: 2.1.5
backstage:
role: backend-plugin
supportedVersions: 1.35.1
author: Dynatrace
support: production
lifecycle: active
partOf:
- dynatrace-commercial
appConfigExamples:
- title: Default configuration
content:
dynamicPlugins:
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/packages.json
apiVersion: extensions.backstage.io/v1alpha1
kind: Package
metadata:
name: dynatrace-backstage-plugin-dql
namespace: dynatrace
title: "@dynatrace/backstage-plugin-dql"
links:
- url: https://www.dynatrace.com/
title: Homepage
- url: https://github.com/Dynatrace/backstage-plugin/issues
title: Issues
- title: Source Code
url: https://github.com/Dynatrace/backstage-plugin
annotations:
backstage.io/source-location: url
https://github.com/Dynatrace/backstage-plugin
tags: []
spec:
packageName: "@dynatrace/backstage-plugin-dql"
#dynamicArtifact: ./dynamic-plugins/dist/dynatrace-backstage-plugin-dql
version: 2.1.5
backstage:
role: frontend-plugin
supportedVersions: 1.35.1
author: Dynatrace
support: production
lifecycle: active
partOf:
- dynatrace-commercial
appConfigExamples:
- title: Default configuration
content:
dynamicPlugins:
frontend:
dynatrace.backstage-plugin-dql:
mountPoints:
- mountPoint: entity.page.monitoring/cards
importName: DynatraceTab
config:
layout:
gridColumn: 1 / -1
if:
allOf:
- isDynatraceAvailable
Loading
Loading