plugins: # Group: Github - package: ./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-github-dynamic # TODO RHIDP-3187 - graduate this plugin to GA so it can be enabled by default disabled: true - package: ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-dynamic disabled: true pluginConfig: catalog: providers: github: providerId: organization: "${GITHUB_ORG}" - package: ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-org-dynamic disabled: true pluginConfig: catalog: providers: githubOrg: id: production githubUrl: "${GITHUB_URL}" orgs: [ "${GITHUB_ORG}" ] schedule: frequency: minutes: 60 initialDelay: seconds: 15 timeout: minutes: 15 - package: ./dynamic-plugins/dist/backstage-community-plugin-github-actions disabled: true pluginConfig: dynamicPlugins: frontend: backstage-community.plugin-github-actions: mountPoints: - mountPoint: entity.page.ci/cards importName: EntityGithubActionsContent config: layout: gridColumn: "1 / -1" if: allOf: - isGithubActionsAvailable - package: ./dynamic-plugins/dist/backstage-community-plugin-github-issues disabled: true pluginConfig: dynamicPlugins: frontend: backstage-community.plugin-github-issues: mountPoints: - mountPoint: entity.page.issues/cards importName: GithubIssuesCard config: layout: gridColumn: "1 / -1" if: allOf: - hasAnnotation: github.com/project-slug - package: ./dynamic-plugins/dist/roadiehq-backstage-plugin-github-insights disabled: true pluginConfig: dynamicPlugins: frontend: roadiehq.backstage-plugin-github-insights: mountPoints: - mountPoint: entity.page.overview/cards importName: EntityGithubInsightsComplianceCard config: layout: gridColumnEnd: lg: "span 4" md: "span 6" xs: "span 12" if: allOf: - isGithubInsightsAvailable - package: ./dynamic-plugins/dist/roadiehq-backstage-plugin-github-pull-requests disabled: true pluginConfig: dynamicPlugins: frontend: roadiehq.backstage-plugin-github-pull-requests: mountPoints: - mountPoint: entity.page.overview/cards importName: EntityGithubPullRequestsOverviewCard config: layout: gridColumnEnd: lg: "span 4" md: "span 6" xs: "span 12" if: allOf: - isGithubPullRequestsAvailable - mountPoint: entity.page.pull-requests/cards importName: EntityGithubPullRequestsContent config: layout: gridColumn: "1 / -1" if: allOf: - isGithubPullRequestsAvailable - mountPoint: home.page/cards importName: HomePageYourOpenPullRequestsCard config: id: github-assigned-issues title: "GitHub: Assigned Issues" description: Issues assigned to the logged in user cardLayout: width: minColumns: 4 maxColumns: 12 defaultColumns: 12 height: minRows: 2 maxRows: 12 defaultRows: 4 props: title: "GitHub: Assigned Issues" query: is:issue state:open archived:false assignee:@me - mountPoint: home.page/cards importName: HomePageYourOpenPullRequestsCard config: id: github-assigned-pull-requests title: "GitHub: Assigned Pull Requests" description: Pull Requests assigned to the logged in user cardLayout: width: minColumns: 4 maxColumns: 12 defaultColumns: 12 height: minRows: 2 maxRows: 12 defaultRows: 4 props: title: "GitHub: Assigned Pull Requests" query: is:pr state:open archived:false assignee:@me - mountPoint: home.page/cards importName: HomePageYourOpenPullRequestsCard config: id: github-open-issues title: "GitHub: Open Issues" description: Issues opened by the logged in user cardLayout: width: minColumns: 4 maxColumns: 12 defaultColumns: 12 height: minRows: 2 maxRows: 12 defaultRows: 4 props: title: "GitHub: Open Issues" query: is:issue state:open archived:false author:@me - mountPoint: home.page/cards importName: HomePageYourOpenPullRequestsCard config: id: github-open-pull-requests title: "GitHub: Open Pull Requests" description: Pull Requests opened by the logged in user cardLayout: width: minColumns: 4 maxColumns: 12 defaultColumns: 12 height: minRows: 2 maxRows: 12 defaultRows: 4 props: title: "GitHub: Open Pull Requests" - mountPoint: home.page/cards importName: HomePageRequestedReviewsCard config: id: github-requested-reviews title: "GitHub: Requested Reviews" description: Pull Requests that waiting for a code review of the logged in user cardLayout: width: minColumns: 4 maxColumns: 12 defaultColumns: 12 height: minRows: 2 maxRows: 12 defaultRows: 4 props: title: "GitHub: Requested Reviews" - package: ./dynamic-plugins/dist/roadiehq-backstage-plugin-security-insights disabled: true pluginConfig: dynamicPlugins: frontend: roadiehq.backstage-plugin-security-insights: mountPoints: - mountPoint: entity.page.overview/cards importName: EntityDependabotAlertsCard config: layout: gridColumnEnd: lg: "span 4" md: "span 6" xs: "span 12" if: allOf: - isSecurityInsightsAvailable # Group: Gitlab - package: ./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-gitlab-dynamic # TODO RHIDP-3187 - graduate this plugin to GA so it can be enabled by default disabled: true - package: ./dynamic-plugins/dist/immobiliarelabs-backstage-plugin-gitlab-backend-dynamic disabled: true pluginConfig: gitlab: host: ${GITLAB_HOST} token: ${GITLAB_TOKEN} - package: ./dynamic-plugins/dist/immobiliarelabs-backstage-plugin-gitlab disabled: true pluginConfig: dynamicPlugins: frontend: immobiliarelabs.backstage-plugin-gitlab: mountPoints: - mountPoint: entity.page.overview/cards importName: EntityGitlabMergeRequestStatsCard config: layout: gridColumnEnd: lg: "span 4" md: "span 6" xs: "span 12" if: allOf: - isGitlabAvailable - mountPoint: entity.page.ci/cards importName: EntityGitlabPipelinesTable config: layout: gridColumn: "1 / -1" if: allOf: - isGitlabAvailable - mountPoint: entity.page.issues/cards importName: EntityGitlabIssuesTable config: layout: gridColumn: "1 / -1" if: allOf: - isGitlabAvailable - mountPoint: entity.page.pull-requests/cards importName: EntityGitlabMergeRequestsTable config: layout: gridColumn: "1 / -1" if: allOf: - isGitlabAvailable - package: ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-gitlab-dynamic disabled: true pluginConfig: catalog: providers: gitlab: {} - package: ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-gitlab-org-dynamic disabled: true pluginConfig: catalog: providers: gitlab: {} # Group: Kubernetes - package: ./dynamic-plugins/dist/backstage-plugin-kubernetes-backend-dynamic disabled: true pluginConfig: kubernetes: serviceLocatorMethod: type: 'multiTenant' clusterLocatorMethods: - type: 'config' clusters: - name: ${K8S_CLUSTER_NAME} url: ${K8S_CLUSTER_URL} authProvider: 'serviceAccount' skipTLSVerify: true serviceAccountToken: ${K8S_CLUSTER_TOKEN} - package: ./dynamic-plugins/dist/backstage-plugin-kubernetes disabled: true pluginConfig: dynamicPlugins: frontend: backstage.plugin-kubernetes: mountPoints: - mountPoint: entity.page.kubernetes/cards importName: EntityKubernetesContent config: layout: gridColumn: "1 / -1" if: anyOf: - hasAnnotation: backstage.io/kubernetes-id - hasAnnotation: backstage.io/kubernetes-namespace - package: ./dynamic-plugins/dist/backstage-community-plugin-topology disabled: true pluginConfig: dynamicPlugins: frontend: backstage-community.plugin-topology: translationResources: - importName: topologyTranslations ref: topologyTranslationRef module: Alpha mountPoints: - mountPoint: entity.page.topology/cards importName: TopologyPage config: layout: gridColumn: "1 / -1" height: 75vh if: anyOf: - hasAnnotation: backstage.io/kubernetes-id - hasAnnotation: backstage.io/kubernetes-namespace # Group: ArgoCD - package: ./dynamic-plugins/dist/roadiehq-backstage-plugin-argo-cd-backend-dynamic disabled: true pluginConfig: argocd: username: "${ARGOCD_USERNAME}" password: "${ARGOCD_PASSWORD}" appLocatorMethods: - type: 'config' instances: - name: argoInstance1 url: "${ARGOCD_INSTANCE1_URL}" token: "${ARGOCD_AUTH_TOKEN}" - name: argoInstance2 url: "${ARGOCD_INSTANCE2_URL}" token: "${ARGOCD_AUTH_TOKEN2}" - package: ./dynamic-plugins/dist/roadiehq-scaffolder-backend-argocd-dynamic disabled: true pluginConfig: argocd: username: "${ARGOCD_USERNAME}" password: "${ARGOCD_PASSWORD}" appLocatorMethods: - type: 'config' instances: - name: argoInstance1 url: "${ARGOCD_INSTANCE1_URL}" token: "${ARGOCD_AUTH_TOKEN}" - name: argoInstance2 url: "${ARGOCD_INSTANCE2_URL}" token: "${ARGOCD_AUTH_TOKEN2}" - package: ./dynamic-plugins/dist/backstage-community-plugin-redhat-argocd disabled: true pluginConfig: dynamicPlugins: frontend: backstage-community.plugin-redhat-argocd: translationResources: - importName: argocdTranslations module: Alpha ref: argocdTranslationRef mountPoints: - mountPoint: entity.page.overview/cards importName: ArgocdDeploymentSummary config: layout: gridColumnEnd: lg: "span 8" xs: "span 12" if: allOf: - isArgocdConfigured - mountPoint: entity.page.cd/cards importName: ArgocdDeploymentLifecycle config: layout: gridColumn: '1 / -1' if: allOf: - isArgocdConfigured # Group: Azure Devops - package: ./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-azure-dynamic # TODO RHIDP-3187 - graduate this plugin to GA so it can be enabled by default disabled: true - package: ./dynamic-plugins/dist/backstage-community-plugin-azure-devops-backend-dynamic disabled: true pluginConfig: azureDevOps: host: dev.azure.com token: ${AZURE_TOKEN} organization: ${AZURE_ORG} - package: ./dynamic-plugins/dist/backstage-community-plugin-azure-devops disabled: true pluginConfig: dynamicPlugins: frontend: backstage-community.plugin-azure-devops: mountPoints: - mountPoint: entity.page.ci/cards importName: EntityAzurePipelinesContent config: layout: gridColumn: "1 / -1" if: allOf: - isAzureDevOpsAvailable - mountPoint: entity.page.pull-requests/cards importName: EntityAzurePullRequestsContent config: layout: gridColumn: "1 / -1" if: allOf: - isAzureDevOpsAvailable # Group: Jenkins - package: ./dynamic-plugins/dist/backstage-community-plugin-jenkins-backend-dynamic disabled: true pluginConfig: jenkins: instances: - name: default baseUrl: ${JENKINS_URL} username: ${JENKINS_USERNAME} apiKey: ${JENKINS_TOKEN} - package: ./dynamic-plugins/dist/backstage-community-plugin-jenkins disabled: true pluginConfig: dynamicPlugins: frontend: backstage-community.plugin-jenkins: mountPoints: - mountPoint: entity.page.ci/cards importName: EntityJenkinsContent config: layout: gridColumn: "1 / -1" if: allOf: - isJenkinsAvailable # Group: Notifications - package: ./dynamic-plugins/dist/backstage-plugin-notifications disabled: true pluginConfig: dynamicPlugins: frontend: backstage.plugin-notifications: dynamicRoutes: - importName: NotificationsPage menuItem: config: props: titleCounterEnabled: true webNotificationsEnabled: false importName: NotificationsSidebarItem path: /notifications - package: ./dynamic-plugins/dist/backstage-plugin-notifications-backend-dynamic disabled: true - package: ./dynamic-plugins/dist/backstage-plugin-notifications-backend-module-email-dynamic disabled: true pluginConfig: notifications: processors: email: transportConfig: transport: smtp hostname: ${EMAIL_HOSTNAME} port: 587 username: ${EMAIL_USERNAME} password: ${EMAIL_PASSWORD} sender: ${EMAIL_SENDER} broadcastConfig: receiver: 'users' - package: ./dynamic-plugins/dist/backstage-plugin-signals-backend-dynamic disabled: true - package: ./dynamic-plugins/dist/backstage-plugin-signals disabled: true pluginConfig: dynamicPlugins: frontend: backstage.plugin-signals: {} # Group: SonarQube - package: ./dynamic-plugins/dist/backstage-community-plugin-sonarqube-backend-dynamic disabled: true pluginConfig: sonarqube: baseUrl: ${SONARQUBE_URL} apiKey: ${SONARQUBE_TOKEN} - package: ./dynamic-plugins/dist/backstage-community-plugin-sonarqube disabled: true pluginConfig: dynamicPlugins: frontend: backstage-community.plugin-sonarqube: mountPoints: - mountPoint: entity.page.overview/cards importName: EntitySonarQubeCard config: layout: gridColumnEnd: lg: "span 4" md: "span 6" xs: "span 12" if: allOf: - isSonarQubeAvailable # Group: OCM - package: ./dynamic-plugins/dist/backstage-community-plugin-ocm-backend-dynamic disabled: true pluginConfig: catalog: providers: ocm: default: name: "${OCM_HUB_NAME}" url: "${OCM_HUB_URL}" serviceAccountToken: "${OCM_SA_TOKEN}" owner: janus-authors - package: ./dynamic-plugins/dist/backstage-community-plugin-ocm disabled: true pluginConfig: dynamicPlugins: frontend: backstage-community.plugin-ocm: appIcons: - name: ocmIcon importName: OcmIcon dynamicRoutes: - path: /ocm importName: OcmPage menuItem: icon: ocmIcon text: Clusters textKey: menuItem.clusters mountPoints: - mountPoint: entity.page.overview/context importName: ClusterContextProvider - mountPoint: entity.page.overview/cards importName: ClusterAvailableResourceCard config: layout: gridColumnEnd: lg: "span 4" md: "span 6" xs: "span 12" if: allOf: - isKind: resource - isType: kubernetes-cluster - mountPoint: entity.page.overview/cards importName: ClusterInfoCard config: layout: gridColumnEnd: lg: "span 4" md: "span 6" xs: "span 12" if: allOf: - isKind: resource - isType: kubernetes-cluster # Group: Bulk import - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-bulk-import-backend-dynamic disabled: true - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-bulk-import disabled: true pluginConfig: dynamicPlugins: frontend: red-hat-developer-hub.backstage-plugin-bulk-import: translationResources: - importName: bulkImportTranslations module: Alpha ref: bulkImportTranslationRef appIcons: - name: bulkImportIcon importName: BulkImportIcon dynamicRoutes: - path: /bulk-import/repositories importName: BulkImportPage menuItem: icon: bulkImportIcon text: Bulk import textKey: menuItem.bulkImport # Group: Global Header - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-global-header disabled: false pluginConfig: app: sidebar: search: false settings: false logo: false dynamicPlugins: frontend: default.main-menu-items: menuItems: default.create: title: '' default.admin: title: Administration textKey: menuItem.administration icon: admin red-hat-developer-hub.backstage-plugin-global-header: translationResources: - importName: globalHeaderTranslations ref: globalHeaderTranslationRef mountPoints: - mountPoint: application/header importName: GlobalHeader config: position: above-sidebar # above-main-content | above-sidebar - mountPoint: global.header/component importName: CompanyLogo config: priority: 200 props: to: '/' - mountPoint: global.header/component importName: SearchComponent config: priority: 100 - mountPoint: global.header/component importName: Spacer config: priority: 99 props: growFactor: 0 - mountPoint: global.header/component importName: HeaderIconButton config: priority: 90 props: title: Self-service titleKey: create.title icon: add to: create - mountPoint: global.header/component importName: StarredDropdown config: priority: 85 - mountPoint: global.header/component importName: ApplicationLauncherDropdown config: priority: 82 - mountPoint: global.header/application-launcher importName: MenuItemLink config: section: Documentation priority: 150 props: title: Developer Hub titleKey: applicationLauncher.developerHub icon: developerHub link: https://docs.redhat.com/en/documentation/red_hat_developer_hub - mountPoint: global.header/application-launcher importName: MenuItemLink config: section: Developer Tools priority: 100 props: title: RHDH Local titleKey: applicationLauncher.rhdhLocal icon: developerHub link: https://github.com/redhat-developer/rhdh-local - mountPoint: global.header/component importName: HelpDropdown config: priority: 80 - mountPoint: global.header/help importName: SupportButton config: priority: 10 - mountPoint: global.header/component importName: NotificationButton config: priority: 70 - mountPoint: global.header/component importName: Divider config: priority: 50 - mountPoint: global.header/component importName: ProfileDropdown config: priority: 10 - mountPoint: global.header/profile importName: MenuItemLink config: priority: 100 props: title: Settings titleKey: profile.settings link: /settings icon: manageAccounts - mountPoint: global.header/profile importName: MenuItemLink config: priority: 90 props: title: My profile titleKey: profile.myProfile type: myProfile icon: account - mountPoint: global.header/profile importName: LogoutButton config: priority: 10 # Group: Global floating action button - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-global-floating-action-button disabled: false pluginConfig: dynamicPlugins: frontend: red-hat-developer-hub.backstage-plugin-global-floating-action-button: translationResources: - importName: globalFloatingActionButtonTranslations ref: globalFloatingActionButtonTranslationRef mountPoints: - mountPoint: application/listener importName: DynamicGlobalFloatingActionButton # Group: Quickstart - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-quickstart disabled: false pluginConfig: app: quickstart: - title: Set up authentication titleKey: steps.setupAuthentication.title icon: Admin description: Set up secure login credentials to protect your account from unauthorized access. descriptionKey: steps.setupAuthentication.description cta: text: Learn more textKey: steps.setupAuthentication.ctaTitle link: https://docs.redhat.com/en/documentation/red_hat_developer_hub/latest/html/authentication_in_red_hat_developer_hub/ - title: Configure RBAC titleKey: steps.configureRbac.title icon: Rbac description: Assign roles and permissions to control who can view, create, or edit resources, ensuring secure and efficient collaboration. descriptionKey: steps.configureRbac.description cta: text: Manage access textKey: steps.configureRbac.ctaTitle link: /rbac - title: Configure Git titleKey: steps.configureGit.title icon: Git description: Connect your Git providers, such as GitHub to manage code, automate workflows, and integrate with platform features. descriptionKey: steps.configureGit.description cta: text: Learn more textKey: steps.configureGit.ctaTitle link: https://docs.redhat.com/en/documentation/red_hat_developer_hub/latest/html/integrating_red_hat_developer_hub_with_github/ - title: Manage plugins titleKey: steps.managePlugins.title icon: Plugins description: Browse and install extensions to add features, connect with external tools, and customize your experience. descriptionKey: steps.managePlugins.description cta: text: Explore plugins textKey: steps.managePlugins.ctaTitle link: /extensions - title: Import application roles: - developer icon: Import description: Import your existing code and services into the catalog to organize and access them through your developer portal. cta: text: Import link: /bulk-import/repositories - title: Learn about the Catalog roles: - developer icon: Catalog description: Discover all software components, services, and APIs, and view their owners and documentation. cta: text: View Catalog link: /catalog - title: Explore Self-service templates roles: - developer icon: SelfService description: Use our self-service templates to quickly set up new projects, services, or documentation. cta: text: Explore templates link: /create - title: Find all Learning Paths roles: - developer icon: Learning description: Integrate tailored e-learning into your workflows with Learning Paths to accelerate onboarding, close skill gaps, and promote best practices. cta: text: View Learning Paths link: /learning-paths dynamicPlugins: frontend: red-hat-developer-hub.backstage-plugin-quickstart: translationResources: - importName: quickstartTranslations module: Alpha ref: quickstartTranslationRef mountPoints: - mountPoint: application/provider importName: QuickstartDrawerProvider - mountPoint: global.header/help importName: QuickstartButton config: priority: 100 # Group: Homepage - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-dynamic-home-page disabled: false pluginConfig: dynamicPlugins: frontend: red-hat-developer-hub.backstage-plugin-dynamic-home-page: dynamicRoutes: - path: / importName: DynamicHomePage mountPoints: - mountPoint: application/listener importName: VisitListener # the default cards - mountPoint: home.page/cards importName: OnboardingSection config: id: rhdh-onboarding-section title: Red Hat Developer Hub - Onboarding cardLayout: width: minColumns: 4 maxColumns: 12 defaultColumns: 12 height: minRows: 2 maxRows: 12 defaultRows: 4 layouts: xl: { w: 12, h: 6 } lg: { w: 12, h: 6 } md: { w: 12, h: 7 } sm: { w: 12, h: 8 } xs: { w: 12, h: 9 } xxs: { w: 12, h: 14 } - mountPoint: home.page/cards importName: EntitySection config: id: rhdh-entity-section title: Red Hat Developer Hub - Software Catalog cardLayout: width: minColumns: 4 maxColumns: 12 defaultColumns: 12 height: minRows: 2 maxRows: 12 defaultRows: 4 layouts: xl: { w: 12, h: 7 } lg: { w: 12, h: 7 } md: { w: 12, h: 8 } sm: { w: 12, h: 9 } xs: { w: 12, h: 11 } xxs: { w: 12, h: 15 } - mountPoint: home.page/cards importName: TemplateSection config: id: rhdh-template-section title: Red Hat Developer Hub - Explore templates cardLayout: width: minColumns: 4 maxColumns: 12 defaultColumns: 12 height: minRows: 2 maxRows: 12 defaultRows: 4 layouts: xl: { w: 12, h: 5 } lg: { w: 12, h: 5 } md: { w: 12, h: 5 } sm: { w: 12, h: 5 } xs: { w: 12, h: 7.5 } xxs: { w: 12, h: 13.5 } # additional available cards when the 'customizable' feature is enabled - mountPoint: home.page/cards importName: QuickAccessCard config: id: quickaccess-card title: Quick Access Card - mountPoint: home.page/cards importName: SearchBar config: id: searchbar title: Search cardLayout: width: minColumns: 4 maxColumns: 12 defaultColumns: 12 height: minRows: 1 maxRows: 2 defaultRows: 2 - mountPoint: home.page/cards importName: CatalogStarredEntitiesCard config: id: catalog-starred-entities-card title: Starred catalog entities - mountPoint: home.page/cards importName: RecentlyVisitedCard config: id: recently-visited-card title: Recently visited - mountPoint: home.page/cards importName: TopVisitedCard config: id: top-visited-card title: Top visited - mountPoint: home.page/cards importName: FeaturedDocsCard config: id: featured-docs-card title: Featured docs - mountPoint: home.page/cards importName: JokeCard config: id: joke-card title: Random joke translationResources: - importName: homepageTranslations ref: homepageTranslationRef # Group: Techdocs - package: ./dynamic-plugins/dist/backstage-plugin-techdocs-backend-dynamic disabled: false pluginConfig: # 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. # https://backstage.io/docs/features/techdocs/how-to-guides#how-to-migrate-from-techdocs-basic-to-recommended-deployment-approach techdocs: builder: local generator: runIn: local publisher: type: local - package: ./dynamic-plugins/dist/backstage-plugin-techdocs disabled: false pluginConfig: dynamicPlugins: frontend: backstage.plugin-techdocs: routeBindings: targets: - importName: techdocsPlugin bindings: - bindTarget: catalogPlugin.externalRoutes bindMap: viewTechDoc: techdocsPlugin.routes.docRoot - bindTarget: scaffolderPlugin.externalRoutes bindMap: viewTechDoc: techdocsPlugin.routes.docRoot dynamicRoutes: - path: /docs importName: TechDocsIndexPage menuItem: icon: docs text: Docs textKey: menuItem.docs - path: /docs/:namespace/:kind/:name/* importName: TechDocsReaderPage mountPoints: - mountPoint: entity.page.docs/cards importName: EntityTechdocsContent config: layout: gridColumn: "1 / -1" if: allOf: - isTechDocsAvailable - mountPoint: search.page.results importName: TechDocsSearchResultListItem - mountPoint: search.page.filters importName: TechdocsSearchFilter - mountPoint: search.page.types importName: techdocsSearchType config: props: name: Documentation icon: docs - package: ./dynamic-plugins/dist/backstage-plugin-techdocs-module-addons-contrib disabled: false pluginConfig: dynamicPlugins: frontend: backstage.plugin-techdocs-module-addons-contrib: techdocsAddons: - importName: ReportIssue # Standalone plugins - package: ./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-gerrit-dynamic disabled: true - package: ./dynamic-plugins/dist/roadiehq-scaffolder-backend-module-utils-dynamic disabled: true - package: ./dynamic-plugins/dist/roadiehq-scaffolder-backend-module-http-request-dynamic disabled: true - package: ./dynamic-plugins/dist/backstage-community-plugin-scaffolder-backend-module-kubernetes-dynamic disabled: true - package: ./dynamic-plugins/dist/backstage-community-plugin-scaffolder-backend-module-quay-dynamic disabled: false - package: ./dynamic-plugins/dist/backstage-community-plugin-scaffolder-backend-module-regex-dynamic disabled: false # Group: RBAC - package: ./dynamic-plugins/dist/backstage-community-plugin-rbac disabled: true pluginConfig: dynamicPlugins: frontend: backstage-community.plugin-rbac: translationResources: - importName: rbacTranslations ref: rbacTranslationRef module: Alpha appIcons: - name: rbacIcon importName: RbacIcon dynamicRoutes: - path: /rbac importName: RbacPage menuItem: icon: rbacIcon text: RBAC textKey: menuItem.rbac menuItems: rbac: parent: default.admin icon: rbacIcon - package: ./dynamic-plugins/dist/backstage-community-plugin-scaffolder-backend-module-servicenow-dynamic disabled: true pluginConfig: servicenow: # The base url of the ServiceNow instance. baseUrl: ${SERVICENOW_BASE_URL} # The username to use for authentication. username: ${SERVICENOW_USERNAME} # The password to use for authentication. password: ${SERVICENOW_PASSWORD} - package: ./dynamic-plugins/dist/backstage-community-plugin-scaffolder-backend-module-sonarqube-dynamic disabled: true - package: ./dynamic-plugins/dist/backstage-community-plugin-3scale-backend-dynamic disabled: true pluginConfig: catalog: providers: threeScaleApiEntity: default: baseUrl: '${THREESCALE_BASE_URL}' accessToken: '${THREESCALE_ACCESS_TOKEN}' - package: ./dynamic-plugins/dist/backstage-community-plugin-catalog-backend-module-keycloak-dynamic disabled: true pluginConfig: catalog: providers: keycloakOrg: default: baseUrl: "${KEYCLOAK_BASE_URL}" loginRealm: "${KEYCLOAK_LOGIN_REALM}" realm: "${KEYCLOAK_REALM}" clientId: "${KEYCLOAK_CLIENT_ID}" clientSecret: "${KEYCLOAK_CLIENT_SECRET}" schedule: frequency: minutes: 60 initialDelay: seconds: 15 timeout: minutes: 50 # Group: BitBucket - package: ./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-bitbucket-cloud-dynamic disabled: true - package: ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-bitbucket-cloud-dynamic disabled: true pluginConfig: # https://backstage.io/docs/integrations/bitbucketCloud/discovery#configuration catalog: providers: bitbucketCloud: default: # identifies your ingested dataset workspace: ${BITBUCKET_WORKSPACE} schedule: frequency: minutes: 30 initialDelay: minutes: 1 timeout: minutes: 3 - package: ./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-bitbucket-server-dynamic disabled: true - package: ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-bitbucket-server-dynamic disabled: true pluginConfig: # https://backstage.io/docs/integrations/bitbucketServer/discovery#configuration catalog: providers: bitbucketServer: default: # identifies your ingested dataset host: ${BITBUCKET_HOST} schedule: frequency: minutes: 30 initialDelay: minutes: 1 timeout: minutes: 3 - package: ./dynamic-plugins/dist/backstage-community-plugin-dynatrace disabled: true pluginConfig: dynamicPlugins: frontend: backstage-community.plugin-dynatrace: mountPoints: - mountPoint: entity.page.monitoring/cards importName: DynatraceTab config: layout: gridColumn: "1 / -1" if: allOf: - isDynatraceAvailable - package: ./dynamic-plugins/dist/roadiehq-backstage-plugin-jira disabled: true pluginConfig: dynamicPlugins: frontend: roadiehq.backstage-plugin-jira: mountPoints: - mountPoint: entity.page.issues/cards importName: EntityJiraOverviewCard config: layout: gridColumn: "1 / -1" if: allOf: - isJiraAvailable - package: ./dynamic-plugins/dist/roadiehq-backstage-plugin-datadog disabled: true pluginConfig: dynamicPlugins: frontend: roadiehq.backstage-plugin-datadog: mountPoints: - mountPoint: entity.page.monitoring/cards importName: EntityDatadogContent config: layout: gridColumn: "1 / -1" if: allOf: - isDatadogAvailable - package: ./dynamic-plugins/dist/backstage-community-plugin-tekton disabled: true pluginConfig: dynamicPlugins: frontend: backstage-community.plugin-tekton: translationResources: - importName: tektonTranslations ref: tektonTranslationRef mountPoints: - mountPoint: entity.page.ci/cards importName: TektonCI config: layout: gridColumn: "1 / -1" if: allOf: - isTektonCIAvailable - package: ./dynamic-plugins/dist/backstage-community-plugin-quay disabled: true pluginConfig: dynamicPlugins: frontend: backstage-community.plugin-quay: mountPoints: - mountPoint: entity.page.image-registry/cards importName: QuayPage config: layout: gridColumn: 1 / -1 if: anyOf: - isQuayAvailable - package: ./dynamic-plugins/dist/backstage-community-plugin-nexus-repository-manager disabled: true pluginConfig: dynamicPlugins: frontend: backstage-community.plugin-nexus-repository-manager: mountPoints: - mountPoint: entity.page.image-registry/cards importName: NexusRepositoryManagerPage config: layout: gridColumn: 1 / -1 if: anyOf: - isNexusRepositoryManagerAvailable - package: ./dynamic-plugins/dist/backstage-community-plugin-acr disabled: true pluginConfig: dynamicPlugins: frontend: backstage-community.plugin-acr: mountPoints: - mountPoint: entity.page.image-registry/cards importName: AcrImagesEntityContent config: layout: gridColumn: 1 / -1 if: anyOf: - isAcrAvailable - package: ./dynamic-plugins/dist/backstage-community-plugin-jfrog-artifactory disabled: true pluginConfig: dynamicPlugins: frontend: backstage-community.plugin-jfrog-artifactory: mountPoints: - mountPoint: entity.page.image-registry/cards importName: JfrogArtifactoryPage config: layout: gridColumn: 1 / -1 if: anyOf: - isJfrogArtifactoryAvailable - package: ./dynamic-plugins/dist/backstage-community-plugin-lighthouse disabled: true pluginConfig: dynamicPlugins: frontend: backstage-community.plugin-lighthouse: appIcons: - name: lighthouse importName: LighthouseIcon dynamicRoutes: - path: /lighthouse importName: LighthousePage menuItem: icon: lighthouse text: menuItem.lighthouse textKey: menuItem.lighthouse mountPoints: - mountPoint: entity.page.overview/cards importName: EntityLastLighthouseAuditCard config: layout: gridColumnEnd: md: "span 6" xs: "span 12" if: allOf: - isLighthouseAvailable # Group: TechRadar - package: ./dynamic-plugins/dist/backstage-community-plugin-tech-radar disabled: true pluginConfig: dynamicPlugins: frontend: backstage-community.plugin-tech-radar: apiFactories: - importName: TechRadarApi appIcons: - name: techRadar importName: TechRadarIcon dynamicRoutes: - path: /tech-radar importName: TechRadarPage menuItem: icon: techRadar text: menuItem.techRadar textKey: menuItem.techRadar config: props: width: 1500 height: 800 - package: ./dynamic-plugins/dist/backstage-community-plugin-tech-radar-backend-dynamic disabled: true pluginConfig: techRadar: url: ${TECH_RADAR_DATA_URL} - package: ./dynamic-plugins/dist/backstage-community-plugin-analytics-provider-segment disabled: false pluginConfig: dynamicPlugins: frontend: backstage-community.plugin-analytics-provider-segment: analyticsApiExtensions: - importName: SegmentAnalytics backend: csp: script-src: - '''self''' - '''unsafe-eval''' - 'https://cdn.segment.com' app: analytics: segment: writeKey: ${SEGMENT_WRITE_KEY} maskIP: true # prevents IP addresses from being sent if true testMode: ${SEGMENT_TEST_MODE} # prevents data from being sent if true appVersion: ${RHDH_VERSION} # RHDH application version backstageVersion: ${BACKSTAGE_VERSION} # Backstage version - package: ./dynamic-plugins/dist/backstage-community-plugin-catalog-backend-module-scaffolder-relation-processor-dynamic disabled: true - package: ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-msgraph-dynamic disabled: true pluginConfig: catalog: providers: microsoftGraphOrg: providerId: target: https://graph.microsoft.com/v1.0 tenantId: ${MICROSOFT_TENANT_ID} clientId: ${MICROSOFT_CLIENT_ID} clientSecret: ${MICROSOFT_CLIENT_SECRET} schedule: frequency: minutes: 60 initialDelay: seconds: 15 timeout: minutes: 15 - package: ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-ldap-dynamic disabled: true pluginConfig: catalog: providers: ldapOrg: default: target: ${LDAP_TARGET_URL} bind: dn: ${LDAP_BIND_DN} secret: ${LDAP_BIND_SECRET} users: - dn: ${LDAP_USERS_DN} options: filter: (uid=*) groups: - dn: ${LDAP_GROUPS_DN} options: filter: (cn=*) schedule: frequency: minutes: 60 initialDelay: seconds: 15 timeout: minutes: 15 - package: ./dynamic-plugins/dist/backstage-community-plugin-catalog-backend-module-pingidentity-dynamic disabled: true pluginConfig: catalog: providers: pingIdentityOrg: {} # Group: Marketplace - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-catalog-backend-module-marketplace-dynamic disabled: false - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-marketplace-backend-dynamic disabled: false - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-marketplace disabled: false pluginConfig: dynamicPlugins: frontend: red-hat-developer-hub.backstage-plugin-marketplace: translationResources: - importName: marketplaceTranslations ref: marketplaceTranslationRef module: Alpha appIcons: - name: pluginsIcon importName: PluginsIcon dynamicRoutes: - path: /extensions importName: DynamicMarketplacePluginRouter menuItem: icon: pluginsIcon text: Extensions textKey: menuItem.extensions menuItems: extensions: parent: default.admin # Group: Orchestrator - package: "@redhat/backstage-plugin-orchestrator@1.8.9" disabled: true integrity: sha512-k9r4xEfy3a5En1DTBZkzjhbUVFfbP8Pb+/uCkTXwqqwDJaM2ZzPMzaMj4x65XBnpKTdEZJA0rf/mFMFnfM8I6w== pluginConfig: dynamicPlugins: frontend: red-hat-developer-hub.backstage-plugin-orchestrator: appIcons: - importName: OrchestratorIcon name: orchestratorIcon dynamicRoutes: - importName: OrchestratorPage menuItem: icon: orchestratorIcon text: Orchestrator textKey: menuItem.orchestrator path: /orchestrator entityTabs: - path: /workflows title: Workflows titleKey: catalog.entityPage.workflows.title mountPoint: entity.page.workflows mountPoints: - mountPoint: entity.page.workflows/cards importName: OrchestratorCatalogTab config: layout: gridColumn: '1 / -1' if: anyOf: - IsOrchestratorCatalogTabAvailable - package: "@redhat/backstage-plugin-orchestrator-backend-dynamic@1.8.9" disabled: true integrity: sha512-V6Css2y21le4SrMj1tpupppjSkvaZcfvfF9sLoknUnFLCCYkKCH21Fpk2BxA1MMRpVXTUjUJ8lTwYAdrrxBEjg== pluginConfig: orchestrator: dataIndexService: url: http://sonataflow-platform-data-index-service - package: "@redhat/backstage-plugin-scaffolder-backend-module-orchestrator-dynamic@1.8.9" disabled: true integrity: sha512-VRM/RvqQUemJLBdwm3nYwn2pSTUumZ1YEaHhgh4ELTiuVy2KQcyZCN9cSOCUswjHldmuPyT8dyfGQvSriGNS8Q== pluginConfig: orchestrator: dataIndexService: url: http://sonataflow-platform-data-index-service - package: "@redhat/backstage-plugin-orchestrator-form-widgets@1.8.9" disabled: true integrity: sha512-fWlawBQUenXQXBUPe04mrIFPhNE05f1aVRJXXFS0FT0doo8X4vijmEeZf4Qm3b1Owgup8E6HHKQr3a94lBrNew== pluginConfig: dynamicPlugins: frontend: red-hat-developer-hub.backstage-plugin-orchestrator-form-widgets: { } # Group: Adoption Insights - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-adoption-insights disabled: false pluginConfig: dynamicPlugins: frontend: red-hat-developer-hub.backstage-plugin-adoption-insights: translationResources: - importName: adoptionInsightsTranslations ref: adoptionInsightsTranslationRef appIcons: - name: adoptionInsightsIcon importName: AdoptionInsightsIcon dynamicRoutes: - path: /adoption-insights importName: AdoptionInsightsPage menuItem: icon: adoptionInsightsIcon text: Adoption Insights textKey: menuItem.adoptionInsights menuItems: adoption-insights: parent: default.admin icon: adoptionInsightsIcon - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-adoption-insights-backend-dynamic disabled: false pluginConfig: app: analytics: adoptionInsights: maxBufferSize: 20 flushInterval: 5000 debug: false licensedUsers: 100 - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-analytics-module-adoption-insights-dynamic disabled: false pluginConfig: dynamicPlugins: frontend: red-hat-developer-hub.backstage-plugin-analytics-module-adoption-insights: analyticsApiExtensions: - importName: AdoptionInsightsAnalyticsApi