Merge branch 'master' of github.com:zjpersc/backstage into techdocs-global
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend': minor
|
||||
---
|
||||
|
||||
Added the ability to be able to define an actions `input` and `output` schema using `zod` instead of hand writing types and `jsonschema`
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
---
|
||||
|
||||
Make identity valid if subject of token is a backstage server-2-server auth token
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/core-components': patch
|
||||
---
|
||||
|
||||
Button labels in the sidebar (previously displayed in uppercase) will be displayed in the case that is provided without any transformations.
|
||||
For example, a sidebar button with the label "Search" will appear as Search, "search" will appear as search, "SEARCH" will appear as SEARCH etc.
|
||||
This can potentially affect any overriding styles previously applied to change the appearance of Button labels in the Sidebar.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-permission-node': patch
|
||||
---
|
||||
|
||||
Changed the `createPermissionIntegrationRouter` API to allow `getResources`, `resourceType` and `rules` to be optional
|
||||
@@ -0,0 +1,21 @@
|
||||
---
|
||||
'@backstage/plugin-search-backend-module-elasticsearch': patch
|
||||
'@backstage/plugin-tech-insights-backend-module-jsonfc': patch
|
||||
'@backstage/plugin-catalog-backend-module-github': patch
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
'@backstage/plugin-scaffolder-react': patch
|
||||
'@backstage/plugin-splunk-on-call': patch
|
||||
'@backstage/plugin-techdocs-react': patch
|
||||
'@backstage/plugin-catalog-react': patch
|
||||
'@backstage/plugin-tech-insights': patch
|
||||
'@backstage/plugin-techdocs-node': patch
|
||||
'@backstage/plugin-search-react': patch
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
'@backstage/plugin-auth-node': patch
|
||||
'@backstage/plugin-sonarqube': patch
|
||||
'@backstage/plugin-techdocs': patch
|
||||
'@backstage/plugin-explore': patch
|
||||
'@backstage/plugin-search': patch
|
||||
---
|
||||
|
||||
Minor API report tweaks
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-react': patch
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
---
|
||||
|
||||
Make scaffolder adhere to page themes by using page `fontColor` consistently. If your theme overwrites template list or card headers, review those styles.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/create-app': patch
|
||||
---
|
||||
|
||||
Bumped create-app version.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder': minor
|
||||
---
|
||||
|
||||
Update `EntityPicker` to use the fully qualified entity ref instead of the humanized version.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-search-react': patch
|
||||
---
|
||||
|
||||
Correctly disable next button in `SearchPagination` on last page
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
---
|
||||
|
||||
Getting credentials in the RepoUrlPicker now also works for targets without owner (e.g. Bitbucket Server).
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-puppetdb': minor
|
||||
---
|
||||
|
||||
Initial version of the plugin.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-react': minor
|
||||
'@backstage/plugin-scaffolder': minor
|
||||
---
|
||||
|
||||
Move `useTaskStream`, `TaskBorder`, `TaskLogStream` and `TaskSteps` into `scaffolder-react`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-incremental-ingestion': minor
|
||||
---
|
||||
|
||||
Added endpoint to get a list of known incremental entity providers
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/backend-tasks': minor
|
||||
---
|
||||
|
||||
add functionality to get descriptions from the scheduler for triggering
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-msgraph': patch
|
||||
---
|
||||
|
||||
Fixed msgraph catalog backend to use user.select option when fetching user from AzureAD
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-techdocs': patch
|
||||
---
|
||||
|
||||
Fix bug that caused next and previous links not to work with certain versions of mkdocs-material
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
---
|
||||
|
||||
catalog write action should allow any shape of object
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes': patch
|
||||
---
|
||||
|
||||
GitLab can now be used as an `oidcTokenProvider` for Kubernetes clusters
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-adr-backend': patch
|
||||
---
|
||||
|
||||
Support MADR v3 format
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
'@backstage/backend-common': patch
|
||||
---
|
||||
|
||||
Adds config option `backend.database.role` to set ownership for newly created schemas and tables in Postgres
|
||||
|
||||
The example config below connects to the database as user `v-backstage-123` but sets the ownership of
|
||||
the create schemas and tables to `backstage`
|
||||
|
||||
```yaml
|
||||
backend:
|
||||
database:
|
||||
client: pg
|
||||
pluginDivisionMode: schema
|
||||
role: backstage
|
||||
connection:
|
||||
user: v-backstage-123
|
||||
...
|
||||
```
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-tech-radar': patch
|
||||
---
|
||||
|
||||
Update colors to match Zalando's tech radar, also add coloring on title and legend to match ring color.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-react': patch
|
||||
---
|
||||
|
||||
scaffolder/next: Move the `uiSchema` to its own property in the validation `context` to align with component development and access of `ui:options`
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch
|
||||
---
|
||||
|
||||
allow container runner to be undefined in cookiecutter plugin
|
||||
@@ -0,0 +1,21 @@
|
||||
---
|
||||
'@backstage/plugin-git-release-manager': patch
|
||||
'@backstage/plugin-microsoft-calendar': patch
|
||||
'@backstage/plugin-newrelic-dashboard': patch
|
||||
'@backstage/core-components': patch
|
||||
'@backstage/plugin-code-coverage': patch
|
||||
'@backstage/plugin-code-climate': patch
|
||||
'@backstage/plugin-azure-sites': patch
|
||||
'@backstage/plugin-firehydrant': patch
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
'@backstage/plugin-tech-radar': patch
|
||||
'@backstage/plugin-gcalendar': patch
|
||||
'@backstage/plugin-shortcuts': patch
|
||||
'@backstage/plugin-techdocs': patch
|
||||
'@backstage/plugin-catalog': patch
|
||||
'@backstage/plugin-explore': patch
|
||||
'@backstage/plugin-ilert': patch
|
||||
'@backstage/plugin-org': patch
|
||||
---
|
||||
|
||||
Change black & white colors to be theme aware
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
---
|
||||
|
||||
Create an "Other Templates" group when groups are given to scaffolder/next.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-react': patch
|
||||
---
|
||||
|
||||
scaffolder/next: Fix for steps without properties
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-api-docs': patch
|
||||
---
|
||||
|
||||
Fix dark theme Swagger's clear button font color.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-linguist-backend': patch
|
||||
---
|
||||
|
||||
Added support for linguist-js options using the linguistJSOptions in the plugin, the available config can be found [here](https://www.npmjs.com/package/linguist-js#API).
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/errors': patch
|
||||
---
|
||||
|
||||
Added `NotImplementedError`, which can be used when the server does not recognize the request method and is incapable of supporting it for any resource.
|
||||
+75
-2
@@ -210,45 +210,118 @@
|
||||
"@backstage/plugin-vault-backend": "0.2.8",
|
||||
"@backstage/plugin-xcmetrics": "0.2.35",
|
||||
"@backstage/plugin-octopus-deploy": "0.0.0",
|
||||
"@backstage/plugin-stackstorm": "0.0.0"
|
||||
"@backstage/plugin-stackstorm": "0.0.0",
|
||||
"@backstage/plugin-catalog-backend-module-puppetdb": "0.0.1"
|
||||
},
|
||||
"changesets": [
|
||||
"afraid-trees-stare",
|
||||
"backend-token-authentication",
|
||||
"breezy-bees-care",
|
||||
"bright-kids-raise",
|
||||
"clean-lemons-jump",
|
||||
"clean-planes-join",
|
||||
"clever-dogs-cheat",
|
||||
"cool-clocks-prove",
|
||||
"cool-feet-speak",
|
||||
"create-app-1676993958",
|
||||
"create-app-1678209629",
|
||||
"curvy-pets-hang",
|
||||
"eight-radios-bake",
|
||||
"eighty-chairs-roll",
|
||||
"eighty-geese-return",
|
||||
"empty-books-occur",
|
||||
"famous-sloths-tie",
|
||||
"fifty-beds-dress",
|
||||
"flat-kids-occur",
|
||||
"flat-peaches-act",
|
||||
"forty-snails-clap",
|
||||
"four-lizards-grin",
|
||||
"fresh-hairs-switch",
|
||||
"fuzzy-trains-search",
|
||||
"gentle-bears-love",
|
||||
"gentle-pears-clean",
|
||||
"great-trains-jam",
|
||||
"grumpy-bikes-begin",
|
||||
"happy-boxes-arrive",
|
||||
"honest-clouds-shout",
|
||||
"honest-nails-bake",
|
||||
"khaki-poems-run",
|
||||
"light-bees-end",
|
||||
"light-sheep-trade",
|
||||
"long-nails-pump",
|
||||
"long-wolves-drive",
|
||||
"lovely-tigers-look",
|
||||
"mean-toys-itch",
|
||||
"metal-suns-rhyme",
|
||||
"mighty-games-turn",
|
||||
"mighty-years-own",
|
||||
"new-jobs-deny",
|
||||
"nice-planets-wave",
|
||||
"nine-bikes-applaud",
|
||||
"ninety-turtles-wait",
|
||||
"odd-fireants-bathe",
|
||||
"odd-oranges-tease",
|
||||
"odd-waves-rescue",
|
||||
"old-foxes-shave",
|
||||
"olive-berries-poke",
|
||||
"orange-experts-hug",
|
||||
"perfect-mayflies-greet",
|
||||
"pink-dolls-unite",
|
||||
"polite-chicken-do",
|
||||
"polite-falcons-jump",
|
||||
"polite-wombats-smash",
|
||||
"purple-days-film",
|
||||
"quick-coats-sneeze",
|
||||
"quick-schools-dress",
|
||||
"quick-tables-listen",
|
||||
"quiet-ghosts-float",
|
||||
"rare-buses-swim",
|
||||
"rare-grapes-count",
|
||||
"rare-pandas-hope",
|
||||
"rename-for-the-win",
|
||||
"renovate-3672e5e",
|
||||
"renovate-4775edd",
|
||||
"renovate-488b7e7",
|
||||
"renovate-80f8787",
|
||||
"renovate-fb85ae7",
|
||||
"rich-clocks-approve",
|
||||
"rich-wombats-rescue",
|
||||
"rotten-cats-matter",
|
||||
"rotten-panthers-share",
|
||||
"selfish-hats-wait",
|
||||
"short-mayflies-fix",
|
||||
"silent-dryers-end",
|
||||
"silly-suits-run",
|
||||
"silver-bikes-breathe",
|
||||
"silver-lies-rest",
|
||||
"six-melons-rhyme",
|
||||
"slimy-lobsters-kneel",
|
||||
"slow-insects-cheat",
|
||||
"slow-pens-compare",
|
||||
"slow-suits-grab",
|
||||
"spotty-bees-tell",
|
||||
"spotty-turtles-reply",
|
||||
"spotty-wasps-complain",
|
||||
"swift-bags-wave",
|
||||
"tall-hats-talk",
|
||||
"ten-tigers-marry",
|
||||
"thin-candles-wait",
|
||||
"tiny-llamas-jump",
|
||||
"tricky-jars-film",
|
||||
"twelve-cars-push",
|
||||
"twenty-jeans-speak",
|
||||
"yellow-bananas-yawn"
|
||||
"unlucky-sloths-explain",
|
||||
"warm-vans-fail",
|
||||
"weak-coats-allow",
|
||||
"what-is-going-on-babe",
|
||||
"wicked-lions-repeat",
|
||||
"wicked-spoons-call",
|
||||
"wild-ads-pull",
|
||||
"wild-bulldogs-suffer",
|
||||
"witty-geckos-design",
|
||||
"yellow-bananas-yawn",
|
||||
"young-schools-double",
|
||||
"young-scissors-cough",
|
||||
"young-walls-prove"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/plugin-permission-node': patch
|
||||
---
|
||||
|
||||
Update the service-to-service auth docs URL in error message.
|
||||
``
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
'@backstage/core-app-api': minor
|
||||
---
|
||||
|
||||
`OAuth2` now gets ID tokens from a session with the `openid` scope explicitly
|
||||
requested.
|
||||
|
||||
This should not be considered a breaking change, because spec-compliant OIDC
|
||||
providers will already be returning ID tokens if and only if the `openid` scope
|
||||
is granted.
|
||||
|
||||
This change makes the dependence explicit, and removes the burden on
|
||||
OAuth2-based providers which require an ID token (e.g. this is done by various
|
||||
default [auth
|
||||
handlers](https://backstage.io/docs/auth/identity-resolver/#authhandler)) to add
|
||||
`openid` to their default scopes. _That_ could carry another indirect benefit:
|
||||
by removing `openid` from the default scopes for a provider, grants for
|
||||
resource-specific access tokens can avoid requesting excess ID token-related
|
||||
scopes.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/backend-common': patch
|
||||
'@backstage/plugin-catalog-backend-module-aws': patch
|
||||
---
|
||||
|
||||
AwsS3UrlReader upgraded to use aws-sdk v3
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-org': patch
|
||||
---
|
||||
|
||||
Add styling to the `MembersListCard` and `ComponentsGrid` to handle overflow text.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
---
|
||||
|
||||
Fix the scaffolder validator for arrays when the item is a field in the object
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog': minor
|
||||
---
|
||||
|
||||
allow entity switch to render all cases that match the condition
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend': patch
|
||||
---
|
||||
|
||||
Fix a bug where the batch fetch by ref endpoint did not work in conjunction with filtering (e.g. if authorization was enabled).
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-techdocs': patch
|
||||
---
|
||||
|
||||
Copy to clipboard now works in a not secure context.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Keep custom exports entry points in package.json
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/core-components': patch
|
||||
---
|
||||
|
||||
Use media queries to change layout instead of `isMobile` prop in `BackstagePage` component
|
||||
@@ -0,0 +1,20 @@
|
||||
---
|
||||
'@backstage/backend-plugin-api': patch
|
||||
'@backstage/backend-test-utils': patch
|
||||
'@backstage/backend-dev-utils': patch
|
||||
'@backstage/backend-defaults': patch
|
||||
'@backstage/backend-app-api': patch
|
||||
'@backstage/backend-common': patch
|
||||
'@backstage/backend-tasks': patch
|
||||
'@backstage/config-loader': patch
|
||||
'@backstage/cli-common': patch
|
||||
'@backstage/create-app': patch
|
||||
'@backstage/test-utils': patch
|
||||
'@backstage/dev-utils': patch
|
||||
'@backstage/codemods': patch
|
||||
'@backstage/config': patch
|
||||
'@backstage/theme': patch
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Updated link to docs.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog': minor
|
||||
---
|
||||
|
||||
Add a `columns` prop to certain components that use the `EntityTable` for easier extensibility.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/backend-app-api': patch
|
||||
---
|
||||
|
||||
Add support for `NotImplementedError`, properly returning 501 as status code.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@techdocs/cli': minor
|
||||
'@backstage/plugin-techdocs-node': minor
|
||||
---
|
||||
|
||||
Added support for an HTTPS proxy for techdocs AWS S3 requests
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-newrelic': patch
|
||||
---
|
||||
|
||||
Updated installation instructions
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-api-docs': patch
|
||||
---
|
||||
|
||||
Add a `columns` prop to certain components that use the `EntityTable` for easier extensibility.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-gitlab': patch
|
||||
---
|
||||
|
||||
filter gitlab groups by prefix
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-react': patch
|
||||
---
|
||||
|
||||
Do not close `Autocomplete` powered multiple-selection filters when checking boxes
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/core-plugin-api': minor
|
||||
---
|
||||
|
||||
The GitLab auth provider can now be used to get OpenID tokens.
|
||||
@@ -30,6 +30,7 @@ yarn.lock @backstage/maintainers @back
|
||||
/plugins/catalog-backend-module-aws @backstage/maintainers @backstage/catalog-core @pjungermann
|
||||
/plugins/catalog-backend-module-bitbucket-cloud @backstage/maintainers @backstage/catalog-core @pjungermann
|
||||
/plugins/catalog-backend-module-msgraph @backstage/maintainers @backstage/catalog-core @pjungermann
|
||||
/plugins/catalog-backend-module-puppetdb @backstage/maintainers @backstage/catalog-core @tdabasinskas
|
||||
/plugins/catalog-graph @backstage/maintainers @backstage/catalog-core @backstage/sda-se-reviewers
|
||||
/plugins/circleci @backstage/maintainers @adamdmharvey
|
||||
/plugins/cloudbuild @backstage/maintainers @trivago/ebarrios
|
||||
|
||||
@@ -29,7 +29,7 @@ jobs:
|
||||
ref: 'refs/pull/${{ github.event.pull_request.number }}/merge'
|
||||
- name: fetch base
|
||||
run: git fetch --depth 1 origin ${{ github.base_ref }}
|
||||
- uses: backstage/actions/changeset-feedback@v0.6.2
|
||||
- uses: backstage/actions/changeset-feedback@v0.6.3
|
||||
name: Generate feedback
|
||||
with:
|
||||
diff-ref: 'origin/master'
|
||||
|
||||
@@ -33,7 +33,7 @@ jobs:
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
|
||||
- name: yarn install
|
||||
uses: backstage/actions/yarn-install@v0.6.2
|
||||
uses: backstage/actions/yarn-install@v0.6.3
|
||||
with:
|
||||
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
|
||||
|
||||
@@ -63,7 +63,7 @@ jobs:
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
|
||||
- name: yarn install
|
||||
uses: backstage/actions/yarn-install@v0.6.2
|
||||
uses: backstage/actions/yarn-install@v0.6.3
|
||||
with:
|
||||
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
|
||||
|
||||
@@ -181,7 +181,7 @@ jobs:
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
|
||||
- name: yarn install
|
||||
uses: backstage/actions/yarn-install@v0.6.2
|
||||
uses: backstage/actions/yarn-install@v0.6.3
|
||||
with:
|
||||
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ jobs:
|
||||
cron:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: backstage/actions/cron@v0.6.2
|
||||
- uses: backstage/actions/cron@v0.6.3
|
||||
with:
|
||||
app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }}
|
||||
private-key: ${{ secrets.BACKSTAGE_GOALIE_PRIVATE_KEY }}
|
||||
|
||||
@@ -26,7 +26,7 @@ jobs:
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
|
||||
- name: yarn install
|
||||
uses: backstage/actions/yarn-install@v0.6.2
|
||||
uses: backstage/actions/yarn-install@v0.6.3
|
||||
with:
|
||||
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
|
||||
|
||||
@@ -55,6 +55,7 @@ jobs:
|
||||
context: './example-app'
|
||||
file: ./example-app/packages/backend/Dockerfile
|
||||
push: true
|
||||
platforms: linux/amd64,linux/arm64
|
||||
tags: |
|
||||
ghcr.io/${{ github.repository_owner }}/backstage:latest
|
||||
ghcr.io/${{ github.repository_owner }}/backstage:${{ github.event.client_payload.version }}
|
||||
|
||||
@@ -14,7 +14,7 @@ jobs:
|
||||
|
||||
env:
|
||||
CI: true
|
||||
NODE_OPTIONS: --max-old-space-size=7168
|
||||
NODE_OPTIONS: --max-old-space-size=8192
|
||||
DOCUSAURUS_SSR_CONCURRENCY: 5
|
||||
|
||||
steps:
|
||||
|
||||
@@ -26,7 +26,7 @@ jobs:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
- name: yarn install
|
||||
uses: backstage/actions/yarn-install@v0.6.2
|
||||
uses: backstage/actions/yarn-install@v0.6.3
|
||||
with:
|
||||
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ jobs:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
- name: yarn install
|
||||
uses: backstage/actions/yarn-install@v0.6.2
|
||||
uses: backstage/actions/yarn-install@v0.6.3
|
||||
with:
|
||||
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
|
||||
|
||||
@@ -145,7 +145,7 @@ jobs:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
- name: yarn install
|
||||
uses: backstage/actions/yarn-install@v0.6.2
|
||||
uses: backstage/actions/yarn-install@v0.6.3
|
||||
with:
|
||||
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
|
||||
|
||||
|
||||
@@ -10,4 +10,4 @@ jobs:
|
||||
if: github.repository == 'backstage/backstage'
|
||||
steps:
|
||||
- name: Issue sync
|
||||
uses: backstage/actions/issue-sync@v0.6.2
|
||||
uses: backstage/actions/issue-sync@v0.6.3
|
||||
|
||||
@@ -35,7 +35,7 @@ jobs:
|
||||
const prNumber = artifact.name.slice('pr_number-'.length)
|
||||
core.setOutput('pr-number', prNumber);
|
||||
|
||||
- uses: backstage/actions/re-review@v0.6.2
|
||||
- uses: backstage/actions/re-review@v0.6.3
|
||||
with:
|
||||
app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }}
|
||||
private-key: ${{ secrets.BACKSTAGE_GOALIE_PRIVATE_KEY }}
|
||||
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
if: github.repository == 'backstage/backstage' && ( github.event.pull_request || github.event.issue.pull_request )
|
||||
steps:
|
||||
- name: PR sync
|
||||
uses: backstage/actions/pr-sync@v0.6.2
|
||||
uses: backstage/actions/pr-sync@v0.6.3
|
||||
with:
|
||||
github-token: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }}
|
||||
app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }}
|
||||
|
||||
@@ -20,7 +20,7 @@ jobs:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
- name: yarn install
|
||||
uses: backstage/actions/yarn-install@v0.6.2
|
||||
uses: backstage/actions/yarn-install@v0.6.3
|
||||
with:
|
||||
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ jobs:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
- name: yarn install
|
||||
uses: backstage/actions/yarn-install@v0.6.2
|
||||
uses: backstage/actions/yarn-install@v0.6.3
|
||||
with:
|
||||
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ jobs:
|
||||
registry-url: https://registry.npmjs.org/
|
||||
|
||||
- name: yarn install
|
||||
uses: backstage/actions/yarn-install@v0.6.2
|
||||
uses: backstage/actions/yarn-install@v0.6.3
|
||||
with:
|
||||
cache-prefix: linux-v16
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ jobs:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
- name: yarn install
|
||||
uses: backstage/actions/yarn-install@v0.6.2
|
||||
uses: backstage/actions/yarn-install@v0.6.3
|
||||
with:
|
||||
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ jobs:
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
|
||||
- name: yarn install
|
||||
uses: backstage/actions/yarn-install@v0.6.2
|
||||
uses: backstage/actions/yarn-install@v0.6.3
|
||||
with:
|
||||
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ jobs:
|
||||
|
||||
env:
|
||||
CI: true
|
||||
NODE_OPTIONS: --max-old-space-size=4096
|
||||
NODE_OPTIONS: --max-old-space-size=8192
|
||||
DOCUSAURUS_SSR_CONCURRENCY: 5
|
||||
|
||||
steps:
|
||||
|
||||
@@ -35,7 +35,7 @@ jobs:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
- name: yarn install
|
||||
uses: backstage/actions/yarn-install@v0.6.2
|
||||
uses: backstage/actions/yarn-install@v0.6.3
|
||||
with:
|
||||
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
|
||||
- name: storybook yarn install
|
||||
|
||||
+5
-1
@@ -21,7 +21,7 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/
|
||||
| [Fiverr](https://www.fiverr.com) | [@nirga](https://github.com/nirga) | Unifying separate tools that developers are using today (i.e. monitoring, dead letter queues management, etc.) into a single platform. |
|
||||
| [Zalando SE](https://www.zalando.de) | [@leviferreira](https://github.com/leviferreira) | Building V2 of the Internal Development Portal. |
|
||||
| [LegalZoom](https://legalzoom.com) | [@backjo](https://github.com/backjo) | Developer portal - hub for all engineering projects and metadata. |
|
||||
| [Expedia Group](https://www.expediagroup.com) | [@gman0922](https://github.com/gman0922), [Sheena Sharma](mailto:shesharma@expediagroup.com), [Alekhya Karuturi](mailto:akaruturi@expediagroup.com) | EG Developer Front Door |
|
||||
| [Expedia Group](https://www.expediagroup.com) | [Guillermo Manzo](mailto:gmanzo@expediagroup.com), [Sheena Sharma](mailto:shesharma@expediagroup.com), [Alekhya Karuturi](mailto:akaruturi@expediagroup.com) | EG Developer Front Door |
|
||||
| [Paddle.com](https://paddle.com) | [Ioannis Georgoulas](https://github.com/geototti21) | Developer portal (Tech Docs, Service Catalog, Internal Tooling), we use vanilla Backstage FE and custom BE implementation in Go |
|
||||
| [Acast.com](https://acast.com) | [Olle Lundberg](https://github.com/lndbrg) | Developer portal with tech docs, service catalog and a bunch of other internal tooling |
|
||||
| [Lunar](https://lunar.app) | [Bjørn Hald Sørensen](https://github.com/crevil) | Internal developer portal for service overview and insights, API documentation, technical guides, onboarding guides and RFC's. |
|
||||
@@ -230,3 +230,7 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/
|
||||
| [OVO Energy](https://www.ovoenergy.com/) | [Michael Wizner](https://github.com/mwz), [Dan Laird](https://github.com/dlaird-ovo), [Samantha Betts](https://github.com/sammbetts) | Developer Experience Tool with an aim to to improve processes, boost productivity, finding of information/docs and building tech engagement throughout the business.
|
||||
| [MusicTribe](https://careers.musictribe.com/) | [Alex Ford](mailto:alex.j.ford@gmail.com), [Tiago Barbosa](https://github.com/t1agob) | We are starting to use Backstage as a developer portal to share API specifications and documentation, to quickly onboard new projects with the software templates, and to help developers discover software through the catalog.
|
||||
| [Cazoo](https://www.cazoo.co.uk/) | [Abz Mungul](https://www.linkedin.com/in/abzmungul/), [Scott Edwards](https://www.linkedin.com/in/scott-edwards-tech/) | We're assessing Backstage as our developer platform at Cazoo with a focus on reducing cognitive load for our engineers. We're currently aiming for 3 outcomes: creating visibility into service ownership across teams, improving the discoverability of event schemas and relationships, and improving the discoverability of technical documentation and best practices. |
|
||||
| [Gumtree](https://www.gumtree.com.au) | [Kumar Gaurav](https://www.linkedin.com/in/kumargaurav517) | We are starting to use it as a single place to find all component information in a distributed architecture. |
|
||||
| [N26](https://n26.com) | [Alexei Timofti](https://www.linkedin.com/in/alexeitimofti) | We use Backstage for our service catalog and are actively looking into adopting other plugins like TechDocs, TechInsights and Software Templates. |
|
||||
| [The LEGO Group](https://www.lego.com) | [Waqas Ali](https://www.linkedin.com/in/waqasali47) | We are building our internal develper portal on top of Backstage. |
|
||||
|
||||
|
||||
+1
-59
@@ -8,65 +8,7 @@ Contributions are welcome, and they are greatly appreciated! Every little bit he
|
||||
|
||||
Backstage is released under the Apache 2.0 License, and original creations contributed to this repo are accepted under the same license.
|
||||
|
||||
## Types of Contributions
|
||||
|
||||
### Report bugs
|
||||
|
||||
No one likes bugs. Report bugs as an issue [here](https://github.com/backstage/backstage/issues/new?template=bug_template.md).
|
||||
|
||||
### Fix bugs or build new features
|
||||
|
||||
Look through the GitHub issues for [bugs](https://github.com/backstage/backstage/labels/bug), [good first issues](https://github.com/backstage/backstage/labels/good%20first%20issue) or [help wanted](https://github.com/backstage/backstage/labels/help%20wanted).
|
||||
|
||||
### Build a plugin
|
||||
|
||||
The value of Backstage grows with every new plugin that gets added. Wouldn't it be fantastic if there was a plugin for every infrastructure project out there? We think so. And we would love your help.
|
||||
|
||||
A great reference example of a plugin can be found on [our blog](https://backstage.io/blog/2020/04/06/lighthouse-plugin) (thanks [@fastfrwrd](https://github.com/fastfrwrd)!)
|
||||
|
||||
What kind of plugins should/could be created? Some inspiration from the 120+ plugins that we have developed inside Spotify can be found [here](https://backstage.io/demos), but we will keep a running list of suggestions labeled with [[plugin]](https://github.com/backstage/backstage/labels/plugin).
|
||||
|
||||
### Suggesting a plugin
|
||||
|
||||
If you start developing a plugin that you aim to release as open source, we suggest that you create a [new Issue](https://github.com/backstage/backstage/issues/new?labels=plugin&template=plugin_template.md&title=%5BPlugin%5D+THE+PLUGIN+NAME). This helps the community know what plugins are in development.
|
||||
|
||||
You can also use this process if you have an idea for a good plugin but you hope that someone else will pick up the work.
|
||||
|
||||
### Adding Non-code Contributions
|
||||
|
||||
Since there is such a large landscape of possible development, build, and deployment environments, we welcome community contributions in these areas in the [`/contrib`](https://github.com/backstage/backstage/tree/master/contrib) folder of the project. This is an excellent place to put things that help out the community at large, but which may not fit within the scope of the core product to support natively. Here, you will find Helm charts, alternative Docker images, and much more.
|
||||
|
||||
### Write Documentation or improve the website
|
||||
|
||||
The current documentation is very limited. Help us make the `/docs` folder come alive.
|
||||
|
||||
Docs are published to [backstage.io/docs](https://backstage.io/docs). If you
|
||||
contribute to the documentation, you might want to preview your changes before
|
||||
submitting them. You'll find the website sources under [/microsite](/microsite)
|
||||
with instructions for building and locally serving the website in the
|
||||
[README](/microsite#readme).
|
||||
|
||||
### Contribute to Storybook
|
||||
|
||||
We think the best way to ensure different plugins provide a consistent experience is through a solid set of reusable UI/UX components. Backstage uses [Storybook](http://backstage.io/storybook).
|
||||
|
||||
Either help us [create new components](https://github.com/backstage/backstage/labels/help%20wanted) or improve stories for the existing ones (look for files with `*.stories.tsx`).
|
||||
|
||||
### Submit Feedback
|
||||
|
||||
The best way to send feedback is to file [an issue](https://github.com/backstage/backstage/issues).
|
||||
|
||||
If you are proposing a feature:
|
||||
|
||||
- Explain in detail how it would work.
|
||||
- Keep the scope as narrow as possible, to make it easier to implement.
|
||||
- Use appropriate labels
|
||||
- Remember that this is a volunteer-driven project, and that contributions
|
||||
are welcome :)
|
||||
|
||||
### Add your company to `ADOPTERS`
|
||||
|
||||
Have you started using Backstage? Adding your company to [ADOPTERS](ADOPTERS.md) really helps the project, you can do this by filling out this [Adopter form](https://form.typeform.com/to/zcOaKikB).
|
||||
You can find out more about the types of contributions over at [getting involved](https://backstage.io/docs/getting-started/getting-involved)!
|
||||
|
||||
## Get Started!
|
||||
|
||||
|
||||
@@ -16,13 +16,13 @@
|
||||
|
||||
Backstage unifies all your infrastructure tooling, services, and documentation to create a streamlined development environment from end to end.
|
||||
|
||||

|
||||

|
||||
|
||||
Out of the box, Backstage includes:
|
||||
|
||||
- [Backstage Software Catalog](https://backstage.io/docs/features/software-catalog/software-catalog-overview) for managing all your software (microservices, libraries, data pipelines, websites, ML models, etc.)
|
||||
- [Backstage Software Templates](https://backstage.io/docs/features/software-templates/software-templates-index) for quickly spinning up new projects and standardizing your tooling with your organization’s best practices
|
||||
- [Backstage TechDocs](https://backstage.io/docs/features/techdocs/techdocs-overview) for making it easy to create, maintain, find, and use technical documentation, using a "docs like code" approach
|
||||
- [Backstage Software Catalog](https://backstage.io/docs/features/software-catalog/) for managing all your software (microservices, libraries, data pipelines, websites, ML models, etc.)
|
||||
- [Backstage Software Templates](https://backstage.io/docs/features/software-templates/) for quickly spinning up new projects and standardizing your tooling with your organization’s best practices
|
||||
- [Backstage TechDocs](https://backstage.io/docs/features/techdocs/) for making it easy to create, maintain, find, and use technical documentation, using a "docs like code" approach
|
||||
- Plus, a growing ecosystem of [open source plugins](https://github.com/backstage/backstage/tree/master/plugins) that further expand Backstage’s customizability and functionality
|
||||
|
||||
Backstage was created by Spotify but is now hosted by the [Cloud Native Computing Foundation (CNCF)](https://www.cncf.io) as an Incubation level project. Read the announcement [here](https://backstage.io/blog/2022/03/16/backstage-turns-two#out-of-the-sandbox-and-into-incubation).
|
||||
@@ -38,8 +38,8 @@ Check out [the documentation](https://backstage.io/docs/getting-started) on how
|
||||
## Documentation
|
||||
|
||||
- [Main documentation](https://backstage.io/docs)
|
||||
- [Software Catalog](https://backstage.io/docs/features/software-catalog/software-catalog-overview)
|
||||
- [Architecture](https://backstage.io/docs/overview/architecture-overview) ([Decisions](https://backstage.io/docs/architecture-decisions/adrs-overview))
|
||||
- [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)
|
||||
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@ app:
|
||||
|
||||
backend:
|
||||
# Used for enabling authentication, secret is shared by all backend plugins
|
||||
# See https://backstage.io/docs/tutorials/backend-to-backend-auth for
|
||||
# See https://backstage.io/docs/auth/service-to-service-auth for
|
||||
# information on the format
|
||||
# auth:
|
||||
# keys:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Catalog Contrib
|
||||
|
||||
This directory contains various community contributions related to [the Backstage catalog](https://backstage.io/docs/features/software-catalog/software-catalog-overview).
|
||||
This directory contains various community contributions related to [the Backstage catalog](https://backstage.io/docs/features/software-catalog/).
|
||||
|
||||
There is no guarantee of correctness or fitness of purpose of these
|
||||
contributions, but we hope that they are helpful to someone!
|
||||
|
||||
+1
-1
@@ -176,7 +176,7 @@ By far, our most-used plugin is our TechDocs plugin, which we use for creating
|
||||
technical documentation. Our philosophy at Spotify is to treat "docs like code",
|
||||
where you write documentation using the same workflow as you write your code.
|
||||
This makes it easier to create, find, and update documentation.
|
||||
[TechDocs is now open source.](https://backstage.io/docs/features/techdocs/techdocs-overview)
|
||||
[TechDocs is now open source.](https://backstage.io/docs/features/techdocs/)
|
||||
(See also:
|
||||
"[Will Spotify's internal plugins be open sourced, too?](#will-spotifys-internal-plugins-be-open-sourced-too)"
|
||||
above)
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
# Documentation
|
||||
|
||||
The Backstage documentation is available at https://backstage.io/docs
|
||||
@@ -18,7 +18,11 @@ Settings for local development:
|
||||
|
||||
- Name: Backstage (or your custom app name)
|
||||
- Redirect URI: `http://localhost:7007/api/auth/gitlab/handler/frame`
|
||||
- Scopes: `read_api` and `read_user`
|
||||
- Scopes: `read_user` for sign-in. If you also need ID tokens (e.g. if you are
|
||||
using the Kubernetes plugin and have clusters with `authProvider: oidc` and
|
||||
[`oidcTokenProvider:
|
||||
gitlab`](https://backstage.io/docs/features/kubernetes/configuration/#clustersoidctokenprovider-optional)),
|
||||
add the `openid` scope.
|
||||
|
||||
## Configuration
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ title: Service to Service Auth
|
||||
description: This section describes how to use service to service authentication, both internally within Backstage plugins and towards external services.
|
||||
---
|
||||
|
||||
This article describes the steps needed to introduce _backend-to-backend auth_.
|
||||
This article describes the steps needed to introduce _service-to-service auth_ (formerly _backend-to-backend_ auth).
|
||||
This allows plugin backends to determine whether a given request originates from
|
||||
a legitimate Backstage plugin (or other external caller), by requiring a special
|
||||
type of service-to-service token which is signed with a shared secret.
|
||||
@@ -58,7 +58,7 @@ backend:
|
||||
|
||||
**NOTE**: For ease of development, we auto-generate a key for you if you haven't
|
||||
configured a secret in dev mode. You _must set your own secret_ in order for
|
||||
backend-to-backend auth to work in production; the `ServiceTokenManager` will
|
||||
service-to-service auth to work in production; the `ServiceTokenManager` will
|
||||
throw an exception in production if it has no keys to work with, which will lead
|
||||
to the backend failing to start up.
|
||||
|
||||
|
||||
@@ -168,7 +168,61 @@ Whenever you want to allow modules to configure your plugin dynamically, for
|
||||
example in the way that the catalog backend lets catalog modules inject
|
||||
additional entity providers, you can use the extension points mechanism. This is
|
||||
described in detail with code examples in [the extension points architecture
|
||||
article](../architecture/05-extension-points.md).
|
||||
article](../architecture/05-extension-points.md), while the following is a more
|
||||
slim example of how to implement an extension point for a plugin:
|
||||
|
||||
```ts
|
||||
import { createExtensionPoint } from '@backstage/backend-plugin-api';
|
||||
|
||||
// This is the extension point interface, which is how modules interact with your plugin.
|
||||
export interface ExamplesExtensionPoint {
|
||||
addExample(example: Example): void;
|
||||
}
|
||||
|
||||
// This is the extension point reference that encapsulates the above interface.
|
||||
export const examplesExtensionPoint =
|
||||
createExtensionPoint<ExamplesExtensionPoint>({
|
||||
id: 'example.examples',
|
||||
});
|
||||
|
||||
// This is the implementation of the extension point, which is internal to your plugin.
|
||||
class ExamplesExtension implements ExamplesExtensionPoint {
|
||||
#examples: Example[] = [];
|
||||
|
||||
addExample(example: Example): void {
|
||||
this.#examples.push(example);
|
||||
}
|
||||
|
||||
// Note that this method is internal to this implementation
|
||||
getRegisteredExamples() {
|
||||
return this.#examples;
|
||||
}
|
||||
}
|
||||
|
||||
// The following shows how your plugin would register the extension point
|
||||
// and use the features that other modules have registered.
|
||||
export const examplePlugin = createBackendPlugin({
|
||||
pluginId: 'example',
|
||||
register(env) {
|
||||
const examplesExtensions = new ExamplesExtension();
|
||||
env.registerExtensionPoint(examplesExtensionPoint, examplesExtensions);
|
||||
|
||||
env.registerInit({
|
||||
deps: { logger: coreServices.logger },
|
||||
async init({ logger }) {
|
||||
// We can access `examplesExtension` directly, giving us access to the internal interface.
|
||||
const examples = examplesExtension.getRegisteredExamples();
|
||||
|
||||
logger.info(`The following examples have been registered: ${examples}`);
|
||||
},
|
||||
});
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
This is a very common type of extension point, one where modules are given the opportunity to register features to be used by the plugin. In this case modules are able to register examples that are then used by our examples plugin.
|
||||
|
||||
Note that the public extension point interface only needs to expose the `addExample` method, while the `getRegisteredExamples()` method is kept internal to the plugin.
|
||||
|
||||
### Configuration
|
||||
|
||||
|
||||
@@ -160,8 +160,9 @@ auth:
|
||||
audience: ${AUTH_OKTA_AUDIENCE}
|
||||
```
|
||||
|
||||
The following values are supported out-of-the-box by the frontend: `google`, `microsoft`,
|
||||
`okta`, `onelogin`.
|
||||
The following values are supported out-of-the-box by the frontend: `gitlab` (the
|
||||
application whose `clientId` is used by the auth provider should be granted the
|
||||
`openid` scope), `google`, `microsoft`, `okta`, `onelogin`.
|
||||
|
||||
Take note that `oidcTokenProvider` is just the issuer for the token, you can use any
|
||||
of these with an OIDC enabled cluster, like using `microsoft` as the issuer for a EKS
|
||||
|
||||
@@ -255,7 +255,7 @@ i.e. not Backstage specific but the same as in Kubernetes.
|
||||
|
||||
Each entity gets an automatically generated globally unique ID when it first
|
||||
enters the database. This field is not meant to be specified as input data, but
|
||||
is rater created by the database engine itself when producing the output entity.
|
||||
is rather created by the database engine itself when producing the output entity.
|
||||
|
||||
Note that `uid` values are _not_ to be seen as stable, and should _not_ be used
|
||||
as external references to an entity. The `uid` can change over time even when a
|
||||
|
||||
@@ -14,7 +14,7 @@ websites, libraries, data pipelines, etc). The catalog is built around the
|
||||
concept of [metadata YAML files](descriptor-format.md) stored together with the
|
||||
code, which are then harvested and visualized in Backstage.
|
||||
|
||||

|
||||

|
||||
|
||||
## How it works
|
||||
|
||||
|
||||
@@ -97,7 +97,7 @@ References for `createScaffolderFieldExtension` have an `/alpha` version of `cre
|
||||
|
||||
```diff
|
||||
-import { createScaffolderFieldExtension } from '@backstage/plugin-scaffolder';
|
||||
+import { createNextScaffolderFieldExtension } from '@backstage/plugin-scaffolder/alpha';
|
||||
+import { createNextScaffolderFieldExtension } from '@backstage/plugin-scaffolder-react/alpha';
|
||||
|
||||
export const EntityNamePickerFieldExtension = scaffolderPlugin.provide(
|
||||
- createScaffolderFieldExtension({
|
||||
|
||||
@@ -24,8 +24,53 @@ passed as `input` to the function.
|
||||
In `packages/backend/src/plugins/scaffolder/actions/custom.ts` we can create a
|
||||
new action.
|
||||
|
||||
```ts
|
||||
import { createTemplateAction } from '@backstage/plugin-scaffolder-backend';
|
||||
```ts title="With Zod"
|
||||
import { createTemplateAction } from '@backstage/plugin-scaffolder-node';
|
||||
import fs from 'fs-extra';
|
||||
import { z } from 'zod';
|
||||
|
||||
export const createNewFileAction = () => {
|
||||
return createTemplateAction({
|
||||
id: 'mycompany:create-file',
|
||||
schema: {
|
||||
input: z.object({
|
||||
contents: z.string().describe('The contents of the file'),
|
||||
filename: z
|
||||
.string()
|
||||
.describe('The filename of the file that will be created'),
|
||||
}),
|
||||
},
|
||||
|
||||
async handler(ctx) {
|
||||
await fs.outputFile(
|
||||
`${ctx.workspacePath}/${ctx.input.filename}`,
|
||||
ctx.input.contents,
|
||||
);
|
||||
},
|
||||
});
|
||||
};
|
||||
```
|
||||
|
||||
So let's break this down. The `createNewFileAction` is a function that returns a
|
||||
`createTemplateAction`, and it's a good place to pass in dependencies which
|
||||
close over the `TemplateAction`. Take a look at our
|
||||
[built-in actions](https://github.com/backstage/backstage/blob/master/plugins/scaffolder-backend/src/scaffolder/actions/builtin)
|
||||
for reference.
|
||||
|
||||
The `createTemplateAction` takes an object which specifies the following:
|
||||
|
||||
- `id` - a unique ID for your custom action. We encourage you to namespace these
|
||||
in some way so that they won't collide with future built-in actions that we
|
||||
may ship with the `scaffolder-backend` plugin.
|
||||
- `schema.input` - A `zod` or JSON schema object for input values to your function
|
||||
- `schema.output` - A `zod` or JSON schema object for values which are output from the
|
||||
function using `ctx.output`
|
||||
- `handler` - the actual code which is run part of the action, with a context
|
||||
|
||||
You can also choose to define your custom action using JSON schema instead of `zod`:
|
||||
|
||||
```ts title="With JSON Schema"
|
||||
import { createTemplateAction } from '@backstage/plugin-scaffolder-node';
|
||||
import fs from 'fs-extra';
|
||||
|
||||
export const createNewFileAction = () => {
|
||||
@@ -59,27 +104,6 @@ export const createNewFileAction = () => {
|
||||
};
|
||||
```
|
||||
|
||||
So let's break this down. The `createNewFileAction` is a function that returns a
|
||||
`createTemplateAction`, and it's a good place to pass in dependencies which
|
||||
close over the `TemplateAction`. Take a look at our
|
||||
[built-in actions](https://github.com/backstage/backstage/blob/master/plugins/scaffolder-backend/src/scaffolder/actions/builtin)
|
||||
for reference.
|
||||
|
||||
We set the type generic to `{ contents: string, filename: string }` which is
|
||||
there to set the type on the handler `ctx` `inputs` property so we get good type
|
||||
checking. This could be generated from the next part of this guide, the `input`
|
||||
schema, but it's not supported right now. Feel free to contribute 🚀 👍.
|
||||
|
||||
The `createTemplateAction` takes an object which specifies the following:
|
||||
|
||||
- `id` - a unique ID for your custom action. We encourage you to namespace these
|
||||
in some way so that they won't collide with future built-in actions that we
|
||||
may ship with the `scaffolder-backend` plugin.
|
||||
- `schema.input` - A JSON schema for input values to your function
|
||||
- `schema.output` - A JSON schema for values which are outputted from the
|
||||
function using `ctx.output`
|
||||
- `handler` - the actual code which is run part of the action, with a context
|
||||
|
||||
### The context object
|
||||
|
||||
When the action `handler` is called, we provide you a `context` as the only
|
||||
@@ -89,10 +113,10 @@ argument. It looks like the following:
|
||||
- `ctx.logger` - a Winston logger for additional logging inside your action
|
||||
- `ctx.logStream` - a stream version of the logger if needed
|
||||
- `ctx.workspacePath` - a string of the working directory of the template run
|
||||
- `ctx.input` - an object which should match the JSON schema provided in the
|
||||
- `ctx.input` - an object which should match the `zod` or JSON schema provided in the
|
||||
`schema.input` part of the action definition
|
||||
- `ctx.output` - a function which you can call to set outputs that match the
|
||||
JSON schema in `schema.output` for ex. `ctx.output('downloadUrl', something)`
|
||||
JSON schema or `zod` in `schema.output` for ex. `ctx.output('downloadUrl', myDownloadUrl)`
|
||||
- `createTemporaryDirectory` a function to call to give you a temporary
|
||||
directory somewhere on the runner so you can store some files there rather
|
||||
than polluting the `workspacePath`
|
||||
|
||||
@@ -8,7 +8,7 @@ description: TechDocs CLI - a utility command line interface for managing TechDo
|
||||
Utility command line interface for managing TechDocs sites in
|
||||
[Backstage](https://github.com/backstage/backstage).
|
||||
|
||||
https://backstage.io/docs/features/techdocs/techdocs-overview
|
||||
https://backstage.io/docs/features/techdocs/
|
||||
|
||||
## Features
|
||||
|
||||
@@ -176,29 +176,28 @@ Usage: techdocs-cli publish [options]
|
||||
Publish generated TechDocs site to an external storage AWS S3, Google GCS, etc.
|
||||
|
||||
Options:
|
||||
--publisher-type <TYPE> (Required always) awsS3 | googleGcs | azureBlobStorage
|
||||
- same as techdocs.publisher.type in Backstage
|
||||
app-config.yaml
|
||||
--storage-name <BUCKET/CONTAINER NAME> (Required always) In case of AWS/GCS, use the bucket
|
||||
name. In case of Azure, use container name. Same as
|
||||
techdocs.publisher.[TYPE].bucketName
|
||||
--entity <NAMESPACE/KIND/NAME> (Required always) Entity uid separated by / in
|
||||
namespace/kind/name order (case-sensitive). Example:
|
||||
default/Component/myEntity
|
||||
--legacyUseCaseSensitiveTripletPaths Publishes objects with cased entity triplet prefix when set (e.g. namespace/Kind/name).
|
||||
Only use if your TechDocs backend is configured the same way
|
||||
--azureAccountName <AZURE ACCOUNT NAME> (Required for Azure) specify when --publisher-type
|
||||
azureBlobStorage
|
||||
--azureAccountKey <AZURE ACCOUNT KEY> Azure Storage Account key to use for authentication.
|
||||
If not specified, you must set AZURE_TENANT_ID,
|
||||
AZURE_CLIENT_ID & AZURE_CLIENT_SECRET as environment
|
||||
variables.
|
||||
--awsRoleArn <AWS ROLE ARN> Optional AWS ARN of role to be assumed.
|
||||
--awsEndpoint <AWS ENDPOINT> Optional AWS endpoint to send requests to.
|
||||
--awsS3ForcePathStyle Optional AWS S3 option to force path style.
|
||||
--directory <PATH> Path of the directory containing generated files to
|
||||
publish (default: "./site/")
|
||||
-h, --help display help for command
|
||||
--publisher-type <TYPE> (Required always) awsS3 | googleGcs | azureBlobStorage | openStackSwift - same as techdocs.publisher.type in Backstage app-config.yaml
|
||||
--storage-name <BUCKET/CONTAINER NAME> (Required always) In case of AWS/GCS, use the bucket name. In case of Azure, use container name. Same as
|
||||
techdocs.publisher.[TYPE].bucketName
|
||||
--entity <NAMESPACE/KIND/NAME> (Required always) Entity uid separated by / in namespace/kind/name order (case-sensitive). Example: default/Component/myEntity
|
||||
--legacyUseCaseSensitiveTripletPaths Publishes objects with cased entity triplet prefix when set (e.g. namespace/Kind/name). Only use if your TechDocs backend is configured
|
||||
the same way. (default: false)
|
||||
--azureAccountName <AZURE ACCOUNT NAME> (Required for Azure) specify when --publisher-type azureBlobStorage
|
||||
--azureAccountKey <AZURE ACCOUNT KEY> Azure Storage Account key to use for authentication. If not specified, you must set AZURE_TENANT_ID, AZURE_CLIENT_ID &
|
||||
AZURE_CLIENT_SECRET as environment variables.
|
||||
--awsRoleArn <AWS ROLE ARN> Optional AWS ARN of role to be assumed.
|
||||
--awsEndpoint <AWS ENDPOINT> Optional AWS endpoint to send requests to.
|
||||
--awsProxy <HTTPS Proxy> Optional Proxy to use for AWS requests.
|
||||
--awsS3sse <AWS SSE> Optional AWS S3 Server Side Encryption.
|
||||
--awsS3ForcePathStyle Optional AWS S3 option to force path style.
|
||||
--awsBucketRootPath <AWS BUCKET ROOT PATH> Optional sub-directory to store files in Amazon S3
|
||||
--osCredentialId <OPENSTACK SWIFT APPLICATION CREDENTIAL ID> (Required for OpenStack) specify when --publisher-type openStackSwift
|
||||
--osSecret <OPENSTACK SWIFT APPLICATION CREDENTIAL SECRET> (Required for OpenStack) specify when --publisher-type openStackSwift
|
||||
--osAuthUrl <OPENSTACK SWIFT AUTHURL> (Required for OpenStack) specify when --publisher-type openStackSwift
|
||||
--osSwiftUrl <OPENSTACK SWIFT SWIFTURL> (Required for OpenStack) specify when --publisher-type openStackSwift
|
||||
--gcsBucketRootPath <GCS BUCKET ROOT PATH> Optional sub-directory to store files in Google cloud storage
|
||||
--directory <PATH> Path of the directory containing generated files to publish (default: "./site/")
|
||||
-h, --help display help for command
|
||||
```
|
||||
|
||||
### Migrate content for case-insensitive access
|
||||
|
||||
@@ -136,6 +136,11 @@ techdocs:
|
||||
# https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-s3/interfaces/s3clientconfig.html#endpoint
|
||||
endpoint: ${AWS_ENDPOINT}
|
||||
|
||||
# (Optional) HTTPS proxy to use for S3 Requests
|
||||
# Defaults to using no proxy
|
||||
# This allows docs to be published and read from behind a proxy
|
||||
httpsProxy: ${HTTPS_PROXY}
|
||||
|
||||
# (Optional) Whether to use path style URLs when communicating with S3.
|
||||
# Defaults to false.
|
||||
# This allows providers like LocalStack, Minio and Wasabi (and possibly others) to be used to host tech docs.
|
||||
|
||||
@@ -433,7 +433,7 @@ const app = createApp({
|
||||
|
||||
## How to add the documentation setup to your software templates
|
||||
|
||||
[Software Templates](https://backstage.io/docs/features/software-templates/software-templates-index)
|
||||
[Software Templates](https://backstage.io/docs/features/software-templates/)
|
||||
in Backstage is a tool that can help your users to create new components out of
|
||||
already configured templates. It comes with a set of default templates to use,
|
||||
but you can also
|
||||
|
||||
@@ -71,9 +71,9 @@ app
|
||||
good starting point for you to get to know Backstage.
|
||||
- **packages/backend/**: We include a backend that helps power features such as
|
||||
[Authentication](https://backstage.io/docs/auth/),
|
||||
[Software Catalog](https://backstage.io/docs/features/software-catalog/software-catalog-overview),
|
||||
[Software Templates](https://backstage.io/docs/features/software-templates/software-templates-index)
|
||||
and [TechDocs](https://backstage.io/docs/features/techdocs/techdocs-overview)
|
||||
[Software Catalog](https://backstage.io/docs/features/software-catalog/),
|
||||
[Software Templates](https://backstage.io/docs/features/software-templates/)
|
||||
and [TechDocs](https://backstage.io/docs/features/techdocs/)
|
||||
amongst other things.
|
||||
|
||||
### Troubleshooting
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
---
|
||||
id: getting-involved
|
||||
title: Getting Involved
|
||||
# prettier-ignore
|
||||
description: How can you help us build Backstage? We welcome contributions of all kinds, from documentation to code to design.
|
||||
---
|
||||
|
||||
We encourage contributions of all kinds, from documentation to code to design, here's some ideas on how you can help us build and improve Backstage!
|
||||
|
||||
### Report bugs
|
||||
|
||||
No one likes bugs. Report bugs as an issue [here](https://github.com/backstage/backstage/issues/new?template=bug_template.md).
|
||||
|
||||
### Fix bugs or build new features
|
||||
|
||||
Look through the GitHub issues for [bugs](https://github.com/backstage/backstage/labels/bug), [good first issues](https://github.com/backstage/backstage/labels/good%20first%20issue) or [help wanted](https://github.com/backstage/backstage/labels/help%20wanted).
|
||||
|
||||
### Build a plugin
|
||||
|
||||
The value of Backstage grows with every new plugin that gets added. Wouldn't it be fantastic if there was a plugin for every infrastructure project out there? We think so. And we would love your help.
|
||||
|
||||
A great reference example of a plugin can be found on [our blog](https://backstage.io/blog/2020/04/06/lighthouse-plugin) (thanks [@fastfrwrd](https://github.com/fastfrwrd)!)
|
||||
|
||||
What kind of plugins should/could be created? Some inspiration from the 120+ plugins that we have developed inside Spotify can be found [here](https://backstage.io/demos), but we will keep a running list of suggestions labeled with [[plugin]](https://github.com/backstage/backstage/labels/plugin).
|
||||
|
||||
### Suggesting a plugin
|
||||
|
||||
If you start developing a plugin that you aim to release as open source, we suggest that you create a [new Issue](https://github.com/backstage/backstage/issues/new?labels=plugin&template=plugin_template.md&title=%5BPlugin%5D+THE+PLUGIN+NAME). This helps the community know what plugins are in development.
|
||||
|
||||
You can also use this process if you have an idea for a good plugin but you hope that someone else will pick up the work.
|
||||
|
||||
### Adding non-code Contributions
|
||||
|
||||
Since there is such a large landscape of possible development, build, and deployment environments, we welcome community contributions in these areas in the [`/contrib`](https://github.com/backstage/backstage/tree/master/contrib) folder of the project. This is an excellent place to put things that help out the community at large, but which may not fit within the scope of the core product to support natively. Here, you will find Helm charts, alternative Docker images, and much more.
|
||||
|
||||
### Write documentation or improve the website
|
||||
|
||||
The current documentation is very limited. Help us make the `/docs` folder come alive.
|
||||
|
||||
Docs are published to [backstage.io/docs](https://backstage.io/docs). If you
|
||||
contribute to the documentation, you might want to preview your changes before
|
||||
submitting them. You'll find the website sources under [/microsite](https://github.com/backstage/backstage/tree/master/microsite)
|
||||
with instructions for building and locally serving the website in the
|
||||
[README](/microsite#readme).
|
||||
|
||||
### Contribute to Storybook
|
||||
|
||||
We think the best way to ensure different plugins provide a consistent experience is through a solid set of reusable UI/UX components. Backstage uses [Storybook](http://backstage.io/storybook).
|
||||
|
||||
Either help us [create new components](https://github.com/backstage/backstage/labels/help%20wanted) or improve stories for the existing ones (look for files with `*.stories.tsx`).
|
||||
|
||||
### Submit feedback
|
||||
|
||||
The best way to send feedback is to file [an issue](https://github.com/backstage/backstage/issues).
|
||||
|
||||
If you are proposing a feature:
|
||||
|
||||
- Explain in detail how it would work.
|
||||
- Keep the scope as narrow as possible, to make it easier to implement.
|
||||
- Use appropriate labels
|
||||
- Remember that this is a volunteer-driven project, and that contributions
|
||||
are welcome :)
|
||||
|
||||
### Add your company to `ADOPTERS`
|
||||
|
||||
Have you started using Backstage? Adding your company to [ADOPTERS](https://github.com/backstage/backstage/blob/master/ADOPTERS.md) really helps the project, you can do this by filling out this [Adopter form](https://form.typeform.com/to/zcOaKikB).
|
||||
@@ -67,7 +67,7 @@ The parameters available are:
|
||||
|
||||
- **`host:`** _(optional)_ Leave empty for Cloud hosted, otherwise set to your self-hosted instance host.
|
||||
- **`organization:`** Your Organization slug (or Collection for on-premise users). Required.
|
||||
- **`project:`** _(optional)_ Your project slug. Wildcards are supported as show on the examples above. If not set, all projects will be searched.
|
||||
- **`project:`** _(optional)_ Your project slug. Wildcards are supported as show on the examples above. If not set, all projects will be searched. For a project name containing spaces, use both single and double quotes as in `project: '"My Project Name"'`.
|
||||
- **`repository:`** _(optional)_ The repository name. Wildcards are supported as show on the examples above. If not set, all repositories will be searched.
|
||||
- **`path:`** _(optional)_ Where to find catalog-info.yaml files. Defaults to /catalog-info.yaml.
|
||||
- **`schedule`** _(optional)_:
|
||||
|
||||
@@ -31,4 +31,10 @@ catalog:
|
||||
yourProviderId:
|
||||
host: gitlab.com
|
||||
orgEnabled: true
|
||||
group: org/teams # Optional. Must not end with slash. Accepts only groups under the provided path (which will be stripped)
|
||||
groupPattern: '[\s\S]*' # Optional. Filters found groups based on provided pattern. Defaults to `[\s\S]*`, which means to not filter anything
|
||||
```
|
||||
|
||||
When the `group` parameter is provided, the corresponding path prefix will be stripped out from each matching group
|
||||
when computing the unique entity name. e.g. If `group` is `org/teams`, the name for `org/teams/avengers/gotg` will
|
||||
be `avengers-gotg`.
|
||||
|
||||
@@ -671,7 +671,7 @@ TypeScript support is currently handled though the `typesVersions` field, as the
|
||||
To add subpath exports to an existing package, simply add the desired `"exports"` fields and then run the following command:
|
||||
|
||||
```bash
|
||||
yarn backstage-cli package migrate package-exports
|
||||
yarn backstage-cli migrate package-exports
|
||||
```
|
||||
|
||||
## Experimental Type Build
|
||||
|
||||
@@ -354,7 +354,7 @@ package. This essentially calls `yarn pack` in each included package and unpacks
|
||||
the resulting archive in the target `workspace-dir`.
|
||||
|
||||
```text
|
||||
Usage: backstage-cli build-workspace [options] <workspace-dir>
|
||||
Usage: backstage-cli build-workspace [options] <workspace-dir>
|
||||
```
|
||||
|
||||
## create-github-app
|
||||
@@ -367,7 +367,7 @@ Launches a browser to create the App through GitHub and saves the result as a
|
||||
YAML file that can be referenced in the GitHub integration configuration.
|
||||
|
||||
```text
|
||||
Usage: backstage-cli create-github-app <github-org>
|
||||
Usage: backstage-cli create-github-app <github-org>
|
||||
```
|
||||
|
||||
## info
|
||||
|
||||
@@ -19,7 +19,7 @@ info:
|
||||
version: 0.1.1-alpha.8
|
||||
externalDocs:
|
||||
description: Backstage official documentation
|
||||
url: https://github.com/backstage/backstage/blob/master/docs/README.md
|
||||
url: https://backstage.io/docs
|
||||
servers:
|
||||
- url: http://localhost:7007/api/auth/
|
||||
tags:
|
||||
|
||||
@@ -20,11 +20,11 @@ The permissions framework depends on a few other Backstage systems, which must b
|
||||
|
||||
The permissions framework itself is new to Backstage and still evolving quickly. To ensure your version of Backstage has all the latest permission-related functionality, it’s important to upgrade to the latest version. The [Backstage upgrade helper](https://backstage.github.io/upgrade-helper/) is a great tool to help ensure that you’ve made all the necessary changes during the upgrade!
|
||||
|
||||
### Enable backend-to-backend authentication
|
||||
### Enable service-to-service authentication
|
||||
|
||||
Backend-to-backend authentication allows Backstage backend code to verify that a given request originates from elsewhere in the Backstage backend. This is useful for tasks like collation of catalog entities in the search index. This type of request shouldn’t be permissioned, so it’s important to configure this feature before trying to use the permissions framework.
|
||||
Service-to-service authentication allows Backstage backend code to verify that a given request originates from elsewhere in the Backstage backend. This is useful for tasks like collation of catalog entities in the search index. This type of request shouldn’t be permissioned, so it’s important to configure this feature before trying to use the permissions framework.
|
||||
|
||||
To set up backend-to-backend authentication, follow the [backend-to-backend authentication docs](../tutorials/backend-to-backend-auth.md).
|
||||
To set up service-to-service authentication, follow the [service-to-service authentication docs](../auth/service-to-service-auth.md).
|
||||
|
||||
### Supply an identity resolver to populate group membership on sign in
|
||||
|
||||
|
||||
@@ -146,7 +146,7 @@ Look at [DefaultTechDocsCollatorFactory test](https://github.com/backstage/backs
|
||||
|
||||
#### 6. Make your plugins collator discoverable for others
|
||||
|
||||
If you want to make your collator discoverable for other adopters, add it to the list of [plugins integrated to search](https://backstage.io/docs/features/search/search-overview#plugins-integrated-with-backstage-search).
|
||||
If you want to make your collator discoverable for other adopters, add it to the list of [plugins integrated to search](https://backstage.io/docs/features/search/#plugins-integrated-with-backstage-search).
|
||||
|
||||
## Building a search experience into your plugin
|
||||
|
||||
|
||||
@@ -117,5 +117,3 @@ backend-side authorization. To smooth this process out you can use proxy -
|
||||
either the one you already have (like Nginx, HAProxy, etc.) or the proxy-backend
|
||||
plugin that we provide for the Backstage backend.
|
||||
[Read more](https://github.com/backstage/backstage/blob/master/plugins/proxy-backend/README.md)
|
||||
|
||||
[Back to Getting Started](../README.md)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -96,6 +96,33 @@ module.exports = {
|
||||
};
|
||||
},
|
||||
}),
|
||||
[
|
||||
'@docusaurus/plugin-client-redirects',
|
||||
{
|
||||
redirects: [
|
||||
{
|
||||
from: '/docs',
|
||||
to: '/docs/overview/what-is-backstage',
|
||||
},
|
||||
{
|
||||
from: '/docs/features/software-catalog/software-catalog-overview',
|
||||
to: '/docs/features/software-catalog/',
|
||||
},
|
||||
{
|
||||
from: '/docs/features/software-templates/software-templates-index',
|
||||
to: '/docs/features/software-templates/',
|
||||
},
|
||||
{
|
||||
from: '/docs/features/techdocs/techdocs-overview',
|
||||
to: '/docs/features/techdocs/',
|
||||
},
|
||||
{
|
||||
from: '/docs/features/search/search-overview',
|
||||
to: '/docs/features/search/',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
],
|
||||
themeConfig:
|
||||
/** @type {import('@docusaurus/preset-classic').ThemeConfig} */
|
||||
@@ -170,7 +197,7 @@ module.exports = {
|
||||
},
|
||||
{
|
||||
label: 'Software Catalog',
|
||||
to: 'docs/features/software-catalog/software-catalog-overview',
|
||||
to: 'docs/features/software-catalog/',
|
||||
},
|
||||
{
|
||||
label: 'Create a Plugin',
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
"prettier": "@spotify/prettier-config",
|
||||
"dependencies": {
|
||||
"@docusaurus/core": "2.3.1",
|
||||
"@docusaurus/plugin-client-redirects": "^2.3.1",
|
||||
"@docusaurus/preset-classic": "2.3.1",
|
||||
"@swc/core": "^1.3.36",
|
||||
"clsx": "^1.1.1",
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
"getting-started/keeping-backstage-updated",
|
||||
"getting-started/concepts",
|
||||
"getting-started/contributors",
|
||||
"getting-started/getting-involved",
|
||||
"getting-started/project-structure"
|
||||
],
|
||||
"Local Development": [
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user