Merge branch 'backstage:master' into update-custom-permission-rule-doc

This commit is contained in:
Stanley Nicholl
2023-12-01 17:00:18 +00:00
committed by GitHub
1018 changed files with 20775 additions and 5101 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-auth-backend': patch
---
`oauth2-proxy` auth implementation has been moved to `@backstage/plugin-auth-backend-module-oauth2-proxy-provider`
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/frontend-app-api': patch
---
Create a core components extension that allows adopters to override core app components such as `Progress`, `BootErrorPage`, `NotFoundErrorPage` and `ErrorBoundaryFallback`.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/core-components': patch
---
Added a new `/testUtils` sub-path that initially exports a `mockBreakpoint` helper.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-auth-backend-module-oauth2-proxy-provider': patch
---
Exported the provider as default so it gets discovered when using `featureDiscoveryServiceFactory()`
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/frontend-plugin-api': patch
---
Create factories for overriding default core components extensions.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-auth-backend-module-oauth2-proxy-provider': minor
---
Release of `oauth2-proxy-provider` plugin
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog-node': minor
---
Added `EntitiesSearchFilter` and `EntityFilter` from `@backstage/plugin-catalog-backend`, for reuse
+9
View File
@@ -0,0 +1,9 @@
---
'@backstage/plugin-kubernetes-react': minor
'@backstage/plugin-kubernetes': patch
---
Change `formatClusterLink` to be an API and make it async for further customization possibilities.
**BREAKING**
If you have a custom k8s page and used `formatClusterLink` directly, you need to migrate to new `kubernetesClusterLinkFormatterApiRef`
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/core-plugin-api': patch
---
The `createTranslationRef` function from the `/alpha` subpath can now also accept a nested object structure of default translation messages, which will be flatted using `.` separators.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/cli': patch
---
Toned down the warning message when git is not found
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/plugin-catalog-react': patch
'@backstage/plugin-catalog': patch
---
Ensure that passed-in icons are taken advantage of in the presentation API
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog-backend': patch
---
Update the OpenAPI spec to support the use of `openapi-generator`.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/catalog-client': minor
---
The internals of `CatalogClient` are now auto-generated using the `backstage-repo-tools schema openapi generate-client` command.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/frontend-test-utils': patch
---
Updates for compatibility with the new extension IDs.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder-react': patch
---
Fixed bug in `ReviewState` where `enum` value was displayed in step review instead of the corresponding label when using `enumNames`
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/frontend-plugin-api': patch
---
Add feature flags to plugins and extension overrides.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/repo-tools': minor
---
**BREAKING**: API Reports generated for sub-path exports now place the name as a suffix rather than prefix, for example `api-report-alpha.md` instead of `alpha-api-report.md`. When upgrading to this version you'll need to re-create any such API reports and delete the old ones.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/frontend-app-api': patch
---
Collect and register feature flags from plugins and extension overrides.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-home': minor
---
Added view of entities grouped by kind to make it easier to distinguish entities with different kind but same name
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/cli': patch
---
Added a warning when starting a standalone backend plugin that hasn't been updated to the new backend system.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/backend-app-api': patch
---
Ensure redaction of secrets that have accidental extra whitespace around them
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-auth-backend-module-oauth2-proxy-provider': patch
---
Change provider id from `oauth2ProxyProvider` to `oauth2Proxy`
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/backend-app-api': patch
---
Add redacting for secrets in stack traces of logs
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-github-actions': patch
---
Github Workflow Runs UI is modified to show in optional Card view instead of table, with branch selection option
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog-backend': patch
---
Wrap single `pipelineLoop` of TaskPipeline in a span for better traces
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/test-utils': patch
---
Deprecated `mockBreakpoint`, as it is now available from `@backstage/core-components/testUtils` instead.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-lighthouse': patch
---
Updated README
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/frontend-test-utils': patch
---
Re-export mock API implementations as well as `TestApiProvider`, `TestApiRegistry`, `withLogCollector`, and `setupRequestMockHandlers` from `@backstage/test-utils`.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-auth-backend': patch
---
fix static token issuer not being able to initialize
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-lighthouse-backend': minor
---
Fixed crashes faced with custom schedule configuration. The configuration schema has been update to leverage the TaskScheduleDefinition interface. It is highly recommended to move the `lighthouse.shedule` and `lighthouse.timeout` respectively to `lighthouse.schedule.frequency` and `lighthouse.schedule.timeout`.
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/frontend-app-api': patch
'@backstage/core-compat-api': patch
---
Updates to match the new extension input wrapping.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder-react': patch
---
Add horizontal slider if stepper overflows
+71 -2
View File
@@ -255,61 +255,130 @@
"@backstage/plugin-xcmetrics": "0.2.45",
"@backstage/frontend-test-utils": "0.0.0",
"@backstage/plugin-auth-backend-module-atlassian-provider": "0.0.0",
"@backstage/plugin-auth-backend-module-okta-provider": "0.0.0"
"@backstage/plugin-auth-backend-module-okta-provider": "0.0.0",
"@backstage/plugin-auth-backend-module-oauth2-proxy-provider": "0.0.0",
"@backstage/plugin-auth-backend-module-vmware-cloud-provider": "0.0.0"
},
"changesets": [
"angry-eagles-end",
"angry-gorillas-unite",
"angry-walls-despacito",
"angry-walls-juggle",
"big-swans-guess",
"blue-meals-chew",
"brave-parents-stare",
"brave-socks-raise",
"breezy-pans-glow",
"bright-eyes-film",
"brown-books-carry",
"chatty-actors-live",
"chilled-buses-love",
"chilled-terms-breathe",
"chilly-bikes-kick",
"clever-wombats-sneeze",
"cold-pans-crash",
"cool-knives-argue",
"create-app-1700579510",
"create-app-1700607979",
"curly-walls-relate",
"dry-readers-raise",
"eleven-ants-pretend",
"empty-dingos-grow",
"empty-fireants-study",
"famous-flies-kick",
"famous-peas-reflect",
"fifty-cameras-share",
"fifty-seas-grab",
"five-feet-call",
"forty-clocks-hug",
"four-needles-watch",
"funny-bobcats-try",
"gentle-lies-greet",
"giant-files-fry",
"gold-humans-tease",
"gold-shirts-yell",
"gorgeous-snails-admire",
"great-rings-type",
"green-seals-play",
"healthy-feet-kick",
"healthy-poets-search",
"hip-berries-begin",
"honest-houses-hide",
"hot-wolves-flash",
"hungry-buckets-compare",
"khaki-clocks-happen",
"khaki-hounds-think",
"kind-badgers-rush",
"kind-cycles-happen",
"large-weeks-accept",
"little-suits-collect",
"long-wolves-return",
"lovely-terms-search",
"lucky-kids-cough",
"metal-eggs-smile",
"mighty-beans-wink",
"modern-mails-live",
"nasty-tips-exercise",
"nervous-dancers-wait",
"nervous-penguins-sort",
"perfect-apes-sing",
"perfect-crabs-help",
"pink-dryers-repair",
"plenty-numbers-enjoy",
"polite-knives-build",
"poor-pandas-dream",
"pretty-onions-knock",
"pretty-ravens-serve",
"proud-flies-travel",
"proud-seahorses-explain",
"quick-horses-reply",
"real-bees-thank",
"renovate-07b1766",
"renovate-169bdc2",
"renovate-1ed81a0",
"renovate-240982c",
"renovate-4891ee7",
"renovate-4b1eded",
"renovate-522261c",
"renovate-6075f87",
"renovate-6c0fb81",
"renovate-6e5c790",
"renovate-796bd6f",
"renovate-8d8b90d",
"renovate-9d2d52e",
"renovate-a6399d6",
"renovate-b193efa",
"renovate-c4e012c",
"renovate-c7270d5",
"renovate-dee7ad1",
"renovate-ead3ba6",
"renovate-f5b18be",
"rich-singers-join",
"rude-beans-drop",
"rude-ears-greet",
"silent-rats-reflect",
"silly-numbers-wash",
"silver-rocks-deliver",
"sixty-adults-kiss",
"sixty-houses-agree",
"slow-trees-warn",
"smooth-frogs-decide",
"sour-pumas-reply",
"spotty-olives-share",
"stale-bats-end",
"stale-walls-cross",
"strange-suits-glow",
"tame-pants-end",
"tender-peas-smoke",
"thick-snails-travel",
"thirty-fireants-cheer",
"tiny-cobras-look",
"tricky-donkeys-do",
"tricky-islands-wonder",
"twenty-beans-laugh",
"violet-zebras-thank"
"unlucky-clouds-build",
"violet-zebras-thank",
"warm-plums-beg",
"wicked-elephants-think"
]
}
+7
View File
@@ -0,0 +1,7 @@
---
'@backstage/plugin-azure-devops-backend': patch
'@backstage/plugin-azure-devops-common': patch
'@backstage/plugin-azure-devops': patch
---
Introduced new `AzureDevOpsAnnotatorProcessor` that adds the needed annotations automatically. Also, moved constants to common package so they can be shared more easily
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/frontend-app-api': patch
---
Migrate analytics route tracker component.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/cli': minor
---
Updates the ESLint config to ignore issues created by generated files in `**/src/generated/**`.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog': patch
---
Adding in spec.type chip to search results for clarity
+10
View File
@@ -0,0 +1,10 @@
---
'@backstage/plugin-catalog-react': patch
'@backstage/plugin-user-settings': patch
'@backstage/plugin-graphiql': patch
'@backstage/plugin-catalog': patch
'@backstage/plugin-search': patch
'@backstage/plugin-home': patch
---
Updates to the `/alpha` exports to match the extension input wrapping change.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/cli': patch
---
Updated dependency `vite-plugin-node-polyfills` to `^0.17.0`.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/cli': patch
---
Updated dependency `@rollup/plugin-node-resolve` to `^15.0.0`.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/repo-tools': patch
---
Updated dependency `@stoplight/types` to `^14.0.0`.
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/backend-common': patch
---
Updated dependency `archiver` to `^6.0.0`.
Updated dependency `@types/archiver` to `^6.0.0`.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/cli': patch
---
Updated dependency `@rollup/plugin-json` to `^6.0.0`.
+11
View File
@@ -0,0 +1,11 @@
---
'@backstage/plugin-home-react': patch
'@backstage/plugin-home': patch
'@backstage/plugin-scaffolder-react': patch
'@backstage/plugin-scaffolder': patch
---
Updated dependency `@rjsf/utils` to `5.14.3`.
Updated dependency `@rjsf/core` to `5.14.3`.
Updated dependency `@rjsf/material-ui` to `5.14.3`.
Updated dependency `@rjsf/validator-ajv8` to `5.14.3`.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog-backend': patch
---
Updated dependency `@types/glob` to `^8.0.0`.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/cli': patch
---
Updated dependency `@typescript-eslint/eslint-plugin` to `6.12.0`.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/core-components': patch
---
Updated dependency `linkifyjs` to `4.1.3`.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/cli': patch
---
Updated dependency `@rollup/plugin-commonjs` to `^25.0.0`.
+10
View File
@@ -0,0 +1,10 @@
---
'@backstage/core-components': patch
'@backstage/plugin-entity-validation': patch
'@backstage/plugin-gcp-projects': patch
'@backstage/plugin-scaffolder-react': patch
'@backstage/plugin-scaffolder': patch
'@backstage/plugin-techdocs-module-addons-contrib': patch
---
Updated dependency `@react-hookz/web` to `^23.0.0`.
+12
View File
@@ -0,0 +1,12 @@
---
'@backstage/plugin-auth-backend-module-atlassian-provider': patch
'@backstage/plugin-auth-backend-module-gitlab-provider': patch
'@backstage/plugin-auth-backend-module-microsoft-provider': patch
'@backstage/plugin-auth-backend-module-oauth2-provider': patch
'@backstage/plugin-auth-backend-module-okta-provider': patch
'@backstage/plugin-auth-backend-module-pinniped-provider': patch
'@backstage/plugin-auth-backend': patch
'@backstage/plugin-auth-node': patch
---
Updated dependency `passport` to `^0.7.0`.
+17
View File
@@ -0,0 +1,17 @@
---
'@backstage/plugin-catalog-import': patch
'@backstage/plugin-stack-overflow': patch
'@backstage/plugin-catalog-react': patch
'@backstage/plugin-user-settings': patch
'@backstage/plugin-search-react': patch
'@backstage/plugin-tech-radar': patch
'@backstage/plugin-graphiql': patch
'@backstage/plugin-techdocs': patch
'@backstage/plugin-catalog': patch
'@backstage/plugin-explore': patch
'@backstage/plugin-search': patch
'@backstage/plugin-home': patch
'@backstage/plugin-adr': patch
---
Refactor of the alpha exports due to API change in how extension IDs are constructed.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog-backend-module-incremental-ingestion': patch
---
Ensure that cursors always come back as JSON on sqlite too
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/create-app': patch
'@backstage/plugin-circleci': patch
---
CircelCI plugin moved permanently
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/repo-tools': minor
---
Adds a new command `schema openapi generate-client` that creates a Typescript client with Backstage flavor, including the discovery API and fetch API. This command doesn't currently generate a complete client and needs to be wrapped or exported manually by a separate Backstage plugin. See `@backstage/catalog-client/src/generated` for example output.
+7
View File
@@ -0,0 +1,7 @@
---
'@backstage/plugin-user-settings': patch
'@backstage/plugin-catalog': patch
'@backstage/plugin-adr': patch
---
Updated alpha translation message keys to use nested format and camel case.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/frontend-plugin-api': patch
---
Migrate analytics api and context files.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder': patch
---
Fixing `headerOptions` not being passed through the `TemplatePage` component
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-techdocs-node': patch
---
Bumped the default TechDocs docker image version to the latest which was released several month ago
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/frontend-app-api': patch
---
Updates to match the introduction of `ExtensionDefinition` and new extension ID naming patterns.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/cli': patch
---
Switched the `@typescript-eslint/eslint-plugin` dependency back to using a `^` version range.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/core-compat-api': patch
---
Updates for compatibility with the new extension IDs.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-pagerduty': minor
---
This package has been deprecated, consider using [@pagerduty/backstage-plugin](https://github.com/pagerduty/backstage-plugin) instead.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/frontend-plugin-api': minor
---
Extension inputs are now wrapped into an additional object when passed to the extension factory, with the previous values being available at the `output` property. The `ExtensionInputValues` type has also been replaced by `ResolvedExtensionInputs`.
+7
View File
@@ -0,0 +1,7 @@
---
'@backstage/frontend-plugin-api': minor
---
**BREAKING**: This version changes how extensions are created and how their IDs are determined. The `createExtension` function now accepts `kind`, `namespace` and `name` instead of `id`. All of the new options are optional, and are used to construct the final extension ID. By convention extension creators should set the `kind` to match their own name, for example `createNavItemExtension` sets the kind `nav-item`.
The `createExtension` function as well as all extension creators now also return an `ExtensionDefinition` rather than an `Extension`, which in turn needs to be passed to `createPlugin` or `createExtensionOverrides` to be used.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder-backend-module-sentry': patch
---
Added examples for `sentry:project:create` scaffolder action and unit tests.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog': minor
---
Properly support both function- and string-form visibility filter expressions in the new extensions exported via `/alpha`.
+7
View File
@@ -0,0 +1,7 @@
---
'@backstage/plugin-catalog-react': patch
---
Breaking alpha-API change to entity visibility filter functions to accept a bare entity as their first argument, instead of an object with an entity property.
Functions that accept such filters now also support the string expression form of filters.
+5
View File
@@ -0,0 +1,5 @@
---
'@techdocs/cli': minor
---
Support passing additional `mkdocs-server` CLI parameters (`--dirtyreload`, `--strict` and `--clean`) when run in containerized mode.
+7
View File
@@ -0,0 +1,7 @@
---
'@backstage/plugin-azure-devops-backend': minor
---
**BREAKING** New `fromConfig` static method must be used now when creating an instance of the `AzureDevOpsApi`
Added support for using the `AzureDevOpsCredentialsProvider`
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder-react': patch
---
Fixed issue for showing undefined for hidden form items
+35
View File
@@ -0,0 +1,35 @@
---
'@backstage/plugin-catalog-backend-module-scaffolder-entity-model': patch
'@backstage/plugin-search-backend-module-stack-overflow-collator': patch
'@backstage/plugin-catalog-backend-module-incremental-ingestion': patch
'@backstage/plugin-permission-backend-module-allow-all-policy': patch
'@backstage/plugin-auth-backend-module-oauth2-proxy-provider': patch
'@backstage/plugin-catalog-backend-module-bitbucket-server': patch
'@backstage/plugin-catalog-backend-module-bitbucket-cloud': patch
'@backstage/plugin-events-backend-module-bitbucket-cloud': patch
'@backstage/plugin-auth-backend-module-gcp-iap-provider': patch
'@backstage/plugin-auth-backend-module-google-provider': patch
'@backstage/plugin-search-backend-module-elasticsearch': patch
'@backstage/plugin-catalog-backend-module-unprocessed': patch
'@backstage/plugin-catalog-backend-module-github-org': patch
'@backstage/plugin-catalog-backend-module-puppetdb': patch
'@backstage/plugin-search-backend-module-techdocs': patch
'@backstage/plugin-catalog-backend-module-gerrit': patch
'@backstage/plugin-catalog-backend-module-github': patch
'@backstage/plugin-catalog-backend-module-gitlab': patch
'@backstage/plugin-events-backend-module-aws-sqs': patch
'@backstage/plugin-search-backend-module-catalog': patch
'@backstage/plugin-search-backend-module-explore': patch
'@backstage/plugin-catalog-backend-module-azure': patch
'@backstage/plugin-events-backend-module-gerrit': patch
'@backstage/plugin-events-backend-module-github': patch
'@backstage/plugin-events-backend-module-gitlab': patch
'@backstage/plugin-events-backend-module-azure': patch
'@backstage/plugin-catalog-backend-module-aws': patch
'@backstage/plugin-catalog-backend-module-gcp': patch
'@backstage/plugin-search-backend-module-pg': patch
'@backstage/backend-test-utils': patch
'@backstage/plugin-events-backend': patch
---
Switched module ID to use kebab-case.
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/plugin-catalog-backend': minor
'@backstage/plugin-catalog-node': minor
---
Permission rules can now be added for the Catalog plugin through the `CatalogPermissionExtensionPoint` interface.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog-backend': patch
---
Deprecated `EntitiesSearchFilter` and `EntityFilter`, which can now be imported from `@backstage/plugin-catalog-node` instead
+1 -1
View File
@@ -61,7 +61,7 @@ jobs:
with:
context: './example-app'
file: ./example-app/packages/backend/Dockerfile
push: ${{ github.event_name == "repository_dispatch" && github.event.action == "release-published" }}
push: ${{ (github.event_name == "repository_dispatch") && (github.event.action == "release-published") }}
platforms: linux/amd64,linux/arm64
tags: |
ghcr.io/${{ github.repository_owner }}/backstage:latest
+1 -1
View File
@@ -66,7 +66,7 @@ jobs:
run: ls microsite/build && ls microsite/build/storybook
- name: Deploy both microsite and storybook to gh-pages
uses: JamesIves/github-pages-deploy-action@a1ea191d508feb8485aceba848389d49f80ca2dc # v4.4.3
uses: JamesIves/github-pages-deploy-action@65b5dfd4f5bcd3a7403bbc2959c144256167464e # v4.5.0
with:
branch: gh-pages
folder: microsite/build
+1 -1
View File
@@ -60,7 +60,7 @@ jobs:
- name: Docker metadata
id: meta
uses: docker/metadata-action@96383f45573cb7f253c731d3b3ab81c87ef81934 # v5.0.0
uses: docker/metadata-action@e6428a5c4e294a61438ed7f43155db912025b6b3 # v5.2.0
with:
images: registry.uffizzi.com/${{ env.UUID_TAG_APP }}
tags: type=raw,value=60d
+1 -1
View File
@@ -5,7 +5,7 @@ coverage
*.hbs
templates
api-report.md
*-api-report.md
api-report-*.md
cli-report.md
plugins/scaffolder-backend/sample-templates
.vscode
+10
View File
@@ -349,3 +349,13 @@ type LabelStyle = 'normal' | 'thin';
// Output, since it's an exported constant
const LABEL_SIZE: number;
```
## Plugin Directory Submissions
When reviewing Plugin Directory submissions please consider the following:
- Check to make sure they have the rights for any icon being used. This is mostly for clearly copyrighted logos, for example the Microsoft Azure DevOps logo
- Make sure the package has been published on the NPM registry.
- Make sure the package on NPM has a link back to the code repo, this helps provide confidence that it's the right package.
- If they use an [NPM scope](https://docs.npmjs.com/about-scopes) make sure it that matches either the Organization name or user name, this provides trust in the plugin
- If the plugin has both a frontend and backend make sure that the documentation notes that.
+3 -3
View File
@@ -1,6 +1,6 @@
dependencies:
- name: postgresql
repository: https://charts.bitnami.com/bitnami
version: 13.2.12
digest: sha256:3add6e2f2c055e415403ebbba7740113ee052b87ad72e59b35b301df2098d41e
generated: "2023-11-20T12:09:32.786270903Z"
version: 13.2.21
digest: sha256:8f8b0fe6c2e8f640237f61dcfab5821865d67753af06a782db7d61372cbbb9b9
generated: "2023-11-27T22:30:42.837126565Z"
+1 -1
View File
@@ -18,7 +18,7 @@ sources:
dependencies:
- name: postgresql
condition: postgresql.enabled
version: 13.2.12
version: 13.2.21
repository: https://charts.bitnami.com/bitnami
maintainers:
+6
View File
@@ -236,6 +236,12 @@ export default async function createPlugin(
// an entity you will need to replace this step as well.
//
// You might also replace it if you for example want to filter out certain groups.
//
// Note that `getDefaultOwnershipEntityRefs` only includes groups to which the
// user has a direct MEMBER_OF relationship. It's perfectly fine to include
// groups that the user is transitively part of in the claims array, but the
// catalog doesn't currently provide a direct way of accessing this list of
// groups.
const ownershipRefs = getDefaultOwnershipEntityRefs(entity);
// The last step is to issue the token, where we might provide more options in the future.
@@ -25,8 +25,8 @@ import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node'
import { MyCustomProcessor } from './MyCustomProcessor';
export const catalogModuleExampleCustomProcessor = createBackendModule({
moduleId: 'exampleCustomProcessor',
pluginId: 'catalog',
moduleId: 'example-custom-processor',
register(env) {
env.registerInit({
deps: {
@@ -10,18 +10,20 @@ description: Naming patterns in the backend system
These are the naming patterns to adhere to within the backend system. They help us keep exports consistent across packages and make it easier to understand the usage and intent of exports.
As a rule, all names should be camel case, with the exceptions of plugin and module IDs, which should be kebab case.
### Plugins
| Description | Pattern | Examples |
| ----------- | ------------ | ----------------------------------- |
| export | `<id>Plugin` | `catalogPlugin`, `scaffolderPlugin` |
| ID | `'<id>'` | `'catalog'`, `'scaffolder'` |
| Description | Pattern | Examples |
| ----------- | ----------------- | ------------------------------------- |
| export | `<camelId>Plugin` | `catalogPlugin`, `userSettingsPlugin` |
| ID | `'<kebab-id>'` | `'catalog'`, `'user-settings'` |
Example:
```ts
export const catalogPlugin = createBackendPlugin({
pluginId: 'catalog',
export const userSettingsPlugin = createBackendPlugin({
pluginId: 'user-settings',
...
})
```
@@ -31,14 +33,14 @@ export const catalogPlugin = createBackendPlugin({
| Description | Pattern | Examples |
| ----------- | ---------------------------- | ----------------------------------- |
| export | `<pluginId>Module<ModuleId>` | `catalogModuleGithubEntityProvider` |
| ID | `'<moduleId>'` | `'githubEntityProvider'` |
| ID | `'<module-id>'` | `'github-entity-provider'` |
Example:
```ts
export const catalogModuleGithubEntityProvider = createBackendModule({
pluginId: 'catalog',
moduleId: 'githubEntityProvider',
moduleId: 'github-entity-provider',
...
})
```
@@ -297,7 +297,7 @@ import { microsoftGraphOrgEntityProviderTransformExtensionPoint } from '@backsta
backend.add(
createBackendModule({
pluginId: 'catalog',
moduleId: 'microsoftGraphExtensions',
moduleId: 'microsoft-graph-extensions',
register(env) {
env.registerInit({
deps: {
@@ -337,7 +337,7 @@ import { createBackendModule } from '@backstage/backend-plugin-api';
/* highlight-add-start */
const catalogModuleCustomExtensions = createBackendModule({
pluginId: 'catalog', // name of the plugin that the module is targeting
moduleId: 'customExtensions',
moduleId: 'custom-extensions',
register(env) {
env.registerInit({
deps: {
@@ -406,7 +406,7 @@ import { createBackendModule } from '@backstage/backend-plugin-api';
/* highlight-add-start */
const eventsModuleCustomExtensions = createBackendModule({
pluginId: 'events', // name of the plugin that the module is targeting
moduleId: 'customExtensions',
moduleId: 'custom-extensions',
register(env) {
env.registerInit({
deps: {
@@ -471,7 +471,7 @@ import { createBackendModule } from '@backstage/backend-plugin-api';
/* highlight-add-start */
const scaffolderModuleCustomExtensions = createBackendModule({
pluginId: 'scaffolder', // name of the plugin that the module is targeting
moduleId: 'customExtensions',
moduleId: 'custom-extensions',
register(env) {
env.registerInit({
deps: {
@@ -104,8 +104,8 @@ import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node'
import { MyCustomProcessor } from './MyCustomProcessor';
export const catalogModuleExampleCustomProcessor = createBackendModule({
moduleId: 'exampleCustomProcessor',
pluginId: 'catalog',
moduleId: 'example-custom-processor',
register(env) {
env.registerInit({
deps: {
@@ -196,7 +196,7 @@ import { GoogleContainerEngineSupplier } from './GoogleContainerEngineSupplier';
export default createBackendModule({
pluginId: 'kubernetes',
moduleId: 'gke.supplier',
moduleId: 'gke-supplier',
register(env) {
env.registerInit({
deps: {
+2 -2
View File
@@ -31,8 +31,8 @@ with a `Bearer` token, which should then be the Backstage token returned by the
These are the endpoints that deal with reading of entities directly. What it
exposes are final entities - i.e. the output of all processing and the stitching
process, not the raw originally ingested entity data. See [The Life of an
Entity](life-of-an-entity.md) for more details about this process and
process, not the raw originally ingested entity data. See
[The Life of an Entity](./life-of-an-entity.md) for more details about this process and
distinction.
### `GET /entities`
+3
View File
@@ -91,6 +91,9 @@ Options:
--docker-option <DOCKER_OPTION...> Extra options to pass to the docker run command, e.g. "--add-host=internal.host:192.168.11.12"
(can be added multiple times).
--no-docker Do not use Docker, use MkDocs executable in current user environment.
--mkdocs-parameter-clean Pass "--clean" parameter to mkdocs server running in containerized environment.
--mkdocs-parameter-dirtyreload Pass "--dirtyreload" parameter to mkdocs server running in containerized environment.
--mkdocs-parameter-strict Pass "--strict" parameter to mkdocs server running in containerized environment.
--mkdocs-port <PORT> Port for MkDocs server to use (default: "8000")
--preview-app-bundle-path <PATH_TO_BUNDLE> Preview documentation using a web app other than the included one.
--preview-app-port <PORT> Port where the preview will be served.
+4
View File
@@ -484,3 +484,7 @@ You can see more ways to use this in the [Storybook Sidebar examples](https://ba
In addition to a custom theme, a custom logo, you can also customize the
homepage of your app. Read the full guide on the [next page](homepage.md).
## Migrating to Material UI v5
We now support Material UI v5 in Backstage. Check out our [migration guide](../tutorials/migrate-to-mui5.md) to get started.
+5
View File
@@ -290,6 +290,11 @@ otherwise something went terribly wrong.
## Create a new component using a software template
> Note: if you're running Backstage with Node 20 or later, you'll need to pass the flag `--no-node-snapshot` to Node in order to
> use the templates feature.
> One way to do this is to specify the `NODE_OPTIONS` environment variable before starting Backstage:
> `export NODE_OPTIONS=--no-node-snapshot`
- Go to `create` and choose to create a website with the `Example Node.js Template`
- Type in a name, let's use `tutorial` and click `Next Step`
@@ -15,7 +15,7 @@ The following steps assume that you have
to it.
We are using the
[CircleCI](https://github.com/backstage/backstage/blob/master/plugins/circleci/README.md)
[CircleCI](https://github.com/CircleCI-Public/backstage-plugin/tree/main/plugins/circleci)
plugin in this example, which is designed to show CI/CD pipeline information attached
to an entity in the software catalog.
@@ -23,7 +23,7 @@ to an entity in the software catalog.
```bash
# From your Backstage root directory
yarn add --cwd packages/app @backstage/plugin-circleci
yarn add --cwd packages/app @circleci/backstage-plugin
```
Note the plugin is added to the `app` package, rather than the root
@@ -38,7 +38,7 @@ to an entity in the software catalog.
import {
EntityCircleCIContent,
isCircleCIAvailable,
} from '@backstage/plugin-circleci';
} from '@circleci/backstage-plugin';
/* highlight-add-end */
const cicdContent = (
+2 -3
View File
@@ -57,6 +57,7 @@ In your `launch.json`, add a new entry with the following,
```jsonc
{
"name": "Start Backend",
"type": "node",
"request": "launch",
"args": [
"package",
@@ -67,8 +68,6 @@ In your `launch.json`, add a new entry with the following,
"skipFiles": [
"<node_internals>/**"
],
"type": "node"
"console": "integratedTerminal"
},
```
You may notice that the normal logs mentioned above do not get logged, this is an issue with the logging library we're using, `winston`, and is not easily solved. See [this thread](https://github.com/winstonjs/winston/issues/1544) for more information.
+25
View File
@@ -0,0 +1,25 @@
## How to generate a client with `repo-tools schema openapi generate-client`?
### Prerequisites
1. Add your plugin ID as the last `servers` item, like this,
```yaml
servers:
# first value, used for OpenAPI router validation.
- url: /
# final value, pluginId.
- url: catalog
```
2. Find or create a new plugin to house your new generated client. Currently, we do not support generating an entirely new plugin and instead just generate client files.
### Generating your client
1. Run `yarn backstage-repo-tools schema openapi generate-client --input-spec <file> --output-directory <directory>`. This will create a new folder in `<directory>/src/generated` to house the generated content.
2. You should use the generated files as follows,
- `apis/DefaultApi.client.ts` - this is the client that you should use. It has types for all of the various operations on your API.
- `models/*` - These are the types generated from your OpenAPI file, ideally you should not need to use these directly and can instead use the inferred types from `apis/DefaultApi.client.ts`.
- everything else is directory specific and shouldn't be touched.
+12 -1
View File
@@ -21,7 +21,18 @@ description: A brief description of the plugin. # Max 170 characters
documentation: # A link to your documentation E.g. Your github README
iconUrl: # Used as the src attribute for your logo.
# You can provide an external url or add your logo under static/img and provide a path
# relative to static/ e.g. img/my-logo.png
# relative to static/ e.g. /img/my-logo.png
npmPackageName: # Your npm package name E.g. '@backstage/plugin-<etc>' quotes are required
addedDate: # The date plugin added to directory E.g. '2022-10-01' quotes are required
```
## Submission Tips
Here are a few tips to help speed up the review process when you submit your plugin:
- For any icon that you use make sure you have the proper rights to use it.
- Make sure that your package had been published on the NPM registry and that it's public.
- Make sure your package on NPM has a link back to your code repo, this helps provide confidence that it's the right package.
- Where possible, please use an [NPM scope](https://docs.npmjs.com/about-scopes) that matches either your Organization name or user name, this provides trust in the plugin
- If your plugin has both a frontend and backend link the documentation to the frontend package but make sure it mentioned needing to install the backend package.
- Where possible include a screenshot of the features in you plugin documentation, it really does help when deciding to use a plugin.
+11 -6
View File
@@ -10,7 +10,7 @@ The Backstage core function provides internationalization for plugins
## For a plugin developer
When you are creating your plugin, you have the possibility to use `createTranslationRef` to define all messages for your plugin. For example
When you are creating your plugin, you have the possibility to use `createTranslationRef` to define all messages for your plugin. For example:
```ts
import { createTranslationRef } from '@backstage/core-plugin-api/alpha';
@@ -19,8 +19,13 @@ import { createTranslationRef } from '@backstage/core-plugin-api/alpha';
export const myPluginTranslationRef = createTranslationRef({
id: 'plugin.my-plugin',
messages: {
index_page_title: 'All your components',
create_component_button_label: 'Create new component',
indexPage: {
title: 'All your components',
createButtonTitle: 'Create new component',
},
entityPage: {
notFound: 'Entity not found',
},
},
});
```
@@ -33,9 +38,9 @@ import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
const { t } = useTranslationRef(myPluginTranslationRef);
return (
<PageHeader title={t('index_page_title')}>
<PageHeader title={t('indexPage.title')}>
<Button onClick={handleCreateComponent}>
{t('create_component_button_label')}
{t('indexPage.createButtonTitle')}
</Button>
</PageHeader>
);
@@ -53,7 +58,7 @@ In an app you can both override the default messages, as well as register transl
+ createTranslationMessages({
+ ref: myPluginTranslationRef,
+ messages: {
+ create_component_button_label: 'Create new entity',
+ 'indexPage.createButtonTitle': 'Create new entity',
+ },
+ }),
+ createTranslationResource({
+1 -1
View File
@@ -147,8 +147,8 @@ import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node'
import { MyCustomProcessor } from './processor';
export const exampleCustomProcessorCatalogModule = createBackendModule({
moduleId: 'exampleCustomProcessor',
pluginId: 'catalog',
moduleId: 'example-custom-processor',
register(env) {
env.registerInit({
deps: {
File diff suppressed because it is too large Load Diff
+65
View File
@@ -0,0 +1,65 @@
---
id: migrate-to-mui5
title: Migrating from Material UI v4 to v5
description: Additional resources for the Material UI v5 migration guide specifically for Backstage
---
Backstage supports developing new plugins or components using Material UI v5. At the same time, large parts of the application as well as existing plugins will still be using Material UI v4. To support Material UI v4 and v5 at the same time, we have introduced a new concept called the `UnifiedTheme`. The goal of the `UnifiedTheme` is to allow gradual migration by running both versions in parallel, applying theme options similarly & supporting potential future versions of Material UI.
By default, the `UnifiedThemeProvider` is already used. If you add a custom theme in your `createApp` function, you would need to replace the Material UI `ThemeProvider` with the `UnifiedThemeProvider`:
```diff ts
+ import import {
+ UnifiedThemeProvider,
+ themes as builtinThemes,
+ } from '@backstage/theme';
const app = createApp({
// ...
themes: [
{
// ...
provider: ({ children }) => (
- <ThemeProvider theme={lightTheme}>.
- <CssBaseline>{children}</CssBaseline>.
- </ThemeProvider
+ <UnifiedThemeProvider theme={builtinThemes.light} children={children} />
),
}
]
});
```
Before making specific changes to your Backstage instance, it might be helpful to take a look at the [Migration Guide provided by Material UI](https://mui.com/material-ui/migration/migration-v4/) first. It breaks down the differences between v4 and v5, and will make it easier to understand the impact on your Backstage instance & plugins.
It is worth noting that we are still using `@mui/styles` & `jss`. You may stumble upon documentation for migrating to `emotion` when using `makeStyles` or `withStyles`. It is not necessary to switch to `emotion`.
Important to keep in mind is that Material UI v5 is meant to be used with React Version 17 or higher. This means if you intend to use the Material UI v5 components in your plugins, you have to enforce React Version to be at least 17 for these plugins:
```json
...
"peerDependencies": {
"react": "^17.0.0 || ^18.0.0",
"react-dom": "^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
...
```
To comply with Material UI recommendations, we are enforcing a new linting rule that favors standard imports over named imports and also restricts 3rd-level imports as they are considered private ([Guide: Minimizing Bundle Size](https://mui.com/material-ui/guides/minimizing-bundle-size)).
There are `core-components` as well as components exported from Backstage `*-react` plugins written in Material UI v4, which expect Material UI components as props. In these cases you will still be forced to use Material UI v4.
For current known issues with the Material UI v5 migration, follow our [Milestone on GitHub](https://github.com/backstage/backstage/milestone/40). Please open a new issue if you run into different problems.
### Plugins
To migrate your plugin to Material UI v5, you can build on the resources available.
1. Manually fix the imports from named to default imports to match the new [linting rules for minimizing bundle size](https://mui.com/material-ui/guides/minimizing-bundle-size).
2. Run the migration `codemod` for the path of the specific plugin: `npx @mui/codemod v5.0.0/preset-safe plugins/<path>`.
3. Take a look at possible `TODO:` items the `codemod` could not fix.
4. Remove types & methods from `@backstage/theme` which are marked as `@deprecated`.
5. Ensure you are using `"react": "^17.0.0"` (or newer) as a peer dependency
You can follow the [migration of the GraphiQL plugin](https://github.com/backstage/backstage/pull/17696) as an example of a plugin migration.
+4 -4
View File
@@ -1,12 +1,12 @@
---
title: CircleCI
author: Spotify
authorUrl: https://github.com/spotify
author: CircleCI
authorUrl: https://circleci.com/
category: CI/CD
description: Automate your development process with CI hosted in the cloud or on a private server.
documentation: https://github.com/backstage/backstage/tree/master/plugins/circleci
documentation: https://github.com/CircleCI-Public/backstage-plugin/tree/main/plugins/circleci
iconUrl: /img/circleci.png
npmPackageName: '@backstage/plugin-circleci'
npmPackageName: '@circleci/backstage-plugin'
tags:
- ci
- cd
+10
View File
@@ -0,0 +1,10 @@
---
title: HCP Consul
author: Hashicorp
authorUrl: https://www.hashicorp.com/
category: Infrastructure
description: View your HCP Consul clusters, services, instances in Backstage.
documentation: https://github.com/hashicorp-forge/backstage-plugin-hcp-consul/tree/main
iconUrl: /img/hcp-consul.svg
npmPackageName: '@hashicorp/plugin-hcp-consul'
addedDate: '2023-11-24'

Some files were not shown because too many files have changed in this diff Show More