Merge branch 'plugin-azure-functions' of https://github.com/wesley-pattison/backstage into plugin-azure-functions
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
---
|
||||
|
||||
Making the description of the GitLab repoUrl owner field more clearer by focusing it refers to the GitLab namespace.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-user-settings': patch
|
||||
---
|
||||
|
||||
Prevent `.set()` to execute a request to the StorageClient if the user is `guest`
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/backend-test-utils': patch
|
||||
---
|
||||
|
||||
Fixed handling of root scoped services in `startTestBackend`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend': minor
|
||||
---
|
||||
|
||||
Added a new property called `additionalTemplateGlobals` which allows you to add global functions to the scaffolder nunjucks templates.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/core-components': patch
|
||||
---
|
||||
|
||||
Deep-import LightAsync component to improve module-import speed
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/backend-app-api': patch
|
||||
---
|
||||
|
||||
Added possibility to configure index plugin of the HTTP router service.
|
||||
@@ -0,0 +1,14 @@
|
||||
---
|
||||
'@techdocs/cli': patch
|
||||
'@backstage/plugin-techdocs-node': patch
|
||||
---
|
||||
|
||||
fixing techdocs-cli Docker client creation
|
||||
|
||||
Docker client does not need to be created when --no-docker
|
||||
option is provided.
|
||||
|
||||
If you had DOCKER_CERT_PATH environment variable defined
|
||||
the Docker client was looking for certificates
|
||||
and breaking techdocs-cli generate command even with --no-docker
|
||||
option.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/backend-plugin-api': patch
|
||||
---
|
||||
|
||||
Allow interfaces to be used for inferred option types.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/backend-defaults': patch
|
||||
---
|
||||
|
||||
Added root logger service to the set of default services.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-user-settings': patch
|
||||
---
|
||||
|
||||
Update installation instructions
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-tech-insights': patch
|
||||
---
|
||||
|
||||
making available the search for the last FACTS executed
|
||||
@@ -0,0 +1,11 @@
|
||||
---
|
||||
'@backstage/plugin-bitbucket-cloud-common': minor
|
||||
---
|
||||
|
||||
Update Bitbucket Cloud models to latest OAS version.
|
||||
|
||||
The latest specification contained some BREAKING CHANGES
|
||||
due to removed fields.
|
||||
|
||||
All of these fields are not used at other plugins, though.
|
||||
Therefore, this change has no impact on other modules here.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-search-backend': minor
|
||||
---
|
||||
|
||||
Be less restrictive with unknown keys on query endpoint
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder': minor
|
||||
---
|
||||
|
||||
Add support for link to TechDocs and other links defined in template entity specification metadata on TemplateCard
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/plugin-github-issues': patch
|
||||
'@backstage/plugin-github-pull-requests-board': patch
|
||||
---
|
||||
|
||||
Properly filter on relations instead of the spec, when finding by owner
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/catalog-client': patch
|
||||
---
|
||||
|
||||
Renamed argument in `validateEntity` from `location` to `locationRef`
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend': patch
|
||||
---
|
||||
|
||||
Fixed a bug where entities provided without a location key would always replace existing entities, rather than updating them.
|
||||
+46
-1
@@ -175,5 +175,50 @@
|
||||
"@backstage/plugin-vault-backend": "0.2.2",
|
||||
"@backstage/plugin-xcmetrics": "0.2.29"
|
||||
},
|
||||
"changesets": []
|
||||
"changesets": [
|
||||
"breezy-pots-worry",
|
||||
"bright-rules-shout",
|
||||
"clean-camels-sneeze",
|
||||
"curvy-kiwis-fold",
|
||||
"curvy-lemons-change",
|
||||
"dull-rocks-warn",
|
||||
"eleven-apples-accept",
|
||||
"fair-tools-melt",
|
||||
"grumpy-pans-knock",
|
||||
"itchy-schools-run",
|
||||
"kind-penguins-report",
|
||||
"large-dingos-juggle",
|
||||
"lazy-beds-pull",
|
||||
"lazy-fireants-check",
|
||||
"little-roses-rule",
|
||||
"lucky-cows-boil",
|
||||
"odd-singers-taste",
|
||||
"old-cobras-suffer",
|
||||
"perfect-moose-drum",
|
||||
"poor-clouds-ring",
|
||||
"quiet-hats-kick",
|
||||
"quiet-ligers-draw",
|
||||
"red-pants-rush",
|
||||
"renovate-a02d90b",
|
||||
"rich-carrots-reflect",
|
||||
"rude-bulldogs-sleep",
|
||||
"selfish-turkeys-exist",
|
||||
"shaggy-books-smell",
|
||||
"sixty-items-nail",
|
||||
"slow-mirrors-eat",
|
||||
"smooth-tables-pull",
|
||||
"soft-falcons-love",
|
||||
"stupid-dragons-complain",
|
||||
"sweet-insects-camp",
|
||||
"swift-phones-cheat",
|
||||
"tall-baboons-deliver",
|
||||
"tender-drinks-drive",
|
||||
"tender-parrots-peel",
|
||||
"thick-kings-destroy",
|
||||
"tiny-mails-bathe",
|
||||
"tough-hairs-sparkle",
|
||||
"wild-weeks-live",
|
||||
"wise-ligers-scream",
|
||||
"yellow-lemons-march"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-gcalendar': patch
|
||||
---
|
||||
|
||||
Fixed loader showing when user not signed in
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-app-backend': patch
|
||||
---
|
||||
|
||||
Added alpha plugin implementation for the new backend system. Available at `@backstage/plugin-app-backend/alpha`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend': minor
|
||||
---
|
||||
|
||||
Add `allowAutoMerge` option for `publish:github` action
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-api-docs': patch
|
||||
---
|
||||
|
||||
Updated dependency `@asyncapi/react-component` to `1.0.0-next.43`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/create-app': patch
|
||||
---
|
||||
|
||||
Initializes a git repository when creating an app using @packages/create-app
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes': patch
|
||||
---
|
||||
|
||||
Fix infinite call bug in `useCustomResources` hook
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-auth-backend': patch
|
||||
---
|
||||
|
||||
Fix GitLab provider setup so that it supports GitLab installations with a path in the URL.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Switch to upfront resolution of `swc-loader` in Webpack config.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-user-settings-backend': patch
|
||||
---
|
||||
|
||||
Fix wrong import statement in `README.md`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/create-app': patch
|
||||
---
|
||||
|
||||
Added `*.session.sql` Visual Studio Code database functionality files to `.gitignore` in the default template. This is optional but potentially helpful if your developers use Visual Studio Code; you can add a line with that exact value to your own root `.gitignore` if you want the same.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
---
|
||||
|
||||
Add support for `allowedOrganizations` and `allowedOwners` to the `AzureRepoPicker`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-tech-insights-backend': patch
|
||||
---
|
||||
|
||||
Modify router endpoint to handle singular and collections of request parameters similarly.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
---
|
||||
|
||||
Ignore .git directories in Template Editor, increase upload limit for dry-runs to 10MB.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/backend-app-api': patch
|
||||
---
|
||||
|
||||
Properly export `rootLoggerFactory`.
|
||||
+1
-1
@@ -9,7 +9,7 @@ search:
|
||||
- plugins/search/**/*
|
||||
- plugins/search-*/**/*
|
||||
- packages/search-*/**/*
|
||||
docs-like-code:
|
||||
techdocs:
|
||||
- plugins/techdocs/**/*
|
||||
- plugins/techdocs-*/**/*
|
||||
- packages/techdocs-*/**/*
|
||||
|
||||
@@ -33,7 +33,7 @@ jobs:
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
|
||||
- name: yarn install
|
||||
uses: backstage/actions/yarn-install@v0.5.5
|
||||
uses: backstage/actions/yarn-install@v0.5.6
|
||||
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.5.5
|
||||
uses: backstage/actions/yarn-install@v0.5.6
|
||||
with:
|
||||
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
|
||||
|
||||
@@ -178,7 +178,7 @@ jobs:
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
|
||||
- name: yarn install
|
||||
uses: backstage/actions/yarn-install@v0.5.5
|
||||
uses: backstage/actions/yarn-install@v0.5.6
|
||||
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.5.5
|
||||
- uses: backstage/actions/cron@v0.5.6
|
||||
with:
|
||||
app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }}
|
||||
private-key: ${{ secrets.BACKSTAGE_GOALIE_PRIVATE_KEY }}
|
||||
|
||||
@@ -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.5.5
|
||||
uses: backstage/actions/yarn-install@v0.5.6
|
||||
with:
|
||||
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
|
||||
|
||||
@@ -57,7 +57,7 @@ jobs:
|
||||
- name: publish nightly release
|
||||
run: |
|
||||
yarn config set -H 'npmAuthToken' "${{secrets.NPM_TOKEN}}"
|
||||
yarn workspaces foreach -v --no-private npm publish --access public --tag nightly
|
||||
yarn workspaces foreach -v --no-private npm publish --access public --tolerate-republish --tag nightly
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
|
||||
|
||||
@@ -67,7 +67,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.5.5
|
||||
uses: backstage/actions/yarn-install@v0.5.6
|
||||
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.5.5
|
||||
uses: backstage/actions/yarn-install@v0.5.6
|
||||
with:
|
||||
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
|
||||
|
||||
@@ -164,9 +164,9 @@ jobs:
|
||||
run: |
|
||||
yarn config set -H 'npmAuthToken' "${{secrets.NPM_TOKEN}}"
|
||||
if [ -f ".changeset/pre.json" ]; then
|
||||
yarn workspaces foreach -v --no-private npm publish --access public --tag next
|
||||
yarn workspaces foreach -v --no-private npm publish --access public --tolerate-republish --tag next
|
||||
else
|
||||
yarn workspaces foreach -v --no-private npm publish --access public
|
||||
yarn workspaces foreach -v --no-private npm publish --access public --tolerate-republish
|
||||
fi
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
|
||||
@@ -10,4 +10,4 @@ jobs:
|
||||
if: github.repository == 'backstage/backstage'
|
||||
steps:
|
||||
- name: Issue sync
|
||||
uses: backstage/actions/issue-sync@v0.5.5
|
||||
uses: backstage/actions/issue-sync@v0.5.6
|
||||
|
||||
@@ -35,7 +35,7 @@ jobs:
|
||||
const prNumber = artifact.name.slice('pr_number-'.length)
|
||||
console.log(`::set-output name=pr-number::${prNumber}`);
|
||||
|
||||
- uses: backstage/actions/re-review@v0.5.5
|
||||
- uses: backstage/actions/re-review@v0.5.6
|
||||
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.5.5
|
||||
uses: backstage/actions/pr-sync@v0.5.6
|
||||
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.5.5
|
||||
uses: backstage/actions/yarn-install@v0.5.6
|
||||
with:
|
||||
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
|
||||
|
||||
|
||||
@@ -22,7 +22,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.5.5
|
||||
uses: backstage/actions/yarn-install@v0.5.6
|
||||
with:
|
||||
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
|
||||
|
||||
|
||||
@@ -41,13 +41,18 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Configure Git
|
||||
run: |
|
||||
git config --global user.email noreply@backstage.io
|
||||
git config --global user.name 'GitHub e2e user'
|
||||
|
||||
- name: use node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
- name: yarn install
|
||||
uses: backstage/actions/yarn-install@v0.5.5
|
||||
uses: backstage/actions/yarn-install@v0.5.6
|
||||
with:
|
||||
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ jobs:
|
||||
run: yarn build
|
||||
|
||||
- name: Install mkdocs & techdocs-core
|
||||
run: python -m pip install mkdocs-techdocs-core
|
||||
run: python -m pip install mkdocs-techdocs-core==1.1.6 mkdocs==1.3.1
|
||||
|
||||
- name: techdocs-cli e2e test
|
||||
working-directory: packages/techdocs-cli
|
||||
|
||||
@@ -39,6 +39,11 @@ jobs:
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Configure Git
|
||||
run: |
|
||||
git config --global user.email noreply@backstage.io
|
||||
git config --global user.name 'GitHub e2e user'
|
||||
|
||||
- name: use node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
|
||||
@@ -28,7 +28,7 @@ jobs:
|
||||
registry-url: https://registry.npmjs.org/ # Needed for auth
|
||||
|
||||
- name: yarn install
|
||||
uses: backstage/actions/yarn-install@v0.5.5
|
||||
uses: backstage/actions/yarn-install@v0.5.6
|
||||
with:
|
||||
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
|
||||
|
||||
|
||||
@@ -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.5.5
|
||||
uses: backstage/actions/yarn-install@v0.5.6
|
||||
with:
|
||||
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
|
||||
- name: storybook yarn install
|
||||
|
||||
@@ -149,3 +149,6 @@ cypress/cypress/*
|
||||
|
||||
# Possible leftover from build:api-reports
|
||||
tsconfig.tmp.json
|
||||
|
||||
# vscode database functionality support files
|
||||
*.session.sql
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
# Upgrade Backstage App
|
||||
|
||||
## Overview
|
||||
|
||||
The script upgrades the version of Backstage created via the create-app plugin. It lets you resolve conflicts iteratively with your own merge [tool](https://www.git-scm.com/docs/git-mergetool).
|
||||
|
||||
## Requirements
|
||||
|
||||
You will need to have the following tools in your shell environment:
|
||||
|
||||
- git
|
||||
- curl
|
||||
- jq
|
||||
|
||||
## Usage
|
||||
|
||||
Here's how to use the script:
|
||||
|
||||
1. download the script
|
||||
2. copy it in the root of your app
|
||||
3. bootstrap a git repository (you may already have done so):
|
||||
|
||||
```bash
|
||||
git init
|
||||
git add .
|
||||
git commit -m "initial commit"
|
||||
```
|
||||
|
||||
4. run `sh upgrade-backstage-app.sh [optional-backstage-version]`
|
||||
5. resolve any conflicts iteratively
|
||||
@@ -0,0 +1,15 @@
|
||||
#!/bin/sh
|
||||
CURRENT_VERSION="v$(cat backstage.json | jq -r '.version')"
|
||||
TARGET_VERSION=${1:-"$(curl -s https://api.github.com/repos/backstage/backstage/releases/latest | jq -r '.tag_name')"}
|
||||
CREATE_APP_CURRENT_VERSION=$(curl -s https://raw.githubusercontent.com/backstage/backstage/$CURRENT_VERSION/packages/create-app/package.json | jq -r '.version')
|
||||
CREATE_APP_TARGET_VERSION=$(curl -s https://raw.githubusercontent.com/backstage/backstage/$TARGET_VERSION/packages/create-app/package.json | jq -r '.version')
|
||||
|
||||
if [ "$CURRENT_VERSION" == "$TARGET_VERSION" ]; then
|
||||
echo "Already up to date"
|
||||
else
|
||||
echo "Attempting upgrade from Backstage $CURRENT_VERSION (create-app $CREATE_APP_CURRENT_VERSION) to $TARGET_VERSION ($CREATE_APP_TARGET_VERSION)"
|
||||
rm -rf .upgrade && mkdir .upgrade
|
||||
curl -s https://raw.githubusercontent.com/backstage/upgrade-helper-diff/master/diffs/$CREATE_APP_CURRENT_VERSION..$CREATE_APP_TARGET_VERSION.diff > .upgrade/upgrade.diff
|
||||
git apply -3 .upgrade/upgrade.diff
|
||||
git mergetool
|
||||
fi
|
||||
@@ -101,14 +101,14 @@ array. Users will see this value in the Software Catalog Kubernetes plugin.
|
||||
This determines how the Kubernetes client authenticates with the Kubernetes
|
||||
cluster. Valid values are:
|
||||
|
||||
| Value | Description |
|
||||
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `serviceAccount` | This will use a Kubernetes [service account](https://kubernetes.io/docs/reference/access-authn-authz/service-accounts-admin/) to access the Kubernetes API. When this is used the `serviceAccountToken` field should also be set. |
|
||||
| `google` | This will use a user's Google auth token from the [Google auth plugin](https://backstage.io/docs/auth/) to access the Kubernetes API. |
|
||||
| `aws` | This will use AWS credentials to access resources in EKS clusters |
|
||||
| `googleServiceAccount` | This will use the Google Cloud service account credentials to access resources in clusters |
|
||||
| `azure` | This will use [Azure Identity](https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview) to access resources in clusters |
|
||||
| `oidc` | This will use [Oidc Tokens](https://kubernetes.io/docs/reference/access-authn-authz/authentication/#openid-connect-tokens) to authenticate to the Kubernetes API. When this is used the `oidcTokenProvider` field should also be set. |
|
||||
| Value | Description |
|
||||
| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `serviceAccount` | This will use a Kubernetes [service account](https://kubernetes.io/docs/reference/access-authn-authz/service-accounts-admin/) to access the Kubernetes API. When this is used the `serviceAccountToken` field should also be set. |
|
||||
| `google` | This will use a user's Google auth token from the [Google auth plugin](https://backstage.io/docs/auth/) to access the Kubernetes API. |
|
||||
| `aws` | This will use AWS credentials to access resources in EKS clusters |
|
||||
| `googleServiceAccount` | This will use the Google Cloud service account credentials to access resources in clusters |
|
||||
| `azure` | This will use [Azure Identity](https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview) to access resources in clusters |
|
||||
| `oidc` | This will use [Oidc Tokens](https://kubernetes.io/docs/reference/access-authn-authz/authentication/#openid-connect-tokens) to authenticate to the Kubernetes API. When this is used the `oidcTokenProvider` field should also be set. Please note the cluster must support OIDC, at the time of writing AKS clusters do not support OIDC. |
|
||||
|
||||
Check the [Kubernetes Authentication][4] section for additional explanation.
|
||||
|
||||
@@ -159,7 +159,12 @@ 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: `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
|
||||
cluster.
|
||||
|
||||
##### `clusters.\*.dashboardUrl` (optional)
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ invoking the
|
||||
from the root of your project.
|
||||
|
||||
```bash
|
||||
yarn create-plugin
|
||||
yarn new --select plugin
|
||||
```
|
||||
|
||||

|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -44,7 +44,7 @@
|
||||
"@types/react": "^17",
|
||||
"@types/react-dom": "^17"
|
||||
},
|
||||
"version": "1.6.0",
|
||||
"version": "1.7.0-next.0",
|
||||
"dependencies": {
|
||||
"@manypkg/get-packages": "^1.1.3",
|
||||
"@microsoft/api-documenter": "^7.17.11",
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
# @backstage/app-defaults
|
||||
|
||||
## 1.0.7-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/core-components@0.11.2-next.0
|
||||
- @backstage/core-app-api@1.1.1-next.0
|
||||
- @backstage/core-plugin-api@1.0.7-next.0
|
||||
- @backstage/theme@0.2.16
|
||||
- @backstage/plugin-permission-react@0.4.6-next.0
|
||||
|
||||
## 1.0.6
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/app-defaults",
|
||||
"description": "Provides the default wiring of a Backstage App",
|
||||
"version": "1.0.6",
|
||||
"version": "1.0.7-next.0",
|
||||
"publishConfig": {
|
||||
"access": "public",
|
||||
"main": "dist/index.esm.js",
|
||||
|
||||
@@ -1,5 +1,67 @@
|
||||
# example-app
|
||||
|
||||
## 0.2.76-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-org@0.5.10-next.0
|
||||
- @backstage/catalog-model@1.1.2-next.0
|
||||
- @backstage/core-components@0.11.2-next.0
|
||||
- @backstage/cli@0.20.0-next.0
|
||||
- @backstage/plugin-kubernetes@0.7.3-next.0
|
||||
- @backstage/plugin-scaffolder@1.7.0-next.0
|
||||
- @backstage/plugin-api-docs@0.8.10-next.0
|
||||
- @backstage/plugin-user-settings@0.5.0-next.0
|
||||
- @backstage/plugin-cost-insights@0.11.32-next.0
|
||||
- @backstage/plugin-airbrake@0.3.10-next.0
|
||||
- @backstage/plugin-azure-devops@0.2.1-next.0
|
||||
- @backstage/plugin-badges@0.2.34-next.0
|
||||
- @backstage/plugin-catalog-graph@0.2.22-next.0
|
||||
- @backstage/plugin-catalog-import@0.8.13-next.0
|
||||
- @backstage/plugin-catalog-react@1.1.5-next.0
|
||||
- @backstage/plugin-circleci@0.3.10-next.0
|
||||
- @backstage/plugin-cloudbuild@0.3.10-next.0
|
||||
- @backstage/plugin-code-coverage@0.2.3-next.0
|
||||
- @backstage/plugin-dynatrace@0.2.1-next.0
|
||||
- @backstage/plugin-explore@0.3.41-next.0
|
||||
- @backstage/plugin-github-actions@0.5.10-next.0
|
||||
- @backstage/plugin-gocd@0.1.16-next.0
|
||||
- @backstage/plugin-home@0.4.26-next.0
|
||||
- @backstage/plugin-jenkins@0.7.9-next.0
|
||||
- @backstage/plugin-kafka@0.3.10-next.0
|
||||
- @backstage/plugin-lighthouse@0.3.10-next.0
|
||||
- @backstage/plugin-newrelic-dashboard@0.2.3-next.0
|
||||
- @backstage/plugin-pagerduty@0.5.3-next.0
|
||||
- @backstage/plugin-playlist@0.1.1-next.0
|
||||
- @backstage/plugin-rollbar@0.4.10-next.0
|
||||
- @backstage/plugin-search@1.0.3-next.0
|
||||
- @backstage/plugin-sentry@0.4.3-next.0
|
||||
- @backstage/plugin-tech-insights@0.3.1-next.0
|
||||
- @backstage/plugin-techdocs@1.3.3-next.0
|
||||
- @backstage/plugin-techdocs-react@1.0.5-next.0
|
||||
- @backstage/plugin-todo@0.2.12-next.0
|
||||
- @backstage/app-defaults@1.0.7-next.0
|
||||
- @backstage/integration-react@1.1.5-next.0
|
||||
- @backstage/plugin-apache-airflow@0.2.3-next.0
|
||||
- @backstage/plugin-gcalendar@0.3.6-next.0
|
||||
- @backstage/plugin-gcp-projects@0.3.29-next.0
|
||||
- @backstage/plugin-graphiql@0.2.42-next.0
|
||||
- @backstage/plugin-newrelic@0.3.28-next.0
|
||||
- @backstage/plugin-search-react@1.1.1-next.0
|
||||
- @backstage/plugin-shortcuts@0.3.2-next.0
|
||||
- @backstage/plugin-stack-overflow@0.1.6-next.0
|
||||
- @backstage/plugin-tech-radar@0.5.17-next.0
|
||||
- @backstage/plugin-techdocs-module-addons-contrib@1.0.5-next.0
|
||||
- @backstage/config@1.0.3-next.0
|
||||
- @backstage/core-app-api@1.1.1-next.0
|
||||
- @backstage/core-plugin-api@1.0.7-next.0
|
||||
- @backstage/theme@0.2.16
|
||||
- @backstage/plugin-catalog-common@1.0.7-next.0
|
||||
- @backstage/plugin-permission-react@0.4.6-next.0
|
||||
- @backstage/plugin-search-common@1.0.2-next.0
|
||||
- @internal/plugin-catalog-customized@0.0.3-next.0
|
||||
|
||||
## 0.2.75
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "example-app",
|
||||
"version": "0.2.75",
|
||||
"version": "0.2.76-next.0",
|
||||
"private": true,
|
||||
"backstage": {
|
||||
"role": "frontend"
|
||||
|
||||
@@ -136,6 +136,7 @@ const app = createApp({
|
||||
});
|
||||
bind(scaffolderPlugin.externalRoutes, {
|
||||
registerComponent: catalogImportPlugin.routes.importPage,
|
||||
viewTechDoc: techdocsPlugin.routes.docRoot,
|
||||
});
|
||||
bind(orgPlugin.externalRoutes, {
|
||||
catalogIndex: catalogPlugin.routes.catalogIndex,
|
||||
|
||||
@@ -1,5 +1,18 @@
|
||||
# @backstage/backend-app-api
|
||||
|
||||
## 0.2.2-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 0027a749cd: Added possibility to configure index plugin of the HTTP router service.
|
||||
- 45857bffae: Properly export `rootLoggerFactory`.
|
||||
- Updated dependencies
|
||||
- @backstage/backend-plugin-api@0.1.3-next.0
|
||||
- @backstage/backend-common@0.15.2-next.0
|
||||
- @backstage/backend-tasks@0.3.6-next.0
|
||||
- @backstage/plugin-permission-node@0.6.6-next.0
|
||||
- @backstage/errors@1.1.2-next.0
|
||||
|
||||
## 0.2.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -58,9 +58,14 @@ export const discoveryFactory: (
|
||||
|
||||
// @public (undocumented)
|
||||
export const httpRouterFactory: (
|
||||
options?: undefined,
|
||||
options?: HttpRouterFactoryOptions | undefined,
|
||||
) => ServiceFactory<HttpRouterService>;
|
||||
|
||||
// @public (undocumented)
|
||||
export type HttpRouterFactoryOptions = {
|
||||
indexPlugin?: string;
|
||||
};
|
||||
|
||||
// @public (undocumented)
|
||||
export const loggerFactory: (options?: undefined) => ServiceFactory<Logger>;
|
||||
|
||||
@@ -69,6 +74,9 @@ export const permissionsFactory: (
|
||||
options?: undefined,
|
||||
) => ServiceFactory<PermissionAuthorizer | PermissionEvaluator>;
|
||||
|
||||
// @public (undocumented)
|
||||
export const rootLoggerFactory: (options?: undefined) => ServiceFactory<Logger>;
|
||||
|
||||
// @public (undocumented)
|
||||
export const schedulerFactory: (
|
||||
options?: undefined,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/backend-app-api",
|
||||
"description": "Core API used by Backstage backend apps",
|
||||
"version": "0.2.1",
|
||||
"version": "0.2.2-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"publishConfig": {
|
||||
|
||||
@@ -24,6 +24,16 @@ import Router from 'express-promise-router';
|
||||
import { Handler } from 'express';
|
||||
import { createServiceBuilder } from '@backstage/backend-common';
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
export type HttpRouterFactoryOptions = {
|
||||
/**
|
||||
* The plugin ID used for the index route. Defaults to 'app'
|
||||
*/
|
||||
indexPlugin?: string;
|
||||
};
|
||||
|
||||
/** @public */
|
||||
export const httpRouterFactory = createServiceFactory({
|
||||
service: httpRouterServiceRef,
|
||||
@@ -31,21 +41,28 @@ export const httpRouterFactory = createServiceFactory({
|
||||
config: configServiceRef,
|
||||
plugin: pluginMetadataServiceRef,
|
||||
},
|
||||
async factory({ config }) {
|
||||
async factory({ config }, options?: HttpRouterFactoryOptions) {
|
||||
const defaultPluginId = options?.indexPlugin ?? 'app';
|
||||
|
||||
const apiRouter = Router();
|
||||
const rootRouter = Router();
|
||||
|
||||
const service = createServiceBuilder(module)
|
||||
.loadConfig(config)
|
||||
.addRouter('/api', apiRouter)
|
||||
.addRouter('', rootRouter);
|
||||
|
||||
await service.start();
|
||||
|
||||
return async ({ plugin }) => {
|
||||
const pluginId = plugin.getId();
|
||||
const path = pluginId ? `/api/${pluginId}` : '';
|
||||
return {
|
||||
use(handler: Handler) {
|
||||
rootRouter.use(path, handler);
|
||||
if (pluginId === defaultPluginId) {
|
||||
rootRouter.use(handler);
|
||||
} else {
|
||||
apiRouter.use(`/${pluginId}`, handler);
|
||||
}
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
@@ -19,8 +19,10 @@ export { configFactory } from './configService';
|
||||
export { databaseFactory } from './databaseService';
|
||||
export { discoveryFactory } from './discoveryService';
|
||||
export { loggerFactory } from './loggerService';
|
||||
export { rootLoggerFactory } from './rootLoggerService';
|
||||
export { permissionsFactory } from './permissionsService';
|
||||
export { schedulerFactory } from './schedulerService';
|
||||
export { tokenManagerFactory } from './tokenManagerService';
|
||||
export { urlReaderFactory } from './urlReaderService';
|
||||
export { httpRouterFactory } from './httpRouterService';
|
||||
export type { HttpRouterFactoryOptions } from './httpRouterService';
|
||||
|
||||
@@ -39,7 +39,7 @@ class BackstageLogger implements Logger {
|
||||
}
|
||||
|
||||
/** @public */
|
||||
export const loggerFactory = createServiceFactory({
|
||||
export const rootLoggerFactory = createServiceFactory({
|
||||
service: rootLoggerServiceRef,
|
||||
deps: {},
|
||||
async factory() {
|
||||
|
||||
@@ -1,5 +1,17 @@
|
||||
# @backstage/backend-common
|
||||
|
||||
## 0.15.2-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/cli-common@0.1.10
|
||||
- @backstage/config@1.0.3-next.0
|
||||
- @backstage/config-loader@1.1.5-next.0
|
||||
- @backstage/errors@1.1.2-next.0
|
||||
- @backstage/integration@1.3.2-next.0
|
||||
- @backstage/types@1.0.0
|
||||
|
||||
## 0.15.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/backend-common",
|
||||
"description": "Common functionality library for Backstage backends",
|
||||
"version": "0.15.1",
|
||||
"version": "0.15.2-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"publishConfig": {
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
# @backstage/backend-defaults
|
||||
|
||||
## 0.1.2-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 96d288a02d: Added root logger service to the set of default services.
|
||||
- Updated dependencies
|
||||
- @backstage/backend-app-api@0.2.2-next.0
|
||||
- @backstage/backend-plugin-api@0.1.3-next.0
|
||||
|
||||
## 0.1.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/backend-defaults",
|
||||
"description": "Backend defaults used by Backstage backend apps",
|
||||
"version": "0.1.1",
|
||||
"version": "0.1.2-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"publishConfig": {
|
||||
|
||||
@@ -24,6 +24,7 @@ import {
|
||||
httpRouterFactory,
|
||||
loggerFactory,
|
||||
permissionsFactory,
|
||||
rootLoggerFactory,
|
||||
schedulerFactory,
|
||||
tokenManagerFactory,
|
||||
urlReaderFactory,
|
||||
@@ -36,6 +37,7 @@ export const defaultServiceFactories = [
|
||||
databaseFactory,
|
||||
discoveryFactory,
|
||||
loggerFactory,
|
||||
rootLoggerFactory,
|
||||
permissionsFactory,
|
||||
schedulerFactory,
|
||||
tokenManagerFactory,
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# example-backend-next
|
||||
|
||||
## 0.0.4-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-scaffolder-backend@1.7.0-next.0
|
||||
- @backstage/backend-defaults@0.1.2-next.0
|
||||
- @backstage/plugin-catalog-backend@1.4.1-next.0
|
||||
- @backstage/plugin-app-backend@0.3.37-next.0
|
||||
|
||||
## 0.0.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "example-backend-next",
|
||||
"version": "0.0.3",
|
||||
"version": "0.0.4-next.0",
|
||||
"main": "dist/index.cjs.js",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
@@ -26,6 +26,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage/backend-defaults": "workspace:^",
|
||||
"@backstage/plugin-app-backend": "workspace:^",
|
||||
"@backstage/plugin-catalog-backend": "workspace:^",
|
||||
"@backstage/plugin-scaffolder-backend": "workspace:^"
|
||||
},
|
||||
|
||||
@@ -17,9 +17,11 @@
|
||||
import { catalogPlugin } from '@backstage/plugin-catalog-backend';
|
||||
import { scaffolderCatalogModule } from '@backstage/plugin-scaffolder-backend';
|
||||
import { createBackend } from '@backstage/backend-defaults';
|
||||
import { appPlugin } from '@backstage/plugin-app-backend';
|
||||
|
||||
const backend = createBackend();
|
||||
|
||||
backend.add(catalogPlugin());
|
||||
backend.add(scaffolderCatalogModule());
|
||||
backend.add(appPlugin({ appPackageName: 'example-app' }));
|
||||
backend.start();
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
# @backstage/backend-plugin-api
|
||||
|
||||
## 0.1.3-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 28377dc89f: Allow interfaces to be used for inferred option types.
|
||||
- Updated dependencies
|
||||
- @backstage/backend-common@0.15.2-next.0
|
||||
- @backstage/backend-tasks@0.3.6-next.0
|
||||
- @backstage/config@1.0.3-next.0
|
||||
- @backstage/plugin-permission-common@0.6.5-next.0
|
||||
|
||||
## 0.1.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -73,11 +73,7 @@ export const configServiceRef: ServiceRef<Config, 'root'>;
|
||||
|
||||
// @public (undocumented)
|
||||
export function createBackendModule<
|
||||
TOptions extends
|
||||
| {
|
||||
[name: string]: unknown;
|
||||
}
|
||||
| undefined = undefined,
|
||||
TOptions extends object | undefined = undefined,
|
||||
>(
|
||||
config: BackendModuleConfig<TOptions>,
|
||||
): undefined extends TOptions
|
||||
@@ -86,14 +82,11 @@ export function createBackendModule<
|
||||
|
||||
// @public (undocumented)
|
||||
export function createBackendPlugin<
|
||||
TOptions extends
|
||||
| {
|
||||
[name: string]: unknown;
|
||||
}
|
||||
| undefined = undefined,
|
||||
>(
|
||||
config: BackendPluginConfig<TOptions>,
|
||||
): undefined extends TOptions
|
||||
TOptions extends object | undefined = undefined,
|
||||
>(config: {
|
||||
id: string;
|
||||
register(reg: BackendRegistrationPoints, options: TOptions): void;
|
||||
}): undefined extends TOptions
|
||||
? (options?: TOptions) => BackendFeature
|
||||
: (options: TOptions) => BackendFeature;
|
||||
|
||||
@@ -110,11 +103,7 @@ export function createServiceFactory<
|
||||
TDeps extends {
|
||||
[name in string]: ServiceRef<unknown>;
|
||||
},
|
||||
TOpts extends
|
||||
| {
|
||||
[name in string]: unknown;
|
||||
}
|
||||
| undefined = undefined,
|
||||
TOpts extends object | undefined = undefined,
|
||||
>(config: {
|
||||
service: ServiceRef<TService, TScope>;
|
||||
deps: TDeps;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/backend-plugin-api",
|
||||
"description": "Core API used by Backstage backend plugins",
|
||||
"version": "0.1.2",
|
||||
"version": "0.1.3-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"publishConfig": {
|
||||
|
||||
@@ -58,6 +58,8 @@ describe('createServiceFactory', () => {
|
||||
metaFactory({});
|
||||
metaFactory({ x: 1 });
|
||||
// @ts-expect-error
|
||||
metaFactory({ x: 1, y: 2 });
|
||||
// @ts-expect-error
|
||||
metaFactory(null);
|
||||
metaFactory(undefined);
|
||||
metaFactory();
|
||||
@@ -80,10 +82,145 @@ describe('createServiceFactory', () => {
|
||||
metaFactory({});
|
||||
metaFactory({ x: 1 });
|
||||
// @ts-expect-error
|
||||
metaFactory({ x: 1, y: 2 });
|
||||
// @ts-expect-error
|
||||
metaFactory(null);
|
||||
// @ts-expect-error
|
||||
metaFactory(undefined);
|
||||
// @ts-expect-error
|
||||
metaFactory();
|
||||
});
|
||||
|
||||
it('should create a meta factory with optional options as interface', () => {
|
||||
interface TestOptions {
|
||||
x: number;
|
||||
}
|
||||
const ref = createServiceRef<string>({ id: 'x' });
|
||||
const metaFactory = createServiceFactory({
|
||||
service: ref,
|
||||
deps: {},
|
||||
async factory(_deps, _opts?: TestOptions) {
|
||||
return async () => 'x';
|
||||
},
|
||||
});
|
||||
expect(metaFactory).toEqual(expect.any(Function));
|
||||
|
||||
// @ts-expect-error
|
||||
metaFactory('string');
|
||||
// @ts-expect-error
|
||||
metaFactory({});
|
||||
metaFactory({ x: 1 });
|
||||
// @ts-expect-error
|
||||
metaFactory({ x: 1, y: 2 });
|
||||
// @ts-expect-error
|
||||
metaFactory(null);
|
||||
metaFactory(undefined);
|
||||
metaFactory();
|
||||
});
|
||||
|
||||
it('should create a meta factory with required options as interface', () => {
|
||||
interface TestOptions {
|
||||
x: number;
|
||||
}
|
||||
const ref = createServiceRef<string>({ id: 'x' });
|
||||
const metaFactory = createServiceFactory({
|
||||
service: ref,
|
||||
deps: {},
|
||||
async factory(_deps, _opts: TestOptions) {
|
||||
return async () => 'x';
|
||||
},
|
||||
});
|
||||
expect(metaFactory).toEqual(expect.any(Function));
|
||||
|
||||
// @ts-expect-error
|
||||
metaFactory('string');
|
||||
// @ts-expect-error
|
||||
metaFactory({});
|
||||
metaFactory({ x: 1 });
|
||||
// @ts-expect-error
|
||||
metaFactory({ x: 1, y: 2 });
|
||||
// @ts-expect-error
|
||||
metaFactory(null);
|
||||
// @ts-expect-error
|
||||
metaFactory(undefined);
|
||||
// @ts-expect-error
|
||||
metaFactory();
|
||||
});
|
||||
|
||||
it('should only allow objects as options', () => {
|
||||
const ref = createServiceRef<string>({ id: 'x' });
|
||||
const metaFactory = createServiceFactory({
|
||||
service: ref,
|
||||
deps: {},
|
||||
// @ts-expect-error
|
||||
async factory(_deps, _opts: string) {
|
||||
return async () => 'x';
|
||||
},
|
||||
});
|
||||
expect(metaFactory).toEqual(expect.any(Function));
|
||||
createServiceFactory({
|
||||
service: ref,
|
||||
deps: {},
|
||||
// @ts-expect-error
|
||||
async factory(_deps, _opts: number) {
|
||||
return async () => 'x';
|
||||
},
|
||||
});
|
||||
createServiceFactory({
|
||||
service: ref,
|
||||
deps: {},
|
||||
// @ts-expect-error
|
||||
async factory(_deps, _opts: symbol) {
|
||||
return async () => 'x';
|
||||
},
|
||||
});
|
||||
createServiceFactory({
|
||||
service: ref,
|
||||
deps: {},
|
||||
// @ts-expect-error
|
||||
async factory(_deps, _opts: bigint) {
|
||||
return async () => 'x';
|
||||
},
|
||||
});
|
||||
createServiceFactory({
|
||||
service: ref,
|
||||
deps: {},
|
||||
// @ts-expect-error
|
||||
async factory(_deps, _opts: 'string') {
|
||||
return async () => 'x';
|
||||
},
|
||||
});
|
||||
createServiceFactory({
|
||||
service: ref,
|
||||
deps: {},
|
||||
// @ts-expect-error
|
||||
async factory(_deps, _opts: Array) {
|
||||
return async () => 'x';
|
||||
},
|
||||
});
|
||||
createServiceFactory({
|
||||
service: ref,
|
||||
deps: {},
|
||||
// @ts-expect-error
|
||||
async factory(_deps, _opts: Map) {
|
||||
return async () => 'x';
|
||||
},
|
||||
});
|
||||
createServiceFactory({
|
||||
service: ref,
|
||||
deps: {},
|
||||
// @ts-expect-error
|
||||
async factory(_deps, _opts: Set) {
|
||||
return async () => 'x';
|
||||
},
|
||||
});
|
||||
createServiceFactory({
|
||||
service: ref,
|
||||
deps: {},
|
||||
// @ts-expect-error
|
||||
async factory(_deps, _opts: null) {
|
||||
return async () => 'x';
|
||||
},
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -133,7 +133,7 @@ export function createServiceFactory<
|
||||
TScope extends 'root' | 'plugin',
|
||||
TImpl extends TService,
|
||||
TDeps extends { [name in string]: ServiceRef<unknown> },
|
||||
TOpts extends { [name in string]: unknown } | undefined = undefined,
|
||||
TOpts extends object | undefined = undefined,
|
||||
>(config: {
|
||||
service: ServiceRef<TService, TScope>;
|
||||
deps: TDeps;
|
||||
|
||||
@@ -31,7 +31,7 @@ describe('createExtensionPoint', () => {
|
||||
});
|
||||
|
||||
describe('createBackendPlugin', () => {
|
||||
it('should create an BackendPlugin', () => {
|
||||
it('should create a BackendPlugin', () => {
|
||||
const plugin = createBackendPlugin({
|
||||
id: 'x',
|
||||
register(_reg, _options: { a: string }) {},
|
||||
@@ -68,10 +68,42 @@ describe('createBackendPlugin', () => {
|
||||
// @ts-expect-error
|
||||
expect(plugin({})).toBeDefined();
|
||||
});
|
||||
|
||||
it('should create a BackendPlugin with options as interface', () => {
|
||||
interface TestOptions {
|
||||
a: string;
|
||||
}
|
||||
const plugin = createBackendPlugin({
|
||||
id: 'x',
|
||||
register(_reg, _options: TestOptions) {},
|
||||
});
|
||||
expect(plugin).toBeDefined();
|
||||
expect(plugin({ a: 'a' })).toBeDefined();
|
||||
expect(plugin({ a: 'a' }).id).toBe('x');
|
||||
// @ts-expect-error
|
||||
expect(plugin()).toBeDefined();
|
||||
// @ts-expect-error
|
||||
expect(plugin({ b: 'b' })).toBeDefined();
|
||||
});
|
||||
|
||||
it('should create plugins with optional options as interface', () => {
|
||||
interface TestOptions {
|
||||
a: string;
|
||||
}
|
||||
const plugin = createBackendPlugin({
|
||||
id: 'x',
|
||||
register(_reg, _options?: TestOptions) {},
|
||||
});
|
||||
expect(plugin).toBeDefined();
|
||||
expect(plugin({ a: 'a' })).toBeDefined();
|
||||
expect(plugin()).toBeDefined();
|
||||
// @ts-expect-error
|
||||
expect(plugin({ b: 'b' })).toBeDefined();
|
||||
});
|
||||
});
|
||||
|
||||
describe('createBackendModule', () => {
|
||||
it('should create an BackendModule', () => {
|
||||
it('should create a BackendModule', () => {
|
||||
const mod = createBackendModule({
|
||||
pluginId: 'x',
|
||||
moduleId: 'y',
|
||||
@@ -111,4 +143,38 @@ describe('createBackendModule', () => {
|
||||
// @ts-expect-error
|
||||
expect(mod({})).toBeDefined();
|
||||
});
|
||||
|
||||
it('should create a BackendModule as interface', () => {
|
||||
interface TestOptions {
|
||||
a: string;
|
||||
}
|
||||
const mod = createBackendModule({
|
||||
pluginId: 'x',
|
||||
moduleId: 'y',
|
||||
register(_reg, _options: TestOptions) {},
|
||||
});
|
||||
expect(mod).toBeDefined();
|
||||
expect(mod({ a: 'a' })).toBeDefined();
|
||||
expect(mod({ a: 'a' }).id).toBe('x.y');
|
||||
// @ts-expect-error
|
||||
expect(mod()).toBeDefined();
|
||||
// @ts-expect-error
|
||||
expect(mod({ b: 'b' })).toBeDefined();
|
||||
});
|
||||
|
||||
it('should create modules with optional options as interface', () => {
|
||||
interface TestOptions {
|
||||
a: string;
|
||||
}
|
||||
const mod = createBackendModule({
|
||||
pluginId: 'x',
|
||||
moduleId: 'y',
|
||||
register(_reg, _options?: TestOptions) {},
|
||||
});
|
||||
expect(mod).toBeDefined();
|
||||
expect(mod({ a: 'a' })).toBeDefined();
|
||||
expect(mod()).toBeDefined();
|
||||
// @ts-expect-error
|
||||
expect(mod({ b: 'b' })).toBeDefined();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -44,10 +44,11 @@ export interface BackendPluginConfig<TOptions> {
|
||||
|
||||
/** @public */
|
||||
export function createBackendPlugin<
|
||||
TOptions extends { [name: string]: unknown } | undefined = undefined,
|
||||
>(
|
||||
config: BackendPluginConfig<TOptions>,
|
||||
): undefined extends TOptions
|
||||
TOptions extends object | undefined = undefined,
|
||||
>(config: {
|
||||
id: string;
|
||||
register(reg: BackendRegistrationPoints, options: TOptions): void;
|
||||
}): undefined extends TOptions
|
||||
? (options?: TOptions) => BackendFeature
|
||||
: (options: TOptions) => BackendFeature {
|
||||
return (options?: TOptions) => ({
|
||||
@@ -70,7 +71,7 @@ export interface BackendModuleConfig<TOptions> {
|
||||
|
||||
/** @public */
|
||||
export function createBackendModule<
|
||||
TOptions extends { [name: string]: unknown } | undefined = undefined,
|
||||
TOptions extends object | undefined = undefined,
|
||||
>(
|
||||
config: BackendModuleConfig<TOptions>,
|
||||
): undefined extends TOptions
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# @backstage/backend-tasks
|
||||
|
||||
## 0.3.6-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/backend-common@0.15.2-next.0
|
||||
- @backstage/config@1.0.3-next.0
|
||||
- @backstage/errors@1.1.2-next.0
|
||||
- @backstage/types@1.0.0
|
||||
|
||||
## 0.3.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/backend-tasks",
|
||||
"description": "Common distributed task management library for Backstage backends",
|
||||
"version": "0.3.5",
|
||||
"version": "0.3.6-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"publishConfig": {
|
||||
|
||||
@@ -1,5 +1,18 @@
|
||||
# @backstage/backend-test-utils
|
||||
|
||||
## 0.1.29-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 72549952d1: Fixed handling of root scoped services in `startTestBackend`.
|
||||
- e91e8e9c55: Increased test database max connection pool size to reduce the risk of resource exhaustion.
|
||||
- Updated dependencies
|
||||
- @backstage/backend-app-api@0.2.2-next.0
|
||||
- @backstage/backend-plugin-api@0.1.3-next.0
|
||||
- @backstage/cli@0.20.0-next.0
|
||||
- @backstage/backend-common@0.15.2-next.0
|
||||
- @backstage/config@1.0.3-next.0
|
||||
|
||||
## 0.1.28
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/backend-test-utils",
|
||||
"description": "Test helpers library for Backstage backends",
|
||||
"version": "0.1.28",
|
||||
"version": "0.1.29-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"publishConfig": {
|
||||
|
||||
@@ -63,10 +63,18 @@ export async function startTestBackend<
|
||||
if (Array.isArray(serviceDef)) {
|
||||
// if type is ExtensionPoint?
|
||||
// do something differently?
|
||||
const [ref, impl] = serviceDef;
|
||||
if (ref.scope === 'plugin') {
|
||||
return createServiceFactory({
|
||||
service: ref,
|
||||
deps: {},
|
||||
factory: async () => async () => impl,
|
||||
});
|
||||
}
|
||||
return createServiceFactory({
|
||||
service: serviceDef[0],
|
||||
service: ref,
|
||||
deps: {},
|
||||
factory: async () => async () => serviceDef[1],
|
||||
factory: async () => impl,
|
||||
});
|
||||
}
|
||||
return serviceDef as ServiceFactory;
|
||||
|
||||
@@ -1,5 +1,47 @@
|
||||
# example-backend
|
||||
|
||||
## 0.2.76-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/catalog-model@1.1.2-next.0
|
||||
- @backstage/plugin-scaffolder-backend@1.7.0-next.0
|
||||
- @backstage/plugin-auth-backend@0.17.0-next.0
|
||||
- @backstage/plugin-catalog-backend@1.4.1-next.0
|
||||
- @backstage/plugin-jenkins-backend@0.1.27-next.0
|
||||
- @backstage/plugin-app-backend@0.3.37-next.0
|
||||
- @backstage/plugin-tech-insights-node@0.3.5-next.0
|
||||
- example-app@0.2.76-next.0
|
||||
- @backstage/catalog-client@1.1.1-next.0
|
||||
- @backstage/plugin-badges-backend@0.1.31-next.0
|
||||
- @backstage/plugin-code-coverage-backend@0.2.3-next.0
|
||||
- @backstage/plugin-kafka-backend@0.2.30-next.0
|
||||
- @backstage/plugin-kubernetes-backend@0.7.3-next.0
|
||||
- @backstage/plugin-playlist-backend@0.1.1-next.0
|
||||
- @backstage/plugin-tech-insights-backend@0.5.3-next.0
|
||||
- @backstage/plugin-techdocs-backend@1.3.1-next.0
|
||||
- @backstage/plugin-todo-backend@0.1.34-next.0
|
||||
- @backstage/backend-common@0.15.2-next.0
|
||||
- @backstage/backend-tasks@0.3.6-next.0
|
||||
- @backstage/plugin-auth-node@0.2.6-next.0
|
||||
- @backstage/plugin-permission-node@0.6.6-next.0
|
||||
- @backstage/plugin-rollbar-backend@0.1.34-next.0
|
||||
- @backstage/plugin-search-backend-module-pg@0.4.1-next.0
|
||||
- @backstage/plugin-scaffolder-backend-module-rails@0.4.5-next.0
|
||||
- @backstage/config@1.0.3-next.0
|
||||
- @backstage/integration@1.3.2-next.0
|
||||
- @backstage/plugin-azure-devops-backend@0.3.16-next.0
|
||||
- @backstage/plugin-graphql-backend@0.1.27-next.0
|
||||
- @backstage/plugin-permission-backend@0.5.12-next.0
|
||||
- @backstage/plugin-permission-common@0.6.5-next.0
|
||||
- @backstage/plugin-proxy-backend@0.2.31-next.0
|
||||
- @backstage/plugin-search-backend@1.0.3-next.0
|
||||
- @backstage/plugin-search-backend-module-elasticsearch@1.0.3-next.0
|
||||
- @backstage/plugin-search-backend-node@1.0.3-next.0
|
||||
- @backstage/plugin-search-common@1.0.2-next.0
|
||||
- @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.21-next.0
|
||||
|
||||
## 0.2.75
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "example-backend",
|
||||
"version": "0.2.75",
|
||||
"version": "0.2.76-next.0",
|
||||
"main": "dist/index.cjs.js",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# @backstage/catalog-client
|
||||
|
||||
## 1.1.1-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/catalog-model@1.1.2-next.0
|
||||
- @backstage/errors@1.1.2-next.0
|
||||
|
||||
## 1.1.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
@@ -68,7 +68,7 @@ export interface CatalogApi {
|
||||
): Promise<void>;
|
||||
validateEntity(
|
||||
entity: Entity,
|
||||
location: string,
|
||||
locationRef: string,
|
||||
options?: CatalogRequestOptions,
|
||||
): Promise<ValidateEntityResponse>;
|
||||
}
|
||||
@@ -130,7 +130,7 @@ export class CatalogClient implements CatalogApi {
|
||||
): Promise<void>;
|
||||
validateEntity(
|
||||
entity: Entity,
|
||||
location: string,
|
||||
locationRef: string,
|
||||
options?: CatalogRequestOptions,
|
||||
): Promise<ValidateEntityResponse>;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/catalog-client",
|
||||
"description": "An isomorphic client for the catalog backend",
|
||||
"version": "1.1.0",
|
||||
"version": "1.1.1-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
@@ -322,7 +322,7 @@ describe('CatalogClient', () => {
|
||||
name: '',
|
||||
},
|
||||
},
|
||||
'http://example.com',
|
||||
'url:http://example.com',
|
||||
),
|
||||
).toMatchObject({
|
||||
valid: false,
|
||||
@@ -350,7 +350,7 @@ describe('CatalogClient', () => {
|
||||
name: 'good',
|
||||
},
|
||||
},
|
||||
'http://example.com',
|
||||
'url:http://example.com',
|
||||
),
|
||||
).toMatchObject({
|
||||
valid: true,
|
||||
@@ -373,7 +373,7 @@ describe('CatalogClient', () => {
|
||||
name: 'good',
|
||||
},
|
||||
},
|
||||
'http://example.com',
|
||||
'url:http://example.com',
|
||||
),
|
||||
).rejects.toThrow(/Request failed with 500 Error/);
|
||||
});
|
||||
|
||||
@@ -359,7 +359,7 @@ export class CatalogClient implements CatalogApi {
|
||||
*/
|
||||
async validateEntity(
|
||||
entity: Entity,
|
||||
location: string,
|
||||
locationRef: string,
|
||||
options?: CatalogRequestOptions,
|
||||
): Promise<ValidateEntityResponse> {
|
||||
const response = await this.fetchApi.fetch(
|
||||
@@ -370,7 +370,7 @@ export class CatalogClient implements CatalogApi {
|
||||
...(options?.token && { Authorization: `Bearer ${options?.token}` }),
|
||||
},
|
||||
method: 'POST',
|
||||
body: JSON.stringify({ entity, location }),
|
||||
body: JSON.stringify({ entity, location: locationRef }),
|
||||
},
|
||||
);
|
||||
|
||||
|
||||
@@ -405,11 +405,11 @@ export interface CatalogApi {
|
||||
* Validate entity and its location.
|
||||
*
|
||||
* @param entity - Entity to validate
|
||||
* @param location - URL location of the entity
|
||||
* @param locationRef - Location ref in format `url:http://example.com/file`
|
||||
*/
|
||||
validateEntity(
|
||||
entity: Entity,
|
||||
location: string,
|
||||
locationRef: string,
|
||||
options?: CatalogRequestOptions,
|
||||
): Promise<ValidateEntityResponse>;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# @backstage/catalog-model
|
||||
|
||||
## 1.1.2-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 6f3b8d0962: Defer `ajv` compilation of schema validators to improve module-import performance
|
||||
- Updated dependencies
|
||||
- @backstage/config@1.0.3-next.0
|
||||
- @backstage/errors@1.1.2-next.0
|
||||
- @backstage/types@1.0.0
|
||||
|
||||
## 1.1.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/catalog-model",
|
||||
"description": "Types and validators that help describe the model of a Backstage Catalog",
|
||||
"version": "1.1.1",
|
||||
"version": "1.1.2-next.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
@@ -1,5 +1,41 @@
|
||||
# @backstage/cli
|
||||
|
||||
## 0.20.0-next.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- f368ad7279: **BREAKING**: Bumped `jest`, `jest-runtime`, and `jest-environment-jsdom` to v29. This is up from v27, so check out both the [v28](https://jestjs.io/docs/28.x/upgrading-to-jest28) and [v29](https://jestjs.io/docs/upgrading-to-jest29) (later [here](https://jestjs.io/docs/29.x/upgrading-to-jest29)) migration guides.
|
||||
|
||||
Particular changes that where encountered in the main Backstage repo are:
|
||||
|
||||
- The updated snapshot format.
|
||||
- `jest.useFakeTimers('legacy')` is now `jest.useFakeTimers({ legacyFakeTimers: true })`.
|
||||
- Error objects collected by `withLogCollector` from `@backstage/test-utils` are now objects with a `detail` property rather than a string.
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 3e309107ca: Updated fallback versions of dependencies in all templates.
|
||||
- 292a088807: Added a new `repo test` command.
|
||||
- ba63cae41c: Updated lockfile parsing to have better support for Yarn 3.
|
||||
- 2dddb32fea: Switched the Jest transform for YAML files to use a custom one available at `@backstage/cli/config/jestYamlTransform.js`.
|
||||
- a541a3a78a: Switch to upfront resolution of `swc-loader` in Webpack config.
|
||||
- cfb3598410: Removed `tsx` and `jsx` as supported extensions in backend packages. For most
|
||||
repos, this will not have any effect. But if you inadvertently had added some
|
||||
`tsx`/`jsx` files to your backend package, you may now start to see `code: 'MODULE_NOT_FOUND'` errors when launching the backend locally. The reason for
|
||||
this is that the offending files get ignored during transpilation. Hence, the
|
||||
importing file can no longer find anything to import.
|
||||
|
||||
The fix is to rename any `.tsx` files in your backend packages to `.ts` instead,
|
||||
or `.jsx` to `.js`.
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/cli-common@0.1.10
|
||||
- @backstage/config@1.0.3-next.0
|
||||
- @backstage/config-loader@1.1.5-next.0
|
||||
- @backstage/errors@1.1.2-next.0
|
||||
- @backstage/release-manifests@0.0.6
|
||||
- @backstage/types@1.0.0
|
||||
|
||||
## 0.19.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/cli",
|
||||
"description": "CLI for developing Backstage plugins and apps",
|
||||
"version": "0.19.0",
|
||||
"version": "0.20.0-next.0",
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
|
||||
@@ -55,7 +55,7 @@ export const transforms = (options: TransformOptions): Transforms => {
|
||||
exclude: /node_modules/,
|
||||
use: [
|
||||
{
|
||||
loader: 'swc-loader',
|
||||
loader: require.resolve('swc-loader'),
|
||||
options: {
|
||||
jsc: {
|
||||
target: 'es2019',
|
||||
@@ -81,7 +81,7 @@ export const transforms = (options: TransformOptions): Transforms => {
|
||||
exclude: /node_modules/,
|
||||
use: [
|
||||
{
|
||||
loader: 'swc-loader',
|
||||
loader: require.resolve('swc-loader'),
|
||||
options: {
|
||||
jsc: {
|
||||
target: 'es2019',
|
||||
@@ -112,7 +112,7 @@ export const transforms = (options: TransformOptions): Transforms => {
|
||||
test: [/\.icon\.svg$/],
|
||||
use: [
|
||||
{
|
||||
loader: 'swc-loader',
|
||||
loader: require.resolve('swc-loader'),
|
||||
options: {
|
||||
jsc: {
|
||||
target: 'es2019',
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
# @backstage/codemods
|
||||
|
||||
## 0.1.40-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/cli-common@0.1.10
|
||||
|
||||
## 0.1.39
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/codemods",
|
||||
"description": "A collection of codemods for Backstage projects",
|
||||
"version": "0.1.39",
|
||||
"version": "0.1.40-next.0",
|
||||
"publishConfig": {
|
||||
"access": "public",
|
||||
"main": "dist/index.cjs.js"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user