backstage-demo-janus-showcase/dynamic-plugins.default.yaml
Med Mouine 089a1cd890 config
2024-04-18 10:23:04 -04:00

823 lines
27 KiB
YAML

plugins:
# Group: Github
- package: ./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-github-dynamic
- 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-plugin-github-actions
disabled: true
pluginConfig:
dynamicPlugins:
frontend:
backstage.plugin-github-actions:
mountPoints:
- mountPoint: entity.page.ci/cards
importName: EntityGithubActionsContent
config:
layout:
gridColumn: "1 / -1"
if:
allOf:
- isGithubActionsAvailable
- package: ./dynamic-plugins/dist/backstage-plugin-github-issues
disabled: true
pluginConfig:
dynamicPlugins:
frontend:
backstage.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
- 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: {}
# Group: Kubernetes
- package: ./dynamic-plugins/dist/backstage-plugin-kubernetes-backend-dynamic
disabled: true
pluginConfig:
kubernetes:
customResources:
- group: 'tekton.dev'
apiVersion: 'v1beta1'
plural: 'pipelines'
- group: 'tekton.dev'
apiVersion: 'v1beta1'
plural: 'pipelineruns'
- group: 'tekton.dev'
apiVersion: 'v1beta1'
plural: 'taskruns'
- group: 'route.openshift.io'
apiVersion: 'v1'
plural: 'routes'
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/janus-idp-backstage-plugin-topology
disabled: true
pluginConfig:
dynamicPlugins:
frontend:
janus-idp.backstage-plugin-topology:
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/roadiehq-backstage-plugin-argo-cd
disabled: true
pluginConfig:
dynamicPlugins:
frontend:
roadiehq.backstage-plugin-argo-cd:
mountPoints:
- mountPoint: entity.page.overview/cards
importName: EntityArgoCDOverviewCard
config:
layout:
gridColumnEnd:
lg: "span 8"
xs: "span 12"
if:
allOf:
- isArgocdAvailable
- mountPoint: entity.page.cd/cards
importName: EntityArgoCDHistoryCard
config:
layout:
gridColumn: "1 / -1"
if:
allOf:
- isArgocdAvailable
# Group: Azure Devops
- package: ./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-azure-dynamic
- package: ./dynamic-plugins/dist/backstage-plugin-azure-devops-backend-dynamic
disabled: true
pluginConfig:
azureDevOps:
host: dev.azure.com
token: ${AZURE_TOKEN}
organization: ${AZURE_ORG}
- package: ./dynamic-plugins/dist/backstage-plugin-azure-devops
disabled: true
pluginConfig:
dynamicPlugins:
frontend:
backstage.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-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-plugin-jenkins
disabled: true
pluginConfig:
dynamicPlugins:
frontend:
backstage.plugin-jenkins:
mountPoints:
- mountPoint: entity.page.ci/cards
importName: EntityJenkinsContent
config:
layout:
gridColumn: "1 / -1"
if:
allOf:
- isJenkinsAvailable
# Group: SonarQube
- package: ./dynamic-plugins/dist/backstage-plugin-sonarqube-backend-dynamic
disabled: true
pluginConfig:
sonarqube:
baseUrl: ${SONARQUBE_URL}
apiKey: ${SONARQUBE_TOKEN}
- package: ./dynamic-plugins/dist/backstage-plugin-sonarqube
disabled: true
pluginConfig:
dynamicPlugins:
frontend:
backstage.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/janus-idp-backstage-plugin-ocm-backend-dynamic
disabled: true
pluginConfig:
catalog:
providers:
ocm:
default:
name: "${OCM_HUB_NAME}"
url: "${OCM_HUB_URL}"
serviceAccountToken: "${moc_infra_token}"
owner: janus-authors
- package: ./dynamic-plugins/dist/janus-idp-backstage-plugin-ocm
disabled: true
pluginConfig:
dynamicPlugins:
frontend:
janus-idp.backstage-plugin-ocm:
appIcons:
- name: ocmIcon
importName: OcmIcon
dynamicRoutes:
- path: /ocm
importName: OcmPage
menuItem:
icon: ocmIcon
text: 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
# Techdocs
- package: ./dynamic-plugins/dist/backstage-plugin-techdocs-backend-dynamic
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
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
- 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
# Standalone plugins
- package: ./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-gerrit-dynamic
- package: ./dynamic-plugins/dist/roadiehq-scaffolder-backend-module-utils-dynamic
- package: ./dynamic-plugins/dist/janus-idp-backstage-scaffolder-backend-module-quay-dynamic
- package: ./dynamic-plugins/dist/janus-idp-backstage-scaffolder-backend-module-regex-dynamic
- package: ./dynamic-plugins/dist/janus-idp-backstage-plugin-rbac
disabled: true
pluginConfig:
dynamicPlugins:
frontend:
janus-idp.backstage-plugin-rbac:
mountPoints:
- mountPoint: admin.page.rbac/cards
module: RbacPlugin
importName: RbacPage
config:
layout:
gridColumn: "1 / -1"
width: 100vw
props:
useHeader: false
dynamicRoutes:
- path: /admin/rbac
module: RbacPlugin
importName: RbacPage
- package: ./dynamic-plugins/dist/janus-idp-backstage-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/janus-idp-backstage-scaffolder-backend-module-sonarqube-dynamic
disabled: true
- package: ./dynamic-plugins/dist/janus-idp-backstage-plugin-aap-backend-dynamic
disabled: true
pluginConfig:
catalog:
providers:
aap:
prod:
baseUrl: '${AAP_BASE_URL}'
authorization: "${AAP_AUTH_TOKEN}"
- package: ./dynamic-plugins/dist/janus-idp-backstage-plugin-3scale-backend-dynamic
disabled: true
pluginConfig:
catalog:
providers:
threeScaleApiEntity:
default:
baseUrl: '${THREESCALE_BASE_URL}'
accessToken: '${THREESCALE_ACCESS_TOKEN}'
- package: ./dynamic-plugins/dist/janus-idp-backstage-plugin-keycloak-backend-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
- package: ./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-bitbucket-cloud-dynamic
- 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
- 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-plugin-dynatrace
disabled: true
pluginConfig:
dynamicPlugins:
frontend:
backstage.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/janus-idp-backstage-plugin-tekton
disabled: true
pluginConfig:
dynamicPlugins:
frontend:
janus-idp.backstage-plugin-tekton:
mountPoints:
- mountPoint: entity.page.ci/cards
importName: TektonCI
config:
layout:
gridColumn: "1 / -1"
if:
allOf:
- isTektonCIAvailable
- package: ./dynamic-plugins/dist/janus-idp-backstage-plugin-quay
disabled: true
pluginConfig:
dynamicPlugins:
frontend:
janus-idp.backstage-plugin-quay:
mountPoints:
- mountPoint: entity.page.image-registry/cards
importName: QuayPage
config:
layout:
gridColumn: 1 / -1
if:
anyOf:
- isQuayAvailable
- package: ./dynamic-plugins/dist/janus-idp-backstage-plugin-nexus-repository-manager
disabled: true
pluginConfig:
dynamicPlugins:
frontend:
janus-idp.backstage-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/janus-idp-backstage-plugin-acr
disabled: true
pluginConfig:
dynamicPlugins:
frontend:
janus-idp.backstage-plugin-acr:
mountPoints:
- mountPoint: entity.page.image-registry/cards
importName: AcrPage
config:
layout:
gridColumn: 1 / -1
if:
anyOf:
- isAcrAvailable
- package: ./dynamic-plugins/dist/janus-idp-backstage-plugin-jfrog-artifactory
disabled: true
pluginConfig:
dynamicPlugins:
frontend:
janus-idp.backstage-plugin-jfrog-artifactory:
mountPoints:
- mountPoint: entity.page.image-registry/cards
importName: JfrogArtifactoryPage
config:
layout:
gridColumn: 1 / -1
if:
anyOf:
- isJfrogArtifactoryAvailable
- 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/backstage-plugin-lighthouse
disabled: true
pluginConfig:
dynamicPlugins:
frontend:
backstage.plugin-lighthouse:
appIcons:
- name: lighthouse
importName: LighthouseIcon
dynamicRoutes:
- path: /lighthouse
importName: LighthousePage
menuItem:
icon: lighthouse
text: Lighthouse
mountPoints:
- mountPoint: entity.page.overview/cards
importName: EntityLastLighthouseAuditCard
config:
layout:
gridColumnEnd:
md: "span 6"
xs: "span 12"
if:
allOf:
- isLighthouseAvailable
- package: ./dynamic-plugins/dist/backstage-plugin-tech-radar
disabled: true
pluginConfig:
dynamicPlugins:
frontend:
backstage.plugin-tech-radar:
apiFactories:
- importName: TechRadarApi
appIcons:
- name: techRadar
importName: TechRadarIcon
dynamicRoutes:
- path: /tech-radar
importName: TechRadarPage
menuItem:
icon: techRadar
text: Tech Radar
config:
props:
width: 1500
height: 800
- package: ./dynamic-plugins/dist/janus-idp-backstage-plugin-analytics-provider-segment
disabled: true
pluginConfig:
dynamicPlugins:
frontend:
janus-idp.backstage-plugin-analytics-provider-segment:
apiFactories:
- importName: SegmentAnalyticsApi
app:
analytics:
segment:
writeKey: ${SEGMENT_WRITE_KEY}
maskIP: ${SEGMENT_MASK_IP} # prevents IP addresses from being sent if true
testMode: ${SEGMENT_TEST_MODE} # prevents data from being sent if true