Merge branch 'master' into feature/gitlab-issues
Signed-off-by: Elaine Mattos <79633988+elaine-mattos@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/frontend-plugin-api': patch
|
||||
---
|
||||
|
||||
Add the `FrontendFeature` type, which is the union of `BackstagePlugin` and `ExtensionOverrides`
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/frontend-plugin-api': patch
|
||||
---
|
||||
|
||||
Update alpha component ref type to be more specific than any, delete boot page component and use new plugin type for error boundary component extensions.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/frontend-app-api': patch
|
||||
---
|
||||
|
||||
Add support for translation extensions.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/frontend-app-api': patch
|
||||
'@backstage/core-compat-api': patch
|
||||
---
|
||||
|
||||
Leverage the new `FrontendFeature` type to simplify interfaces
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Enable the `tsx` loader to work on Node 18.19 and up
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-github': patch
|
||||
---
|
||||
|
||||
The `scaffolder.defaultCommitMessage` config value is now being used if provided and uses "initial commit" when it is not provided.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-gitlab': patch
|
||||
---
|
||||
|
||||
Extract some more actions to this library
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/frontend-test-utils': patch
|
||||
---
|
||||
|
||||
The `createExtensionTester` helper is now able to render more than one route in the test app.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/create-app': patch
|
||||
---
|
||||
|
||||
Bumped create-app version.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/theme': patch
|
||||
---
|
||||
|
||||
Align Material UI v5 `Paper` component background color in dark mode to v4.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/plugin-user-settings-backend': patch
|
||||
'@backstage/plugin-home': patch
|
||||
---
|
||||
|
||||
Change user settings backend plugin id and fix when using user setting backend home page first will cause edit page loop render
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-gerrit': patch
|
||||
---
|
||||
|
||||
Add dry run support for the `publish:gerrit` action.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/config-loader': minor
|
||||
---
|
||||
|
||||
Add "path" to `TransformFunc` context
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-react': patch
|
||||
---
|
||||
|
||||
Fix bug where `properties` is set to empty object when it should be empty for schema dependencies
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-techdocs-backend': patch
|
||||
---
|
||||
|
||||
Regenerates a fresh token for each call to the search index when collating techdocs.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-analytics-module-ga4': patch
|
||||
---
|
||||
|
||||
Disabled `send_page_view` to get rid of events duplication
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/frontend-app-api': minor
|
||||
---
|
||||
|
||||
Removed `featureLoader` from `createApp`, `features` instead accepts both `FrontendFeature` and `CreateAppFeatureLoader`
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/frontend-test-utils': patch
|
||||
---
|
||||
|
||||
Migrate `renderInTestApp` to `@backstage/frontend-test-utils` for testing individual React components in an app.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-org': patch
|
||||
---
|
||||
|
||||
Fix issue where members inside of `<EntityMembersListCard>` would be rendered as squished when the card itself was shrunk down.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-react': patch
|
||||
---
|
||||
|
||||
Grouped all `/alpha` extension data reference exports under `catalogExtensionData`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/repo-tools': patch
|
||||
---
|
||||
|
||||
Updates the `schema openapi generate-client` command to export all generated types from the generated directory.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder': minor
|
||||
---
|
||||
|
||||
Add a new git repository url picker for `gitea`. This `GiteaRepoPicker` can be used in a template to scaffold a project to be cloned using gitea.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/frontend-app-api': patch
|
||||
---
|
||||
|
||||
Use the new plugin type for error boundary components.
|
||||
@@ -0,0 +1,11 @@
|
||||
---
|
||||
'@backstage/repo-tools': patch
|
||||
---
|
||||
|
||||
The `api-reports` command now checks for api report files that no longer apply.
|
||||
If it finds such files, it's treated basically the same as report errors do, and
|
||||
the check fails.
|
||||
|
||||
For example, if you had an `api-report-alpha.md` but then removed the alpha
|
||||
export, the reports generator would now report that this file needs to be
|
||||
deleted.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/core-components': patch
|
||||
---
|
||||
|
||||
Fixes a problem where the `LogViewer` was not able to handle very large logs
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder': minor
|
||||
'@backstage/plugin-scaffolder-react': minor
|
||||
---
|
||||
|
||||
Added support for dealing with user provided secrets using a new field extension `ui:field: Secret`
|
||||
|
||||
The `@alpha` exports of `Stepper` now needs to be wrapped in a `SecretsContextProvider` for access to secrets.
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/plugin-azure-devops-backend': patch
|
||||
'@backstage/plugin-azure-devops-common': patch
|
||||
'@backstage/plugin-azure-devops': patch
|
||||
---
|
||||
|
||||
Added multi-org support
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
'@backstage/plugin-scaffolder-node': patch
|
||||
---
|
||||
|
||||
Refactor some methods to `-node` instead and use the new external modules
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/plugin-catalog': patch
|
||||
'@backstage/plugin-org': patch
|
||||
---
|
||||
|
||||
Add permission check to catalog create and refresh button
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/core-compat-api': patch
|
||||
---
|
||||
|
||||
Added `compatWrapper`, which can be used to wrap any React element to provide bi-directional interoperability between the `@backstage/core-*-api` and `@backstage/frontend-*-api` APIs.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Updating template generation for scaffolder module
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-explore': patch
|
||||
---
|
||||
|
||||
Added option to set `Direction` for the graph in the `GroupsDiagram`
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-vault-backend': patch
|
||||
---
|
||||
|
||||
Updated to test using PostgreSQL 12 and 16
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/core-compat-api': minor
|
||||
---
|
||||
|
||||
Discover plugins and routes recursively beneath the root routes in `collectLecacyRoutes`
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog': patch
|
||||
---
|
||||
|
||||
Internal naming updates for `/alpha` exports.
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
'@backstage/core-compat-api': minor
|
||||
'@backstage/frontend-plugin-api': minor
|
||||
'@backstage/frontend-test-utils': minor
|
||||
'@backstage/frontend-app-api': minor
|
||||
---
|
||||
|
||||
Switched all core extensions to instead use the namespace `'app'`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/backend-common': patch
|
||||
---
|
||||
|
||||
Fixed the AwsS3UrlReader host regex and host to allow the S3 reading for CN AWS domain
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-azure-devops': patch
|
||||
---
|
||||
|
||||
Added support for annotations that use a subpath for the host. Also validated that the annotations have the correct number of slashes.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/frontend-app-api': patch
|
||||
---
|
||||
|
||||
A `configLoader` passed to `createApp` now returns an object, to make room for future expansion
|
||||
@@ -0,0 +1,12 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes-node': patch
|
||||
'@backstage/plugin-kubernetes-backend': patch
|
||||
---
|
||||
|
||||
The `kubernetes-node` plugin has been modified to house a new extension points for Kubernetes backend plugin;
|
||||
`KubernetesClusterSupplierExtensionPoint` is introduced .
|
||||
`kubernetesAuthStrategyExtensionPoint` is introduced .
|
||||
`kubernetesFetcherExtensionPoint` is introduced .
|
||||
`kubernetesServiceLocatorExtensionPoint` is introduced .
|
||||
|
||||
The `kubernetes-backend` plugin was modified to use this new extension point.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-azure-devops-backend': patch
|
||||
---
|
||||
|
||||
Updated encoding of Org to use `encodeURIComponent` when building URL used to get credentials from credential provider
|
||||
@@ -0,0 +1,12 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-import': patch
|
||||
'@backstage/plugin-user-settings': patch
|
||||
'@backstage/plugin-tech-radar': patch
|
||||
'@backstage/plugin-graphiql': patch
|
||||
'@backstage/plugin-techdocs': patch
|
||||
'@backstage/plugin-catalog': patch
|
||||
'@backstage/plugin-search': patch
|
||||
'@backstage/plugin-home': patch
|
||||
---
|
||||
|
||||
Wrap `/alpha` export extension elements in backwards compatibility wrapper.
|
||||
@@ -0,0 +1,15 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-import': patch
|
||||
'@backstage/plugin-stack-overflow': 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-explore': patch
|
||||
'@backstage/plugin-search': patch
|
||||
'@backstage/plugin-home': patch
|
||||
'@backstage/plugin-adr': patch
|
||||
---
|
||||
|
||||
Updated `/alpha` exports to fit new naming patterns.
|
||||
+72
-3
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"mode": "pre",
|
||||
"mode": "exit",
|
||||
"tag": "next",
|
||||
"initialVersions": {
|
||||
"example-app": "0.2.89",
|
||||
@@ -257,7 +257,11 @@
|
||||
"@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-oauth2-proxy-provider": "0.0.0",
|
||||
"@backstage/plugin-auth-backend-module-vmware-cloud-provider": "0.0.0"
|
||||
"@backstage/plugin-auth-backend-module-vmware-cloud-provider": "0.0.0",
|
||||
"@backstage/plugin-scaffolder-backend-module-azure": "0.0.0",
|
||||
"@backstage/plugin-scaffolder-backend-module-bitbucket": "0.0.0",
|
||||
"@backstage/plugin-scaffolder-backend-module-gerrit": "0.0.0",
|
||||
"@backstage/plugin-scaffolder-backend-module-github": "0.0.0"
|
||||
},
|
||||
"changesets": [
|
||||
"angry-eagles-end",
|
||||
@@ -266,8 +270,10 @@
|
||||
"angry-walls-juggle",
|
||||
"big-swans-guess",
|
||||
"blue-meals-chew",
|
||||
"brave-beers-happen",
|
||||
"brave-parents-stare",
|
||||
"brave-socks-raise",
|
||||
"breezy-houses-eat",
|
||||
"breezy-pans-glow",
|
||||
"bright-eyes-film",
|
||||
"brown-books-carry",
|
||||
@@ -275,56 +281,88 @@
|
||||
"chilled-buses-love",
|
||||
"chilled-terms-breathe",
|
||||
"chilly-bikes-kick",
|
||||
"chilly-lies-collect",
|
||||
"clean-clouds-fry",
|
||||
"clever-rats-smoke",
|
||||
"clever-wombats-sneeze",
|
||||
"cold-pans-crash",
|
||||
"cool-knives-argue",
|
||||
"create-app-1700579510",
|
||||
"create-app-1700607979",
|
||||
"create-app-1702395837",
|
||||
"curly-walls-relate",
|
||||
"dirty-turkeys-reflect",
|
||||
"dry-readers-raise",
|
||||
"dull-rings-melt",
|
||||
"eighty-dodos-sing",
|
||||
"eighty-phones-peel",
|
||||
"eleven-ants-pretend",
|
||||
"empty-dingos-grow",
|
||||
"empty-fireants-study",
|
||||
"fair-plants-attack",
|
||||
"famous-flies-kick",
|
||||
"famous-peas-reflect",
|
||||
"fifty-cameras-share",
|
||||
"fifty-seas-grab",
|
||||
"five-feet-call",
|
||||
"forty-clocks-hug",
|
||||
"forty-insects-drop",
|
||||
"forty-mirrors-carry",
|
||||
"four-foxes-juggle",
|
||||
"four-needles-watch",
|
||||
"fresh-seahorses-glow",
|
||||
"funny-bobcats-try",
|
||||
"gentle-lies-greet",
|
||||
"gentle-timers-fail",
|
||||
"giant-files-fry",
|
||||
"gold-humans-tease",
|
||||
"gold-shirts-yell",
|
||||
"good-wolves-leave",
|
||||
"gorgeous-snails-admire",
|
||||
"great-rings-type",
|
||||
"green-seals-play",
|
||||
"healthy-feet-kick",
|
||||
"healthy-poets-search",
|
||||
"hip-berries-begin",
|
||||
"hip-cars-repair",
|
||||
"honest-houses-hide",
|
||||
"hot-wolves-flash",
|
||||
"hungry-buckets-compare",
|
||||
"itchy-camels-cough",
|
||||
"khaki-clocks-happen",
|
||||
"khaki-hounds-think",
|
||||
"khaki-singers-film",
|
||||
"kind-badgers-rush",
|
||||
"kind-cycles-happen",
|
||||
"kind-eels-sing",
|
||||
"large-weeks-accept",
|
||||
"late-eyes-serve",
|
||||
"late-hats-beam",
|
||||
"light-beers-cheer",
|
||||
"little-suits-collect",
|
||||
"long-cycles-grow",
|
||||
"long-trainers-matter",
|
||||
"long-wolves-return",
|
||||
"lovely-terms-search",
|
||||
"lucky-kids-cough",
|
||||
"metal-eggs-smile",
|
||||
"mighty-beans-wink",
|
||||
"modern-mails-live",
|
||||
"nasty-rockets-bathe",
|
||||
"nasty-tips-exercise",
|
||||
"nervous-dancers-wait",
|
||||
"nervous-ladybugs-end",
|
||||
"nervous-penguins-sort",
|
||||
"ninety-otters-report",
|
||||
"ninety-suns-accept",
|
||||
"odd-bats-kick",
|
||||
"orange-boats-hunt",
|
||||
"perfect-apes-sing",
|
||||
"perfect-crabs-help",
|
||||
"pink-dryers-repair",
|
||||
"plenty-numbers-enjoy",
|
||||
"plenty-plums-talk",
|
||||
"polite-crabs-build",
|
||||
"polite-knives-build",
|
||||
"poor-pandas-dream",
|
||||
"pretty-onions-knock",
|
||||
@@ -332,53 +370,84 @@
|
||||
"proud-flies-travel",
|
||||
"proud-seahorses-explain",
|
||||
"quick-horses-reply",
|
||||
"quick-lions-care",
|
||||
"real-bees-thank",
|
||||
"red-readers-search",
|
||||
"renovate-0392ef9",
|
||||
"renovate-07b1766",
|
||||
"renovate-0c44581",
|
||||
"renovate-1252136",
|
||||
"renovate-12c95fb",
|
||||
"renovate-169bdc2",
|
||||
"renovate-19742c3",
|
||||
"renovate-1ed81a0",
|
||||
"renovate-240982c",
|
||||
"renovate-2613384",
|
||||
"renovate-4891ee7",
|
||||
"renovate-4b1eded",
|
||||
"renovate-522261c",
|
||||
"renovate-5644299",
|
||||
"renovate-6075f87",
|
||||
"renovate-6c0fb81",
|
||||
"renovate-6e5c790",
|
||||
"renovate-796bd6f",
|
||||
"renovate-8d8b90d",
|
||||
"renovate-9d2d52e",
|
||||
"renovate-a277605",
|
||||
"renovate-a6399d6",
|
||||
"renovate-b193efa",
|
||||
"renovate-c4e012c",
|
||||
"renovate-c7270d5",
|
||||
"renovate-c727667",
|
||||
"renovate-ccaf2c8",
|
||||
"renovate-dee7ad1",
|
||||
"renovate-ead3ba6",
|
||||
"renovate-f5b18be",
|
||||
"rich-bees-breathe",
|
||||
"rich-singers-join",
|
||||
"rude-beans-drop",
|
||||
"rude-ears-greet",
|
||||
"sharp-dingos-learn",
|
||||
"shiny-books-search",
|
||||
"shiny-cheetahs-vanish",
|
||||
"short-buttons-cover",
|
||||
"shy-boxes-sleep",
|
||||
"silent-rats-reflect",
|
||||
"silly-numbers-wash",
|
||||
"silver-rocks-deliver",
|
||||
"six-cooks-attack",
|
||||
"sixty-adults-kiss",
|
||||
"sixty-houses-agree",
|
||||
"slow-bottles-cross",
|
||||
"slow-trees-warn",
|
||||
"smooth-frogs-decide",
|
||||
"sour-pumas-reply",
|
||||
"spotty-olives-share",
|
||||
"spotty-terms-occur",
|
||||
"stale-bats-end",
|
||||
"stale-frogs-agree",
|
||||
"stale-walls-cross",
|
||||
"strange-brooms-poke",
|
||||
"strange-suits-glow",
|
||||
"stupid-wasps-fold",
|
||||
"tame-pants-end",
|
||||
"tasty-dolphins-unite",
|
||||
"ten-snakes-wait",
|
||||
"tender-peas-smoke",
|
||||
"thick-snails-travel",
|
||||
"thirty-fireants-cheer",
|
||||
"tiny-cobras-look",
|
||||
"tiny-coins-raise",
|
||||
"tricky-donkeys-do",
|
||||
"tricky-islands-wonder",
|
||||
"twenty-beans-laugh",
|
||||
"unlucky-clouds-build",
|
||||
"violet-zebras-thank",
|
||||
"warm-plums-beg",
|
||||
"wicked-elephants-think"
|
||||
"wet-bananas-agree",
|
||||
"wicked-elephants-think",
|
||||
"wicked-pants-end",
|
||||
"wild-knives-wait",
|
||||
"witty-cars-wash"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-search-react': patch
|
||||
---
|
||||
|
||||
Capture analytics even when number of results is not available, since the total result count is not something that is always available for all search engines and configurations.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/create-app': patch
|
||||
---
|
||||
|
||||
Include the `<EntityLinksCard />` for group entities by default
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Updated dependency `bfj` to `^8.0.0`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-api-docs': patch
|
||||
---
|
||||
|
||||
Updated dependency `@asyncapi/react-component` to `1.2.6`.
|
||||
@@ -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.15.0`.
|
||||
Updated dependency `@rjsf/core` to `5.15.0`.
|
||||
Updated dependency `@rjsf/material-ui` to `5.15.0`.
|
||||
Updated dependency `@rjsf/validator-ajv8` to `5.15.0`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/core-compat-api': patch
|
||||
---
|
||||
|
||||
Delete alpha DI compatibility helper for components, migrating components should be simple without a helper.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/frontend-app-api': minor
|
||||
---
|
||||
|
||||
The app no longer provides the `AppContext` from `@backstage/core-plugin-api`. Components that require this context to be available should use the `compatWrapper` helper from `@backstage/core-compat-api`.
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-bitbucket': minor
|
||||
'@backstage/plugin-scaffolder-backend-module-gerrit': minor
|
||||
'@backstage/plugin-scaffolder-backend-module-github': minor
|
||||
'@backstage/plugin-scaffolder-backend-module-azure': minor
|
||||
---
|
||||
|
||||
Create new scaffolder module for external integrations
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/core-components': patch
|
||||
---
|
||||
|
||||
Fixed an issue where the `onChange` prop within `HeaderTabs` was triggering twice upon tab-switching.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-home': patch
|
||||
---
|
||||
|
||||
StarredEntities component calls `getEntitiesByRefs` instead of `getEntities` to improve performance since we have the `entityRefs`
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/frontend-plugin-api': patch
|
||||
---
|
||||
|
||||
Added translation APIs as well as `createTranslationExtension`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/frontend-app-api': patch
|
||||
---
|
||||
|
||||
Renamed `AppRouteBinder` to `CreateAppRouteBinder`
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/frontend-plugin-api': patch
|
||||
'@backstage/frontend-app-api': patch
|
||||
---
|
||||
|
||||
Forward ` node`` instead of `extensionId` to resolved extension inputs.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/repo-tools': patch
|
||||
---
|
||||
|
||||
Execute `openapi-generator-cli` from `@backstage/repo-tools` directory to force it to use our openapitools.json config file.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/catalog-client': patch
|
||||
---
|
||||
|
||||
Fixes a bug where some query parameters were double URL encoded.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/core-compat-api': minor
|
||||
---
|
||||
|
||||
The `collectLegacyRoutes` has been removed and is replaced by `convertLegacyApp` now being able to convert a `FlatRoutes` element directly.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-gcp-projects': patch
|
||||
---
|
||||
|
||||
Fix query parameter for project details page which should point to projectId rather than project name
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/frontend-plugin-api': minor
|
||||
---
|
||||
|
||||
Changed `Extension` and `ExtensionDefinition` to use opaque types.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/frontend-app-api': patch
|
||||
---
|
||||
|
||||
Updated usage of `Extension` and `ExtensionDefinition` as they are now opaque.
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-react': patch
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
'@backstage/plugin-home': patch
|
||||
---
|
||||
|
||||
Use new option from RJSF 5.15
|
||||
@@ -0,0 +1,23 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-gitlab': patch
|
||||
'@backstage/frontend-plugin-api': patch
|
||||
'@backstage/plugin-permission-backend': patch
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
'@backstage/plugin-permission-common': patch
|
||||
'@backstage/core-components': patch
|
||||
'@backstage/plugin-playlist-backend': patch
|
||||
'@backstage/plugin-scaffolder-react': patch
|
||||
'@backstage/plugin-catalog-backend': patch
|
||||
'@backstage/plugin-permission-node': patch
|
||||
'@backstage/plugin-scaffolder-node': patch
|
||||
'@backstage/backend-tasks': patch
|
||||
'@backstage/plugin-search-backend': patch
|
||||
'@backstage/core-app-api': patch
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
'@backstage/cli-node': patch
|
||||
'@backstage/plugin-auth-node': patch
|
||||
'@backstage/cli': patch
|
||||
'@backstage/plugin-home': patch
|
||||
---
|
||||
|
||||
Fixing regular expression ReDoS with zod packages. Upgrading to latest. ref: https://security.snyk.io/vuln/SNYK-JS-ZOD-5925617
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/frontend-plugin-api': minor
|
||||
---
|
||||
|
||||
Moved several extension data references from `coreExtensionData` to their respective extension creators.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/frontend-app-api': patch
|
||||
---
|
||||
|
||||
Updates to match the new `coreExtensionData` structure.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/frontend-plugin-api': patch
|
||||
'@backstage/frontend-app-api': patch
|
||||
---
|
||||
|
||||
Renamed the `component` option of `createComponentExtension` to `loader`.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-github': patch
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
---
|
||||
|
||||
Add a new action for creating github-autolink references for a repository: `github:autolinks:create`
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/backend-test-utils': patch
|
||||
---
|
||||
|
||||
Added support for PostgreSQL versions 15 and 16
|
||||
|
||||
Also introduced a new `setDefaults(options: { ids?: TestDatabaseId[] })` static method that can be added to the `setupTests.ts` file to define the default database ids you want to use throughout your package. Usage would look like this: `TestDatabases.setDefaults({ ids: ['POSTGRES_12','POSTGRES_16'] })` and would result in PostgreSQL versions 12 and 16 being used for your tests.
|
||||
@@ -13,33 +13,29 @@ body:
|
||||
required: true
|
||||
attributes:
|
||||
label: '📜 Description'
|
||||
description: 'A clear and concise description of what the bug is.'
|
||||
placeholder: 'It bugs out when ...'
|
||||
description: 'A clear and concise description of what the bug is. It bugs out when ...'
|
||||
- type: textarea
|
||||
id: expected-behavior
|
||||
validations:
|
||||
required: true
|
||||
attributes:
|
||||
label: '👍 Expected behavior'
|
||||
description: 'What did you think should happen?'
|
||||
placeholder: 'It should ...'
|
||||
description: 'What did you think should happen? It should ...'
|
||||
- type: textarea
|
||||
id: actual-behavior
|
||||
validations:
|
||||
required: true
|
||||
attributes:
|
||||
label: '👎 Actual Behavior with Screenshots'
|
||||
description: 'What did actually happen? Add screenshots, if applicable.'
|
||||
placeholder: 'It actually ...'
|
||||
description: 'What did actually happen? Add screenshots, if applicable. It actually ...'
|
||||
- type: textarea
|
||||
id: steps-to-reproduce
|
||||
validations:
|
||||
required: true
|
||||
attributes:
|
||||
label: '👟 Reproduction steps'
|
||||
description: 'How do you trigger this bug? Please walk us through it step by step.'
|
||||
placeholder:
|
||||
"Provide a link to a live example, or an unambiguous set of steps to reproduce this bug. Include code or configuration to reproduce, if relevant.\n
|
||||
description: 'How do you trigger this bug? Please walk us through it step by step. Provide a link to a live example, or an unambiguous set of steps to reproduce this bug. Include code or configuration to reproduce, if relevant.'
|
||||
placeholder: "\n
|
||||
1. Go to '...'\n
|
||||
2. Click on '....'\n
|
||||
3. Scroll down to '....'"
|
||||
@@ -49,17 +45,14 @@ body:
|
||||
required: false
|
||||
attributes:
|
||||
label: '📃 Provide the context for the Bug.'
|
||||
description: 'How has this issue affected you? What are you trying to accomplish?'
|
||||
placeholder: 'Providing context (e.g. links to configuration settings, stack trace or log data) helps us come up with a solution that is most useful in the real world.'
|
||||
description: 'How has this issue affected you? What are you trying to accomplish? Providing context (e.g. links to configuration settings, stack trace or log data) helps us come up with a solution that is most useful in the real world.'
|
||||
- type: textarea
|
||||
id: environment
|
||||
validations:
|
||||
required: false
|
||||
attributes:
|
||||
label: '🖥️ Your Environment'
|
||||
description: 'Provide Browser Information
|
||||
Provide Output of `yarn backstage-cli info`'
|
||||
placeholder: 'Include as many relevant details about the environment you experienced the bug in.'
|
||||
description: 'Always provide output of `yarn backstage-cli info`; provide browser information when applicable. Include as many relevant details about the environment you experienced the bug in.'
|
||||
- type: checkboxes
|
||||
id: no-duplicate-issues
|
||||
attributes:
|
||||
|
||||
@@ -14,7 +14,6 @@ body:
|
||||
attributes:
|
||||
label: '🔖 Feature description'
|
||||
description: 'A clear and concise description of what the feature is.'
|
||||
placeholder: 'You should add ...'
|
||||
- type: textarea
|
||||
id: context
|
||||
validations:
|
||||
@@ -22,13 +21,11 @@ body:
|
||||
attributes:
|
||||
label: '🎤 Context'
|
||||
description: 'Please explain why this feature should be implemented and how it would be used. Add examples, if applicable.'
|
||||
placeholder: 'In my use-case, ...'
|
||||
- type: textarea
|
||||
id: implementation
|
||||
attributes:
|
||||
label: '✌️ Possible Implementation'
|
||||
description: 'A clear and concise description of what you want to happen.'
|
||||
placeholder: 'Not obligatory, but ideas as to the implementation of the addition or change'
|
||||
description: 'A clear and concise description of what you want to happen. Not obligatory, but ideas as to the implementation of the addition or change.'
|
||||
- type: checkboxes
|
||||
id: no-duplicate-issues
|
||||
attributes:
|
||||
|
||||
@@ -14,19 +14,16 @@ body:
|
||||
attributes:
|
||||
label: '🔖 Summary'
|
||||
description: 'Provide a general summary of the plugin and how it should work'
|
||||
placeholder: 'You should add ...'
|
||||
- type: textarea
|
||||
id: website
|
||||
attributes:
|
||||
label: '🌐 Project website (if applicable)'
|
||||
description: 'Add a link to the open source project or product this plugin will integrate with, if existing'
|
||||
placeholder: 'Website Link is ...'
|
||||
- type: textarea
|
||||
id: context
|
||||
attributes:
|
||||
label: '✌️ Context'
|
||||
description: 'A clear and concise description about the Plugin.'
|
||||
placeholder: 'Providing additional context'
|
||||
description: 'A clear and concise description about the Plugin and any additional context.'
|
||||
- type: checkboxes
|
||||
id: no-duplicate-issues
|
||||
attributes:
|
||||
|
||||
@@ -13,28 +13,24 @@ body:
|
||||
required: true
|
||||
attributes:
|
||||
label: '🔖 Need'
|
||||
description: 'Let us know why are you proposing this change'
|
||||
placeholder: 'The problem we’re trying to address and the benefits/impact we expect to get from this are ...'
|
||||
description: "Let us know why are you proposing this change. The problem we're trying to address and the benefits/impact we expect to get from this are ..."
|
||||
- type: textarea
|
||||
id: proposal
|
||||
validations:
|
||||
required: true
|
||||
attributes:
|
||||
label: '🎉 Proposal'
|
||||
description: 'Describe the proposal in as much detail as needed for reviewers to give concrete feedback.'
|
||||
placeholder: 'Take special care in this section to describe any implications on data privacy or security.'
|
||||
description: 'Describe the proposal in as much detail as needed for reviewers to give concrete feedback. Take special care in this section to describe any implications on data privacy or security.'
|
||||
- type: textarea
|
||||
id: alternatives
|
||||
attributes:
|
||||
label: '〽️ Alternatives'
|
||||
description: 'What alternatives to the proposed solution were considered?'
|
||||
placeholder: 'What criteria/data was used to discard these?'
|
||||
description: 'What alternatives to the proposed solution were considered? What criteria/data was used to discard these?'
|
||||
- type: textarea
|
||||
id: risk
|
||||
attributes:
|
||||
label: '❌ Risks'
|
||||
description: 'What other things happening could conflict or compete (for example for resources) with the proposal?'
|
||||
placeholder: 'What risk are there and how do we plan to handle them?'
|
||||
description: 'What other things happening could conflict or compete (for example for resources) with the proposal? What risk are there and how do we plan to handle them?'
|
||||
- type: checkboxes
|
||||
id: no-duplicate-issues
|
||||
attributes:
|
||||
|
||||
@@ -6,37 +6,34 @@ body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
We value your time and efforts to submit this RFC form. 🙏
|
||||
We value your time and efforts to submit this UX Component form. 🙏
|
||||
- type: textarea
|
||||
id: ux-general
|
||||
validations:
|
||||
required: true
|
||||
attributes:
|
||||
label: '🔖 General'
|
||||
description: 'Write a nice note to the community requesting the creation of a new component.'
|
||||
placeholder: 'Include an image of your component. Bonus points for a GIF!'
|
||||
description: |
|
||||
'Write a nice note to the community requesting the creation of a new component. Include an image of your component. Bonus points for a GIF!'
|
||||
- type: textarea
|
||||
id: usage
|
||||
validations:
|
||||
required: true
|
||||
attributes:
|
||||
label: '💻 Usage'
|
||||
description: "Tell us what's the point of this component/pattern is."
|
||||
placeholder: 'How does it help? How should it work? Any rules?'
|
||||
description: "Tell us what's the point of this component/pattern is. How does it help? How should it work? Any rules?"
|
||||
- type: textarea
|
||||
id: specs
|
||||
validations:
|
||||
required: true
|
||||
attributes:
|
||||
label: '📐 Specs'
|
||||
description: 'Include images that detail the redlines for your component.'
|
||||
placeholder: "Once we get our Figma workspace set up, we'll be posting the Figma files rather than doing specs by hand."
|
||||
description: "Include images that detail the redlines for your component. Once we get our Figma workspace set up, we'll be posting the Figma files rather than doing specs by hand."
|
||||
- type: textarea
|
||||
id: future
|
||||
attributes:
|
||||
label: '🔮 Future'
|
||||
description: 'List out any upcoming, exciting functionality for this component.'
|
||||
placeholder: 'The component will have ...'
|
||||
- type: checkboxes
|
||||
id: no-duplicate-issues
|
||||
attributes:
|
||||
|
||||
@@ -35,3 +35,10 @@ spec:
|
||||
value: 'postgres.default.svc.cluster.local'
|
||||
- name: NODE_ENV
|
||||
value: production
|
||||
resources:
|
||||
limits:
|
||||
cpu: 1000m
|
||||
memory: 384Mi
|
||||
requests:
|
||||
cpu: 20m
|
||||
memory: 160Mi
|
||||
|
||||
@@ -15,15 +15,25 @@ spec:
|
||||
spec:
|
||||
containers:
|
||||
- name: postgres
|
||||
image: postgres:13.2-alpine
|
||||
image: postgres:12-alpine
|
||||
imagePullPolicy: 'IfNotPresent'
|
||||
ports:
|
||||
- containerPort: 5432
|
||||
env:
|
||||
- name: PGDATA
|
||||
value: '/data/pgdata'
|
||||
envFrom:
|
||||
- secretRef:
|
||||
name: postgres-secrets
|
||||
resources:
|
||||
limits:
|
||||
cpu: 1000m
|
||||
memory: 256Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 96Mi
|
||||
volumeMounts:
|
||||
- mountPath: /var/lib/postgresql
|
||||
- mountPath: /data
|
||||
name: postgresdb
|
||||
volumes:
|
||||
- name: postgresdb
|
||||
|
||||
@@ -323,6 +323,7 @@ reusability
|
||||
Reusability
|
||||
roadmaps
|
||||
rollbar
|
||||
Roboto
|
||||
Rollbar
|
||||
Rollup
|
||||
routable
|
||||
|
||||
@@ -153,8 +153,8 @@ jobs:
|
||||
|
||||
name: Test ${{ matrix.node-version }}
|
||||
services:
|
||||
postgres13:
|
||||
image: postgres:13
|
||||
postgres16:
|
||||
image: postgres:16
|
||||
env:
|
||||
POSTGRES_PASSWORD: postgres
|
||||
options: >-
|
||||
@@ -164,8 +164,8 @@ jobs:
|
||||
--health-retries 5
|
||||
ports:
|
||||
- 5432/tcp
|
||||
postgres9:
|
||||
image: postgres:9
|
||||
postgres12:
|
||||
image: postgres:12
|
||||
env:
|
||||
POSTGRES_PASSWORD: postgres
|
||||
options: >-
|
||||
@@ -218,8 +218,8 @@ jobs:
|
||||
run: yarn backstage-cli repo test --maxWorkers=2 --workerIdleMemoryLimit=1300M --since origin/master
|
||||
env:
|
||||
BACKSTAGE_TEST_DISABLE_DOCKER: 1
|
||||
BACKSTAGE_TEST_DATABASE_POSTGRES13_CONNECTION_STRING: postgresql://postgres:postgres@localhost:${{ job.services.postgres13.ports[5432] }}
|
||||
BACKSTAGE_TEST_DATABASE_POSTGRES9_CONNECTION_STRING: postgresql://postgres:postgres@localhost:${{ job.services.postgres9.ports[5432] }}
|
||||
BACKSTAGE_TEST_DATABASE_POSTGRES16_CONNECTION_STRING: postgresql://postgres:postgres@localhost:${{ job.services.postgres16.ports[5432] }}
|
||||
BACKSTAGE_TEST_DATABASE_POSTGRES12_CONNECTION_STRING: postgresql://postgres:postgres@localhost:${{ job.services.postgres12.ports[5432] }}
|
||||
BACKSTAGE_TEST_DATABASE_MYSQL8_CONNECTION_STRING: mysql://root:root@localhost:${{ job.services.mysql8.ports[3306] }}/ignored
|
||||
|
||||
# We run the test cases before verifying the specs to prevent any failing tests from causing errors.
|
||||
|
||||
@@ -17,8 +17,8 @@ jobs:
|
||||
node-version: [18.x, 20.x]
|
||||
|
||||
services:
|
||||
postgres13:
|
||||
image: postgres:13
|
||||
postgres16:
|
||||
image: postgres:16
|
||||
env:
|
||||
POSTGRES_PASSWORD: postgres
|
||||
options: >-
|
||||
@@ -28,8 +28,8 @@ jobs:
|
||||
--health-retries 5
|
||||
ports:
|
||||
- 5432/tcp
|
||||
postgres9:
|
||||
image: postgres:9
|
||||
postgres12:
|
||||
image: postgres:12
|
||||
env:
|
||||
POSTGRES_PASSWORD: postgres
|
||||
options: >-
|
||||
@@ -106,8 +106,8 @@ jobs:
|
||||
bash <(curl -s https://codecov.io/bash) -f packages/core-plugin-api/coverage/* -F core-plugin-api
|
||||
env:
|
||||
BACKSTAGE_TEST_DISABLE_DOCKER: 1
|
||||
BACKSTAGE_TEST_DATABASE_POSTGRES13_CONNECTION_STRING: postgresql://postgres:postgres@localhost:${{ job.services.postgres13.ports[5432] }}
|
||||
BACKSTAGE_TEST_DATABASE_POSTGRES9_CONNECTION_STRING: postgresql://postgres:postgres@localhost:${{ job.services.postgres9.ports[5432] }}
|
||||
BACKSTAGE_TEST_DATABASE_POSTGRES16_CONNECTION_STRING: postgresql://postgres:postgres@localhost:${{ job.services.postgres16.ports[5432] }}
|
||||
BACKSTAGE_TEST_DATABASE_POSTGRES12_CONNECTION_STRING: postgresql://postgres:postgres@localhost:${{ job.services.postgres12.ports[5432] }}
|
||||
BACKSTAGE_TEST_DATABASE_MYSQL8_CONNECTION_STRING: mysql://root:root@localhost:${{ job.services.mysql8.ports[3306] }}/ignored
|
||||
|
||||
- name: Discord notification
|
||||
|
||||
@@ -56,7 +56,7 @@ jobs:
|
||||
|
||||
- name: Generate UUID image name
|
||||
id: uuid
|
||||
run: echo "UUID_TAG_APP=$(uuidgen)" >> $GITHUB_ENV
|
||||
run: echo "UUID_TAG_APP=backstage-$(uuidgen --time)" >> $GITHUB_ENV
|
||||
|
||||
- name: Docker metadata
|
||||
id: meta
|
||||
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:latest
|
||||
image: postgres:12
|
||||
env:
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_PASSWORD: postgres
|
||||
|
||||
@@ -51,7 +51,7 @@ jobs:
|
||||
|
||||
- run: yarn build-storybook
|
||||
|
||||
- uses: chromaui/action@2f12dc37555ffc9ed980d883e96b6d03724a2d6a # v1
|
||||
- uses: chromaui/action@ad023504f8a7c8bd7f63d0f6775c05357f3a6478 # v1
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
# projectToken intentionally shared to allow collaborators to run Chromatic on forks
|
||||
|
||||
+1
-1
@@ -139,7 +139,7 @@ yarn build:api-reports # Build API Reports used for documentation
|
||||
|
||||
yarn lint # lint packages that have changed since later commit on origin/master
|
||||
yarn lint:all # lint all packages
|
||||
yarn lind:docs # lint all the Markdown files
|
||||
yarn lint:docs # lint all the Markdown files
|
||||
yarn lint:type-deps # verify that @types/* dependencies are placed correctly in packages
|
||||
|
||||
yarn test # test packages that have changed since later commit on origin/master
|
||||
|
||||
@@ -78,7 +78,6 @@ Scope: The Permission Framework and plugins integrating with the permission fram
|
||||
| Name | Organization | Team | GitHub | Discord |
|
||||
| -------------------- | ------------ | --------------- | ----------------------------------------------- | ---------------- |
|
||||
| Ainhoa Larumbe | Spotify | Imaginary Goats | [ainhoaL](http://github.com/ainhoaL) | ainhoa#8085 |
|
||||
| Aramis Sennyey | Spotify | Imaginary Goats | [sennyeya](https://github.com/sennyeya) | Aramis#7984 |
|
||||
| Claire Casey | Spotify | Imaginary Goats | [clairelcasey](http://github.com/clairelcasey) | clairecasey#2710 |
|
||||
| Eric Peterson | Spotify | Imaginary Goats | [iamEAP](http://github.com/iamEAP) | iamEAP#3058 |
|
||||
| Harry Hogg | Spotify | Imaginary Goats | [HHogg](http://github.com/HHogg) | simplex#3451 |
|
||||
@@ -118,7 +117,7 @@ Scope: Tooling for frontend and backend schema-first OpenAPI development.
|
||||
|
||||
| Name | Organization | GitHub | Discord |
|
||||
| -------------- | ------------ | --------------------------------------- | ------------- |
|
||||
| Aramis Sennyey | Spotify | [sennyeya](https://github.com/sennyeya) | `Aramis#7984` |
|
||||
| Aramis Sennyey | | [sennyeya](https://github.com/sennyeya) | `Aramis#7984` |
|
||||
|
||||
### Scaffolder
|
||||
|
||||
@@ -126,10 +125,9 @@ Team: @backstage/scaffolder-maintainers
|
||||
|
||||
Scope: The Scaffolder frontend and backend plugins, and related tooling.
|
||||
|
||||
| Name | Organization | GitHub | Discord |
|
||||
| ------------------- | -------------- | ------------------------------------- | ---------------- |
|
||||
| Bogdan Nechyporenko | Bol.com | [acierto](https://github.com/acierto) | `bogdan_haarlem` |
|
||||
| Paul Cowan | frontendrescue | [dagda1](https://github.com/dagda1) | `dagda1` |
|
||||
| Name | Organization | GitHub | Discord |
|
||||
| ------------------- | ------------ | ------------------------------------- | ---------------- |
|
||||
| Bogdan Nechyporenko | Bol.com | [acierto](https://github.com/acierto) | `bogdan_haarlem` |
|
||||
|
||||
## Sponsors
|
||||
|
||||
@@ -147,7 +145,7 @@ Scope: The Scaffolder frontend and backend plugins, and related tooling.
|
||||
| Alex Crome | | [afscrome](https://github.com/afscrome) | `afscrome` |
|
||||
| Andre Wanlin | Spotify | [awanlin](https://github.com/awanlin) | `ahhhndre` |
|
||||
| Andrew Thauer | Wealthsimple | [andrewthauer](https://github.com/andrewthauer) | `andrewthauer#3060` |
|
||||
| Aramis Sennyey | Spotify | [sennyeya](https://github.com/sennyeya) | `Aramis#7984` |
|
||||
| Aramis Sennyey | | [sennyeya](https://github.com/sennyeya) | `Aramis#7984` |
|
||||
| Brian Fletcher | Roadie.io | [punkle](https://github.com/punkle) | `Brian Fletcher#7051` |
|
||||
| Carlos Esteban Lopez Jaramillo | VMWare | [luchillo17](https://github.com/luchillo17) | `luchillo17#8777` |
|
||||
| David Tuite | Roadie.io | [dtuite](https://github.com/dtuite) | `David Tuite (roadie.io)#1010` |
|
||||
@@ -173,3 +171,9 @@ Scope: The Scaffolder frontend and backend plugins, and related tooling.
|
||||
| Name | Organization | GitHub | Discord |
|
||||
| --------- | ------------ | ------------------------------------------- | -------------- |
|
||||
| Lee Mills | Spotify | [leemills83](https://github.com/leemills83) | `.binarypoint` |
|
||||
|
||||
## Emeritus Project Area Maintainers
|
||||
|
||||
| Maintainer | Organization | GitHub | Discord |
|
||||
| ---------- | -------------- | ----------------------------------- | -------- |
|
||||
| Paul Cowan | frontendrescue | [dagda1](https://github.com/dagda1) | `dagda1` |
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
[](https://backstage.io/)
|
||||
|
||||
# [Backstage](https://backstage.io)
|
||||
|
||||
[English](README.md) \| 한국어
|
||||
|
||||
[](https://opensource.org/licenses/Apache-2.0)
|
||||
[](https://www.cncf.io/projects)
|
||||
[](https://discord.gg/backstage-687207715902193673)
|
||||

|
||||
[](https://codecov.io/gh/backstage/backstage)
|
||||
[](https://github.com/backstage/backstage/releases)
|
||||
[](https://app.uffizzi.com/ephemeral-environments/backstage/backstage)
|
||||
[](https://bestpractices.coreinfrastructure.org/projects/7678)
|
||||
[](https://securityscorecards.dev/viewer/?uri=github.com/backstage/backstage)
|
||||
|
||||
## 백스테이지(Backstage)란?
|
||||
|
||||
[백스테이지(Backstage)](https://backstage.io/) 는 개발자 포털 구출을 위한 개방형 플랫폼입니다. 중앙 집중식 소프트웨어 카탈로그를 기반으로하는 Backstage는 마이크로 서비스와 인프라의 질서를 복원하고 제품팀이 자율성을 훼손하지 않고 고품질 코드를 신속하게 출시할 수 있도록 지원합니다.
|
||||
|
||||
Backstage 는 모든 인프라 도구, 서비스 및 문서를 통합하여 처음부터 끝까지 간소화된 개발 환경을 만듭니다.
|
||||
|
||||

|
||||
|
||||
Backstage 다음을 포함합니다:
|
||||
|
||||
- [Backstage Software Catalog](https://backstage.io/docs/features/software-catalog/) 마이크로 서비스, 라이브러리, 데이터 파이프라인, 웹 사이트, ML 모델 등 모든 소프트웨어 관리
|
||||
- [Backstage Software Templates](https://backstage.io/docs/features/software-templates/) 새로운 프로젝트를 신속하게 시작하고 조직의 모밤 사례에따라 도구를 표준화
|
||||
- [Backstage TechDocs](https://backstage.io/docs/features/techdocs/) "docs like code" 접근 방식을 사용하여 기술 문서를 쉽게 작성, 유지 관리, 검색 및 사용
|
||||
- [open source plugins](https://github.com/backstage/backstage/tree/master/plugins) Backstage의 사용자 정의 가능성과 기능을 확장
|
||||
|
||||
Backstage는 Spotify에서 제작되었지만 현재는 [Cloud Native Computing Foundation(CNCF)](https://www.cncf.io)에서 인큐베이션 수준 프로젝트로 호스팅되고 있습니다. 추가적인 정보는 [announcement](https://backstage.io/blog/2022/03/16/backstage-turns-two#out-of-the-sandbox-and-into-incubation)를 참조하세요.
|
||||
|
||||
## 프로젝트 로드맵
|
||||
|
||||
제공된 마일스톤을 포함한 자세한 프로젝트 로드맵에 대한 자세한 내용은 [the Roadmap](https://backstage.io/docs/overview/roadmap)을 참조하세요.
|
||||
|
||||
## 시작하기
|
||||
|
||||
Backstage를 시작하기위해 [Getting Started documentation](https://backstage.io/docs/getting-started)를 참조하세요.
|
||||
|
||||
## 문서
|
||||
|
||||
Backstage의 문서는 다음을 포함합니다:
|
||||
|
||||
- [Main documentation](https://backstage.io/docs)
|
||||
- [Software Catalog](https://backstage.io/docs/features/software-catalog/)
|
||||
- [Architecture](https://backstage.io/docs/overview/architecture-overview) ([Decisions](https://backstage.io/docs/architecture-decisions/))
|
||||
- [Designing for Backstage](https://backstage.io/docs/dls/design)
|
||||
- [Storybook - UI components](https://backstage.io/storybook)
|
||||
|
||||
## 커뮤니티
|
||||
|
||||
커뮤니티에 참여하려면 다음 리소스를 사용하세요:
|
||||
|
||||
- [Discord chatroom](https://discord.gg/backstage-687207715902193673) - 지원 및 프로젝트 토론
|
||||
- [Contributing to Backstage](https://github.com/backstage/backstage/blob/master/CONTRIBUTING.md) - 프로젝트 기여
|
||||
- [RFCs](https://github.com/backstage/backstage/labels/rfc) - 기술 방향을 정하는 데 도움을 주세요.
|
||||
- [FAQ](https://backstage.io/docs/FAQ) - 자주 묻는 질문들
|
||||
- [Code of Conduct](CODE_OF_CONDUCT.md) - 커뮤니티 운영 방식
|
||||
- [Adopters](ADOPTERS.md) - Backstage를 사용하고 있는 기업
|
||||
- [Blog](https://backstage.io/blog/) - 공지사항 및 업데이트
|
||||
- [Newsletter](https://spoti.fi/backstagenewsletter) - 이메일 뉴스레터 구독
|
||||
- [Backstage Community Sessions](https://github.com/backstage/community) - 월간 모임 참여 및 커뮤니티 톺아보기
|
||||
- Backstage를 사용중이거나 흥미로운 프로젝트라고 생각하신다면 별표를 눌러주세요. 별표는 사랑입니다 ❤️
|
||||
|
||||
## License
|
||||
|
||||
Copyright 2020-2023 © The Backstage Authors. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page: https://www.linuxfoundation.org/trademark-usage
|
||||
|
||||
Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
## 보안
|
||||
|
||||
민감한 보안문제는 Github가 아닌 Spotify의 [bug-bounty program](https://hackerone.com/spotify) 통해 신고해주세요
|
||||
Please report sensitive security issues using Spotify's [bug-bounty program](https://hackerone.com/spotify) rather than GitHub.
|
||||
|
||||
자세한 내용은 [security release process](SECURITY.md)를 참고하세요.
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
# [Backstage](https://backstage.io)
|
||||
|
||||
English \| [한국어](README-ko_kr.md)
|
||||
|
||||
[](https://opensource.org/licenses/Apache-2.0)
|
||||
[](https://www.cncf.io/projects)
|
||||
[](https://discord.gg/backstage-687207715902193673)
|
||||
|
||||
@@ -0,0 +1,314 @@
|
||||
<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="732px" height="462px" viewBox="-0.5 -0.5 732 462" content="<mxfile scale="1.5" border="20"><diagram id="gKBvn7eBFHudv9VMIRD-" name="Page-1">7VtZc6M4EP41foxL3PBoO8nMVu2RqtmtnTwqINuqYMTK8jW/fgVIgBC+wUlm4qmaQg1qpD6+PkQG1mSx/UJhOv+DRCgemCDaDqz7gWnajsP/zwi7guAaQUGYURwVJKMifMM/kCACQV3hCC2VBxkhMcOpSgxJkqCQKTRIKdmoj01JrL41hTOkEb6FMNap/+KIzcW2fFDRvyI8m8s3O+LGCwxfZ5SsEvG6gWlN819xewElK/H8cg4jsqmRrIeBNaGEsOJqsZ2gOJOslFox73HP3XLZFCXslAlmMWEN45XY+ShNxdLYTkoj3xDKpoCBNd7MMUPfUhhmdzdc/Zw2Z4uYjwx+OcVxPCExoflc68HN/nH6klHyimp33PyXzSAJq9GLH6frmxH7WyPK0LZGEpv7gsgCMbrjj2xVe9qpw02lU1Oqbl7Tpy1oUJjRrGRcyZJfCHG2i9bVZasJFkXc6sQwIQlqSJLL5REucJyt/iuK14jhEIobwmf8Q3JakhUNxats4UWQzpDcpfDJbBUHhUlRDBleq75xlWxsTTYpJevc59tk9Dt84fiiCAfGeJbw65BvGnHLGWdGwcUTj8SNBY6ijMeYoiX+AV9yfpn9pgQnLF+8Mx4497o898pdF3Sp5KZFltAkXqz4d5ul3oEhAJ6tmOudYHWy/AX3p2yHNdaOytVTGZDpdMlNoqm+coknaVRX6AQyGJMZJz7FqxlOBqYbc6mNXyi/mrFcnAUlk7eic/e/FZE37pa5Ykb8AQOk22KauJ8hOwzVORNu85gbhAn+RJv6o8U702It1iiUyyvWwPdXLEMurUMIBMCHALRBIACOl99pQKCIGZ1AoNOAQE/HwKAvCASaHA8jHt8l3X3PhDw0Azl+5uPMOyxJuN8KNRSjnRidApdGOe0JUcw3lEFHPvskELXcW6BoPnVEKdzVHhCotdfJNT0boKGqguOlDu5Kw6uHs/P819fct3A2itKYu9JSRwi8SGO04BrhgiMHEOSY9942hhgHrbEliIAOg4gdeGYnUcNoRA3D7iFsSIeqWdXDlqFkmasb/MVFQluzgo+bkjb8NLghHFstLvyGGamng6kUzhuDaRkkhZJMr2MwdTRNfND8V5pUJ/lvINldm/BaKnS5PSCXtN6aCv8mEXmv6S7L1/aL5brl+AbgavuaPYxh+LpkWafJBI+U7xolUX4JF2hD6OtPFNRM/2ijxehL8p5zZhRDW8y+166f84LDEaOqusgGsrhoDUvHQ1zQRfTS8M1ygqHv2jZwPS9wXRCoqRqX9NBwTMc2Lc/0fcNsFPxFwBU8rwPBoCWjuBrlCliq+geTGKOc2T8Mx5hlAhw9/XYUYM/FSphivqQCMYeiPTBcIrrGnM8+6OwfUY0XaCCzHVHdh9Fjv4hqguPtg5LWtWdL+O7DvESwvqFJZSF4mFE+bWl/eO7PlvRK88ywoaTFquJbekwixvCs1q+FGWMIDseZbNBsTVVdsXpLTESsAw2xvSpT2letka37kKWq3mlotAiaWkjS2DSbXMA/KbSdW/9Z7a/Zt6rm4x1Xi46eWn6a7qAqwW5su7Kzeq3xlnx7Nl73LOOV3cjOjNf8NN620sDU7Vk2Q9+4+bXH3DsziLYu5LUHCXpmVvWttKwMJ7wqj+PlqRnXW58eNG1et6/SybpowxlG4CkW0NExdPNAwXRUDp205Vy9LddZyfCIWDi/Uc0QEoqG0+KFv2i5YDU+3mk5KTGsnqoFt62xcXnUOnBUUgUsGaCeB1Vrak+wqo7Jy1j0rISiKwKTbGTWI5N7q0wraOYuF6ZadrNQaDLqrgfm6U2KD3qWI23+PX/LZDRCUx+H0l7bpw43dH5wkfMbXTi/dJsbfOCiO7+vJgj+hb7f5KPVax36vl7cRChFScRdH2RfMHwk//f2Rej35P9yhqxW+3D/m30mcclBVM393cAYKIVpEBwrTS//9E2iwFukBeURX7NxfC40aIxAPy0Yu3lqEnRbQ0vf+jlwp9NvSG6DO3dGo/F8CfLwYfWXHsXj1R/TWA//Aw==</diagram></mxfile>" style="background-color: rgb(255, 255, 255);">
|
||||
<defs/>
|
||||
<g>
|
||||
<rect x="19.5" y="19.5" width="375" height="60" fill="#e6e6e6" stroke="#666666" stroke-width="1.5" pointer-events="all"/>
|
||||
<g transform="translate(-0.5 -0.5)scale(1.5)">
|
||||
<switch>
|
||||
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
|
||||
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 248px; height: 1px; padding-top: 33px; margin-left: 14px;">
|
||||
<div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
|
||||
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
|
||||
App
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</foreignObject>
|
||||
<text x="138" y="37" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">
|
||||
App
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<path d="M 214.5 289.5 L 294.95 289.5" fill="none" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/>
|
||||
<path d="M 302.82 289.5 L 292.32 294.75 L 294.95 289.5 L 292.32 284.25 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/>
|
||||
<g transform="translate(-0.5 -0.5)scale(1.5)">
|
||||
<switch>
|
||||
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
|
||||
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 187px; margin-left: 168px;">
|
||||
<div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
|
||||
<div style="display: inline-block; font-size: 8px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
|
||||
provides
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</foreignObject>
|
||||
<text x="168" y="190" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="8px" text-anchor="middle">
|
||||
provides
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<rect x="79.5" y="259.5" width="135" height="60" fill="#008a00" stroke="#005700" stroke-width="1.5" pointer-events="all"/>
|
||||
<g transform="translate(-0.5 -0.5)scale(1.5)">
|
||||
<switch>
|
||||
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
|
||||
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 193px; margin-left: 54px;">
|
||||
<div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
|
||||
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
|
||||
Catalog Plugin
|
||||
<br/>
|
||||
<font face="Courier New" style="font-size: 10px;">
|
||||
plugin:catalog
|
||||
</font>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</foreignObject>
|
||||
<text x="98" y="197" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">
|
||||
Catalog Plugin...
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<path d="M 214.5 169.5 L 364.5 169.5 Q 379.5 169.5 379.32 184.5 L 378.56 248.15" fill="none" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/>
|
||||
<path d="M 378.47 256.02 L 373.35 245.46 L 378.56 248.15 L 383.84 245.59 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/>
|
||||
<g transform="translate(-0.5 -0.5)scale(1.5)">
|
||||
<switch>
|
||||
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
|
||||
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 99px; margin-left: 201px;">
|
||||
<div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
|
||||
<div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
|
||||
<font style="font-size: 8px;">
|
||||
replaces
|
||||
<br/>
|
||||
implementation
|
||||
<br/>
|
||||
</font>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</foreignObject>
|
||||
<text x="201" y="102" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="10px" text-anchor="middle">
|
||||
replaces...
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<rect x="79.5" y="139.5" width="135" height="60" fill="#e6e6e6" stroke="#666666" stroke-width="1.5" pointer-events="all"/>
|
||||
<g transform="translate(-0.5 -0.5)scale(1.5)">
|
||||
<switch>
|
||||
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
|
||||
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 113px; margin-left: 54px;">
|
||||
<div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
|
||||
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
|
||||
Extension Overrides
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</foreignObject>
|
||||
<text x="98" y="117" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">
|
||||
Extension Overr...
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<path d="M 214.5 409.5 L 244.5 409.5 Q 259.5 409.5 274.5 409.5 L 294.95 409.5" fill="none" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/>
|
||||
<path d="M 302.82 409.5 L 292.32 414.75 L 294.95 409.5 L 292.32 404.25 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/>
|
||||
<g transform="translate(-0.5 -0.5)scale(1.5)">
|
||||
<switch>
|
||||
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
|
||||
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 267px; margin-left: 167px;">
|
||||
<div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
|
||||
<div style="display: inline-block; font-size: 8px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
|
||||
provides
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</foreignObject>
|
||||
<text x="167" y="270" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="8px" text-anchor="middle">
|
||||
provides
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<rect x="79.5" y="379.5" width="135" height="60" fill="#008a00" stroke="#005700" stroke-width="1.5" pointer-events="all"/>
|
||||
<g transform="translate(-0.5 -0.5)scale(1.5)">
|
||||
<switch>
|
||||
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
|
||||
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 273px; margin-left: 54px;">
|
||||
<div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
|
||||
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
|
||||
Todo Plugin
|
||||
<br/>
|
||||
<font face="Courier New" style="font-size: 10px;">
|
||||
plugin:todo
|
||||
</font>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</foreignObject>
|
||||
<text x="98" y="277" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">
|
||||
Todo Plugin...
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<rect x="424.5" y="19.5" width="285" height="60" fill="#e6e6e6" stroke="#666666" stroke-width="1.5" pointer-events="all"/>
|
||||
<g transform="translate(-0.5 -0.5)scale(1.5)">
|
||||
<switch>
|
||||
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
|
||||
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 188px; height: 1px; padding-top: 33px; margin-left: 284px;">
|
||||
<div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
|
||||
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
|
||||
Backstage Frontend Framework
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</foreignObject>
|
||||
<text x="378" y="37" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">
|
||||
Backstage Frontend Framework
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<path d="M 559.5 289.5 L 553.85 289.59" fill="none" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/>
|
||||
<path d="M 545.97 289.7 L 556.39 284.3 L 553.85 289.59 L 556.55 294.79 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/>
|
||||
<rect x="304.5" y="259.5" width="255" height="60" fill="#1ba1e2" stroke="#006eaf" stroke-width="1.5" pointer-events="all"/>
|
||||
<g transform="translate(-0.5 -0.5)scale(1.5)">
|
||||
<switch>
|
||||
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
|
||||
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 193px; margin-left: 204px;">
|
||||
<div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
|
||||
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
|
||||
<font style="font-size: 10px;">
|
||||
Catalog Client Utility API
|
||||
<br/>
|
||||
<font face="Courier New">
|
||||
api:plugin.catalog.service
|
||||
</font>
|
||||
</font>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</foreignObject>
|
||||
<text x="288" y="197" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">
|
||||
Catalog Client Utility API...
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<rect x="304.5" y="379.5" width="255" height="60" fill="#1ba1e2" stroke="#006eaf" stroke-width="1.5" pointer-events="all"/>
|
||||
<g transform="translate(-0.5 -0.5)scale(1.5)">
|
||||
<switch>
|
||||
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
|
||||
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 273px; margin-left: 204px;">
|
||||
<div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
|
||||
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
|
||||
<font style="font-size: 10px;">
|
||||
Todo Utility API
|
||||
<br/>
|
||||
<font face="Courier New">
|
||||
api:plugin.todo.api
|
||||
</font>
|
||||
</font>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</foreignObject>
|
||||
<text x="288" y="277" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">
|
||||
Todo Utility API...
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<path d="M 49.5 79.5 L 49.5 151.5 Q 49.5 166.5 49.5 181.5 L 49.5 244.5 Q 49.5 259.5 60.11 270.11 L 72.75 282.75" fill="none" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/>
|
||||
<path d="M 78.31 288.31 L 67.18 284.6 L 72.75 282.75 L 74.6 277.18 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/>
|
||||
<path d="M 49.5 169.5 L 49.5 241.5 Q 49.5 256.5 49.5 271.5 L 49.5 379.5 Q 49.5 394.5 60.23 399.86 L 70.96 405.23" fill="none" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/>
|
||||
<path d="M 78 408.75 L 66.26 408.75 L 70.96 405.23 L 70.96 399.36 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/>
|
||||
<path d="M 49.5 82.5 L 49.5 154.5 Q 49.5 169.5 59.72 169.5 L 69.95 169.5" fill="none" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/>
|
||||
<path d="M 77.82 169.5 L 67.32 174.75 L 69.95 169.5 L 67.32 164.25 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/>
|
||||
<g transform="translate(-0.5 -0.5)scale(1.5)">
|
||||
<switch>
|
||||
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
|
||||
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 64px; margin-left: 47px;">
|
||||
<div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
|
||||
<div style="display: inline-block; font-size: 10px; font-family: "Courier New"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
|
||||
<font face="Helvetica" style="font-size: 8px;">
|
||||
installs
|
||||
</font>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</foreignObject>
|
||||
<text x="47" y="67" fill="rgb(0, 0, 0)" font-family="Courier New" font-size="10px" text-anchor="middle">
|
||||
installs
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<rect x="469.5" y="139.5" width="195" height="60" fill="#1ba1e2" stroke="#006eaf" stroke-width="1.5" pointer-events="all"/>
|
||||
<g transform="translate(-0.5 -0.5)scale(1.5)">
|
||||
<switch>
|
||||
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
|
||||
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 113px; margin-left: 314px;">
|
||||
<div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
|
||||
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
|
||||
<font style="font-size: 10px;">
|
||||
Fetch Utility API
|
||||
<br/>
|
||||
<font face="Courier New">
|
||||
api:core.fetch
|
||||
</font>
|
||||
</font>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</foreignObject>
|
||||
<text x="378" y="117" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">
|
||||
Fetch Utility API...
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<path d="M 567 79.5 L 567 129.95" fill="none" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/>
|
||||
<path d="M 567 137.82 L 561.75 127.32 L 567 129.95 L 572.25 127.32 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/>
|
||||
<g transform="translate(-0.5 -0.5)scale(1.5)">
|
||||
<switch>
|
||||
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
|
||||
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 69px; margin-left: 394px;">
|
||||
<div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
|
||||
<div style="display: inline-block; font-size: 8px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
|
||||
provides
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</foreignObject>
|
||||
<text x="394" y="72" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="8px" text-anchor="middle">
|
||||
provides
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<path d="M 432 379.5 L 432 329.05" fill="none" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/>
|
||||
<path d="M 432 321.18 L 437.25 331.68 L 432 329.05 L 426.75 331.68 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/>
|
||||
<g transform="translate(-0.5 -0.5)scale(1.5)">
|
||||
<switch>
|
||||
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
|
||||
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 235px; margin-left: 310px;">
|
||||
<div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
|
||||
<div style="display: inline-block; font-size: 8px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
|
||||
depends on
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</foreignObject>
|
||||
<text x="310" y="238" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="8px" text-anchor="middle">
|
||||
depends on
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<path d="M 559.5 289.5 L 589.5 289.5 Q 604.5 289.5 604.46 274.5 L 604.27 208.75" fill="none" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/>
|
||||
<path d="M 604.25 200.88 L 609.53 211.36 L 604.27 208.75 L 599.03 211.39 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/>
|
||||
<g transform="translate(-0.5 -0.5)scale(1.5)">
|
||||
<switch>
|
||||
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
|
||||
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 160px; margin-left: 425px;">
|
||||
<div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
|
||||
<div style="display: inline-block; font-size: 8px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
|
||||
depends on
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</foreignObject>
|
||||
<text x="425" y="163" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="8px" text-anchor="middle">
|
||||
depends on
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
</g>
|
||||
<switch>
|
||||
<g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/>
|
||||
<a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank">
|
||||
<text text-anchor="middle" font-size="10px" x="50%" y="100%">
|
||||
Text is not SVG - cannot display
|
||||
</text>
|
||||
</a>
|
||||
</switch>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 27 KiB |
@@ -27,6 +27,8 @@ To add Okta authentication, you must create an Application from Okta:
|
||||
- `Controlled access`: (select as appropriate)
|
||||
- Click Save
|
||||
|
||||
The configuration examples provided above are suitable for local development. For a production deployment, substitute `http://localhost:7007` with the url that your Backstage instance is available at.
|
||||
|
||||
# Configuration
|
||||
|
||||
The provider configuration can then be added to your `app-config.yaml` under the
|
||||
|
||||
@@ -59,7 +59,7 @@ Just like plugins, modules also have access to services and can depend on their
|
||||
|
||||
A detailed explanation of the package architecture can be found in the
|
||||
[Backstage Architecture
|
||||
Overview](../../overview/architecture-overview/#package-architecture). The
|
||||
Overview](../../overview/architecture-overview.md#package-architecture). The
|
||||
most important packages to consider for this system are the following:
|
||||
|
||||
- `plugin-<pluginId>-backend` houses the implementation of the backend plugins
|
||||
|
||||
@@ -262,9 +262,259 @@ If you have other customizations made to `plugins/catalog.ts`, such as adding
|
||||
custom processors or entity providers, read on. Otherwise, you should be able to
|
||||
just delete that file at this point.
|
||||
|
||||
#### Amazon Web Services
|
||||
|
||||
`AwsEksClusterProcessor` and `AwsOrganizationCloudAccountProcessor` have not yet been migrated to the new backend system.
|
||||
See [Other Catalog Extensions](#other-catalog-extensions) for how to use these in the new backend system.
|
||||
|
||||
For `AwsS3DiscoveryProcessor`, first migrate to `AwsS3EntityProvider`.
|
||||
|
||||
To migrate `AwsS3EntityProvider` to the new backend system, add a reference to the `@backstage/plugin-catalog-backend-module-aws` module.
|
||||
|
||||
```ts title="packages/backend/src/index.ts"
|
||||
backend.add(import('@backstage/plugin-catalog-backend/alpha'));
|
||||
/* highlight-add-start */
|
||||
backend.add(import('@backstage/plugin-catalog-backend-module-aws/alpha'));
|
||||
/* highlight-add-end */
|
||||
```
|
||||
|
||||
If you were providing a `schedule` in code, this now needs to be set via configuration.
|
||||
All other AWS configuration in `app-config.yaml` remains the same.
|
||||
|
||||
```yaml title="app-config.yaml"
|
||||
catalog:
|
||||
providers:
|
||||
awsS3:
|
||||
yourProviderId:
|
||||
# ...
|
||||
/* highlight-add-start */
|
||||
schedule:
|
||||
frequency: PT1H
|
||||
timeout: PT50M
|
||||
/* highlight-add-end */
|
||||
```
|
||||
|
||||
#### Azure DevOps
|
||||
|
||||
For `AzureDevOpsDiscoveryProcessor`, first migrate to `AzureDevOpsEntityProvider`.
|
||||
|
||||
To migrate `AzureDevOpsEntityProvider` to the new backend system, add a reference to the `@backstage/plugin-catalog-backend-module-azure` module.
|
||||
|
||||
```ts title="packages/backend/src/index.ts"
|
||||
backend.add(import('@backstage/plugin-catalog-backend/alpha'));
|
||||
/* highlight-add-start */
|
||||
backend.add(import('@backstage/plugin-catalog-backend-module-azure/alpha'));
|
||||
/* highlight-add-end */
|
||||
```
|
||||
|
||||
If you were providing a `schedule` in code, this now needs to be set via configuration.
|
||||
All other Azure DevOps configuration in `app-config.yaml` remains the same.
|
||||
|
||||
```yaml title="app-config.yaml"
|
||||
catalog:
|
||||
providers:
|
||||
azureDevOps:
|
||||
yourProviderId:
|
||||
# ...
|
||||
/* highlight-add-start */
|
||||
schedule:
|
||||
frequency: PT1H
|
||||
timeout: PT50M
|
||||
/* highlight-add-end */
|
||||
```
|
||||
|
||||
#### Open API
|
||||
|
||||
`InternalOpenApiDocumentationProvider` has not yet been migrated to the new backend system.
|
||||
See [Other Catalog Extensions](#other-catalog-extensions) for how to use this in the new backend system.
|
||||
|
||||
#### Bitbucket
|
||||
|
||||
For `BitbucketDiscoveryProcessor`, migrate to `BitbucketCloudEntityProvider` or `BitbucketServerEntityProvider`
|
||||
|
||||
To migrate `BitbucketCloudEntityProvider` to the new backend system, add a reference to the `@backstage/plugin-catalog-backend-module-bitbucket-cloud` module.
|
||||
|
||||
```ts title="packages/backend/src/index.ts"
|
||||
backend.add(import('@backstage/plugin-catalog-backend/alpha'));
|
||||
/* highlight-add-start */
|
||||
backend.add(
|
||||
import('@backstage/plugin-catalog-backend-module-bitbucket-cloud/alpha'),
|
||||
);
|
||||
/* highlight-add-end */
|
||||
```
|
||||
|
||||
If you were providing a `schedule` in code, this now needs to be set via configuration.
|
||||
All other Bitbucket Cloud configuration in `app-config.yaml` remains the same.
|
||||
|
||||
```yaml title="app-config.yaml"
|
||||
catalog:
|
||||
providers:
|
||||
bitbucketCloud:
|
||||
yourProviderId:
|
||||
# ...
|
||||
/* highlight-add-start */
|
||||
schedule:
|
||||
frequency: PT30M
|
||||
timeout: PT3M
|
||||
/* highlight-add-end */
|
||||
```
|
||||
|
||||
To migrate `BitbucketServerEntityProvider` to the new backend system, add a reference to `@backstage/plugin-catalog-backend-module-bitbucket-server`.
|
||||
|
||||
```ts title="packages/backend/src/index.ts"
|
||||
backend.add(import('@backstage/plugin-catalog-backend/alpha'));
|
||||
/* highlight-add-start */
|
||||
backend.add(
|
||||
import('@backstage/plugin-catalog-backend-module-bitbucket-server/alpha'),
|
||||
);
|
||||
/* highlight-add-end */
|
||||
```
|
||||
|
||||
If you were providing a `schedule` in code, this now needs to be set via configuration.
|
||||
All other Bitbucket Server configuration in `app-config.yaml` remains the same.
|
||||
|
||||
```yaml title="app-config.yaml"
|
||||
catalog:
|
||||
providers:
|
||||
bitbucketServer:
|
||||
yourProviderId:
|
||||
# ...
|
||||
/* highlight-add-start */
|
||||
schedule:
|
||||
frequency: PT30M
|
||||
timeout: PT3M
|
||||
/* highlight-add-end */
|
||||
```
|
||||
|
||||
#### Google Cloud Platform
|
||||
|
||||
To migrate `GkeEntityProvider` to the new backend system, add a reference to `@backstage/plugin-catalog-backend-module-gcp`.
|
||||
|
||||
```ts title="packages/backend/src/index.ts"
|
||||
backend.add(import('@backstage/plugin-catalog-backend/alpha'));
|
||||
/* highlight-add-start */
|
||||
backend.add(import('@backstage/plugin-catalog-backend-module-gcp'));
|
||||
/* highlight-add-end */
|
||||
```
|
||||
|
||||
Configuration in app-config.yaml remains the same.
|
||||
|
||||
#### Gerrit
|
||||
|
||||
To migrate `GerritEntityProvider` to the new backend system, add a reference to `@backstage/plugin-catalog-backend-module-gerrit`.
|
||||
|
||||
```ts title="packages/backend/src/index.ts"
|
||||
backend.add(import('@backstage/plugin-catalog-backend/alpha'));
|
||||
/* highlight-add-start */
|
||||
backend.add(import('@backstage/plugin-catalog-backend-module-gerrit/alpha'));
|
||||
/* highlight-add-end */
|
||||
```
|
||||
|
||||
If you were providing a `schedule` in code, this now needs to be set via configuration.
|
||||
All other Gerrit configuration in `app-config.yaml` remains the same.
|
||||
|
||||
```yaml title="app-config.yaml"
|
||||
catalog:
|
||||
providers:
|
||||
gerrit:
|
||||
yourProviderId:
|
||||
# ...
|
||||
/* highlight-add-start */
|
||||
schedule:
|
||||
frequency: PT30M
|
||||
timeout: PT3M
|
||||
/* highlight-add-end */
|
||||
```
|
||||
|
||||
#### Github
|
||||
|
||||
For `GithubDiscoveryProcessor`, `GithubMultiOrgReaderProcessor` and `GithubOrgReaderProcessor`, first migrate to the equivalent Entity Provider.
|
||||
|
||||
To migrate `GithubEntityProvider` to the new backend system, add a reference to `@backstage/plugin-catalog-backend-module-github`.
|
||||
|
||||
```ts title="packages/backend/src/index.ts"
|
||||
backend.add(import('@backstage/plugin-catalog-backend/alpha'));
|
||||
/* highlight-add-start */
|
||||
backend.add(import('@backstage/plugin-catalog-backend-module-github/alpha'));
|
||||
/* highlight-add-end */
|
||||
```
|
||||
|
||||
If you were providing a `schedule` in code, this now needs to be set via configuration.
|
||||
All other Github configuration in `app-config.yaml` remains the same.
|
||||
|
||||
```yaml title="app-config.yaml"
|
||||
catalog:
|
||||
providers:
|
||||
github:
|
||||
yourProviderId:
|
||||
# ...
|
||||
/* highlight-add-start */
|
||||
schedule:
|
||||
frequency: PT30M
|
||||
timeout: PT3M
|
||||
/* highlight-add-end */
|
||||
```
|
||||
|
||||
To migrate `GithubMultiOrgEntityProvider` and `GithubOrgEntityProvider` to the new backend system, add a reference to `@backstage/plugin-catalog-backend-module-github-org`.
|
||||
|
||||
```ts title="packages/backend/src/index.ts"
|
||||
backend.add(import('@backstage/plugin-catalog-backend/alpha'));
|
||||
/* highlight-add-start */
|
||||
backend.add(import('@backstage/plugin-catalog-backend-module-github-org'));
|
||||
/* highlight-add-end */
|
||||
```
|
||||
|
||||
If you were providing a `schedule` in code, this now needs to be set via configuration.
|
||||
All other Github configuration in `app-config.yaml` remains the same.
|
||||
|
||||
```yaml title="app-config.yaml"
|
||||
catalog:
|
||||
providers:
|
||||
githubOrg:
|
||||
yourProviderId:
|
||||
# ...
|
||||
/* highlight-add-start */
|
||||
schedule:
|
||||
frequency: PT30M
|
||||
timeout: PT3M
|
||||
/* highlight-add-end */
|
||||
```
|
||||
|
||||
If you were providing transformers, these can be configured by extending `githubOrgEntityProviderTransformsExtensionPoint`
|
||||
|
||||
```ts title="packages/backend/src/index.ts"
|
||||
import { createBackendModule } from '@backstage/backend-plugin-api';
|
||||
import { githubOrgEntityProviderTransformsExtensionPoint } from '@backstage/plugin-catalog-backend-module-github-org';
|
||||
|
||||
backend.add(
|
||||
createBackendModule({
|
||||
pluginId: 'catalog',
|
||||
moduleId: 'githubOrgTransformers',
|
||||
register(env) {
|
||||
env.registerInit({
|
||||
deps: {
|
||||
/* highlight-add-start */
|
||||
githubOrgTransformers:
|
||||
githubOrgEntityProviderTransformsExtensionPoint,
|
||||
/* highlight-add-end */
|
||||
},
|
||||
async init({ githubOrgTransformers }) {
|
||||
/* highlight-add-start */
|
||||
githubOrgTransformers.setUserTransformer(myUserTransformer);
|
||||
githubOrgTransformers.setTeamTransformer(myTeamTransformer);
|
||||
/* highlight-add-end */
|
||||
},
|
||||
});
|
||||
},
|
||||
}),
|
||||
);
|
||||
```
|
||||
|
||||
#### Microsoft Graph
|
||||
|
||||
Import the Microsoft Graph catalog module
|
||||
For `MicrosoftGraphOrgReaderProcessor`, first migrate to `MicrosoftGraphOrgEntityProvider`
|
||||
|
||||
To migrate `MicrosoftGraphOrgEntityProvider` to the new backend system, add a reference to `@backstage/plugin-catalog-backend-module-msgraph`.
|
||||
|
||||
```ts title="packages/backend/src/index.ts"
|
||||
backend.add(import('@backstage/plugin-catalog-backend/alpha'));
|
||||
@@ -273,7 +523,8 @@ backend.add(import('@backstage/plugin-catalog-backend-module-msgraph/alpha'));
|
||||
/* highlight-add-end */
|
||||
```
|
||||
|
||||
If you were providng a `schedule` programtically, this now needs to be set via configuration
|
||||
If you were providing a `schedule` in code, this now needs to be set via configuration.
|
||||
All other Microsoft Graph configuration in `app-config.yaml` remains the same.
|
||||
|
||||
```yaml title="app-config.yaml"
|
||||
catalog:
|
||||
@@ -285,7 +536,6 @@ catalog:
|
||||
frequency: PT4H
|
||||
timeout: PT30M
|
||||
/* highlight-add-end */
|
||||
|
||||
```
|
||||
|
||||
If you were providing transformers, these can be configured by extending `microsoftGraphOrgEntityProviderTransformExtensionPoint`
|
||||
|
||||
@@ -120,7 +120,7 @@ describe('MyDatabaseClass', () => {
|
||||
// "physical" databases to test against is much costlier than creating the
|
||||
// "logical" databases within them that the individual tests use.
|
||||
const databases = TestDatabases.create({
|
||||
ids: ['POSTGRES_13', 'POSTGRES_9', 'SQLITE_3', 'MYSQL_8'],
|
||||
ids: ['POSTGRES_16', 'POSTGRES_12', 'SQLITE_3', 'MYSQL_8'],
|
||||
});
|
||||
|
||||
// Just an example of how to conveniently bundle up the setup code
|
||||
|
||||
@@ -309,7 +309,7 @@ package, which is done as follows:
|
||||
.addRouter('', await app(appEnv));
|
||||
```
|
||||
3. Remove the `@backstage/plugin-app-backend` and the app package dependency
|
||||
(e.g. `app`) from `packages/backend/packages.json`. If you don't remove the
|
||||
(e.g. `app`) from `packages/backend/package.json`. If you don't remove the
|
||||
app package dependency the app will still be built and bundled with the
|
||||
backend.
|
||||
|
||||
|
||||
@@ -341,7 +341,7 @@ the three-dots menu option of entity views does offer this option, and the
|
||||
orphaned status can be seen in an info box at the top of the entity's overview
|
||||
page.
|
||||
|
||||
However, if you were to try to do an explicit depletion on an entity that's
|
||||
However, if you were to try to do an explicit deletion on an entity that's
|
||||
being kept actively updated by a parent entity, it would just reappear again
|
||||
shortly thereafter when the processing loops reconsider the parent entity that's
|
||||
still in there.
|
||||
|
||||
@@ -231,8 +231,53 @@ spec:
|
||||
inputType: tel
|
||||
```
|
||||
|
||||
### Using Secrets
|
||||
|
||||
You may want to mark things as secret and make sure that these values are protected and not available through REST endpoints. You can do this by using the built in `ui:field: Secret`.
|
||||
|
||||
You can define this property as any normal parameter, however the consumption of this parameter will not be available through `${{ parameters.myKey }}` you will instead need to use `${{ secrets.myKey }}` in your `template.yaml`.
|
||||
|
||||
Parameters will be automatically masked in the review step.
|
||||
|
||||
```yaml
|
||||
apiVersion: scaffolder.backstage.io/v1beta3
|
||||
kind: Template
|
||||
metadata:
|
||||
name: v1beta3-demo
|
||||
title: Test Action template
|
||||
description: scaffolder v1beta3 template demo
|
||||
spec:
|
||||
owner: backstage/techdocs-core
|
||||
type: service
|
||||
|
||||
parameters:
|
||||
- title: Authenticaion
|
||||
description: Provide authentication for the resource
|
||||
required:
|
||||
- username
|
||||
- password
|
||||
properties:
|
||||
username:
|
||||
type: string
|
||||
# use the built in Secret field extension
|
||||
ui:field: Secret
|
||||
password:
|
||||
type: string
|
||||
ui:field: Secret
|
||||
|
||||
steps:
|
||||
- id: setupAuthentication
|
||||
action: auth:create
|
||||
input:
|
||||
# make sure to use ${{ secrets.parameterName }} to reference these values
|
||||
username: ${{ secrets.username }}
|
||||
password: ${{ secrets.password }}
|
||||
```
|
||||
|
||||
### Hide or mask sensitive data on Review step
|
||||
|
||||
> Note: this approach is soon to be deprecated, please mark things as secret by using the `Secret` field extension instead as mentioned above.
|
||||
|
||||
Sometimes, specially in custom fields, you collect some data on Create form that
|
||||
must not be shown to the user on Review step. To hide or mask this data, you can
|
||||
use `ui:widget: password` or set some properties of `ui:backstage`:
|
||||
|
||||
@@ -9,8 +9,8 @@ This section will guide you through how to:
|
||||
|
||||
- [Create a basic documentation setup](#create-a-basic-documentation-setup)
|
||||
- [Use any software template](#use-any-software-template)
|
||||
- [Use the documentation template](#use-the-documentation-template)
|
||||
- [Enable documentation for an already existing entity](#enable-documentation-for-an-already-existing-entity)
|
||||
- [Create a standalone documentation](#create-a-standalone-documentation)
|
||||
- [Writing and previewing your documentation](#writing-and-previewing-your-documentation)
|
||||
|
||||
## Prerequisites
|
||||
@@ -41,23 +41,6 @@ default, we highly recommend you to set that up. Follow our how-to guide
|
||||
[How to add documentation setup to your software templates](./how-to-guides.md#how-to-add-the-documentation-setup-to-your-software-templates)
|
||||
to get started.
|
||||
|
||||
### Use the documentation template
|
||||
|
||||
There could be _some_ situations where you don't want to keep your docs close to
|
||||
your code, but still want to publish documentation - for example, an onboarding
|
||||
tutorial. For this use case, we have put together a documentation template. Your
|
||||
Backstage instance should by default have a documentation template added. If
|
||||
not, copy the catalog locations from the
|
||||
[create-app template](https://github.com/backstage/backstage/blob/master/packages/create-app/templates/default-app/app-config.yaml.hbs)
|
||||
to add the documentation template. The template creates a component with
|
||||
**only** TechDocs configuration and default markdown files, and is otherwise
|
||||
empty.
|
||||
|
||||

|
||||
|
||||
Create an entity from the documentation template and you will get the needed
|
||||
setup for free.
|
||||
|
||||
### Enable documentation for an already existing entity
|
||||
|
||||
Prerequisites:
|
||||
@@ -115,6 +98,56 @@ This is a basic example of documentation.
|
||||
Commit your changes, open a pull request and merge. You will now get your
|
||||
updated documentation next time you run Backstage!
|
||||
|
||||
### Create a standalone documentation
|
||||
|
||||
There could be _some_ situations where you don't want to keep your docs close to
|
||||
your code, but still want to publish documentation - for example, an onboarding
|
||||
tutorial. For this case, you can create a documentation component, which will be
|
||||
published as a standalone part of TechDocs.
|
||||
|
||||
First, create an entity for your documentation. A minimal example could look like
|
||||
this:
|
||||
|
||||
```yaml title="catalog-info.yaml"
|
||||
apiVersion: backstage.io/v1alpha1
|
||||
kind: Component
|
||||
metadata:
|
||||
name: a-unique-name-for-your-docs
|
||||
annotations:
|
||||
# this could also be `url:<url>` if the documentation isn't in the same location
|
||||
backstage.io/techdocs-ref: dir:.
|
||||
spec:
|
||||
type: documentation
|
||||
lifecycle: experimental
|
||||
owner: user-or-team-name
|
||||
```
|
||||
|
||||
Next, create the config file for [mkdocs](https://www.mkdocs.org/), which will be
|
||||
used to parse your docs:
|
||||
|
||||
```yaml title="mkdocs.yml"
|
||||
site_name: a-unique-name-for-your-docs
|
||||
site_description: An informative description
|
||||
plugins:
|
||||
- techdocs-core
|
||||
nav:
|
||||
- Getting Started: index.md
|
||||
```
|
||||
|
||||
Finally, add your index.md Markdown file, in a folder named `docs/` with your desired
|
||||
documentation in Markdown. Your file structure should now look like this:
|
||||
|
||||
```
|
||||
your-great-documentation/
|
||||
docs/
|
||||
index.md
|
||||
catalog-info.yaml
|
||||
mkdocs.yml
|
||||
```
|
||||
|
||||
Last but not least, register your component in the software catalog using
|
||||
[one of several options](../software-catalog/index.md#adding-components-to-the-catalog).
|
||||
|
||||
## Writing and previewing your documentation
|
||||
|
||||
Using the [techdocs-cli](https://github.com/backstage/backstage/tree/master/packages/techdocs-cli) you can
|
||||
|
||||
@@ -504,6 +504,18 @@ folder (/docs) or replace the content in this file.
|
||||
|
||||
Done! You now have support for TechDocs in your own software template!
|
||||
|
||||
### Prevent download of Google fonts
|
||||
|
||||
If your Backstage instance does not have internet access, the generation will fail. TechDocs tries to download the Roboto font from Google. You can disable it by adding the following lines to mkdocs.yaml:
|
||||
|
||||
```yaml
|
||||
theme:
|
||||
name: material
|
||||
font: false
|
||||
```
|
||||
|
||||
> Note: The addition `name: material` is necessary. Otherwise it will not work
|
||||
|
||||
## How to enable iframes in TechDocs
|
||||
|
||||
TechDocs uses the [DOMPurify](https://github.com/cure53/DOMPurify) library to
|
||||
|
||||
@@ -18,6 +18,10 @@ Each extensions has a number of different properties that define how it behaves
|
||||
|
||||
### ID
|
||||
|
||||
<!--
|
||||
Update this to be 3 different sections: name, kind and namespace
|
||||
-->
|
||||
|
||||
The ID of an extension is used to uniquely identity it, and it should ideally by unique across the entire Backstage ecosystem. For each frontend app instance there can only be a single extension for any given ID. Installing multiple extensions with the same ID will either result in an error or one of the extensions will override the others. The ID is also used to reference the extensions from other extensions, in configuration, and in other places such as developer tools and analytics.
|
||||
|
||||
### Output
|
||||
@@ -85,20 +89,64 @@ TODO
|
||||
|
||||
## Extension Inputs
|
||||
|
||||
TODO
|
||||
<!--
|
||||
|
||||
## Configuration
|
||||
Introduce the concept of extension inputs and how they use extension data to reference types just like outputs
|
||||
|
||||
TODO
|
||||
Show how to use the `createExtensionInput` API to create an input for an extension.
|
||||
|
||||
## Configuration Schema
|
||||
- Example of creating a single input
|
||||
|
||||
TODO
|
||||
Talk about different types of inputs, singleton vs array + optional vs required.
|
||||
|
||||
- Example of creating an optional singleton input - not the value is no longer an array
|
||||
|
||||
Talk about the shape of the input values and that you have access to the AppNode node in addition to the data, but discourage use of AppNode.
|
||||
|
||||
- Example of how to access the AppNode next to the input data
|
||||
|
||||
-->
|
||||
|
||||
## Extension Configuration
|
||||
|
||||
<!--
|
||||
|
||||
Introduce the concept of extension configuration, highlight that it's different from app config
|
||||
|
||||
Show how to define a configuration schema for an extension, talk about it using zod (link to zod), in general explain everything there is to know about the schema
|
||||
|
||||
- Example that creates a configuration schema for an extension
|
||||
|
||||
Show how to provide configuration for an extension - keep this part short, and instead link to the architecture section that talks about writing configuration
|
||||
|
||||
- One example of a YAML configurations for the above extension
|
||||
|
||||
-->
|
||||
|
||||
## Extension Creators
|
||||
|
||||
TODO
|
||||
<!--
|
||||
|
||||
Introduce the concept of extension creators, talk about how they are used to provide an opinionated way of creating extensions for specific use cases. Mention a few of the built-in creators, link to the reference section on built-in extension kinds (TBD).
|
||||
|
||||
- Example of using an existing extension creator to create an extension
|
||||
|
||||
Explain that each extension creator creates a specific "kind" of extensions - introduce the concept of extension kinds. Show an example of how the kind is used to build up the ID.
|
||||
|
||||
- Example of creating a new extension creator for creating a specific kind of extension
|
||||
|
||||
Explain that extension creators should be exported from library packages (`-react`) rather than plugin packages.
|
||||
|
||||
-->
|
||||
|
||||
## Extension Boundary
|
||||
|
||||
TODO
|
||||
<!--
|
||||
|
||||
Introduce the need for extension specific React contexts, for example error boundaries and analytics.
|
||||
|
||||
Any React elements that are rendered by extension creators should be wrapped in the `ExtensionBoundary`
|
||||
|
||||
- Example of how to use the `ExtensionBoundary` in an extension creator
|
||||
|
||||
-->
|
||||
|
||||
@@ -7,3 +7,87 @@ description: Frontend plugins
|
||||
---
|
||||
|
||||
> **NOTE: The new frontend system is in a highly experimental phase**
|
||||
|
||||
## Introduction
|
||||
|
||||
<!--
|
||||
|
||||
Introduce frontend plugins and how each of them is shipped as a separate package. Highlight that each package should only export a single plugin instance.
|
||||
|
||||
-->
|
||||
|
||||
## Creating a Plugin
|
||||
|
||||
<!--
|
||||
|
||||
How to create a simple plugin
|
||||
|
||||
-->
|
||||
|
||||
```ts
|
||||
export const myPlugin = createPlugin({
|
||||
id: 'my-plugin',
|
||||
});
|
||||
```
|
||||
|
||||
<!--
|
||||
|
||||
Note that this plugin is useless in itself, and you need to provide extra options to make it useful, in particular extensions.
|
||||
|
||||
-->
|
||||
|
||||
### Plugin ID
|
||||
|
||||
<!--
|
||||
|
||||
link to relevant docs
|
||||
|
||||
-->
|
||||
|
||||
### Plugin Extensions
|
||||
|
||||
<!--
|
||||
|
||||
- Example of how this option is used in `createPlugin`
|
||||
|
||||
link to relevant docs
|
||||
|
||||
-->
|
||||
|
||||
### Plugin Routes
|
||||
|
||||
<!--
|
||||
|
||||
- Example of how this option is used in `createPlugin`
|
||||
|
||||
link to relevant docs
|
||||
|
||||
-->
|
||||
|
||||
### Plugin External Routes
|
||||
|
||||
<!--
|
||||
|
||||
- Example of how this option is used in `createPlugin`
|
||||
|
||||
link to relevant docs
|
||||
|
||||
-->
|
||||
|
||||
### Plugin Feature Flags
|
||||
|
||||
<!--
|
||||
|
||||
- Example of how this option is used in `createPlugin`
|
||||
|
||||
link to relevant docs
|
||||
|
||||
-->
|
||||
|
||||
## Installing a Plugin in an App
|
||||
|
||||
<!--
|
||||
|
||||
Quick intro, but link back to app docs for more details
|
||||
|
||||
-->
|
||||
|
||||
@@ -7,3 +7,41 @@ description: Frontend extension overrides
|
||||
---
|
||||
|
||||
> **NOTE: The new frontend system is in a highly experimental phase**
|
||||
|
||||
## Introduction
|
||||
|
||||
<!--
|
||||
|
||||
Introduce extension overrides and how they can be shipped in separate packages but also internally within a project too.
|
||||
|
||||
Talk about how extension overrides
|
||||
|
||||
-->
|
||||
|
||||
## Creating a Extension Override
|
||||
|
||||
<!--
|
||||
|
||||
How to create an extension override and export it from a package.A
|
||||
|
||||
- Example using the default exports
|
||||
|
||||
You can also create them directly withing the app for local overrides.
|
||||
|
||||
- Example of installing an override directly into an app
|
||||
|
||||
Mention that in can still be a good idea to split your overrides out into separate packages in large projects. But it's up to you to decide how to group the extensions into extension overrides.
|
||||
|
||||
-->
|
||||
|
||||
## Overriding Existing Extensions
|
||||
|
||||
<!--
|
||||
|
||||
To override an existing extension you need to provide an extension through an extension override that has the same ID as the existing extension. That is, all of kind, namespace and name must match the extension you want to override.
|
||||
|
||||
This means that you typically need to provide an explicit namespace when overriding extensions from a plugin.
|
||||
|
||||
- Example of how to create an extension override for an existing extension from some plugin
|
||||
|
||||
-->
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user