Merge branch 'backstage:master' into fix-17201

This commit is contained in:
PIYUSH NEGI
2023-06-13 09:36:19 +05:30
committed by GitHub
348 changed files with 7271 additions and 1326 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-search-react': patch
---
Fix accessibility issue in `SearchCheckbox` component, making it possible to use the field via keyboard.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog-import': patch
---
Swap `ImportStepper` and `InfoCard` order to fix tab order in `catalog-import`.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/create-app': patch
---
Bumped create-app version.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder-backend': minor
---
Add `TargetBranchName` variable and output for the `publish:gitlab:merge-request` and `publish:github:pull-request` s'cascaffolder actions.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-kubernetes-backend': patch
---
K8s proxy HEADER_KUBERNETES_CLUSTER is now optional in single-cluster setups.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/core-components': patch
---
Enhance the sidebar item accessibility by using appropriate header semantics.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/theme': patch
---
Tweaked `UnifiedThemeProvider` to avoid overlapping JSS class names in production.
+10
View File
@@ -0,0 +1,10 @@
---
'@backstage/plugin-events-backend-module-aws-sqs': patch
'@backstage/plugin-catalog-backend-module-aws': patch
'@backstage/integration-aws-node': patch
'@backstage/plugin-kubernetes-backend': patch
'@backstage/backend-common': patch
'@backstage/plugin-techdocs-node': patch
---
Fix SNYK-JS-FASTXMLPARSER-5668858 (`fast-xml-parser`) by upgrading aws-sdk to at least the current latest version.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-auth-backend': patch
---
Set the expiration time of oidc `idToken` to be less than backstage session expiration time.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/core-components': patch
---
Added `exact` prop to `SidebarSubmenuItem` which causes it to only highlight if the current location is an exact match.
+19
View File
@@ -240,6 +240,7 @@
"clean-months-bake",
"clean-years-whisper",
"create-app-1684855417",
"create-app-1686056275",
"curvy-years-smoke",
"dull-bottles-teach",
"famous-days-kneel",
@@ -248,11 +249,16 @@
"few-games-swim",
"few-oranges-complain",
"few-pugs-jam",
"five-turtles-play",
"gentle-turtles-applaud",
"giant-maps-compete",
"good-rabbits-exist",
"gorgeous-timers-act",
"grumpy-carrots-sin",
"heavy-ravens-fold",
"hot-apples-cross",
"hot-badgers-double",
"hungry-lies-drop",
"itchy-mirrors-greet",
"khaki-radios-teach",
"lazy-dancers-begin",
@@ -261,16 +267,23 @@
"long-lobsters-brake",
"lovely-impalas-sell",
"lucky-keys-behave",
"mean-insects-hope",
"modern-dancers-sit",
"nice-peaches-reflect",
"nice-readers-heal",
"nine-bags-dream",
"ninety-jeans-scream",
"ninety-turkeys-knock",
"olive-carpets-explode",
"orange-taxis-exercise",
"perfect-donkeys-cry",
"perfect-readers-attack",
"pink-goats-talk",
"plenty-roses-raise",
"poor-months-switch",
"rare-bugs-chew",
"real-donuts-brush",
"renovate-de04315",
"selfish-carrots-sneeze",
"selfish-mugs-study",
"selfish-olives-end",
@@ -279,22 +292,28 @@
"shaggy-terms-travel",
"short-seahorses-kiss",
"shy-numbers-try",
"silent-garlics-drum",
"silent-kangaroos-pay",
"silver-cars-type",
"silver-ducks-drum",
"smart-berries-wash",
"sour-papayas-wink",
"strange-geese-argue",
"tame-buttons-smell",
"tasty-oranges-sleep",
"three-guests-beam",
"tiny-hounds-cross",
"twenty-suns-breathe",
"two-mayflies-tell",
"violet-pots-push",
"warm-hornets-fetch",
"weak-rats-serve",
"weak-snails-spar",
"weak-snails-spark",
"weak-snails-sparkl",
"weak-snails-sparkle",
"wet-vans-drive",
"wise-bats-repair",
"yellow-crews-float"
]
}
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder-backend': minor
---
Add a scaffolder action that pull-requests for bitbucket server
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/core-components': patch
'@backstage/plugin-techdocs': patch
---
Make the documentation pages printable (also handy for exporting to PDF)
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder-backend': minor
---
Added `github:deployKey:create` and `github:environment:create` scaffolder actions. You will need to add `read/write` permissions to your GITHUB_TOKEN and/or Github Backstage App for Repository `Administration` (for deploy key functionality) and `Environments` (for Environment functionality)
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog': patch
---
Adding in type and kind entity details to catalog table title for user clarity
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-explore': patch
---
Enhance the tools card accessibility by using appropriate header semantics.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog': patch
---
Keyboard navigation to open EntityContextMenu now focus visible the first element.
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/plugin-kubernetes-backend': patch
'@backstage/plugin-kubernetes': patch
---
Add proposed fix dialog for pod errors
+2
View File
@@ -434,3 +434,5 @@ zod
Zolotusky
zoomable
zsh
Pulumi
Lightsail
@@ -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.3
- uses: backstage/actions/changeset-feedback@v0.6.4
name: Generate feedback
with:
diff-ref: 'origin/master'
+3 -3
View File
@@ -35,7 +35,7 @@ jobs:
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
uses: backstage/actions/yarn-install@v0.6.3
uses: backstage/actions/yarn-install@v0.6.4
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
@@ -66,7 +66,7 @@ jobs:
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
uses: backstage/actions/yarn-install@v0.6.3
uses: backstage/actions/yarn-install@v0.6.4
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
@@ -188,7 +188,7 @@ jobs:
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
uses: backstage/actions/yarn-install@v0.6.3
uses: backstage/actions/yarn-install@v0.6.4
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
+1 -1
View File
@@ -8,7 +8,7 @@ jobs:
cron:
runs-on: ubuntu-latest
steps:
- uses: backstage/actions/cron@v0.6.3
- uses: backstage/actions/cron@v0.6.4
with:
app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }}
private-key: ${{ secrets.BACKSTAGE_GOALIE_PRIVATE_KEY }}
+1 -1
View File
@@ -26,7 +26,7 @@ jobs:
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
uses: backstage/actions/yarn-install@v0.6.3
uses: backstage/actions/yarn-install@v0.6.4
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
+1 -1
View File
@@ -22,7 +22,7 @@ jobs:
node-version: 18.x
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
uses: backstage/actions/yarn-install@v0.6.3
uses: backstage/actions/yarn-install@v0.6.4
with:
cache-prefix: ${{ runner.os }}-v18.x
+2 -2
View File
@@ -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.3
uses: backstage/actions/yarn-install@v0.6.4
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.3
uses: backstage/actions/yarn-install@v0.6.4
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
+1 -1
View File
@@ -10,4 +10,4 @@ jobs:
if: github.repository == 'backstage/backstage'
steps:
- name: Issue sync
uses: backstage/actions/issue-sync@v0.6.3
uses: backstage/actions/issue-sync@v0.6.4
+1 -1
View File
@@ -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.3
- uses: backstage/actions/re-review@v0.6.4
with:
app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }}
private-key: ${{ secrets.BACKSTAGE_GOALIE_PRIVATE_KEY }}
+1 -1
View File
@@ -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.3
uses: backstage/actions/pr-sync@v0.6.4
with:
github-token: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }}
app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }}
+1 -1
View File
@@ -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.3
uses: backstage/actions/yarn-install@v0.6.4
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
@@ -19,7 +19,7 @@ jobs:
node-version: 18.x
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
uses: backstage/actions/yarn-install@v0.6.3
uses: backstage/actions/yarn-install@v0.6.4
with:
cache-prefix: ${{ runner.os }}-v18.x
+1 -1
View File
@@ -27,7 +27,7 @@ jobs:
registry-url: https://registry.npmjs.org/
- name: yarn install
uses: backstage/actions/yarn-install@v0.6.3
uses: backstage/actions/yarn-install@v0.6.4
with:
cache-prefix: linux-v16
+1 -1
View File
@@ -25,7 +25,7 @@ jobs:
with:
node-version: 16.x
- name: yarn install
uses: backstage/actions/yarn-install@v0.6.3
uses: backstage/actions/yarn-install@v0.6.4
with:
cache-prefix: ${{ runner.os }}-v16.x
- name: run Lighthouse CI
+1 -1
View File
@@ -30,7 +30,7 @@ jobs:
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
uses: backstage/actions/yarn-install@v0.6.3
uses: backstage/actions/yarn-install@v0.6.4
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
+1 -1
View File
@@ -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.3
uses: backstage/actions/yarn-install@v0.6.4
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
+1 -1
View File
@@ -37,7 +37,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.3
uses: backstage/actions/yarn-install@v0.6.4
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
- name: storybook yarn install
+180
View File
@@ -0,0 +1,180 @@
---
id: aws-lightsail
title: Deploying Backstage on AWS Lightsail
sidebar_label: AWS Lightsail
description: How to deploy Backstage on AWS Lightsail
---
> **DISCLAIMER: The `deploy` command is in alpha and still experimental. Do not use the `deploy` command for production deployments.**
Getting started with Backstage often involves setting up an instance on a cloud provider and sharing it with your team so they can experiment. To make this cloud deployment easier, we've built a `deploy` command to stand up a proof-of-concept instance on AWS (using Lightsail).
## What is AWS Lightsail
:::tip
AWS offers a free tier for up to three months on $10 USD/month Container service (Micro -1 node). By default we use the `nano` node, so if you are a new user this approach shouldn't cost you anything. For more information, refer to the [pricing](https://aws.amazon.com/lightsail/pricing/) documentation.
:::
AWS Lightsail offers a simple way to run containers in the cloud. To learn more about AWS Lightsail, please refer to the [official documentation](https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-container-services-deployments).
## Creating user in AWS
- Open the AWS console and navigate to the IAM section
- In the left side menu click on `Users` and then click on `Add users`
- Specify a username and then click on `Next`
- Afterwards you can assign permissions, select `Attach policies directly` and then click on `Create policy`.
This should take you to a new window in which you can create a new policy based on `JSON`.
Copy over the following:
```json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"ecr:DescribeImageReplicationStatus",
"ecr:ListTagsForResource",
"ecr:UploadLayerPart",
"ecr:BatchGetRepositoryScanningConfiguration",
"ecr:DeleteRepository",
"ecr:GetRegistryScanningConfiguration",
"ecr:CompleteLayerUpload",
"ecr:TagResource",
"ecr:DescribeRepositories",
"ecr:DeleteRepositoryPolicy",
"ecr:BatchCheckLayerAvailability",
"ecr:GetLifecyclePolicy",
"ecr:GetRegistryPolicy",
"ecr:PutLifecyclePolicy",
"ecr:DescribeImageScanFindings",
"ecr:GetLifecyclePolicyPreview",
"ecr:CreateRepository",
"ecr:DescribeRegistry",
"ecr:GetDownloadUrlForLayer",
"ecr:GetAuthorizationToken",
"ecr:DeleteLifecyclePolicy",
"ecr:PutImage",
"ecr:UntagResource",
"ecr:SetRepositoryPolicy",
"ecr:BatchGetImage",
"ecr:InitiateLayerUpload",
"ecr:GetRepositoryPolicy",
"lightsail:CreateContainerService",
"lightsail:GetKeyPair",
"lightsail:GetContainerServiceDeployments",
"lightsail:CreateContainerServiceRegistryLogin",
"lightsail:GetContainerImages",
"lightsail:UntagResource",
"lightsail:RegisterContainerImage",
"lightsail:GetContainerServices",
"lightsail:GetContainerServicePowers",
"lightsail:GetKeyPairs",
"lightsail:CreateContainerServiceDeployment",
"lightsail:GetContainerServiceMetricData",
"lightsail:GetContainerAPIMetadata",
"lightsail:DeleteContainerService",
"lightsail:GetContainerLog",
"lightsail:TagResource"
],
"Resource": "*"
},
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": [],
"Resource": []
}
]
}
```
Then click on `Next` and give the policy a name and a description of your liking. Afterwards, click on `Create policy`.
- Navigate back to the user creation window and press on the refresh button and search for the policy you just created. Now, create the user.
- Now you will be redirected to all users, click on the user you just created and click on `Security credentials`
- Scroll below and click on `Create access key`
- Choose `Command Line Interface (CLI)`
- Now export the following values
```bash
$ export AWS_ACCESS_KEY_ID=... (first value)
$ export AWS_SECRET_ACCESS_KEY=.... (second secret value)
```
## Configuring the Pulumi CLI
Second, install the [Pulumi CLI](https://www.pulumi.com/docs/get-started/install/).
Then we need to execute the following commands, to set Pulumi up:
:::tip
Make sure to store your passphrase somewhere safe as it is used to encrypt/decrypt your Pulumi config.
:::
```bash
$ pulumi login --local
$ export PULUMI_CONFIG_PASSPHRASE="<your-secret>"
```
By using `pulumi login --local` we are making sure that Pulumi stores our state on the local file disk. The environment variable `PULUMI_CONFIG_PASSPHRASE` is used by Pulumi to generate a unique key for your stack
## Deploying your instance on Lightsail
:::warning
Make sure that [Docker](https://docs.docker.com/) is running before you start this section.
:::
After you have made your changes to your local instance, it's time to deploy it on Lightsail.
First, we need to configure a new `app-config` file and update the `baseUrl`.
```bash
$ touch app-config.deployment.yaml
```
And then update the file with the following yaml:
```yaml
app:
baseUrl: ${BACKSTAGE_HOST}
backend:
baseUrl: ${BACKSTAGE_HOST}
```
The environment variable `BACKSTAGE_HOST` will be set to the endpoint that AWS Lightsail creates.
Now we can deploy our instance!
```bash
$ npx backstage-deploy aws --stack backstage-poc --create-dockerfile
```
In the first part of the command, we are specifying that we want to deploy our instance on AWS. With the [`--stack`](https://www.pulumi.com/docs/reference/cli/pulumi_stack/) option, we are providing Pulumi a reference to our container deployment. Furthermore, with the `--create-dockerfile` option, there will be a `Dockerfile` and `.dockerignore` created in the root of the project.
After running the command, Pulumi will start creating the following resources for you in AWS:
- ECR Repository
- Lightsail Container Service
- Lightsail Container Service Deployment
- Policy that allows Lightsail to pull from ECR
If it's the first time building the Docker image, it might take a while for everything to be fully provisioned. After the command is finished running, your Backstage instance should be up and running on AWS Lightsail! 🎉
### Cleaning up resources
Cleaning up the resources is also done with the deploy command.
```bash
$ npx backstage-deploy aws --stack backstage-poc --destroy
```
This will delete everything that was originally created by the `deploy` command.
+1 -1
View File
@@ -94,7 +94,7 @@ export default async function createPlugin(
scheduler: env.scheduler,
});
env.eventBroker.subscribe(githubProvider);
builder.addEntityProvider(demoProvider);
builder.addEntityProvider(githubProvider);
/* highlight-add-end */
const { processingEngine, router } = await builder.build();
await processingEngine.start();
+1
View File
@@ -138,3 +138,4 @@ integration:
- `Commit statuses`: `Read-only`
- `Variables`: `Read & write` (if templates include GitHub Action Repository Variables)
- `Secrets`: `Read & write` (if templates include GitHub Action Repository Secrets)
- `Environments`: `Read & write` (if templates include GitHub Environments)
+47 -38
View File
@@ -10,55 +10,64 @@ and where to use them.
## help
This command displays a help summary or detailed help screens for each command.
Below is a cleaned up output of `yarn backstage-cli --help`
Below is a cleaned up output of `yarn backstage-cli --help`:
```text
repo [command] Command that run across an entire Backstage project
package [command] Lifecycle scripts for individual packages
migrate [command] Migration utilities
create Open up an interactive guide to creating new things in your app
config:docs Browse the configuration reference documentation
config:print Print the app configuration for the current package
config:check Validate that the given configuration loads and matches schema
config:schema Dump the app configuration schema
versions:bump Bump Backstage packages to the latest versions
versions:check Check Backstage package versioning
build-workspace Builds a temporary dist workspace from the provided packages
create-github-app Create new GitHub App in your organization (experimental)
info Show helpful information for debugging and reporting bugs
help [command] display help for command
new [options] Open up an interactive guide to creating new things in
your app
test Run tests, forwarding args to Jest, defaulting to watch
mode [DEPRECATED]
config:docs [options] Browse the configuration reference documentation
config:print [options] Print the app configuration for the current package
config:check [options] Validate that the given configuration loads and matches
schema
config:schema [options] Print configuration schema
repo [command] Command that run across an entire Backstage project
package [command] Lifecycle scripts for individual packages
migrate [command] Migration utilities
versions:bump [options] Bump Backstage packages to the latest versions
versions:check [options] Check Backstage package versioning
clean Delete cache directories [DEPRECATED]
build-workspace <workspace-dir> [packages...] Builds a temporary dist workspace from the provided
packages
create-github-app <github-org> Create new GitHub App in your organization.
info Show helpful information for debugging and reporting bugs
help [command] display help for command
```
The `package` command category, `yarn backstage-cli package --help`
The `package` command category, `yarn backstage-cli package --help`:
```text
start [options] Start a package for local development
build [options] Build a package for production deployment or publishing
lint [options] Lint a package
test Run tests, forwarding args to Jest, defaulting to watch mode
clean Delete cache directories
prepack Prepares a package for packaging before publishing
postpack Restores the changes made by the prepack command
start [options] Start a package for local development
build [options] Build a package for production deployment or publishing
lint [options] [directories...] Lint a package
test Run tests, forwarding args to Jest, defaulting to watch mode
clean Delete cache directories
prepack Prepares a package for packaging before publishing
postpack Restores the changes made by the prepack command
help [command] display help for command
```
The `repo` command category, `yarn backstage-cli repo --help`
The `repo` command category, `yarn backstage-cli repo --help`:
```text
build [options] Build packages in the project, excluding bundled app and backend packages.
lint [options] Lint all packages in the project
build [options] Build packages in the project, excluding bundled app and backend packages.
lint [options] Lint all packages in the project
clean Delete cache and output directories
list-deprecations [options] List deprecations
test [options] Run tests, forwarding args to Jest, defaulting to watch mode
help [command] display help for command
```
The `migrate` command category, `yarn backstage-cli migrate --help`
The `migrate` command category, `yarn backstage-cli migrate --help`:
```text
package-roles Add package role field to packages that don't have it
package-scripts Set package scripts according to each package role
package-exports Synchronize package subpath export definitions
package-lint-configs Migrates all packages to use @backstage/cli/config/eslint-factory
react-router-deps Migrates the react-router dependencies for all packages to be peer dependencies
help [command] display help for command
```
## repo build
@@ -235,7 +244,7 @@ Options:
-h, --help display help for command
```
## config:docs
## config\:docs
This commands opens up the reference documentation of your apps local
configuration schema in the browser. This is useful to get an overview of what
@@ -252,7 +261,7 @@ Options:
-h, --help display help for command
```
## config:print
## config\:print
Print the static configuration, defaulting to reading `app-config.yaml` in the
repo root, using schema collected from all local packages in the repo.
@@ -277,7 +286,7 @@ Options:
-h, --help display help for command
```
## config:check
## config\:check
Validate that static configuration loads and matches schema, defaulting to
reading `app-config.yaml` in the repo root and using schema collected from all
@@ -296,7 +305,7 @@ Options:
-h, --help display help for command
```
## config:schema
## config\:schema
Dump the configuration schema that was collected from all local packages in the
repo.
@@ -315,7 +324,7 @@ Options:
-h, --help display help for command
```
## versions:bump
## versions\:bump
Bump all `@backstage` packages to the latest versions. This checks for updates
in the package registry, and will update entries both in `yarn.lock` and
@@ -330,7 +339,7 @@ Options:
--release <version|next|main> Bump to a specific Backstage release line or version (default: "main")
```
## versions:check
## versions\:check
Validate `@backstage` dependencies within the repo, making sure that there are
no duplicates of packages that might lead to breakages.
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,79 @@
---
title: 'Welcome: Backstage Deploy CLI (Alpha)'
author: Djamaile Rahamat, Spotify
authorURL: https://github.com/djamaile
authorImageURL: https://avatars.githubusercontent.com/u/15789670?v=4
---
_This blog post is co-authored by Emma White ([@ewhite1997](https://github.com/ewhite1997)), Spotify._
![Backstage Deploy banner](assets/2023-05-06/Welcome-Backstage-Deploy.png)
TL;DR: Backstage released a new CLI earlier this year as part of a [new Backstage project](https://github.com/backstage/backstage-deploy). This new capability allows early adopters to deploy their Backstage proof of concept faster than before. In this blog, youll learn a little bit more about the Deploy CLI and how you can get started with it.
{/* truncate */}
## Why Backstage Deploy
Weve heard from Backstage adopters that before reaching widespread adoption at their organizations, teams test out a Backstage proof of concept (POC). To create the POC, teams scaffold an instance, set up the catalog, and change the UI to suit their companys branding. Once these milestones are completed, there's just one last step before showing off the awesomeness of a Backstage POC internally... deploying the Backstage POC from a local machine to the cloud. This final step often introduces a lot of questions that attempt to determine the easiest and fastest way to do that.
Lets say youre at this last step: your POC is ready for deployment, but you have some lingering questions.
For example:
- What Dockerfile should you use?
- Should the POC be deployed on Kubernetes?
- How do you deploy the POC on my cloud provider?
To address these questions and reduce friction from deploying a POC, we built a [new CLI](https://github.com/backstage/backstage-deploy). The CLI is simply called `deploy` and is invokable with `npx`. With this new CLI, you can generate a Dockerfile and deploy a Backstage instance onto a preferred cloud provider. While the packages infrastructure is built to support all cloud providers, currently the CLI only offers an AWS implementation. In the future, we plan to add additional cloud providers to the package and [welcome any contributions](https://github.com/backstage/backstage/blob/6996b3338d678efc03307112524060e9dc2ad769/CONTRIBUTING.md) extending the suite of cloud provider implementations!
**So, what about Kubernetes?** Since the CLI is designed specifically for the POC phase, we believe that Kubernetes isnt the right fit as Kubernetes is better suited for production workloads. So, we explored lightweight, container-based solutions, and landed on [Amazon Lightsail](https://docs.aws.amazon.com/lightsail/index.html) as a hosting service for the POC.
Amazon Lightsail supports [lightweight container](https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-container-services) deployments [at a low cost](https://aws.amazon.com/lightsail/pricing/), and has a [free trial for new users](https://aws.amazon.com/lightsail/pricing/?loc=ft#AWS_Free_Tier)! Given Lightsails ease of use and affordability, we recommend using Lightsail over Kubernetes to test out your Backstage POC.
With the Dockerfile and Kubernetes questions answered, we just have to address how to actually deploy the POC. And that is where the new CLI comes in.
## Get started with Deploy CLI
It's now time to put the Deploy CLI into action and deploy a Backstage POC. The following steps guide you through the deployment process.
Deploy CLI makes use of [Pulumi](https://www.pulumi.com/docs/) which is an infrastructure-as-code tool that helps provision resources in the cloud. Before you get started, ensure you have the [Pulumi CLI](https://www.pulumi.com/docs/cli/) and [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) installed on your local machine.
You can find the step-by-step installation documentation for Pulumi under the [Deployment section](https://backstage.io/docs/deployment/backstage-deploy/aws-lightsail).
But we summarize the steps to deploy your POC here. You can invoke the the CLI you can use the following command:
```bash
$ npx backstage-deploy aws --create-dockerfile
Starting Pulumi
successfully initialized stack
installing aws plugin...
plugins installed
setting up config
refreshing stack...
Refreshing (backstage):
Instance will live at:
https://backstage-container-service.xxx.us-east-1.cs.amazonlightsail.com/
```
Once you kick off the command it will create a Dockerfile for you in the root and Pulumi will start provisioning resources in AWS.
Pulumi will then create a container based deployment in Amazon Lightsail.
After youre done with the POC, its easy to delete the AWS resources you provisioned and save you costs within AWS. You can do so with the following command:
```bash
$ npx backstage-deploy aws --destroy
```
## Looking ahead
As mentioned earlier in this blog, we released the Backstage Deploy CLI with an AWS implementation only. In the next few months, we are excited to collect feedback from our end users to understand how the AWS implementation works. With those learnings, we plan to iterate on the Deploy CLI and build out implementations for other cloud providers. Of course, contributions are always welcome!
So, please try this new CLI out and let us know what you think on [Discord](https://discord.com/channels/687207715902193673/995973463208644678)!
Useful links:
- [Backstage Deploy](https://github.com/backstage/backstage-deploy)
- [Documentation](https://backstage.io/docs/deployment/backstage-deploy/aws-lightsail)
- [Pulumi docs](https://www.pulumi.com/docs/)
- [#deployment](https://discord.com/channels/687207715902193673/995973463208644678) channel in Discord
Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

+6 -1
View File
@@ -325,7 +325,12 @@
"deployment/scaling",
"deployment/docker",
"deployment/k8s",
"deployment/heroku"
"deployment/heroku",
{
"type": "category",
"label": "Using Backstage Deploy (alpha)",
"items": ["deployment/backstage-deploy/aws-lightsail"]
}
],
"Designing for Backstage": [
"dls/design",
+1 -1
View File
@@ -47,7 +47,7 @@
"@types/react": "^17",
"@types/react-dom": "^17"
},
"version": "1.15.0-next.1",
"version": "1.15.0-next.2",
"dependencies": {
"@backstage/errors": "workspace:^",
"@manypkg/get-packages": "^1.1.3"
+11
View File
@@ -1,5 +1,16 @@
# @backstage/app-defaults
## 1.4.0-next.2
### Patch Changes
- Updated dependencies
- @backstage/theme@0.4.0-next.1
- @backstage/core-components@0.13.2-next.2
- @backstage/core-app-api@1.8.1-next.0
- @backstage/core-plugin-api@1.5.2-next.0
- @backstage/plugin-permission-react@0.4.13-next.0
## 1.4.0-next.1
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@backstage/app-defaults",
"description": "Provides the default wiring of a Backstage App",
"version": "1.4.0-next.1",
"version": "1.4.0-next.2",
"publishConfig": {
"access": "public",
"main": "dist/index.esm.js",
+70
View File
@@ -1,5 +1,75 @@
# example-app
## 0.2.84-next.2
### Patch Changes
- Updated dependencies
- @backstage/theme@0.4.0-next.1
- @backstage/plugin-catalog-react@1.7.0-next.2
- @backstage/core-components@0.13.2-next.2
- @backstage/plugin-tech-insights@0.3.11-next.2
- @backstage/plugin-scaffolder-react@1.5.0-next.2
- @backstage/plugin-scaffolder@1.13.2-next.2
- @backstage/plugin-home@0.5.3-next.2
- @backstage/plugin-kubernetes@0.9.2-next.2
- @backstage/app-defaults@1.4.0-next.2
- @backstage/cli@0.22.8-next.1
- @backstage/integration-react@1.1.14-next.2
- @backstage/plugin-adr@0.6.1-next.2
- @backstage/plugin-airbrake@0.3.19-next.2
- @backstage/plugin-api-docs@0.9.4-next.2
- @backstage/plugin-azure-devops@0.3.1-next.2
- @backstage/plugin-azure-sites@0.1.8-next.2
- @backstage/plugin-badges@0.2.43-next.2
- @backstage/plugin-catalog-graph@0.2.31-next.2
- @backstage/plugin-catalog-unprocessed-entities@0.1.0-next.1
- @backstage/plugin-circleci@0.3.19-next.2
- @backstage/plugin-cloudbuild@0.3.19-next.2
- @backstage/plugin-code-coverage@0.2.12-next.2
- @backstage/plugin-cost-insights@0.12.8-next.2
- @backstage/plugin-devtools@0.1.1-next.2
- @backstage/plugin-dynatrace@6.0.0-next.2
- @backstage/plugin-entity-feedback@0.2.2-next.2
- @backstage/plugin-explore@0.4.4-next.2
- @backstage/plugin-gcalendar@0.3.15-next.2
- @backstage/plugin-gcp-projects@0.3.38-next.2
- @backstage/plugin-github-actions@0.6.0-next.2
- @backstage/plugin-gocd@0.1.25-next.2
- @backstage/plugin-graphiql@0.2.51-next.2
- @backstage/plugin-jenkins@0.8.1-next.2
- @backstage/plugin-kafka@0.3.19-next.2
- @backstage/plugin-lighthouse@0.4.4-next.2
- @backstage/plugin-linguist@0.1.4-next.2
- @backstage/plugin-microsoft-calendar@0.1.4-next.2
- @backstage/plugin-newrelic@0.3.37-next.2
- @backstage/plugin-octopus-deploy@0.2.1-next.2
- @backstage/plugin-org@0.6.9-next.2
- @backstage/plugin-pagerduty@0.5.12-next.2
- @backstage/plugin-playlist@0.1.10-next.2
- @backstage/plugin-puppetdb@0.1.2-next.2
- @backstage/plugin-rollbar@0.4.19-next.2
- @backstage/plugin-search@1.3.1-next.2
- @backstage/plugin-search-react@1.6.1-next.2
- @backstage/plugin-sentry@0.5.4-next.2
- @backstage/plugin-shortcuts@0.3.11-next.2
- @backstage/plugin-stack-overflow@0.1.16-next.2
- @backstage/plugin-stackstorm@0.1.3-next.2
- @backstage/plugin-tech-radar@0.6.5-next.2
- @backstage/plugin-techdocs@1.6.3-next.2
- @backstage/plugin-techdocs-module-addons-contrib@1.0.14-next.2
- @backstage/plugin-techdocs-react@1.1.7-next.2
- @backstage/plugin-todo@0.2.21-next.2
- @backstage/plugin-user-settings@0.7.4-next.2
- @internal/plugin-catalog-customized@0.0.11-next.2
- @backstage/plugin-catalog-import@0.9.9-next.2
- @backstage/plugin-newrelic-dashboard@0.2.12-next.2
- @backstage/plugin-apache-airflow@0.2.12-next.2
- @backstage/config@1.0.7
- @backstage/core-app-api@1.8.1-next.0
- @backstage/core-plugin-api@1.5.2-next.0
- @backstage/plugin-permission-react@0.4.13-next.0
## 0.2.84-next.1
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "example-app",
"version": "0.2.84-next.1",
"version": "0.2.84-next.2",
"private": true,
"backstage": {
"role": "frontend"
+5 -5
View File
@@ -46,10 +46,10 @@
"test:kubernetes": "backstage-cli package test -t KubernetesContainerRunner --no-watch"
},
"dependencies": {
"@aws-sdk/abort-controller": "^3.310.0",
"@aws-sdk/client-s3": "^3.310.0",
"@aws-sdk/credential-providers": "^3.310.0",
"@aws-sdk/types": "^3.310.0",
"@aws-sdk/abort-controller": "^3.347.0",
"@aws-sdk/client-s3": "^3.350.0",
"@aws-sdk/credential-providers": "^3.350.0",
"@aws-sdk/types": "^3.347.0",
"@backstage/backend-app-api": "workspace:^",
"@backstage/backend-dev-utils": "workspace:^",
"@backstage/backend-plugin-api": "workspace:^",
@@ -114,7 +114,7 @@
}
},
"devDependencies": {
"@aws-sdk/util-stream-node": "^3.310.0",
"@aws-sdk/util-stream-node": "^3.350.0",
"@backstage/backend-test-utils": "workspace:^",
"@backstage/cli": "workspace:^",
"@types/archiver": "^5.1.0",
+8
View File
@@ -1,5 +1,13 @@
# example-backend-next
## 0.0.12-next.2
### Patch Changes
- Updated dependencies
- @backstage/plugin-kubernetes-backend@0.11.1-next.2
- @backstage/plugin-scaffolder-backend@1.15.0-next.2
## 0.0.12-next.1
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "example-backend-next",
"version": "0.0.12-next.1",
"version": "0.0.12-next.2",
"main": "dist/index.cjs.js",
"types": "src/index.ts",
"license": "Apache-2.0",
+15
View File
@@ -1,5 +1,20 @@
# example-backend
## 0.2.84-next.2
### Patch Changes
- Updated dependencies
- @backstage/plugin-kubernetes-backend@0.11.1-next.2
- @backstage/plugin-badges-backend@0.2.1-next.2
- @backstage/plugin-scaffolder-backend@1.15.0-next.2
- @backstage/plugin-auth-backend@0.18.4-next.2
- @backstage/plugin-code-coverage-backend@0.2.12-next.2
- example-app@0.2.84-next.2
- @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.1.3-next.2
- @backstage/plugin-scaffolder-backend-module-rails@0.4.15-next.2
- @backstage/config@1.0.7
## 0.2.84-next.1
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "example-backend",
"version": "0.2.84-next.1",
"version": "0.2.84-next.2",
"main": "dist/index.cjs.js",
"types": "src/index.ts",
"license": "Apache-2.0",
+10
View File
@@ -1,5 +1,15 @@
# @backstage/core-components
## 0.13.2-next.2
### Patch Changes
- 66ae4d8ca380: Added `exact` prop to `SidebarSubmenuItem` which causes it to only highlight if the current location is an exact match.
- Updated dependencies
- @backstage/theme@0.4.0-next.1
- @backstage/config@1.0.7
- @backstage/core-plugin-api@1.5.2-next.0
## 0.13.2-next.1
### Patch Changes
+1
View File
@@ -1087,6 +1087,7 @@ export type SidebarSubmenuItemProps = {
to?: string;
icon?: IconComponent;
dropdownItems?: SidebarSubmenuItemDropdownItem[];
exact?: boolean;
};
// @public
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@backstage/core-components",
"description": "Core components used by Backstage plugins and apps",
"version": "0.13.2-next.1",
"version": "0.13.2-next.2",
"publishConfig": {
"access": "public",
"main": "dist/index.esm.js",
@@ -92,6 +92,10 @@ const VARIANT_STYLES = {
flexDirection: 'column',
height: 'calc(100% - 10px)', // for pages without content header
marginBottom: '10px',
breakInside: 'avoid-page',
'@media print': {
height: 'auto',
},
},
},
cardContent: {
@@ -33,6 +33,11 @@ const useStyles = makeStyles<BackstageTheme>(
[theme.breakpoints.down('xs')]: {
height: '100%',
},
'@media print': {
display: 'block',
height: 'auto',
overflowY: 'inherit',
},
},
}),
{ name: 'BackstagePage' },
@@ -63,6 +63,9 @@ const useStyles = makeStyles<BackstageTheme, { sidebarConfig: SidebarConfig }>(
'&::-webkit-scrollbar': {
display: 'none',
},
'@media print': {
display: 'none',
},
},
drawerWidth: props => ({
width: props.sidebarConfig.drawerWidthClosed,
@@ -411,7 +411,11 @@ const SidebarItemBase = forwardRef<any, SidebarItemProps>((props, ref) => {
{itemIcon}
</Box>
{text && (
<Typography variant="subtitle2" className={classes.label}>
<Typography
variant="subtitle2"
component="span"
className={classes.label}
>
{text}
</Typography>
)}
@@ -72,6 +72,9 @@ const useStyles = makeStyles<BackstageTheme, { sidebarConfig: SidebarConfig }>(
zIndex: theme.zIndex.snackbar,
// SidebarDivider color
borderTop: '1px solid #383838',
'@media print': {
display: 'none',
},
},
overlay: props => ({
@@ -51,6 +51,9 @@ const useStyles = makeStyles<
[theme.breakpoints.down('xs')]: {
paddingBottom: props => props.sidebarConfig.mobileSidebarHeight,
},
'@media print': {
padding: '0px !important',
},
},
content: {
zIndex: 0,
@@ -127,7 +127,7 @@ export const SidebarSubmenu = (props: SidebarSubmenuProps) => {
[classes.drawerOpen]: isSubmenuOpen,
})}
>
<Typography variant="h5" className={classes.title}>
<Typography variant="h5" component="span" className={classes.title}>
{props.title}
</Typography>
{props.children}
@@ -130,6 +130,7 @@ export type SidebarSubmenuItemProps = {
to?: string;
icon?: IconComponent;
dropdownItems?: SidebarSubmenuItemDropdownItem[];
exact?: boolean;
};
/**
@@ -138,7 +139,7 @@ export type SidebarSubmenuItemProps = {
* @public
*/
export const SidebarSubmenuItem = (props: SidebarSubmenuItemProps) => {
const { title, subtitle, to, icon: Icon, dropdownItems } = props;
const { title, subtitle, to, icon: Icon, dropdownItems, exact } = props;
const classes = useStyles();
const { setIsHoveredOn } = useContext(SidebarItemWithSubmenuContext);
const closeSubmenu = () => {
@@ -146,7 +147,7 @@ export const SidebarSubmenuItem = (props: SidebarSubmenuItemProps) => {
};
const toLocation = useResolvedPath(to ?? '');
const currentLocation = useLocation();
let isActive = isLocationMatch(currentLocation, toLocation);
let isActive = isLocationMatch(currentLocation, toLocation, exact);
const [showDropDown, setShowDropDown] = useState(false);
const handleClickDropdown = () => {
@@ -155,7 +156,7 @@ export const SidebarSubmenuItem = (props: SidebarSubmenuItemProps) => {
if (dropdownItems !== undefined) {
dropdownItems.some(item => {
const resolvedPath = resolvePath(item.to);
isActive = isLocationMatch(currentLocation, resolvedPath);
isActive = isLocationMatch(currentLocation, resolvedPath, exact);
return isActive;
});
return (
@@ -171,11 +172,19 @@ export const SidebarSubmenuItem = (props: SidebarSubmenuItemProps) => {
)}
>
{Icon && <Icon fontSize="small" />}
<Typography variant="subtitle1" className={classes.label}>
<Typography
variant="subtitle1"
component="span"
className={classes.label}
>
{title}
<br />
{subtitle && (
<Typography variant="caption" className={classes.subtitle}>
<Typography
variant="caption"
component="span"
className={classes.subtitle}
>
{subtitle}
</Typography>
)}
@@ -203,7 +212,7 @@ export const SidebarSubmenuItem = (props: SidebarSubmenuItemProps) => {
onClick={closeSubmenu}
onTouchStart={e => e.stopPropagation()}
>
<Typography className={classes.textContent}>
<Typography component="span" className={classes.textContent}>
{object.title}
</Typography>
</Link>
@@ -229,11 +238,19 @@ export const SidebarSubmenuItem = (props: SidebarSubmenuItemProps) => {
onTouchStart={e => e.stopPropagation()}
>
{Icon && <Icon fontSize="small" />}
<Typography variant="subtitle1" className={classes.label}>
<Typography
variant="subtitle1"
component="span"
className={classes.label}
>
{title}
<br />
{subtitle && (
<Typography variant="caption" className={classes.subtitle}>
<Typography
variant="caption"
component="span"
className={classes.subtitle}
>
{subtitle}
</Typography>
)}
@@ -95,4 +95,30 @@ describe('isLocationMatching', () => {
toLocation = { pathname: '/catalog', search: '', hash: '' };
expect(isLocationMatch(currentLocation, toLocation)).toBe(true);
});
describe('exact matching', () => {
it('return false when target query parameters are subset of current location query parameters', async () => {
currentLocation = {
pathname: '/catalog',
search: '?x=foo&y=bar',
state: null,
hash: '',
key: '',
};
toLocation = { pathname: '/catalog', search: '?x=foo', hash: '' };
expect(isLocationMatch(currentLocation, toLocation, true)).toBe(false);
});
it('return true when target query parameters are exact match with current location query parameters', async () => {
currentLocation = {
pathname: '/catalog',
search: '?x=foo&y=bar',
state: null,
hash: '',
key: '',
};
toLocation = { pathname: '/catalog', search: '?y=bar&x=foo', hash: '' };
expect(isLocationMatch(currentLocation, toLocation, true)).toBe(true);
});
});
});
@@ -18,7 +18,11 @@ import { Location, Path } from 'history';
import { isEqual, isMatch } from 'lodash';
import qs from 'qs';
export function isLocationMatch(currentLocation: Location, toLocation: Path) {
export function isLocationMatch(
currentLocation: Location,
toLocation: Path,
exact: boolean = false,
) {
const toDecodedSearch = new URLSearchParams(toLocation.search).toString();
const toQueryParameters = qs.parse(toDecodedSearch);
@@ -27,9 +31,11 @@ export function isLocationMatch(currentLocation: Location, toLocation: Path) {
).toString();
const currentQueryParameters = qs.parse(currentDecodedSearch);
const queryStringMatcher = exact ? isEqual : isMatch;
const matching =
isEqual(toLocation.pathname, currentLocation.pathname) &&
isMatch(currentQueryParameters, toQueryParameters);
queryStringMatcher(currentQueryParameters, toQueryParameters);
return matching;
}
+6
View File
@@ -1,5 +1,11 @@
# @backstage/create-app
## 0.5.2-next.2
### Patch Changes
- Bumped create-app version.
## 0.5.2-next.1
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@backstage/create-app",
"description": "A CLI that helps you create your own Backstage app",
"version": "0.5.2-next.1",
"version": "0.5.2-next.2",
"publishConfig": {
"access": "public"
},
+14
View File
@@ -1,5 +1,19 @@
# @backstage/dev-utils
## 1.0.16-next.2
### Patch Changes
- Updated dependencies
- @backstage/theme@0.4.0-next.1
- @backstage/plugin-catalog-react@1.7.0-next.2
- @backstage/core-components@0.13.2-next.2
- @backstage/app-defaults@1.4.0-next.2
- @backstage/integration-react@1.1.14-next.2
- @backstage/test-utils@1.4.0-next.2
- @backstage/core-app-api@1.8.1-next.0
- @backstage/core-plugin-api@1.5.2-next.0
## 1.0.16-next.1
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@backstage/dev-utils",
"description": "Utilities for developing Backstage plugins.",
"version": "1.0.16-next.1",
"version": "1.0.16-next.2",
"publishConfig": {
"access": "public",
"main": "dist/index.esm.js",
+7
View File
@@ -1,5 +1,12 @@
# e2e-test
## 0.2.4-next.2
### Patch Changes
- Updated dependencies
- @backstage/create-app@0.5.2-next.2
## 0.2.4-next.1
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "e2e-test",
"description": "E2E test for verifying Backstage packages",
"version": "0.2.4-next.1",
"version": "0.2.4-next.2",
"private": true,
"backstage": {
"role": "cli"
+4 -4
View File
@@ -32,10 +32,10 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
"@aws-sdk/client-sts": "^3.310.0",
"@aws-sdk/credential-provider-node": "^3.310.0",
"@aws-sdk/credential-providers": "^3.310.0",
"@aws-sdk/types": "^3.310.0",
"@aws-sdk/client-sts": "^3.350.0",
"@aws-sdk/credential-provider-node": "^3.350.0",
"@aws-sdk/credential-providers": "^3.350.0",
"@aws-sdk/types": "^3.347.0",
"@aws-sdk/util-arn-parser": "^3.310.0",
"@backstage/config": "workspace:^",
"@backstage/errors": "workspace:^"
+10
View File
@@ -1,5 +1,15 @@
# @backstage/integration-react
## 1.1.14-next.2
### Patch Changes
- Updated dependencies
- @backstage/theme@0.4.0-next.1
- @backstage/core-components@0.13.2-next.2
- @backstage/config@1.0.7
- @backstage/core-plugin-api@1.5.2-next.0
## 1.1.14-next.1
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@backstage/integration-react",
"description": "Frontend package for managing integrations towards external systems",
"version": "1.1.14-next.1",
"version": "1.1.14-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -1,5 +1,23 @@
# techdocs-cli-embedded-app
## 0.2.83-next.2
### Patch Changes
- Updated dependencies
- @backstage/theme@0.4.0-next.1
- @backstage/core-components@0.13.2-next.2
- @backstage/plugin-catalog@1.11.1-next.2
- @backstage/app-defaults@1.4.0-next.2
- @backstage/cli@0.22.8-next.1
- @backstage/integration-react@1.1.14-next.2
- @backstage/test-utils@1.4.0-next.2
- @backstage/plugin-techdocs@1.6.3-next.2
- @backstage/plugin-techdocs-react@1.1.7-next.2
- @backstage/config@1.0.7
- @backstage/core-app-api@1.8.1-next.0
- @backstage/core-plugin-api@1.5.2-next.0
## 0.2.83-next.1
### Patch Changes
@@ -1,6 +1,6 @@
{
"name": "techdocs-cli-embedded-app",
"version": "0.2.83-next.1",
"version": "0.2.83-next.2",
"private": true,
"backstage": {
"role": "frontend"
+11
View File
@@ -1,5 +1,16 @@
# @backstage/test-utils
## 1.4.0-next.2
### Patch Changes
- Updated dependencies
- @backstage/theme@0.4.0-next.1
- @backstage/config@1.0.7
- @backstage/core-app-api@1.8.1-next.0
- @backstage/core-plugin-api@1.5.2-next.0
- @backstage/plugin-permission-react@0.4.13-next.0
## 1.4.0-next.1
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@backstage/test-utils",
"description": "Utilities to test Backstage plugins and apps.",
"version": "1.4.0-next.1",
"version": "1.4.0-next.2",
"publishConfig": {
"access": "public"
},
+6
View File
@@ -1,5 +1,11 @@
# @backstage/theme
## 0.4.0-next.1
### Patch Changes
- 5065a5e8ebd6: Tweaked `UnifiedThemeProvider` to avoid overlapping JSS class names in production.
## 0.4.0-next.0
### Minor Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@backstage/theme",
"description": "material-ui theme for use with Backstage.",
"version": "0.4.0-next.0",
"version": "0.4.0-next.1",
"publishConfig": {
"access": "public",
"main": "dist/index.esm.js",
@@ -16,7 +16,11 @@
import React, { ReactNode } from 'react';
import './MuiClassNameSetup';
import { ThemeProvider } from '@material-ui/core/styles';
import {
ThemeProvider,
StylesProvider,
createGenerateClassName,
} from '@material-ui/core/styles';
import {
StyledEngineProvider,
ThemeProvider as Mui5Provider,
@@ -35,6 +39,14 @@ export interface UnifiedThemeProviderProps {
noCssBaseline?: boolean;
}
// Background at https://mui.com/x/migration/migration-data-grid-v4/#using-mui-core-v4-with-v5
// Rather than disabling globals and custom seed, we instead only set a production prefix that
// won't collide with MUI 5 styles. We've already got a separate class name generator for v5 set
// up in MuiClassNameSetup.ts, so only the production JSS needs deduplication.
const generateV4ClassName = createGenerateClassName({
productionPrefix: 'jss4-',
});
/**
* Provides themes for all MUI versions supported by the provided unified theme.
*
@@ -61,7 +73,11 @@ export function UnifiedThemeProvider(
);
if (v4Theme) {
result = <ThemeProvider theme={v4Theme}>{result}</ThemeProvider>;
result = (
<StylesProvider generateClassName={generateV4ClassName}>
<ThemeProvider theme={v4Theme}>{result}</ThemeProvider>
</StylesProvider>
);
}
if (v5Theme) {
+12
View File
@@ -1,5 +1,17 @@
# @backstage/plugin-adr
## 0.6.1-next.2
### Patch Changes
- Updated dependencies
- @backstage/theme@0.4.0-next.1
- @backstage/plugin-catalog-react@1.7.0-next.2
- @backstage/core-components@0.13.2-next.2
- @backstage/integration-react@1.1.14-next.2
- @backstage/plugin-search-react@1.6.1-next.2
- @backstage/core-plugin-api@1.5.2-next.0
## 0.6.1-next.1
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-adr",
"version": "0.6.1-next.1",
"version": "0.6.1-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
+12
View File
@@ -1,5 +1,17 @@
# @backstage/plugin-airbrake
## 0.3.19-next.2
### Patch Changes
- Updated dependencies
- @backstage/theme@0.4.0-next.1
- @backstage/plugin-catalog-react@1.7.0-next.2
- @backstage/core-components@0.13.2-next.2
- @backstage/dev-utils@1.0.16-next.2
- @backstage/test-utils@1.4.0-next.2
- @backstage/core-plugin-api@1.5.2-next.0
## 0.3.19-next.1
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-airbrake",
"version": "0.3.19-next.1",
"version": "0.3.19-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
+10
View File
@@ -1,5 +1,15 @@
# @backstage/plugin-allure
## 0.1.35-next.2
### Patch Changes
- Updated dependencies
- @backstage/theme@0.4.0-next.1
- @backstage/plugin-catalog-react@1.7.0-next.2
- @backstage/core-components@0.13.2-next.2
- @backstage/core-plugin-api@1.5.2-next.0
## 0.1.35-next.1
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-allure",
"description": "A Backstage plugin that integrates with Allure",
"version": "0.1.35-next.1",
"version": "0.1.35-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
+10
View File
@@ -1,5 +1,15 @@
# @backstage/plugin-analytics-module-ga
## 0.1.30-next.2
### Patch Changes
- Updated dependencies
- @backstage/theme@0.4.0-next.1
- @backstage/core-components@0.13.2-next.2
- @backstage/config@1.0.7
- @backstage/core-plugin-api@1.5.2-next.0
## 0.1.30-next.1
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-analytics-module-ga",
"version": "0.1.30-next.1",
"version": "0.1.30-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
+10
View File
@@ -1,5 +1,15 @@
# @backstage/plugin-analytics-module-ga4
## 0.1.1-next.2
### Patch Changes
- Updated dependencies
- @backstage/theme@0.4.0-next.1
- @backstage/core-components@0.13.2-next.2
- @backstage/config@1.0.7
- @backstage/core-plugin-api@1.5.2-next.0
## 0.1.1-next.1
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-analytics-module-ga4",
"version": "0.1.1-next.1",
"version": "0.1.1-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
+8
View File
@@ -1,5 +1,13 @@
# @backstage/plugin-apache-airflow
## 0.2.12-next.2
### Patch Changes
- Updated dependencies
- @backstage/core-components@0.13.2-next.2
- @backstage/core-plugin-api@1.5.2-next.0
## 0.2.12-next.1
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-apache-airflow",
"version": "0.2.12-next.1",
"version": "0.2.12-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
+11
View File
@@ -1,5 +1,16 @@
# @backstage/plugin-api-docs
## 0.9.4-next.2
### Patch Changes
- Updated dependencies
- @backstage/theme@0.4.0-next.1
- @backstage/plugin-catalog-react@1.7.0-next.2
- @backstage/core-components@0.13.2-next.2
- @backstage/plugin-catalog@1.11.1-next.2
- @backstage/core-plugin-api@1.5.2-next.0
## 0.9.4-next.1
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-api-docs",
"description": "A Backstage plugin that helps represent API entities in the frontend",
"version": "0.9.4-next.1",
"version": "0.9.4-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -168,7 +168,7 @@ describe('DefaultApiExplorerPage', () => {
const { findByTitle, findByText } = await renderWrapped(
<DefaultApiExplorerPage />,
);
expect(await findByText(/All \(1\)/)).toBeInTheDocument();
expect(await findByText(/All apis \(1\)/)).toBeInTheDocument();
expect(await findByTitle(/View/)).toBeInTheDocument();
expect(await findByTitle(/View/)).toBeInTheDocument();
expect(await findByTitle(/Edit/)).toBeInTheDocument();
@@ -198,7 +198,7 @@ describe('DefaultApiExplorerPage', () => {
const { findByTitle, findByText } = await renderWrapped(
<DefaultApiExplorerPage actions={actions} />,
);
expect(await findByText(/All \(1\)/)).toBeInTheDocument();
expect(await findByText(/All apis \(1\)/)).toBeInTheDocument();
expect(await findByTitle(/Foo Action/)).toBeInTheDocument();
expect(await findByTitle(/Bar Action/)).toBeInTheDocument();
expect((await findByTitle(/Bar Action/)).firstChild).toBeDisabled();
+9
View File
@@ -1,5 +1,14 @@
# @backstage/plugin-apollo-explorer
## 0.1.12-next.2
### Patch Changes
- Updated dependencies
- @backstage/theme@0.4.0-next.1
- @backstage/core-components@0.13.2-next.2
- @backstage/core-plugin-api@1.5.2-next.0
## 0.1.12-next.1
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-apollo-explorer",
"version": "0.1.12-next.1",
"version": "0.1.12-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
+8
View File
@@ -1,5 +1,13 @@
# @backstage/plugin-auth-backend
## 0.18.4-next.2
### Patch Changes
- d0f5b0c886c2: Set the expiration time of oidc `idToken` to be less than backstage session expiration time.
- Updated dependencies
- @backstage/config@1.0.7
## 0.18.4-next.1
### Patch Changes

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