diff --git a/.rhdh/docker/Dockerfile b/.rhdh/docker/Dockerfile index 7f7f0d2034..f5fa6b8d7e 100644 --- a/.rhdh/docker/Dockerfile +++ b/.rhdh/docker/Dockerfile @@ -190,7 +190,9 @@ RUN tar xzf "$TARBALL_PATH"/skeleton.tar.gz; tar xzf "$TARBALL_PATH"/bundle.tar. # Copy app-config files needed in runtime COPY $EXTERNAL_SOURCE_NESTED/app-config*.yaml ./ -COPY $EXTERNAL_SOURCE_NESTED/dynamic-plugins.default.yaml ./ + +# moved to plugin-catalog-index image +# COPY $EXTERNAL_SOURCE_NESTED/dynamic-plugins.default.yaml ./ # Hackaround: create library symlinks to build: isolated-vm node-gyp better-sqlite cpu-features # TODO is this still needed? maintaining it over time will be a chore if the .so files change diff --git a/docker/Dockerfile b/docker/Dockerfile index 823a9d71e8..9d7129180b 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -172,7 +172,8 @@ RUN tar xzf "$TARBALL_PATH"/skeleton.tar.gz; tar xzf "$TARBALL_PATH"/bundle.tar. # Copy app-config files needed in runtime COPY $EXTERNAL_SOURCE_NESTED/app-config*.yaml ./ -COPY $EXTERNAL_SOURCE_NESTED/dynamic-plugins.default.yaml ./ +# moved to plugin-catalog-index image +# COPY $EXTERNAL_SOURCE_NESTED/dynamic-plugins.default.yaml ./ # Hackaround: create library symlinks to build: isolated-vm node-gyp better-sqlite cpu-features # TODO is this still needed? maintaining it over time will be a chore if the .so files change diff --git a/dynamic-plugins.default.yaml b/dynamic-plugins.default.yaml deleted file mode 100644 index ec7af7819d..0000000000 --- a/dynamic-plugins.default.yaml +++ /dev/null @@ -1,1408 +0,0 @@ -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 - - 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 - - package: ./dynamic-plugins/dist/parfuemerie-douglas-scaffolder-backend-module-azure-repositories-dynamic - disabled: true - - # 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 - - mountPoint: home.page/cards - importName: OnboardingSection - config: - 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: - 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: - 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 } - 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 - - # Group: PagerDuty - - package: ./dynamic-plugins/dist/pagerduty-backstage-plugin - disabled: true - pluginConfig: - dynamicPlugins: - frontend: - pagerduty.backstage-plugin: - mountPoints: - - mountPoint: entity.page.overview/cards - importName: EntityPagerDutyCard - config: - layout: - gridColumnEnd: - md: "span 6" - xs: "span 12" - if: - allOf: - - isPluginApplicableToEntity - - package: ./dynamic-plugins/dist/pagerduty-backstage-plugin-backend-dynamic - disabled: true - pluginConfig: - pagerDuty: - apiBaseUrl: ${PAGERDUTY_API_BASE} - oauth: - clientId: ${PAGERDUTY_CLIENT_ID} - clientSecret: ${PAGERDUTY_CLIENT_SECRET} - subDomain: ${PAGERDUTY_SUBDOMAIN} - - # 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.2" - disabled: true - integrity: sha512-rnUA6iZ2JVAyASfwS4P9HeFmpqCgH6FQouzzg4s6lCPAsYUFvu6tifJ3df5lThXPUTJ2cDvvQgamU+4DiHP2jw== - 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.2" - disabled: true - integrity: sha512-6G0YguzCM5nCDpOrIGJpLTXVMr6EBdIVqSXtsLH9RvBH25RTuFpfJ7q6eEp26DqveaiqUCfBpJ51smdjcsEzFQ== - pluginConfig: - orchestrator: - dataIndexService: - url: http://sonataflow-platform-data-index-service - - - package: "@redhat/backstage-plugin-scaffolder-backend-module-orchestrator-dynamic@1.8.2" - disabled: true - integrity: sha512-N2hCn9RI/QVEoK56FAkGkSDbvfQCOIzVsJTwDX0kf//npO++2crRSJpB1Lr/m2UtYxfaXZX53p8sPcK3g8yWkQ== - pluginConfig: - orchestrator: - dataIndexService: - url: http://sonataflow-platform-data-index-service - - - package: "@redhat/backstage-plugin-orchestrator-form-widgets@1.8.2" - disabled: true - integrity: sha512-Pe0dn3g+YTK3jbl36E8nt4zdyH/3w+MWgRyFWPc2B0eV4/L/aRfRC4KxcktmHPdamRGXTIaXL6cFae8TZl8Htw== - 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