Merge remote-tracking branch 'upstream/master' into airbrake-backend

# Conflicts:
#	packages/backend/package.json
This commit is contained in:
Karan Shah
2022-02-09 11:19:30 +00:00
249 changed files with 2969 additions and 977 deletions
+7
View File
@@ -0,0 +1,7 @@
---
'@backstage/cli': patch
---
Introduces a new `--release` parameter to the `backstage-cli versions:bump` command.
The release can be either a specific version, for example `0.99.1`, or the latest `main` or `next` release.
The default behavior is to bump to the latest `main` release.
+18
View File
@@ -0,0 +1,18 @@
---
'@backstage/backend-common': patch
'@backstage/backend-tasks': patch
'@backstage/backend-test-utils': patch
'@backstage/plugin-app-backend': patch
'@backstage/plugin-auth-backend': patch
'@backstage/plugin-bazaar-backend': patch
'@backstage/plugin-catalog-backend': patch
'@backstage/plugin-code-coverage-backend': patch
'@backstage/plugin-scaffolder-backend': patch
'@backstage/plugin-search-backend-module-pg': patch
'@backstage/plugin-tech-insights-backend': patch
'@backstage/plugin-techdocs-backend': patch
---
chore(deps): bump `knex` from 0.95.6 to 1.0.2
This also replaces `sqlite3` with `@vscode/sqlite3` 5.0.7
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-auth-backend': patch
---
Enabled refresh for the Atlassian provider.
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/release-manifests': patch
---
Introduces a new package with utilities for fetching release manifests.
This package will primarily be used by the `@backstage/cli` package.
+58
View File
@@ -0,0 +1,58 @@
---
'@backstage/create-app': patch
---
**BREAKING:** Updated `knex` to major version 1, which also implies changing out
the underlying `sqlite` implementation.
The old `sqlite3` NPM library has been abandoned by its maintainers, which has
led to unhandled security reports and other issues. Therefore, in the `knex` 1.x
release line they have instead switched over to the [`@vscode/sqlite3`
library](https://github.com/microsoft/vscode-node-sqlite3) by default, which is
actively maintained by Microsoft.
This means that as you update to this version of Backstage, there are two
breaking changes that you will have to address in your own repository:
## Bumping `knex` itself
All `package.json` files of your repo that used to depend on a 0.x version of
`knex`, should now be updated to depend on the 1.x release line. This applies in
particular to `packages/backend`, but may also occur in backend plugins or
libraries.
```diff
- "knex": "^0.95.1",
+ "knex": "^1.0.2",
```
Almost all existing database code will continue to function without modification
after this bump. The only significant difference that we discovered in the main
repo, is that the `alter()` function had a slightly different signature in
migration files. It now accepts an object with `alterType` and `alterNullable`
fields that clarify a previous grey area such that the intent of the alteration
is made explicit. This is caught by `tsc` and your editor if you are using the
`@ts-check` and `@param` syntax in your migration files
([example](https://github.com/backstage/backstage/blob/master/plugins/catalog-backend/migrations/20220116144621_remove_legacy.js#L17)),
which we strongly recommend.
See the [`knex` documentation](https://knexjs.org/#Schema-alter) for more
information about the `alter` syntax.
Also see the [`knex` changelog](https://knexjs.org/#changelog) for information
about breaking changes in the 1.x line; if you are using `RETURNING` you may
want to make some additional modifications in your code.
## Switching out `sqlite3`
All `package.json` files of your repo that used to depend on `sqlite3`, should
now be updated to depend on `@vscode/sqlite3`. This applies in particular to
`packages/backend`, but may also occur in backend plugins or libraries.
```diff
- "sqlite3": "^5.0.1",
+ "@vscode/sqlite3": "^5.0.7",
```
These should be functionally equivalent, except that the new library will have
addressed some long standing problems with old transitive dependencies etc.
+161
View File
@@ -0,0 +1,161 @@
{
"mode": "pre",
"tag": "next",
"initialVersions": {
"example-app": "0.2.63",
"@backstage/app-defaults": "0.1.6",
"example-backend": "0.2.63",
"@backstage/backend-common": "0.10.6",
"@backstage/backend-tasks": "0.1.5",
"@backstage/backend-test-utils": "0.1.16",
"@backstage/catalog-client": "0.5.5",
"@backstage/catalog-model": "0.9.10",
"@backstage/cli": "0.13.1",
"@backstage/cli-common": "0.1.6",
"@backstage/codemods": "0.1.32",
"@backstage/config": "0.1.13",
"@backstage/config-loader": "0.9.3",
"@backstage/core-app-api": "0.5.2",
"@backstage/core-components": "0.8.7",
"@backstage/core-plugin-api": "0.6.0",
"@backstage/create-app": "0.4.18",
"@backstage/dev-utils": "0.2.20",
"e2e-test": "0.2.0",
"@backstage/errors": "0.2.0",
"@backstage/integration": "0.7.2",
"@backstage/integration-react": "0.1.20",
"@backstage/search-common": "0.2.2",
"@techdocs/cli": "0.8.12",
"techdocs-cli-embedded-app": "0.2.62",
"@backstage/techdocs-common": "0.11.6",
"@backstage/test-utils": "0.2.4",
"@backstage/theme": "0.2.14",
"@backstage/types": "0.1.1",
"@backstage/version-bridge": "0.1.1",
"@backstage/plugin-airbrake": "0.1.2",
"@backstage/plugin-allure": "0.1.13",
"@backstage/plugin-analytics-module-ga": "0.1.8",
"@backstage/plugin-apache-airflow": "0.1.5",
"@backstage/plugin-api-docs": "0.7.1",
"@backstage/plugin-app-backend": "0.3.23",
"@backstage/plugin-auth-backend": "0.9.0",
"@backstage/plugin-azure-devops": "0.1.13",
"@backstage/plugin-azure-devops-backend": "0.3.2",
"@backstage/plugin-azure-devops-common": "0.2.0",
"@backstage/plugin-badges": "0.2.21",
"@backstage/plugin-badges-backend": "0.1.17",
"@backstage/plugin-bazaar": "0.1.12",
"@backstage/plugin-bazaar-backend": "0.1.8",
"@backstage/plugin-bitrise": "0.1.24",
"@backstage/plugin-catalog": "0.7.11",
"@backstage/plugin-catalog-backend": "0.21.2",
"@backstage/plugin-catalog-backend-module-ldap": "0.3.11",
"@backstage/plugin-catalog-backend-module-msgraph": "0.2.14",
"@backstage/plugin-catalog-common": "0.1.2",
"@backstage/plugin-catalog-graph": "0.2.9",
"@backstage/plugin-catalog-graphql": "0.3.1",
"@backstage/plugin-catalog-import": "0.8.0",
"@backstage/plugin-catalog-react": "0.6.13",
"@backstage/plugin-circleci": "0.2.36",
"@backstage/plugin-cloudbuild": "0.2.34",
"@backstage/plugin-code-coverage": "0.1.24",
"@backstage/plugin-code-coverage-backend": "0.1.21",
"@backstage/plugin-config-schema": "0.1.20",
"@backstage/plugin-cost-insights": "0.11.19",
"@backstage/plugin-explore": "0.3.28",
"@backstage/plugin-explore-react": "0.0.11",
"@backstage/plugin-firehydrant": "0.1.14",
"@backstage/plugin-fossa": "0.2.29",
"@backstage/plugin-gcp-projects": "0.3.16",
"@backstage/plugin-git-release-manager": "0.3.10",
"@backstage/plugin-github-actions": "0.4.34",
"@backstage/plugin-github-deployments": "0.1.28",
"@backstage/plugin-gitops-profiles": "0.3.15",
"@backstage/plugin-gocd": "0.1.3",
"@backstage/plugin-graphiql": "0.2.29",
"@backstage/plugin-graphql-backend": "0.1.13",
"@backstage/plugin-home": "0.4.13",
"@backstage/plugin-ilert": "0.1.23",
"@backstage/plugin-jenkins": "0.5.19",
"@backstage/plugin-jenkins-backend": "0.1.12",
"@backstage/plugin-kafka": "0.2.27",
"@backstage/plugin-kafka-backend": "0.2.16",
"@backstage/plugin-kubernetes": "0.5.6",
"@backstage/plugin-kubernetes-backend": "0.4.6",
"@backstage/plugin-kubernetes-common": "0.2.2",
"@backstage/plugin-lighthouse": "0.2.36",
"@backstage/plugin-newrelic": "0.3.15",
"@backstage/plugin-newrelic-dashboard": "0.1.5",
"@backstage/plugin-org": "0.4.1",
"@backstage/plugin-pagerduty": "0.3.24",
"@backstage/plugin-permission-backend": "0.4.2",
"@backstage/plugin-permission-common": "0.4.0",
"@backstage/plugin-permission-node": "0.4.2",
"@backstage/plugin-permission-react": "0.3.0",
"@backstage/plugin-proxy-backend": "0.2.17",
"@backstage/plugin-rollbar": "0.3.25",
"@backstage/plugin-rollbar-backend": "0.1.20",
"@backstage/plugin-scaffolder": "0.12.1",
"@backstage/plugin-scaffolder-backend": "0.15.23",
"@backstage/plugin-scaffolder-backend-module-cookiecutter": "0.1.10",
"@backstage/plugin-scaffolder-backend-module-rails": "0.2.5",
"@backstage/plugin-scaffolder-backend-module-yeoman": "0.1.4",
"@backstage/plugin-scaffolder-common": "0.1.3",
"@backstage/plugin-search": "0.6.1",
"@backstage/plugin-search-backend": "0.4.1",
"@backstage/plugin-search-backend-module-elasticsearch": "0.0.8",
"@backstage/plugin-search-backend-module-pg": "0.2.5",
"@backstage/plugin-search-backend-node": "0.4.5",
"@backstage/plugin-sentry": "0.3.35",
"@backstage/plugin-shortcuts": "0.1.21",
"@backstage/plugin-sonarqube": "0.2.15",
"@backstage/plugin-splunk-on-call": "0.3.21",
"@backstage/plugin-tech-insights": "0.1.7",
"@backstage/plugin-tech-insights-backend": "0.2.3",
"@backstage/plugin-tech-insights-backend-module-jsonfc": "0.1.7",
"@backstage/plugin-tech-insights-common": "0.2.1",
"@backstage/plugin-tech-insights-node": "0.2.1",
"@backstage/plugin-tech-radar": "0.5.4",
"@backstage/plugin-techdocs": "0.13.2",
"@backstage/plugin-techdocs-backend": "0.13.2",
"@backstage/plugin-todo": "0.1.21",
"@backstage/plugin-todo-backend": "0.1.20",
"@backstage/plugin-user-settings": "0.3.18",
"@backstage/plugin-xcmetrics": "0.2.17"
},
"changesets": [
"big-jeans-love",
"brave-tools-drop",
"breezy-windows-jump",
"chilly-pans-jog",
"cool-birds-ring",
"curly-fireants-crash",
"dependabot-e379ac7",
"dependabot-f436b5b",
"early-beds-smoke",
"healthy-flies-fold",
"khaki-jokes-grab",
"loud-monkeys-explode",
"many-terms-type",
"metal-clouds-fail",
"metal-lions-fix",
"nasty-socks-exist",
"neat-icons-fry",
"ninety-dancers-bow",
"old-phones-draw",
"popular-planes-lay",
"pretty-glasses-admire",
"seven-apes-shave",
"seven-teachers-arrive",
"shaggy-buckets-confess",
"shiny-radios-deliver",
"smart-boxes-double",
"tasty-spoons-beg",
"three-dolls-fly",
"three-pigs-sniff",
"twenty-colts-applaud",
"warm-beds-flow",
"wise-peaches-flow",
"wise-plants-tease"
]
}
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder': patch
---
Encode the `formData` in the `queryString` using `JSON.stringify` to keep the types in the decoded value
+47 -47
View File
@@ -4,50 +4,50 @@
# The last matching pattern takes precedence.
# https://help.github.com/articles/about-codeowners/
* @backstage/reviewers
/.changeset/cost-insights-* @backstage/reviewers @backstage/silver-lining
/.changeset/search-* @backstage/techdocs-core
/.changeset/techdocs-* @backstage/techdocs-core
/cypress/src/integration/plugins/techdocs.spec.ts @backstage/techdocs-core
/docs/assets/search @backstage/techdocs-core
/docs/features/search @backstage/techdocs-core
/docs/features/techdocs @backstage/techdocs-core
/packages/search-common @backstage/techdocs-core
/packages/techdocs-cli @backstage/techdocs-core
/packages/techdocs-cli-embedded-app @backstage/techdocs-core
/packages/techdocs-common @backstage/techdocs-core
/plugins/allure @backstage/reviewers @deepak-bhardwaj-ps
/plugins/apache-airflow @backstage/reviewers @cmpadden
/plugins/api-docs @backstage/reviewers @backstage/sda-se-reviewers
/plugins/azure-devops @backstage/reviewers @marleypowell @awanlin
/plugins/azure-devops-backend @backstage/reviewers @marleypowell @awanlin
/plugins/azure-devops-common @backstage/reviewers @marleypowell @awanlin
/plugins/bitrise @backstage/reviewers @backstage/sda-se-reviewers
/plugins/catalog-graph @backstage/reviewers @backstage/sda-se-reviewers
/plugins/circleci @backstage/reviewers @adamdmharvey
/plugins/cloudbuild @backstage/reviewers @trivago/ebarrios
/plugins/code-coverage @backstage/reviewers @alde @nissayeva
/plugins/code-coverage-backend @backstage/reviewers @alde @nissayeva
/plugins/cost-insights @backstage/silver-lining
/plugins/explore @backstage/reviewers @backstage/sda-se-reviewers
/plugins/explore-react @backstage/reviewers @backstage/sda-se-reviewers
/plugins/fossa @backstage/reviewers @backstage/sda-se-reviewers
/plugins/git-release-manager @backstage/reviewers @erikengervall
/plugins/home @backstage/techdocs-core
/plugins/ilert @backstage/reviewers @yacut
/plugins/jenkins @backstage/reviewers @timja
/plugins/jenkins-backend @backstage/reviewers @timja
/plugins/kafka @backstage/reviewers @nirga
/plugins/kafka-backend @backstage/reviewers @nirga
/plugins/newrelic-dashboard @backstage/reviewers @mufaddal7
/plugins/scaffolder-backend-module-rails @backstage/reviewers @angeliski
/plugins/scaffolder-backend-module-yeoman @backstage/reviewers @pawelmitka
/plugins/search @backstage/techdocs-core
/plugins/search-* @backstage/techdocs-core
/plugins/sonarqube @backstage/reviewers @backstage/sda-se-reviewers
/plugins/techdocs @backstage/techdocs-core
/plugins/techdocs-backend @backstage/techdocs-core
/tech-insights-backend @backstage/reviewers @xantier @iain-b
/tech-insights-backend-module-jsonfc @backstage/reviewers @xantier @iain-b
/tech-insights-tech-insights-common @backstage/reviewers @xantier @iain-b
/tech-insights-tech-insights-node @backstage/reviewers @xantier @iain-b
* @backstage/reviewers
/.changeset/cost-insights-* @backstage/reviewers @backstage/silver-lining
/.changeset/search-* @backstage/reviewers @backstage/techdocs-core
/.changeset/techdocs-* @backstage/reviewers @backstage/techdocs-core
/cypress/src/integration/plugins/techdocs.spec.ts @backstage/reviewers @backstage/techdocs-core
/docs/assets/search @backstage/reviewers @backstage/techdocs-core
/docs/features/search @backstage/reviewers @backstage/techdocs-core
/docs/features/techdocs @backstage/reviewers @backstage/techdocs-core
/packages/search-common @backstage/reviewers @backstage/techdocs-core
/packages/techdocs-cli @backstage/reviewers @backstage/techdocs-core
/packages/techdocs-cli-embedded-app @backstage/reviewers @backstage/techdocs-core
/packages/techdocs-common @backstage/reviewers @backstage/techdocs-core
/plugins/allure @backstage/reviewers @deepak-bhardwaj-ps
/plugins/apache-airflow @backstage/reviewers @cmpadden
/plugins/api-docs @backstage/reviewers @backstage/sda-se-reviewers
/plugins/azure-devops @backstage/reviewers @marleypowell @awanlin
/plugins/azure-devops-backend @backstage/reviewers @marleypowell @awanlin
/plugins/azure-devops-common @backstage/reviewers @marleypowell @awanlin
/plugins/bitrise @backstage/reviewers @backstage/sda-se-reviewers
/plugins/catalog-graph @backstage/reviewers @backstage/sda-se-reviewers
/plugins/circleci @backstage/reviewers @adamdmharvey
/plugins/cloudbuild @backstage/reviewers @trivago/ebarrios
/plugins/code-coverage @backstage/reviewers @alde @nissayeva
/plugins/code-coverage-backend @backstage/reviewers @alde @nissayeva
/plugins/cost-insights @backstage/reviewers @backstage/silver-lining
/plugins/explore @backstage/reviewers @backstage/sda-se-reviewers
/plugins/explore-react @backstage/reviewers @backstage/sda-se-reviewers
/plugins/fossa @backstage/reviewers @backstage/sda-se-reviewers
/plugins/git-release-manager @backstage/reviewers @erikengervall
/plugins/home @backstage/reviewers @backstage/techdocs-core
/plugins/ilert @backstage/reviewers @yacut
/plugins/jenkins @backstage/reviewers @timja
/plugins/jenkins-backend @backstage/reviewers @timja
/plugins/kafka @backstage/reviewers @nirga
/plugins/kafka-backend @backstage/reviewers @nirga
/plugins/newrelic-dashboard @backstage/reviewers @mufaddal7
/plugins/scaffolder-backend-module-rails @backstage/reviewers @angeliski
/plugins/scaffolder-backend-module-yeoman @backstage/reviewers @pawelmitka
/plugins/search @backstage/reviewers @backstage/techdocs-core
/plugins/search-* @backstage/reviewers @backstage/techdocs-core
/plugins/sonarqube @backstage/reviewers @backstage/sda-se-reviewers
/plugins/techdocs @backstage/reviewers @backstage/techdocs-core
/plugins/techdocs-backend @backstage/reviewers @backstage/techdocs-core
/tech-insights-backend @backstage/reviewers @xantier @iain-b
/tech-insights-backend-module-jsonfc @backstage/reviewers @xantier @iain-b
/tech-insights-tech-insights-common @backstage/reviewers @xantier @iain-b
/tech-insights-tech-insights-node @backstage/reviewers @xantier @iain-b
+11 -12
View File
@@ -4,20 +4,17 @@ about: 'Create Bug Report'
labels: bug
---
<!--- Provide a general summary of the issue in the Title above -->
<!---
Please use this template when reporting bugs. Thank you!
-->
## Expected Behavior
<!--- Tell us what should happen -->
## Current Behavior
## Actual Behavior
<!--- Tell us what happens instead of the expected behavior -->
## Possible Solution
<!--- Not obligatory, but suggest a fix/reason for the bug, -->
<!--- or ideas as to the implementation of the addition or change -->
<!--- Tell us what happens instead -->
## Steps to Reproduce
@@ -38,8 +35,10 @@ labels: bug
<!--- Include as many relevant details about the environment you experienced the bug in -->
<!-- ProTip: You can use `yarn backstage-cli info` command in your Backstage App for this section. -->
- Browser Information: <!--- For example Google Chrome 97.0.4692.99 -->
- NodeJS Version (v14):
- Operating System and Version (e.g. Ubuntu 14.04):
- Browser Information:
- Output of `yarn backstage-cli info`: <!--- Paste into the code block below -->
```text
```
+12
View File
@@ -0,0 +1,12 @@
---
blank_issues_enabled: false
contact_links:
- about: 'Please ask and answer usage questions in GitHub Discussions'
name: Question
url: 'https://github.com/backstage/backstage/discussions'
- about: 'Alternatively, you can use the Backstage Community Discord'
name: Chat
url: 'https://discord.gg/MUpMjP2'
- about: 'Please check the FAQ before filing new issues'
name: 'Backstage FAQ'
url: 'https://backstage.io/docs/FAQ'
+2 -2
View File
@@ -56,7 +56,7 @@ jobs:
# TODO(Rugvip): Remove the create-app dispatch once we've been on the release version for a while
script: |
console.log('Dispatching upgrade helper sync - release version');
await octokit.actions.createWorkflowDispatch({
await github.rest.actions.createWorkflowDispatch({
owner: 'backstage',
repo: 'upgrade-helper-diff',
workflow_id: 'release.yml',
@@ -67,7 +67,7 @@ jobs:
});
console.log('Dispatching upgrade helper sync - create-app version');
await octokit.actions.createWorkflowDispatch({
await github.rest.actions.createWorkflowDispatch({
owner: 'backstage',
repo: 'upgrade-helper-diff',
workflow_id: 'release.yml',
+65
View File
@@ -0,0 +1,65 @@
name: Verify DCO
on:
schedule:
- cron: '*/15 * * * *'
jobs:
dco-helper:
runs-on: ubuntu-latest
steps:
- name: Verify DCO status for open pull requests
uses: actions/github-script@v5
with:
script: |
const owner = "backstage";
const repo = "backstage";
const pulls = await github.paginate(github.rest.pulls.list, {
state: "open",
owner,
repo,
});
for (const pull of pulls) {
// Pick out the PRs that have the DCO check
const checks = await github.rest.checks.listForRef({
owner,
repo,
ref: pull.head.sha,
check_name: "DCO",
status: "completed",
});
// Skip if there are no checks
if (!checks.data.check_runs.length) {
continue;
}
// Skip if the conclusion is not action_required
if (checks.data.check_runs[0].conclusion !== "action_required") {
console.log(`No checks found for PR #${pull.number}, skipping`);
continue;
}
const comments = await github.paginate(github.rest.issues.listComments, {
owner,
repo,
issue_number: pull.number,
});
if (comments.find((c) =>
c.user.login === "github-actions[bot]" &&
c.body.includes("<!-- dco -->")
)
) {
console.log(`already commented on PR #${pull.number}, skipping`);
continue;
}
console.log(`creating comment on PR #${pull.number}`);
const body = `
Thanks for the contribution!
All commits need to be DCO signed before merging. Please refer to the the [DCO section in CONTRIBUTING.md](https://github.com/backstage/backstage/blob/master/CONTRIBUTING.md#developer-certificate-of-origin) or the [DCO](${checks.data.check_runs[0].html_url}) status for more info.
<!-- dco -->`;
await github.rest.issues.createComment({
repo,
owner,
issue_number: pull.number,
body,
});
}
+94 -92
View File
@@ -1,92 +1,94 @@
| Organization | Contact | Description of Use |
| ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Spotify](https://www.spotify.com) | [@leemills83](https://github.com/leemills83) | Main interface towards all of Spotify's infrastructure and technical documentation. |
| [bol.com](https://www.bol.com) | [@sagacity](https://github.com/sagacity) | Initial work being done to unify platform tooling. |
| [DFDS](https://www.dfds.com) | [@carlsendk](https://github.com/carlsendk) | V2 self-service platform. |
| [Roadie](https://roadie.io) | [@dtuite](https://github.com/dtuite) | Hosted, managed Backstage with easy set-up |
| [Roku](https://www.roku.com) | [@timurista](https://github.com/timurista) | Initial work on Cloud engineering service platform. |
| [SDA SE](https://sda.se) | [@dschwank](https://github.com/dschwank), [@iammnils](https://github.com/iammnils) | Central place for developing and sharing services in our insurance ecosystem. |
| [H-E-B](https://www.heb.com) | [@german-j-rodriguez](https://github.com/german-j-rodriguez) | Initial work on Engineering Portal service platform. |
| [American Airlines](https://www.aa.com) | [@paulpach](https://github.com/paulpach) | Central place for developers to develop and maintain applications |
| [Kiwi.com](https://kiwi.com) | [@aexvir](https://github.com/aexvir) | Replacing the frontend of [The Zoo](https://github.com/kiwicom/the-zoo), their service registry. |
| [Voi](https://www.voiscooters.com/) | [@K-Phoen](https://github.com/K-Phoen) | Developer portal, main gateway to our infrastructure, documentation and internal tooling. |
| [Talkdesk](https://www.talkdesk.com) | [@jaime-talkdesk](https://github.com/jaime-talkdesk) | Initial work for Engineering Portal and Self Provisioning to R&D |
| [Wealthsimple](https://www.wealthsimple.com) | [@andrewthauer](https://github.com/andrewthauer) | Developer portal, service catalog, documentation and tooling |
| [Grab](https://www.grab.com) | [@althafh](https://github.com/althafh) | Initial work as a unified interface for all of Grab's internal tooling |
| [Telenor Sweden](https://www.telenor.se) | [@O5ten](https://github.com/O5ten) | Building a developer portal for scaffolding projects towards our unified build environment and microservice stacks |
| [Fiverr](https://www.fiverr.com) | [@nirga](https://github.com/nirga) | Unifying separate tools that developers are using today (i.e. monitoring, dead letter queues management, etc.) into a single platform. |
| [Zalando SE](https://www.zalando.de) | [@leviferreira](https://github.com/leviferreira) | Building V2 of the Internal Development Portal. |
| [LegalZoom](https://legalzoom.com) | [@backjo](https://github.com/backjo) | Developer portal - hub for all engineering projects and metadata. |
| [Expedia Group](https://www.expediagroup.com) | [Mike Turner](mailto:miturner@expediagroup.com), [Sneha Kumar](mailto:snkumar@expediagroup.com), [@guillermomanzo](https://github.com/guillermomanzo), [Erik Lindgren](https://github.com/lindgren) | EG Common Developer Toolkit |
| [Paddle.com](https://paddle.com) | [Ioannis Georgoulas](https://github.com/geototti21) | Developer portal (Tech Docs, Service Catalog, Internal Tooling), we use vanilla Backstage FE and custom BE implementation in Go |
| [Acast.com](https://acast.com) | [Olle Lundberg](https://github.com/lndbrg) | Developer portal with tech docs, service catalog and a bunch of other internal tooling |
| [Lunar](https://lunar.app) | [Jacob Valdemar](https://github.com/JacobValdemar) | Internal developer portal for service overview and insights, API documentation, technical guides, onboarding guides and RFC's. |
| [Trendyol](https://trendyol.com) | [Gamze Senturk](https://github.com/gmzsenturk), [Mert Can Bilgic](https://github.com/mertcb) | The Developer Portal has been called `Pandora`. Provides an overview of Trendyol tech ecosystem. TechDocs, Catalog, Custom Plugins and Theme. |
| [Peloton](https://www.onepeloton.com/) | [Jim Haughwout](https://github.com/JimHaughwout) | Creating our first developer portal and tech-docs. Exploring Service Catalog, Tech Insights and Cost Insights as well. |
| [TELUS](https://telus.com) | [Seb Barre](https://github.com/sbarre) | The Go-to place to find answers about development and delivery at TELUS. |
| [Brex](https://www.brex.com/) | [Vamsi Chitters](https://github.com/vamsikc) | A centralized UI to understand how a service fits in the whole Brex architecture and manage a teams engineering dependencies. |
| [Oriflame](https://www.oriflame.com/) | [Oriflame](https://github.com/oriflame) | Internal developer portal for services, single page apps and packages overview, API documentation, technical guides, tech-radar and more. |
| [Booz Allen Hamilton](https://www.boozallen.com/) | [Jason Miller](https://github.com/JasonMiller-BAH) | Developer portal for a full-stack software development ecosystem that accelerates consistent and repeatable Modern Software Development practices for internal innovation and investments. |
| [Netflix](https://www.netflix.com/) | [bleathem](https://github.com/bleathem) | Our Backstage implementation will be the front door to a unified experience connecting our internal platform products across important workflows with integrated knowledge and support. |
| [b.well](https://www.icanbwell.com/) | [Jacob Rosales](https://github.com/jrosales) | Foundation for our engineering portal and cloud insights. |
| [PagerDuty](https://www.pagerduty.com/) | [Mark Shaw](https://github.com/markshawtoronto) | Developer portal, initially focused on software templates and tech-docs. |
| [MoonShiner](https://moonshiner.at) | [Fabian Hippmann](https://github.com/FabianHippmann) | Developer portal - helps us keep track of our customer projects, onboard new developers & improve our development process 🌕🚀🧑‍🚀 |
| [FundApps](https://www.fundapps.co/) | [Elliot Greenwood](https://github.com/egnwd) | Developer Portal - A place for us to keep track of our projects and documentation for all services and processes |
| [DAZN](https://dazn.com/) | [Lou Bichard](https://twitter.com/loujaybee), [Marco Crivellaro](https://github.com/crivetechie), [Alex Hollerith](mailto:alex.hollerith@dazn.com) | Ingesting all of DAZN's repos for the catalog, migrating our internal platform apps (pull request boards, release information, inner source marketplace etc) to Backstage plugins (where applicable). |
| [HelloFresh](https://www.hellofresh.de/) | [@iammuho](https://github.com/iammuho), [@ElenaForester](https://github.com/ElenaForester), [@diegomarangoni](https://github.com/diegomarangoni) | Our developer portal at HelloFresh - Spread across an organisation of 500+ engineers globally. |
| [FactSet](https://www.factset.com/) | [@kuangp](https://github.com/kuangp) | Developer portal to provide discoverability to all internal components, APIs, documentation, and scaffold templates with integrations to our internal infrastructure tools. |
| [Workrise](https://www.workrise.com/) | [Michael Rode](https://github.com/michaelrode) | Developer portal, main gateway to our infrastructure, documentation and internal tooling. |
| [RedVentures](https://www.redventures.com/) | [Chris Diaz](https://github.com/codingdiaz) | Developer portal that brings everything an engineer needs to provide value into a single pane of glass. |
| [MavTek](https://www.mavtek.com/) | [@fgascon](https://github.com/fgascon) | Developer portal focused on standardizing practices, centralizing documentation and streamlining developer practices. |
| [QuintoAndar](https://www.quintoandar.com.br/) | [@quintoandar](https://github.com/quintoandar) | Developer portal, services catalog and centralization of service metrics. |
| [empathy.co](https://empathy.co/) | [@guillermotti](https://github.com/guillermotti) | Developer portal for tech docs, service catalog, plugin discovery and much more. |
| [creditas.com](https://creditas.com/) | [@aureliosaraiva](https://github.com/aureliosaraiva) [@Creditas](https://github.com/creditas) | Centralization of all services, standards, documentation, etc. We started the deployment process. |
| [Prisjakt](https://www.prisjakt.nu) / [PriceSpy](https://pricespy.co.uk) | [@kennylindahl](https://github.com/kennylindahl) | Internal developer portal - Documentation, scaffolding, software catalog, TechRadar, Gitlab org data integration |
| [Powerspike](https://powerspike.tv/) | [@trelore](https://github.com/trelore) | Developer portal for documentation of core libraries and repositories. |
| [2U](https://2u.com) | [Andrew Thal](https://github.com/athal7) | Development team home-base, promoting service discoverability, resource dependencies, and tech radar |
| [Taxfix](https://taxfix.de/) | [Sami Ur Rehman](https://github.com/samiurrehman92) | Developer's portal with software catalog at it's core. Hosts API Specs, Tech Docs, Tech Radar and some custom plugins. |
| [Busuu](https://busuu.com/) | [Adam Tester](https://github.com/adamtester) | Developer portal with service catalog, API docs, Event docs, service templating, and cost insights. |
| [Loadsmart](https://loadsmart.com/) | [Loadsmart](https://github.com/loadsmart) | Improve services visibility and operations for service owners and developers. |
| [Monzo](https://monzo.com/) | [@WillSewell](https://github.com/WillSewell), [@joechrisellis](https://github.com/joechrisellis) | Developer portal showing metadata and docs for over 2000 microservices. We have built a number of plugins such as a UI for our system to measure [software excellence](https://monzo.com/blog/2021/09/15/how-we-measure-software-excellence), and a UI to show deployment and config change events. |
| [Vaimo](https://www.vaimo.com) | [@vaimo-magnus](https://github.com/vaimo-magnus) | Developer Portal for our developers at Vaimo, currently docs and self-service towards our internal PaaS based on k8s. Plans to extend the catalog into Projects, Environments etc |
| [Wayfair](https://www.wayfair.com) | [@fransan](https://github.com/fransan), [@errskipower](https://github.com/errskipower), [@hrrs](https://github.com/hrrs) | Developer portal for service catalog, technical documentation, and APIs. |
| [CircleHD](https://www.circlehd.com) | [@circlehddev](https://github.com/circlehddev) | Developer Portal for internal dev team across the globe |
| [CastDesk](https://castdesk.com) | [@circlehddev](https://github.com/circlehddev) | Developer Portal for internal dev team across the globe |
| [Santagostino](https://santagostino.it) | [@santagostino](https://github.com/santagostino) | Developer portal, gateway to our infrastructure, documentation, service catalog and internal tooling. |
| [Peak](https://peak.ai) | [Luke Beamish](https://github.com/lukebeamish-peak) | Developer portal for all internal engineers to access documentation and tooling. |
| [Gelato](https://gelato.com/) | [Dmitry Makarenko](https://github.com/dmitry-makarenko-gelato) | Developer portal: documentation, service templates, org structure, service catalog, plugins for integration with internal and third-party systems🚀. |
| [GoCardless](https://gocardless.com/) | [James Turley](https://github.com/tragiclifestories) | Developer portal: documentation, service templates, org structure, service catalog, plugins for integration with internal systems. |
| [Box](https://www.box.com) | [@kielosz](https://github.com/kielosz), [@jluk-box](https://github.com/jluk-box), [@ptychu](https://github.com/ptychu), [@alexrybch](https://github.com/alexrybch), [@szubster](https://github.com/szubster) | Developer portal for service catalog, integration with internal systems, new service onboarding. |
| [Bazaarvoice](https://www.bazaarvoice.com) | [@niallmccullagh](https://github.com/niallmccullagh) | Developer portal for service catalog and scaffolds, publishing Github docs and API documentation, visualising our internal tech radar and our product engineering org structure. |
| [Krateo PlatformOps](https://www.krateo.io) | [@projectkerberus](https://github.com/projectkerberus) | A multi-cloud control plane to create, manage and deploy any kind of resource easily and centrally via a Developer Portal that centralizes via a self-service catalog the templating and ownership of services, the available documentation, the overview of the components that compose an entire domain and all the data of the service lifecycle. |
| [Adevinta](https://www.adevinta.com) | [Ray Sinnema](https://github.com/RemonSinnema) | Showcase shared services to our internal customers. |
| [Splunk](https://www.splunk.com) | [@tonytamsf](https://github.com/tonytamsf) | Developer portal as a centralized place to find people, services, documentation, escalation policies and give bravos. This portal is also being used as a centralized search engine for engineering specific documentation. |
| [SoundCloud](https://www.soundcloud.com) | [Julio Zynger](https://github.com/julioz) | Developer portal as a [humane registry](https://martinfowler.com/bliki/HumaneRegistry.html) for the organization: catalog of people, services, documentation, feature toggles, escalation policies, etc. |
| [Volvofinans Bank](https://www.volvofinans.se) | [Johan Hammar](https://github.com/johanhammar) | Developer portal enabling engineers to manage and explore software and documentation. |
| [Palo Alto Networks](https://www.paloaltonetworks.com) | [Jeremy Guarini](https://github.com/jeremyguarini), [Brian Lomeland](https://github.com/bbbmmmlll), [Palo Alto Networks](https://github.com/PaloAltoNetworks) | Developer portal, service catalog, documentation and tooling |
| [Signal Iduna Group](https://www.signal-iduna.de/) | [Jonas Thomsen](https://github.com/JoThomsen) | Developer Portal, documentation, monitoring, service catalog for our insurance ecosystem |
| [Tradeshift](https://www.tradeshift.com/) | [Soren Mathiasen](https://github.com/sorenmat) | Developer Portal: documentation, monitoring, service templates, service catalog for our micro services |
| [Unity](https://unity.com) | [Ted Cordery](https://github.com/TeddyBallGame) | A centralized service catalog with documentation for our service engineers. |
| [PicPay](https://www.picpay.com) | [Luis Baroni](https://github.com/lcsbaroni), [Renata Poluceno](https://github.com/renatapoluceno), [PicPay](https://github.com/picpay) | Developer portal for building services throught templates, service catalog with ownership of services, documentation and metrics providing autonomy and visibility for all. |
| [Epic Games](https://www.epicgames.com) | [Brian Jung](https://github.com/brian-at-epic), [Jeff Goldian](https://github.com/jeffgoldian-Epic) | Developer Portal: Service Catalog, Documentation, Software Templates and more making our internal teams' lives easier! |
| [Globo](https://globo.com) | [Carlos Gusmão](https://github.com/caeugusmao), [Guilherme Vierno](https://github.com/vierno), [Denis Aoki](https://github.com/dnsaoki2), [Maycon Dionisio](https://github.com/MayconDionisio), | Reduce the friction of accessing the information engineers need about Globo's digital services through a coherent and centralized experience. |
| [QBE](https://www.qbe.com/) | [Daniel Steel](https://github.com/danielsteelqbe), [Pete Jespers](https://github.com/petejespersqbe) | Developer portal allowing our global teams to explore and create applications, documentation and cloud infrastructure easily and quickly 🚀 |
| [LogMeIn](https://www.logmein.com) | [Lorenzo Orsatti](https://github.com/lorsatti) | Improve onboarding experience of new developers. Discover faster and painlessly developer documentation, API definitions and team information. Provide useful dev metrics in a central place. Provide easy-to-use templates for new services. |
| [Telstra](https://www.telstra.com.au) | [@kiranpatel11](https://github.com/kiranpatel11), [JasonC](https://github.com/JasonC17) | Primary usage: software catalog and templates<br/> Emerging usage : TechDocs, Explore Ecosystem, TechRadar, etc |
| [Mosaico](https://www.mosaico.com.br/) | [Wédney Yuri](https://github.com/wedneyyuri),[@tino.milton](https://github.com/miltonjacomini) | A centralized service catalog of our documentation for our service engineers. |
| [Mox Bank](https://www.mox.com/) | [Nick Laqua](https://github.com/nick-laqua-dragon), [Gauthier Roebroeck](https://github.com/gauthier-roebroeck-mox) | "Single pane of glass" developer portal for providing a best-in-class developer experience to our product teams and making Mox the best tech environment in Hongkong 🥰🚀 |
| [Keyloop](https://www.keyloop.com/) | [Andre Wanlin](https://github.com/awanlin) | Future-motive Developer Portal to help our teams create technology to make everything about buying and owning a car better. 🚗 |
| [Simply Business](https://sbtech.simplybusiness.co.uk/) | [@addersuk](https://github.com/addersuk), [@LightningStairs](https://github.com/LightningStairs), [@punitcse](https://github.com/punitcse), [@moltenice](https://github.com/moltenice) | Central developer portal to access everything a developer needs such as docs, internal service catalog, and the ability to quickly create a new service from a template. Internally developed Backstage plugins allow us to customise the experience to how we work. |
| [Overwolf](https://www.overwolf.com) | [@tomwolfgang](https://github.com/tomwolfgang) | Dev portal - software catalog, tech-docs, scaffolding |
| [Hotmart](https://www.hotmart.com) | [@fabioviana-hotmart](https://github.com/fabioviana-hotmart) | The main Developers Portal to centralize docs, applications and technical metrics. |
| [EF Education First](https://www.ef.com) | [Daan Boerlage](https://github.com/runebaas), [Rafał Nowosielski](https://github.com/rnowosielski) | Our developer portal - primarily used for cataloging and scaffolding with the ambition to expand with more feature adoptions over time |
| [Power Home Remodeling](https://www.techatpower.com) | [Ben Langfeld](https://github.com/benlangfeld) | Developer portal to our internal services, build on open-source software (including Kubernetes) in our own datacenters. Our Portal allows our team members to navigate inherant complexity and standardise. |
| [Livspace](https://www.livspace.com) | [Praveen Kumar](https://github.com/praveen-livspace) | Developer portal, service catalog, tech docs, API docs and plugins |
| [Just Eat Takeaway](https://www.justeattakeaway.com) | [Kim Wilson](https://github.com/kwilson541) | Our developer portal which centralises applications, reduces cognitive load and provides teams insights. |
| [Hopin](https://hopin.com) | [Vladimir Glafirov](https://github.com/vglafirov), [Chloe Lee](https://github.com/msfuko) | Developer portal to streamline the development practices. Integrated with service catalog, software templates, application monitoring, tech docs and plugins. |
| [HBO Max](https://hbomax.com) | [@mdb](https://github.com/mdb), [@nesta219](https://github.com/nesta219), [@nmische](https://github.com/nmische), [@hbomark](https://github.com/hbomark) | Developer portal hosting service catalog and API documentation, as well as cloud infrastructure details, operational visibility tools, and a custom plugin for browsing notable platform change events, such as deployments and configuration updates. |
| [RCHLO](https://www.riachuelo.com.br) & [MIDWAY](https://www.midway.com.br) | [@marcosborges](https://github.com/marcosborges), [@defaultbr](https://github.com/defaultbr) | Self-Service Platform |
| [HP Inc](https://www.hp.com) | [Damon Kaswell](https://github.com/dekoding) | DevEx engagement hub (dev portal: docs, standards, Q&A) and extensive assets catalog (APIs, services, code, data, etc.) for the pan-HP internal developer community.
| [VMware](https://www.vmware.com) | [@mpriamo](https://github.com/mpriamo), [@krisapplegate](https://github.com/krisapplegate) | Part of [Tanzu Application Platform](https://docs.vmware.com/en/VMware-Tanzu-Application-Platform/index.html) offering; internal developer portal |
| [Ualá](https://www.uala.com.ar/) | [Santiago Bernal](https://github.com/sabernal) | Initial work being done to centralize documentation for all our microservices and APIs, as well as scaffolding new services and tracking code quality |
| [IKEA IT AB](https://www.ingka.com) | [@bjornramberg](https://github.com/bjornramberg), [@supriyachitale](https://github.com/supriyachitale) | Supporting engineers at scale with self serve access and connecting the dots of our engineering platform and services, enabling product teams to move faster and go further, and unleashing innovation, reuse and co-creation across the organisation. |
| Organization | Contact | Description of Use |
| --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Spotify](https://www.spotify.com) | [@leemills83](https://github.com/leemills83) | Main interface towards all of Spotify's infrastructure and technical documentation. |
| [bol.com](https://www.bol.com) | [@sagacity](https://github.com/sagacity) | Initial work being done to unify platform tooling. |
| [DFDS](https://www.dfds.com) | [@carlsendk](https://github.com/carlsendk) | V2 self-service platform. |
| [Roadie](https://roadie.io) | [@dtuite](https://github.com/dtuite) | Hosted, managed Backstage with easy set-up |
| [Roku](https://www.roku.com) | [@timurista](https://github.com/timurista) | Initial work on Cloud engineering service platform. |
| [SDA SE](https://sda.se) | [@dschwank](https://github.com/dschwank), [@iammnils](https://github.com/iammnils) | Central place for developing and sharing services in our insurance ecosystem. |
| [H-E-B](https://www.heb.com) | [@german-j-rodriguez](https://github.com/german-j-rodriguez) | Initial work on Engineering Portal service platform. |
| [American Airlines](https://www.aa.com) | [@paulpach](https://github.com/paulpach) | Central place for developers to develop and maintain applications |
| [Kiwi.com](https://kiwi.com) | [@aexvir](https://github.com/aexvir) | Replacing the frontend of [The Zoo](https://github.com/kiwicom/the-zoo), their service registry. |
| [Voi](https://www.voiscooters.com/) | [@K-Phoen](https://github.com/K-Phoen) | Developer portal, main gateway to our infrastructure, documentation and internal tooling. |
| [Talkdesk](https://www.talkdesk.com) | [@jaime-talkdesk](https://github.com/jaime-talkdesk) | Initial work for Engineering Portal and Self Provisioning to R&D |
| [Wealthsimple](https://www.wealthsimple.com) | [@andrewthauer](https://github.com/andrewthauer) | Developer portal, service catalog, documentation and tooling |
| [Grab](https://www.grab.com) | [@althafh](https://github.com/althafh) | Initial work as a unified interface for all of Grab's internal tooling |
| [Telenor Sweden](https://www.telenor.se) | [@O5ten](https://github.com/O5ten) | Building a developer portal for scaffolding projects towards our unified build environment and microservice stacks |
| [Fiverr](https://www.fiverr.com) | [@nirga](https://github.com/nirga) | Unifying separate tools that developers are using today (i.e. monitoring, dead letter queues management, etc.) into a single platform. |
| [Zalando SE](https://www.zalando.de) | [@leviferreira](https://github.com/leviferreira) | Building V2 of the Internal Development Portal. |
| [LegalZoom](https://legalzoom.com) | [@backjo](https://github.com/backjo) | Developer portal - hub for all engineering projects and metadata. |
| [Expedia Group](https://www.expediagroup.com) | [Mike Turner](mailto:miturner@expediagroup.com), [Sneha Kumar](mailto:snkumar@expediagroup.com), [@guillermomanzo](https://github.com/guillermomanzo), [Erik Lindgren](https://github.com/lindgren) | EG Common Developer Toolkit |
| [Paddle.com](https://paddle.com) | [Ioannis Georgoulas](https://github.com/geototti21) | Developer portal (Tech Docs, Service Catalog, Internal Tooling), we use vanilla Backstage FE and custom BE implementation in Go |
| [Acast.com](https://acast.com) | [Olle Lundberg](https://github.com/lndbrg) | Developer portal with tech docs, service catalog and a bunch of other internal tooling |
| [Lunar](https://lunar.app) | [Jacob Valdemar](https://github.com/JacobValdemar) | Internal developer portal for service overview and insights, API documentation, technical guides, onboarding guides and RFC's. |
| [Trendyol](https://trendyol.com) | [Gamze Senturk](https://github.com/gmzsenturk), [Mert Can Bilgic](https://github.com/mertcb) | The Developer Portal has been called `Pandora`. Provides an overview of Trendyol tech ecosystem. TechDocs, Catalog, Custom Plugins and Theme. |
| [Peloton](https://www.onepeloton.com/) | [Jim Haughwout](https://github.com/JimHaughwout) | Creating our first developer portal and tech-docs. Exploring Service Catalog, Tech Insights and Cost Insights as well. |
| [TELUS](https://telus.com) | [Seb Barre](https://github.com/sbarre) | The Go-to place to find answers about development and delivery at TELUS. |
| [Brex](https://www.brex.com/) | [Vamsi Chitters](https://github.com/vamsikc) | A centralized UI to understand how a service fits in the whole Brex architecture and manage a teams engineering dependencies. |
| [Oriflame](https://www.oriflame.com/) | [Oriflame](https://github.com/oriflame) | Internal developer portal for services, single page apps and packages overview, API documentation, technical guides, tech-radar and more. |
| [Booz Allen Hamilton](https://www.boozallen.com/) | [Jason Miller](https://github.com/JasonMiller-BAH) | Developer portal for a full-stack software development ecosystem that accelerates consistent and repeatable Modern Software Development practices for internal innovation and investments. |
| [Netflix](https://www.netflix.com/) | [bleathem](https://github.com/bleathem) | Our Backstage implementation will be the front door to a unified experience connecting our internal platform products across important workflows with integrated knowledge and support. |
| [b.well](https://www.icanbwell.com/) | [Jacob Rosales](https://github.com/jrosales) | Foundation for our engineering portal and cloud insights. |
| [PagerDuty](https://www.pagerduty.com/) | [Mark Shaw](https://github.com/markshawtoronto) | Developer portal, initially focused on software templates and tech-docs. |
| [MoonShiner](https://moonshiner.at) | [Fabian Hippmann](https://github.com/FabianHippmann) | Developer portal - helps us keep track of our customer projects, onboard new developers & improve our development process 🌕🚀🧑‍🚀 |
| [FundApps](https://www.fundapps.co/) | [Elliot Greenwood](https://github.com/egnwd) | Developer Portal - A place for us to keep track of our projects and documentation for all services and processes |
| [DAZN](https://dazn.com/) | [Lou Bichard](https://twitter.com/loujaybee), [Marco Crivellaro](https://github.com/crivetechie), [Alex Hollerith](mailto:alex.hollerith@dazn.com) | Ingesting all of DAZN's repos for the catalog, migrating our internal platform apps (pull request boards, release information, inner source marketplace etc) to Backstage plugins (where applicable). |
| [HelloFresh](https://www.hellofresh.de/) | [@iammuho](https://github.com/iammuho), [@ElenaForester](https://github.com/ElenaForester), [@diegomarangoni](https://github.com/diegomarangoni) | Our developer portal at HelloFresh - Spread across an organisation of 500+ engineers globally. |
| [FactSet](https://www.factset.com/) | [@kuangp](https://github.com/kuangp) | Developer portal to provide discoverability to all internal components, APIs, documentation, and scaffold templates with integrations to our internal infrastructure tools. |
| [Workrise](https://www.workrise.com/) | [Michael Rode](https://github.com/michaelrode) | Developer portal, main gateway to our infrastructure, documentation and internal tooling. |
| [RedVentures](https://www.redventures.com/) | [Chris Diaz](https://github.com/codingdiaz) | Developer portal that brings everything an engineer needs to provide value into a single pane of glass. |
| [MavTek](https://www.mavtek.com/) | [@fgascon](https://github.com/fgascon) | Developer portal focused on standardizing practices, centralizing documentation and streamlining developer practices. |
| [QuintoAndar](https://www.quintoandar.com.br/) | [@quintoandar](https://github.com/quintoandar) | Developer portal, services catalog and centralization of service metrics. |
| [empathy.co](https://empathy.co/) | [@guillermotti](https://github.com/guillermotti) | Developer portal for tech docs, service catalog, plugin discovery and much more. |
| [creditas.com](https://creditas.com/) | [@aureliosaraiva](https://github.com/aureliosaraiva) [@Creditas](https://github.com/creditas) | Centralization of all services, standards, documentation, etc. We started the deployment process. |
| [Prisjakt](https://www.prisjakt.nu) / [PriceSpy](https://pricespy.co.uk) | [@kennylindahl](https://github.com/kennylindahl) | Internal developer portal - Documentation, scaffolding, software catalog, TechRadar, Gitlab org data integration |
| [Powerspike](https://powerspike.tv/) | [@trelore](https://github.com/trelore) | Developer portal for documentation of core libraries and repositories. |
| [2U](https://2u.com) | [Andrew Thal](https://github.com/athal7) | Development team home-base, promoting service discoverability, resource dependencies, and tech radar |
| [Taxfix](https://taxfix.de/) | [Sami Ur Rehman](https://github.com/samiurrehman92) | Developer's portal with software catalog at it's core. Hosts API Specs, Tech Docs, Tech Radar and some custom plugins. |
| [Busuu](https://busuu.com/) | [Adam Tester](https://github.com/adamtester) | Developer portal with service catalog, API docs, Event docs, service templating, and cost insights. |
| [Loadsmart](https://loadsmart.com/) | [Loadsmart](https://github.com/loadsmart) | Improve services visibility and operations for service owners and developers. |
| [Monzo](https://monzo.com/) | [@WillSewell](https://github.com/WillSewell), [@joechrisellis](https://github.com/joechrisellis) | Developer portal showing metadata and docs for over 2000 microservices. We have built a number of plugins such as a UI for our system to measure [software excellence](https://monzo.com/blog/2021/09/15/how-we-measure-software-excellence), and a UI to show deployment and config change events. |
| [Vaimo](https://www.vaimo.com) | [@vaimo-magnus](https://github.com/vaimo-magnus) | Developer Portal for our developers at Vaimo, currently docs and self-service towards our internal PaaS based on k8s. Plans to extend the catalog into Projects, Environments etc |
| [Wayfair](https://www.wayfair.com) | [@fransan](https://github.com/fransan), [@errskipower](https://github.com/errskipower), [@hrrs](https://github.com/hrrs) | Developer portal for service catalog, technical documentation, and APIs. |
| [CircleHD](https://www.circlehd.com) | [@circlehddev](https://github.com/circlehddev) | Developer Portal for internal dev team across the globe |
| [CastDesk](https://castdesk.com) | [@circlehddev](https://github.com/circlehddev) | Developer Portal for internal dev team across the globe |
| [Santagostino](https://santagostino.it) | [@santagostino](https://github.com/santagostino) | Developer portal, gateway to our infrastructure, documentation, service catalog and internal tooling. |
| [Peak](https://peak.ai) | [Luke Beamish](https://github.com/lukebeamish-peak) | Developer portal for all internal engineers to access documentation and tooling. |
| [Gelato](https://gelato.com/) | [Dmitry Makarenko](https://github.com/dmitry-makarenko-gelato) | Developer portal: documentation, service templates, org structure, service catalog, plugins for integration with internal and third-party systems🚀. |
| [GoCardless](https://gocardless.com/) | [James Turley](https://github.com/tragiclifestories) | Developer portal: documentation, service templates, org structure, service catalog, plugins for integration with internal systems. |
| [Box](https://www.box.com) | [@kielosz](https://github.com/kielosz), [@jluk-box](https://github.com/jluk-box), [@ptychu](https://github.com/ptychu), [@alexrybch](https://github.com/alexrybch), [@szubster](https://github.com/szubster) | Developer portal for service catalog, integration with internal systems, new service onboarding. |
| [Bazaarvoice](https://www.bazaarvoice.com) | [@niallmccullagh](https://github.com/niallmccullagh) | Developer portal for service catalog and scaffolds, publishing Github docs and API documentation, visualising our internal tech radar and our product engineering org structure. |
| [Krateo PlatformOps](https://www.krateo.io) | [@projectkerberus](https://github.com/projectkerberus) | A multi-cloud control plane to create, manage and deploy any kind of resource easily and centrally via a Developer Portal that centralizes via a self-service catalog the templating and ownership of services, the available documentation, the overview of the components that compose an entire domain and all the data of the service lifecycle. |
| [Adevinta](https://www.adevinta.com) | [Ray Sinnema](https://github.com/RemonSinnema) | Showcase shared services to our internal customers. |
| [Splunk](https://www.splunk.com) | [@tonytamsf](https://github.com/tonytamsf) | Developer portal as a centralized place to find people, services, documentation, escalation policies and give bravos. This portal is also being used as a centralized search engine for engineering specific documentation. |
| [SoundCloud](https://www.soundcloud.com) | [Julio Zynger](https://github.com/julioz) | Developer portal as a [humane registry](https://martinfowler.com/bliki/HumaneRegistry.html) for the organization: catalog of people, services, documentation, feature toggles, escalation policies, etc. |
| [Volvofinans Bank](https://www.volvofinans.se) | [Johan Hammar](https://github.com/johanhammar) | Developer portal enabling engineers to manage and explore software and documentation. |
| [Palo Alto Networks](https://www.paloaltonetworks.com) | [Jeremy Guarini](https://github.com/jeremyguarini), [Brian Lomeland](https://github.com/bbbmmmlll), [Palo Alto Networks](https://github.com/PaloAltoNetworks) | Developer portal, service catalog, documentation and tooling |
| [Signal Iduna Group](https://www.signal-iduna.de/) | [Jonas Thomsen](https://github.com/JoThomsen) | Developer Portal, documentation, monitoring, service catalog for our insurance ecosystem |
| [Tradeshift](https://www.tradeshift.com/) | [Soren Mathiasen](https://github.com/sorenmat) | Developer Portal: documentation, monitoring, service templates, service catalog for our micro services |
| [Unity](https://unity.com) | [Ted Cordery](https://github.com/TeddyBallGame) | A centralized service catalog with documentation for our service engineers. |
| [PicPay](https://www.picpay.com) | [Luis Baroni](https://github.com/lcsbaroni), [Renata Poluceno](https://github.com/renatapoluceno), [PicPay](https://github.com/picpay) | Developer portal for building services throught templates, service catalog with ownership of services, documentation and metrics providing autonomy and visibility for all. |
| [Epic Games](https://www.epicgames.com) | [Brian Jung](https://github.com/brian-at-epic), [Jeff Goldian](https://github.com/jeffgoldian-Epic) | Developer Portal: Service Catalog, Documentation, Software Templates and more making our internal teams' lives easier! |
| [Globo](https://globo.com) | [Carlos Gusmão](https://github.com/caeugusmao), [Guilherme Vierno](https://github.com/vierno), [Denis Aoki](https://github.com/dnsaoki2), [Maycon Dionisio](https://github.com/MayconDionisio), | Reduce the friction of accessing the information engineers need about Globo's digital services through a coherent and centralized experience. |
| [QBE](https://www.qbe.com/) | [Daniel Steel](https://github.com/danielsteelqbe), [Pete Jespers](https://github.com/petejespersqbe) | Developer portal allowing our global teams to explore and create applications, documentation and cloud infrastructure easily and quickly 🚀 |
| [LogMeIn](https://www.logmein.com) | [Lorenzo Orsatti](https://github.com/lorsatti) | Improve onboarding experience of new developers. Discover faster and painlessly developer documentation, API definitions and team information. Provide useful dev metrics in a central place. Provide easy-to-use templates for new services. |
| [Telstra](https://www.telstra.com.au) | [@kiranpatel11](https://github.com/kiranpatel11), [JasonC](https://github.com/JasonC17) | Primary usage: software catalog and templates<br/> Emerging usage : TechDocs, Explore Ecosystem, TechRadar, etc |
| [Mosaico](https://www.mosaico.com.br/) | [Wédney Yuri](https://github.com/wedneyyuri),[@tino.milton](https://github.com/miltonjacomini) | A centralized service catalog of our documentation for our service engineers. |
| [Mox Bank](https://www.mox.com/) | [Nick Laqua](https://github.com/nick-laqua-dragon), [Gauthier Roebroeck](https://github.com/gauthier-roebroeck-mox) | "Single pane of glass" developer portal for providing a best-in-class developer experience to our product teams and making Mox the best tech environment in Hongkong 🥰🚀 |
| [Keyloop](https://www.keyloop.com/) | [Andre Wanlin](https://github.com/awanlin) | Future-motive Developer Portal to help our teams create technology to make everything about buying and owning a car better. 🚗 |
| [Simply Business](https://sbtech.simplybusiness.co.uk/) | [@addersuk](https://github.com/addersuk), [@LightningStairs](https://github.com/LightningStairs), [@punitcse](https://github.com/punitcse), [@moltenice](https://github.com/moltenice) | Central developer portal to access everything a developer needs such as docs, internal service catalog, and the ability to quickly create a new service from a template. Internally developed Backstage plugins allow us to customise the experience to how we work. |
| [Overwolf](https://www.overwolf.com) | [@tomwolfgang](https://github.com/tomwolfgang) | Dev portal - software catalog, tech-docs, scaffolding |
| [Hotmart](https://www.hotmart.com) | [@fabioviana-hotmart](https://github.com/fabioviana-hotmart) | The main Developers Portal to centralize docs, applications and technical metrics. |
| [EF Education First](https://www.ef.com) | [Daan Boerlage](https://github.com/runebaas), [Rafał Nowosielski](https://github.com/rnowosielski) | Our developer portal - primarily used for cataloging and scaffolding with the ambition to expand with more feature adoptions over time |
| [Power Home Remodeling](https://www.techatpower.com) | [Ben Langfeld](https://github.com/benlangfeld) | Developer portal to our internal services, build on open-source software (including Kubernetes) in our own datacenters. Our Portal allows our team members to navigate inherant complexity and standardise. |
| [Livspace](https://www.livspace.com) | [Praveen Kumar](https://github.com/praveen-livspace) | Developer portal, service catalog, tech docs, API docs and plugins |
| [Just Eat Takeaway](https://www.justeattakeaway.com) | [Kim Wilson](https://github.com/kwilson541) | Our developer portal which centralises applications, reduces cognitive load and provides teams insights. |
| [Hopin](https://hopin.com) | [Vladimir Glafirov](https://github.com/vglafirov), [Chloe Lee](https://github.com/msfuko) | Developer portal to streamline the development practices. Integrated with service catalog, software templates, application monitoring, tech docs and plugins. |
| [HBO Max](https://hbomax.com) | [@mdb](https://github.com/mdb), [@nesta219](https://github.com/nesta219), [@nmische](https://github.com/nmische), [@hbomark](https://github.com/hbomark) | Developer portal hosting service catalog and API documentation, as well as cloud infrastructure details, operational visibility tools, and a custom plugin for browsing notable platform change events, such as deployments and configuration updates. |
| [RCHLO](https://www.riachuelo.com.br) & [MIDWAY](https://www.midway.com.br) | [@marcosborges](https://github.com/marcosborges), [@defaultbr](https://github.com/defaultbr) | Self-Service Platform |
| [HP Inc](https://www.hp.com) | [Damon Kaswell](https://github.com/dekoding) | DevEx engagement hub (dev portal: docs, standards, Q&A) and extensive assets catalog (APIs, services, code, data, etc.) for the pan-HP internal developer community. |
| [VMware](https://www.vmware.com) | [@mpriamo](https://github.com/mpriamo), [@krisapplegate](https://github.com/krisapplegate) | Part of [Tanzu Application Platform](https://docs.vmware.com/en/VMware-Tanzu-Application-Platform/index.html) offering; internal developer portal |
| [Ualá](https://www.uala.com.ar/) | [Santiago Bernal](https://github.com/sabernal) | Initial work being done to centralize documentation for all our microservices and APIs, as well as scaffolding new services and tracking code quality |
| [IKEA IT AB](https://www.ingka.com) | [@bjornramberg](https://github.com/bjornramberg), [@supriyachitale](https://github.com/supriyachitale) | Supporting engineers at scale with self serve access and connecting the dots of our engineering platform and services, enabling product teams to move faster and go further, and unleashing innovation, reuse and co-creation across the organisation. |
| [Invitae](https://www.invitae.com/en) | [@ryan-hanchett](https://github.com/ryan-hanchett), [@gmandler42](https://github.com/gmandler42) | Centralized Developer Experience portal, putting all of our tooling behind a single pane of glass and creating a living service catalog. |
| [Fortum](https://www.fortum.com/) | [@brunoamaroalmeida](https://github.com/brunoamaroalmeida), [@dhaval-vithalani](https://github.com/dhaval-vithalani), [@sunilkumarmohanty](https://github.com/sunilkumarmohanty) | A central portal containing information about our applications, services, processes and other software assets to be used by Fortum software engineering community. |
+1 -1
View File
@@ -49,7 +49,7 @@
"**/@roadiehq/**/@backstage/plugin-catalog": "*",
"**/@roadiehq/**/@backstage/catalog-model": "*"
},
"version": "0.66.0",
"version": "0.67.0-next.0",
"dependencies": {
"@manypkg/get-packages": "^1.1.3",
"@microsoft/api-documenter": "^7.15.0",
+7
View File
@@ -1,5 +1,12 @@
# @backstage/app-defaults
## 0.1.7-next.0
### Patch Changes
- Updated dependencies
- @backstage/core-components@0.8.8-next.0
## 0.1.6
### Patch Changes
+3 -3
View File
@@ -1,7 +1,7 @@
{
"name": "@backstage/app-defaults",
"description": "Provides the default wiring of a Backstage App",
"version": "0.1.6",
"version": "0.1.7-next.0",
"private": false,
"publishConfig": {
"access": "public",
@@ -29,7 +29,7 @@
"clean": "backstage-cli clean"
},
"dependencies": {
"@backstage/core-components": "^0.8.7",
"@backstage/core-components": "^0.8.8-next.0",
"@backstage/core-app-api": "^0.5.2",
"@backstage/core-plugin-api": "^0.6.0",
"@backstage/plugin-permission-react": "^0.3.0",
@@ -42,7 +42,7 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
"@backstage/cli": "^0.13.1",
"@backstage/cli": "^0.13.2-next.0",
"@backstage/test-utils": "^0.2.4",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
+47
View File
@@ -1,5 +1,52 @@
# example-app
## 0.2.64-next.0
### Patch Changes
- Updated dependencies
- @backstage/cli@0.13.2-next.0
- @backstage/plugin-todo@0.2.0-next.0
- @backstage/plugin-newrelic-dashboard@0.1.6-next.0
- @backstage/core-components@0.8.8-next.0
- @backstage/plugin-scaffolder@0.12.2-next.0
- @backstage/plugin-search@0.6.2-next.0
- @backstage/plugin-catalog-react@0.6.14-next.0
- @backstage/plugin-catalog-graph@0.2.10-next.0
- @backstage/plugin-catalog-import@0.8.1-next.0
- @backstage/plugin-home@0.4.14-next.0
- @backstage/app-defaults@0.1.7-next.0
- @backstage/integration-react@0.1.21-next.0
- @backstage/plugin-airbrake@0.1.3-next.0
- @backstage/plugin-apache-airflow@0.1.6-next.0
- @backstage/plugin-api-docs@0.7.2-next.0
- @backstage/plugin-azure-devops@0.1.14-next.0
- @backstage/plugin-badges@0.2.22-next.0
- @backstage/plugin-catalog@0.7.12-next.0
- @backstage/plugin-circleci@0.2.37-next.0
- @backstage/plugin-cloudbuild@0.2.35-next.0
- @backstage/plugin-code-coverage@0.1.25-next.0
- @backstage/plugin-cost-insights@0.11.20-next.0
- @backstage/plugin-explore@0.3.29-next.0
- @backstage/plugin-gcp-projects@0.3.17-next.0
- @backstage/plugin-github-actions@0.4.35-next.0
- @backstage/plugin-gocd@0.1.4-next.0
- @backstage/plugin-graphiql@0.2.30-next.0
- @backstage/plugin-jenkins@0.5.20-next.0
- @backstage/plugin-kafka@0.2.28-next.0
- @backstage/plugin-kubernetes@0.5.7-next.0
- @backstage/plugin-lighthouse@0.2.37-next.0
- @backstage/plugin-newrelic@0.3.16-next.0
- @backstage/plugin-org@0.4.2-next.0
- @backstage/plugin-pagerduty@0.3.25-next.0
- @backstage/plugin-rollbar@0.3.26-next.0
- @backstage/plugin-sentry@0.3.36-next.0
- @backstage/plugin-shortcuts@0.1.22-next.0
- @backstage/plugin-tech-insights@0.1.8-next.0
- @backstage/plugin-tech-radar@0.5.5-next.0
- @backstage/plugin-techdocs@0.13.3-next.0
- @backstage/plugin-user-settings@0.3.19-next.0
## 0.2.63
### Patch Changes
+42 -42
View File
@@ -1,56 +1,56 @@
{
"name": "example-app",
"version": "0.2.63",
"version": "0.2.64-next.0",
"private": true,
"bundled": true,
"dependencies": {
"@backstage/app-defaults": "^0.1.6",
"@backstage/app-defaults": "^0.1.7-next.0",
"@backstage/catalog-model": "^0.9.10",
"@backstage/cli": "^0.13.1",
"@backstage/cli": "^0.13.2-next.0",
"@backstage/core-app-api": "^0.5.2",
"@backstage/core-components": "^0.8.7",
"@backstage/core-components": "^0.8.8-next.0",
"@backstage/core-plugin-api": "^0.6.0",
"@backstage/integration-react": "^0.1.20",
"@backstage/plugin-airbrake": "^0.1.2",
"@backstage/plugin-api-docs": "^0.7.1",
"@backstage/plugin-azure-devops": "^0.1.13",
"@backstage/plugin-apache-airflow": "^0.1.5",
"@backstage/plugin-badges": "^0.2.21",
"@backstage/plugin-catalog": "^0.7.11",
"@backstage/integration-react": "^0.1.21-next.0",
"@backstage/plugin-airbrake": "^0.1.3-next.0",
"@backstage/plugin-api-docs": "^0.7.2-next.0",
"@backstage/plugin-azure-devops": "^0.1.14-next.0",
"@backstage/plugin-apache-airflow": "^0.1.6-next.0",
"@backstage/plugin-badges": "^0.2.22-next.0",
"@backstage/plugin-catalog": "^0.7.12-next.0",
"@backstage/plugin-catalog-common": "^0.1.2",
"@backstage/plugin-catalog-graph": "^0.2.9",
"@backstage/plugin-catalog-import": "^0.8.0",
"@backstage/plugin-catalog-react": "^0.6.13",
"@backstage/plugin-circleci": "^0.2.36",
"@backstage/plugin-cloudbuild": "^0.2.34",
"@backstage/plugin-code-coverage": "^0.1.24",
"@backstage/plugin-cost-insights": "^0.11.19",
"@backstage/plugin-explore": "^0.3.28",
"@backstage/plugin-gcp-projects": "^0.3.16",
"@backstage/plugin-github-actions": "^0.4.34",
"@backstage/plugin-gocd": "^0.1.3",
"@backstage/plugin-graphiql": "^0.2.29",
"@backstage/plugin-home": "^0.4.13",
"@backstage/plugin-jenkins": "^0.5.19",
"@backstage/plugin-kafka": "^0.2.27",
"@backstage/plugin-kubernetes": "^0.5.6",
"@backstage/plugin-lighthouse": "^0.2.36",
"@backstage/plugin-newrelic": "^0.3.15",
"@backstage/plugin-newrelic-dashboard": "^0.1.5",
"@backstage/plugin-org": "^0.4.1",
"@backstage/plugin-pagerduty": "0.3.24",
"@backstage/plugin-catalog-graph": "^0.2.10-next.0",
"@backstage/plugin-catalog-import": "^0.8.1-next.0",
"@backstage/plugin-catalog-react": "^0.6.14-next.0",
"@backstage/plugin-circleci": "^0.2.37-next.0",
"@backstage/plugin-cloudbuild": "^0.2.35-next.0",
"@backstage/plugin-code-coverage": "^0.1.25-next.0",
"@backstage/plugin-cost-insights": "^0.11.20-next.0",
"@backstage/plugin-explore": "^0.3.29-next.0",
"@backstage/plugin-gcp-projects": "^0.3.17-next.0",
"@backstage/plugin-github-actions": "^0.4.35-next.0",
"@backstage/plugin-gocd": "^0.1.4-next.0",
"@backstage/plugin-graphiql": "^0.2.30-next.0",
"@backstage/plugin-home": "^0.4.14-next.0",
"@backstage/plugin-jenkins": "^0.5.20-next.0",
"@backstage/plugin-kafka": "^0.2.28-next.0",
"@backstage/plugin-kubernetes": "^0.5.7-next.0",
"@backstage/plugin-lighthouse": "^0.2.37-next.0",
"@backstage/plugin-newrelic": "^0.3.16-next.0",
"@backstage/plugin-newrelic-dashboard": "^0.1.6-next.0",
"@backstage/plugin-org": "^0.4.2-next.0",
"@backstage/plugin-pagerduty": "0.3.25-next.0",
"@backstage/plugin-permission-react": "^0.3.0",
"@backstage/plugin-rollbar": "^0.3.25",
"@backstage/plugin-scaffolder": "^0.12.1",
"@backstage/plugin-search": "^0.6.1",
"@backstage/plugin-sentry": "^0.3.35",
"@backstage/plugin-shortcuts": "^0.1.21",
"@backstage/plugin-tech-radar": "^0.5.4",
"@backstage/plugin-techdocs": "^0.13.2",
"@backstage/plugin-todo": "^0.1.21",
"@backstage/plugin-user-settings": "^0.3.18",
"@backstage/plugin-rollbar": "^0.3.26-next.0",
"@backstage/plugin-scaffolder": "^0.12.2-next.0",
"@backstage/plugin-search": "^0.6.2-next.0",
"@backstage/plugin-sentry": "^0.3.36-next.0",
"@backstage/plugin-shortcuts": "^0.1.22-next.0",
"@backstage/plugin-tech-radar": "^0.5.5-next.0",
"@backstage/plugin-techdocs": "^0.13.3-next.0",
"@backstage/plugin-todo": "^0.2.0-next.0",
"@backstage/plugin-user-settings": "^0.3.19-next.0",
"@backstage/search-common": "^0.2.2",
"@backstage/plugin-tech-insights": "^0.1.7",
"@backstage/plugin-tech-insights": "^0.1.8-next.0",
"@backstage/theme": "^0.2.14",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
+11
View File
@@ -1,5 +1,16 @@
# @backstage/backend-common
## 0.10.7-next.0
### Patch Changes
- 2441d1cf59: chore(deps): bump `knex` from 0.95.6 to 1.0.2
This also replaces `sqlite3` with `@vscode/sqlite3` 5.0.7
- 599f3dfa83: chore(deps-dev): bump `@types/concat-stream` from 1.6.1 to 2.0.0
- c3868458d8: Removed unnecessary `get-port` dependency
## 0.10.6
### Patch Changes
+1 -1
View File
@@ -177,7 +177,7 @@ export const createDatabase: typeof createDatabaseClient;
export function createDatabaseClient(
dbConfig: Config,
overrides?: Partial<Knex.Config>,
): Knex<any, unknown[]>;
): Knex<any, Record<string, any>[]>;
// @public
export function createRootLogger(
+3 -3
View File
@@ -1,7 +1,7 @@
{
"name": "@backstage/backend-common",
"description": "Common functionality library for Backstage backends",
"version": "0.10.6",
"version": "0.10.7-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"private": false,
@@ -58,7 +58,7 @@
"jose": "^1.27.1",
"keyv": "^4.0.3",
"keyv-memcache": "^1.2.5",
"knex": "^0.95.1",
"knex": "^1.0.2",
"lodash": "^4.17.21",
"logform": "^2.3.2",
"luxon": "^2.0.2",
@@ -84,7 +84,7 @@
}
},
"devDependencies": {
"@backstage/cli": "^0.13.1",
"@backstage/cli": "^0.13.2-next.0",
"@backstage/test-utils": "^0.2.4",
"@types/archiver": "^5.1.0",
"@types/compression": "^1.7.0",
+11
View File
@@ -1,5 +1,16 @@
# @backstage/backend-tasks
## 0.1.6-next.0
### Patch Changes
- 2441d1cf59: chore(deps): bump `knex` from 0.95.6 to 1.0.2
This also replaces `sqlite3` with `@vscode/sqlite3` 5.0.7
- Updated dependencies
- @backstage/backend-common@0.10.7-next.0
## 0.1.5
### Patch Changes
+5 -5
View File
@@ -1,7 +1,7 @@
{
"name": "@backstage/backend-tasks",
"description": "Common distributed task management library for Backstage backends",
"version": "0.1.5",
"version": "0.1.6-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"private": false,
@@ -29,12 +29,12 @@
"clean": "backstage-cli clean"
},
"dependencies": {
"@backstage/backend-common": "^0.10.6",
"@backstage/backend-common": "^0.10.7-next.0",
"@backstage/config": "^0.1.13",
"@backstage/errors": "^0.2.0",
"@backstage/types": "^0.1.1",
"@types/luxon": "^2.0.4",
"knex": "^0.95.1",
"knex": "^1.0.2",
"lodash": "^4.17.21",
"luxon": "^2.0.2",
"node-abort-controller": "^3.0.1",
@@ -43,8 +43,8 @@
"zod": "^3.9.5"
},
"devDependencies": {
"@backstage/backend-test-utils": "^0.1.16",
"@backstage/cli": "^0.13.1",
"@backstage/backend-test-utils": "^0.1.17-next.0",
"@backstage/cli": "^0.13.2-next.0",
"jest": "^26.0.1",
"wait-for-expect": "^3.0.2"
},
+12
View File
@@ -1,5 +1,17 @@
# @backstage/backend-test-utils
## 0.1.17-next.0
### Patch Changes
- 2441d1cf59: chore(deps): bump `knex` from 0.95.6 to 1.0.2
This also replaces `sqlite3` with `@vscode/sqlite3` 5.0.7
- Updated dependencies
- @backstage/cli@0.13.2-next.0
- @backstage/backend-common@0.10.7-next.0
## 0.1.16
### Patch Changes
+6 -6
View File
@@ -1,7 +1,7 @@
{
"name": "@backstage/backend-test-utils",
"description": "Test helpers library for Backstage backends",
"version": "0.1.16",
"version": "0.1.17-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"private": false,
@@ -30,18 +30,18 @@
"clean": "backstage-cli clean"
},
"dependencies": {
"@backstage/backend-common": "^0.10.6",
"@backstage/cli": "^0.13.1",
"@backstage/backend-common": "^0.10.7-next.0",
"@backstage/cli": "^0.13.2-next.0",
"@backstage/config": "^0.1.13",
"knex": "^0.95.1",
"@vscode/sqlite3": "^5.0.7",
"knex": "^1.0.2",
"mysql2": "^2.2.5",
"pg": "^8.3.0",
"sqlite3": "^5.0.1",
"testcontainers": "^8.1.2",
"uuid": "^8.0.0"
},
"devDependencies": {
"@backstage/cli": "^0.13.1",
"@backstage/cli": "^0.13.2-next.0",
"jest": "^26.0.1"
},
"files": [
+32
View File
@@ -1,5 +1,37 @@
# example-backend
## 0.2.64-next.0
### Patch Changes
- Updated dependencies
- @backstage/plugin-auth-backend@0.10.0-next.0
- @backstage/backend-common@0.10.7-next.0
- @backstage/backend-tasks@0.1.6-next.0
- @backstage/plugin-app-backend@0.3.24-next.0
- @backstage/plugin-catalog-backend@0.21.3-next.0
- @backstage/plugin-code-coverage-backend@0.1.22-next.0
- @backstage/plugin-scaffolder-backend@0.15.24-next.0
- @backstage/plugin-search-backend-module-pg@0.2.6-next.0
- @backstage/plugin-tech-insights-backend@0.2.4-next.0
- @backstage/plugin-techdocs-backend@0.13.3-next.0
- example-app@0.2.64-next.0
- @backstage/plugin-azure-devops-backend@0.3.3-next.0
- @backstage/plugin-badges-backend@0.1.18-next.0
- @backstage/plugin-graphql-backend@0.1.14-next.0
- @backstage/plugin-jenkins-backend@0.1.13-next.0
- @backstage/plugin-kafka-backend@0.2.17-next.0
- @backstage/plugin-kubernetes-backend@0.4.7-next.0
- @backstage/plugin-permission-backend@0.4.3-next.0
- @backstage/plugin-permission-node@0.4.3-next.0
- @backstage/plugin-proxy-backend@0.2.18-next.0
- @backstage/plugin-rollbar-backend@0.1.21-next.0
- @backstage/plugin-scaffolder-backend-module-rails@0.2.6-next.0
- @backstage/plugin-search-backend@0.4.2-next.0
- @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.8-next.0
- @backstage/plugin-tech-insights-node@0.2.2-next.0
- @backstage/plugin-todo-backend@0.1.21-next.0
## 0.2.63
### Patch Changes
+30 -30
View File
@@ -1,6 +1,6 @@
{
"name": "example-backend",
"version": "0.2.63",
"version": "0.2.64-next.0",
"main": "dist/index.cjs.js",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -24,56 +24,56 @@
"migrate:create": "knex migrate:make -x ts"
},
"dependencies": {
"@backstage/backend-common": "^0.10.6",
"@backstage/backend-tasks": "^0.1.5",
"@backstage/backend-common": "^0.10.7-next.0",
"@backstage/backend-tasks": "^0.1.6-next.0",
"@backstage/catalog-client": "^0.5.5",
"@backstage/catalog-model": "^0.9.10",
"@backstage/config": "^0.1.13",
"@backstage/integration": "^0.7.2",
"@backstage/plugin-airbrake-backend": "^0.0.0",
"@backstage/plugin-app-backend": "^0.3.23",
"@backstage/plugin-auth-backend": "^0.9.0",
"@backstage/plugin-azure-devops-backend": "^0.3.2",
"@backstage/plugin-badges-backend": "^0.1.17",
"@backstage/plugin-catalog-backend": "^0.21.2",
"@backstage/plugin-code-coverage-backend": "^0.1.21",
"@backstage/plugin-graphql-backend": "^0.1.13",
"@backstage/plugin-jenkins-backend": "^0.1.12",
"@backstage/plugin-kubernetes-backend": "^0.4.6",
"@backstage/plugin-kafka-backend": "^0.2.16",
"@backstage/plugin-permission-backend": "^0.4.2",
"@backstage/plugin-app-backend": "^0.3.24-next.0",
"@backstage/plugin-auth-backend": "^0.10.0-next.0",
"@backstage/plugin-azure-devops-backend": "^0.3.3-next.0",
"@backstage/plugin-badges-backend": "^0.1.18-next.0",
"@backstage/plugin-catalog-backend": "^0.21.3-next.0",
"@backstage/plugin-code-coverage-backend": "^0.1.22-next.0",
"@backstage/plugin-graphql-backend": "^0.1.14-next.0",
"@backstage/plugin-jenkins-backend": "^0.1.13-next.0",
"@backstage/plugin-kubernetes-backend": "^0.4.7-next.0",
"@backstage/plugin-kafka-backend": "^0.2.17-next.0",
"@backstage/plugin-permission-backend": "^0.4.3-next.0",
"@backstage/plugin-permission-common": "^0.4.0",
"@backstage/plugin-permission-node": "^0.4.2",
"@backstage/plugin-proxy-backend": "^0.2.17",
"@backstage/plugin-rollbar-backend": "^0.1.20",
"@backstage/plugin-scaffolder-backend": "^0.15.23",
"@backstage/plugin-scaffolder-backend-module-rails": "^0.2.5",
"@backstage/plugin-search-backend": "^0.4.1",
"@backstage/plugin-permission-node": "^0.4.3-next.0",
"@backstage/plugin-proxy-backend": "^0.2.18-next.0",
"@backstage/plugin-rollbar-backend": "^0.1.21-next.0",
"@backstage/plugin-scaffolder-backend": "^0.15.24-next.0",
"@backstage/plugin-scaffolder-backend-module-rails": "^0.2.6-next.0",
"@backstage/plugin-search-backend": "^0.4.2-next.0",
"@backstage/plugin-search-backend-node": "^0.4.5",
"@backstage/plugin-search-backend-module-elasticsearch": "^0.0.8",
"@backstage/plugin-search-backend-module-pg": "^0.2.5",
"@backstage/plugin-techdocs-backend": "^0.13.2",
"@backstage/plugin-tech-insights-backend": "^0.2.3",
"@backstage/plugin-tech-insights-node": "^0.2.1",
"@backstage/plugin-tech-insights-backend-module-jsonfc": "^0.1.7",
"@backstage/plugin-todo-backend": "^0.1.20",
"@backstage/plugin-search-backend-module-pg": "^0.2.6-next.0",
"@backstage/plugin-techdocs-backend": "^0.13.3-next.0",
"@backstage/plugin-tech-insights-backend": "^0.2.4-next.0",
"@backstage/plugin-tech-insights-node": "^0.2.2-next.0",
"@backstage/plugin-tech-insights-backend-module-jsonfc": "^0.1.8-next.0",
"@backstage/plugin-todo-backend": "^0.1.21-next.0",
"@gitbeaker/node": "^35.1.0",
"@octokit/rest": "^18.5.3",
"@vscode/sqlite3": "^5.0.7",
"azure-devops-node-api": "^11.0.1",
"dockerode": "^3.3.1",
"example-app": "link:../app",
"express": "^4.17.1",
"express-prom-bundle": "^6.3.6",
"express-promise-router": "^4.1.0",
"knex": "^0.95.1",
"express-prom-bundle": "^6.3.6",
"knex": "^1.0.2",
"pg": "^8.3.0",
"pg-connection-string": "^2.3.0",
"prom-client": "^14.0.1",
"sqlite3": "^5.0.1",
"winston": "^3.2.1"
},
"devDependencies": {
"@backstage/cli": "^0.13.1",
"@backstage/cli": "^0.13.2-next.0",
"@types/dockerode": "^3.3.0",
"@types/express": "^4.17.6",
"@types/express-serve-static-core": "^4.17.5"
+1 -1
View File
@@ -35,7 +35,7 @@
"cross-fetch": "^3.0.6"
},
"devDependencies": {
"@backstage/cli": "^0.13.1-next.0",
"@backstage/cli": "^0.13.2-next.0",
"@types/jest": "^26.0.7",
"msw": "^0.35.0"
},
+1 -1
View File
@@ -43,7 +43,7 @@
"yup": "^0.32.9"
},
"devDependencies": {
"@backstage/cli": "^0.13.1-next.0",
"@backstage/cli": "^0.13.2-next.0",
"@types/jest": "^26.0.7",
"@types/lodash": "^4.14.151",
"yaml": "^1.9.2"
+19
View File
@@ -1,5 +1,24 @@
# @backstage/cli
## 0.13.2-next.0
### Patch Changes
- bbbaa8ed61: The `plugin:diff` command no longer validates the existence of any of the files within `dev/` or `src/`.
- eaf67f0578: Introduced initial support for an experimental `backstage.role` field in package.json, as well as experimental and hidden `migrate` and `script` sub-commands. We do not recommend usage of any of these additions yet.
- d59b90852a: The experimental types build enabled by `--experimental-type-build` now runs in a separate worker thread.
- 50a19ff8dd: The file path printed by the default lint formatter is now relative to the repository root, rather than the individual package.
- 63181dee79: Tweaked frontend bundling configuration to avoid leaking declarations into global scope.
- fae2aee878: Removed the `import/no-duplicates` lint rule from the frontend and backend ESLint configurations. This rule is quite expensive to execute and only provides a purely cosmetic benefit, so we opted to remove it from the set of default rules. If you would like to keep this rule you can add it back in your local ESLint configuration:
```js
'import/no-duplicates': 'warn'
```
- b906f98119: Rather than calling `yarn pack`, the `build-workspace` and `backend-bundle` commands now move files directly whenever possible. This cuts out several `yarn` invocations and speeds the packing process up by several orders of magnitude.
- d0c71e2aa4: Switched the `lint` command to invoke ESLint directly through its Node.js API rather than spawning a new process.
- d59b90852a: Introduced an experimental and hidden `repo` sub-command, that contains commands that operate on an entire monorepo rather than individual packages.
## 0.13.1
### Patch Changes
+7 -5
View File
@@ -1,7 +1,7 @@
{
"name": "@backstage/cli",
"description": "CLI for developing Backstage plugins and apps",
"version": "0.13.1",
"version": "0.13.2-next.0",
"private": false,
"publishConfig": {
"access": "public"
@@ -32,6 +32,7 @@
"@backstage/config": "^0.1.13",
"@backstage/config-loader": "^0.9.3",
"@backstage/errors": "^0.2.0",
"@backstage/release-manifests": "^0.0.0",
"@backstage/types": "^0.1.1",
"@hot-loader/react-dom": "^16.13.0",
"@manypkg/get-packages": "^1.1.3",
@@ -117,12 +118,12 @@
"zod": "^3.11.6"
},
"devDependencies": {
"@backstage/backend-common": "^0.10.6",
"@backstage/backend-common": "^0.10.7-next.0",
"@backstage/config": "^0.1.13",
"@backstage/core-components": "^0.8.7",
"@backstage/core-components": "^0.8.8-next.0",
"@backstage/core-plugin-api": "^0.6.0",
"@backstage/core-app-api": "^0.5.2",
"@backstage/dev-utils": "^0.2.20",
"@backstage/dev-utils": "^0.2.21-next.0",
"@backstage/test-utils": "^0.2.4",
"@backstage/theme": "^0.2.14",
"@types/diff": "^5.0.0",
@@ -143,7 +144,8 @@
"del": "^6.0.0",
"mock-fs": "^5.1.0",
"nodemon": "^2.0.2",
"ts-node": "^10.0.0"
"ts-node": "^10.0.0",
"msw": "^0.35.0"
},
"peerDependencies": {
"@microsoft/api-extractor": "^7.19.2"
+5
View File
@@ -341,6 +341,11 @@ export function registerCommands(program: CommanderStatic) {
'--pattern <glob>',
'Override glob for matching packages to upgrade',
)
.option(
'--release <version|next|main>',
'Bump to a specific Backstage release line or version',
'main',
)
.description('Bump Backstage packages to the latest versions')
.action(lazy(() => import('./versions/bump').then(m => m.default)));
+371 -43
View File
@@ -20,8 +20,14 @@ import { Command } from 'commander';
import { resolve as resolvePath } from 'path';
import { paths } from '../../lib/paths';
import * as runObj from '../../lib/run';
import bump, { bumpBackstageJsonVersion } from './bump';
import { withLogCollector } from '@backstage/test-utils';
import bump, { bumpBackstageJsonVersion, createVersionFinder } from './bump';
import {
setupRequestMockHandlers,
withLogCollector,
} from '@backstage/test-utils';
import { YarnInfoInspectData } from '../../lib/versioning/packages';
import { setupServer } from 'msw/node';
import { rest } from 'msw';
// Remove log coloring to simplify log matching
jest.mock('chalk', () => ({
@@ -38,6 +44,7 @@ const REGISTRY_VERSIONS: { [name: string]: string } = {
'@backstage/theme': '2.0.0',
'@backstage-extra/custom': '1.1.0',
'@backstage-extra/custom-two': '2.0.0',
'@backstage/create-app': '1.0.0',
};
const HEADER = `# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
@@ -82,6 +89,8 @@ describe('bump', () => {
mockFs.restore();
jest.resetAllMocks();
});
const worker = setupServer();
setupRequestMockHandlers(worker);
it('should bump backstage dependencies', async () => {
mockFs({
@@ -121,9 +130,20 @@ describe('bump', () => {
}),
);
jest.spyOn(runObj, 'run').mockResolvedValue(undefined);
worker.use(
rest.get(
'https://versions.backstage.io/v1/tags/main/manifest.json',
(_, res, ctx) =>
res(
ctx.status(200),
ctx.json({
packages: [],
}),
),
),
);
const { log: logs } = await withLogCollector(['log'], async () => {
await bump({ pattern: null } as unknown as Command);
await bump({ pattern: null, release: 'main' } as unknown as Command);
});
expect(logs.filter(Boolean)).toEqual([
'Using default pattern glob @backstage/*',
@@ -142,7 +162,7 @@ describe('bump', () => {
'Version bump complete!',
]);
expect(runObj.runPlain).toHaveBeenCalledTimes(4);
expect(runObj.runPlain).toHaveBeenCalledTimes(3);
expect(runObj.runPlain).toHaveBeenCalledWith(
'yarn',
'info',
@@ -179,6 +199,225 @@ describe('bump', () => {
});
});
it('should prefer dependency versions from release manifest', async () => {
mockFs({
'/yarn.lock': lockfileMock,
'/package.json': JSON.stringify({
workspaces: {
packages: ['packages/*'],
},
}),
'/packages/a/package.json': JSON.stringify({
name: 'a',
dependencies: {
'@backstage/core': '^1.0.5',
},
}),
'/packages/b/package.json': JSON.stringify({
name: 'b',
dependencies: {
'@backstage/core': '^1.0.3',
'@backstage/theme': '^1.0.0',
},
}),
});
jest
.spyOn(paths, 'resolveTargetRoot')
.mockImplementation((...path) => resolvePath('/', ...path));
jest.spyOn(runObj, 'runPlain').mockImplementation(async (...[, , , name]) =>
JSON.stringify({
type: 'inspect',
data: {
name: name,
'dist-tags': {
latest: REGISTRY_VERSIONS[name],
},
},
}),
);
jest.spyOn(runObj, 'run').mockResolvedValue(undefined);
worker.use(
rest.get(
'https://versions.backstage.io/v1/tags/main/manifest.json',
(_, res, ctx) =>
res(
ctx.status(200),
ctx.json({
releaseVersion: '0.0.1',
packages: [
{
name: '@backstage/theme',
version: '5.0.0',
},
{
name: '@backstage/create-app',
version: '3.0.0',
},
],
}),
),
),
);
const { log: logs } = await withLogCollector(['log'], async () => {
await bump({ pattern: null, release: 'main' } as unknown as Command);
});
expect(logs.filter(Boolean)).toEqual([
'Using default pattern glob @backstage/*',
'Checking for updates of @backstage/core',
'Checking for updates of @backstage/theme',
'Checking for updates of @backstage/theme',
'Checking for updates of @backstage/core-api',
'Some packages are outdated, updating',
'unlocking @backstage/core@^1.0.3 ~> 1.0.6',
'unlocking @backstage/core-api@^1.0.6 ~> 1.0.7',
'unlocking @backstage/core-api@^1.0.3 ~> 1.0.7',
'bumping @backstage/theme in b to ^5.0.0',
'Creating backstage.json',
'Running yarn install to install new versions',
'⚠️ The following packages may have breaking changes:',
' @backstage/theme : 1.0.0 ~> 5.0.0',
' https://github.com/backstage/backstage/blob/master/packages/theme/CHANGELOG.md',
'Version bump complete!',
]);
expect(runObj.runPlain).toHaveBeenCalledTimes(2);
expect(runObj.runPlain).toHaveBeenCalledWith(
'yarn',
'info',
'--json',
'@backstage/core',
);
expect(runObj.runPlain).not.toHaveBeenCalledWith(
'yarn',
'info',
'--json',
'@backstage/theme',
);
expect(runObj.run).toHaveBeenCalledTimes(1);
expect(runObj.run).toHaveBeenCalledWith('yarn', ['install']);
const lockfileContents = await fs.readFile('/yarn.lock', 'utf8');
expect(lockfileContents).toBe(lockfileMockResult);
const packageA = await fs.readJson('/packages/a/package.json');
expect(packageA).toEqual({
name: 'a',
dependencies: {
'@backstage/core': '^1.0.5', // not bumped since new version is within range
},
});
const packageB = await fs.readJson('/packages/b/package.json');
expect(packageB).toEqual({
name: 'b',
dependencies: {
'@backstage/core': '^1.0.3', // not bumped
'@backstage/theme': '^5.0.0', // bumped since newer
},
});
});
it('should only bump packages in the manifest when a specific release is specified', async () => {
mockFs({
'/yarn.lock': lockfileMock,
'/package.json': JSON.stringify({
workspaces: {
packages: ['packages/*'],
},
}),
'/packages/a/package.json': JSON.stringify({
name: 'a',
dependencies: {
'@backstage/core': '^1.0.5',
},
}),
'/packages/b/package.json': JSON.stringify({
name: 'b',
dependencies: {
'@backstage/core': '^1.0.3',
'@backstage/theme': '^1.0.0',
},
}),
});
jest.spyOn(runObj, 'runPlain').mockImplementation(async (...[, , , name]) =>
JSON.stringify({
type: 'inspect',
data: {
name: name,
'dist-tags': {
latest: REGISTRY_VERSIONS[name],
},
},
}),
);
jest
.spyOn(paths, 'resolveTargetRoot')
.mockImplementation((...path) => resolvePath('/', ...path));
jest.spyOn(runObj, 'run').mockResolvedValue(undefined);
worker.use(
rest.get(
'https://versions.backstage.io/v1/releases/1.0.0/manifest.json',
(_, res, ctx) =>
res(
ctx.status(200),
ctx.json({
releaseVersion: '2.0.0',
packages: [
{ name: '@backstage/core', version: '5.0.0' },
{ name: '@backstage/core-api', version: '5.0.0' },
],
}),
),
),
);
const { log: logs } = await withLogCollector(['log'], async () => {
await expect(
bump({ pattern: null, release: '1.0.0' } as unknown as Command),
).rejects.toThrow('Duplicate versions present after package bump');
});
expect(logs.filter(Boolean)).toEqual([
'Using default pattern glob @backstage/*',
'Checking for updates of @backstage/core',
'Checking for updates of @backstage/theme',
'Package info not found, ignoring package @backstage/theme',
'Checking for updates of @backstage/core',
'Checking for updates of @backstage/theme',
'Checking for updates of @backstage/core-api',
'Package info not found, ignoring package @backstage/theme',
'Some packages are outdated, updating',
'bumping @backstage/core in a to ^5.0.0',
'bumping @backstage/core in b to ^5.0.0',
'Creating backstage.json',
'Running yarn install to install new versions',
'⚠️ The following packages may have breaking changes:',
' @backstage/core : 1.0.3 ~> 5.0.0',
' https://github.com/backstage/backstage/blob/master/packages/core/CHANGELOG.md',
'Version bump complete!',
]);
expect(runObj.run).toHaveBeenCalledTimes(1);
expect(runObj.run).toHaveBeenCalledWith('yarn', ['install']);
const packageA = await fs.readJson('/packages/a/package.json');
expect(packageA).toEqual({
name: 'a',
dependencies: {
'@backstage/core': '^5.0.0',
},
});
const packageB = await fs.readJson('/packages/b/package.json');
expect(packageB).toEqual({
name: 'b',
dependencies: {
'@backstage/core': '^5.0.0',
'@backstage/theme': '^1.0.0',
},
});
expect(await fs.readJson('/backstage.json')).toEqual({ version: '2.0.0' });
});
it('should bump backstage dependencies and dependencies matching pattern glob', async () => {
const customLockfileMock = `${lockfileMock}
"@backstage-extra/custom@^1.1.0":
@@ -246,9 +485,23 @@ describe('bump', () => {
}),
);
jest.spyOn(runObj, 'run').mockResolvedValue(undefined);
worker.use(
rest.get(
'https://versions.backstage.io/v1/tags/main/manifest.json',
(_, res, ctx) =>
res(
ctx.status(200),
ctx.json({
packages: [],
}),
),
),
);
const { log: logs } = await withLogCollector(['log'], async () => {
await bump({ pattern: '@{backstage,backstage-extra}/*' } as any);
await bump({
pattern: '@{backstage,backstage-extra}/*',
release: 'main',
} as any);
});
expect(logs.filter(Boolean)).toEqual([
'Using custom pattern glob @{backstage,backstage-extra}/*',
@@ -265,6 +518,7 @@ describe('bump', () => {
'bumping @backstage-extra/custom-two in a to ^2.0.0',
'bumping @backstage-extra/custom-two in b to ^2.0.0',
'bumping @backstage/theme in b to ^2.0.0',
'Skipping backstage.json update as custom pattern is used',
'Running yarn install to install new versions',
'⚠️ The following packages may have breaking changes:',
' @backstage-extra/custom-two : 1.0.0 ~> 2.0.0',
@@ -273,7 +527,7 @@ describe('bump', () => {
'Version bump complete!',
]);
expect(runObj.runPlain).toHaveBeenCalledTimes(6);
expect(runObj.runPlain).toHaveBeenCalledTimes(5);
expect(runObj.runPlain).toHaveBeenCalledWith(
'yarn',
'info',
@@ -342,9 +596,20 @@ describe('bump', () => {
.mockImplementation((...path) => resolvePath('/', ...path));
jest.spyOn(runObj, 'runPlain').mockImplementation(async () => '');
jest.spyOn(runObj, 'run').mockResolvedValue(undefined);
worker.use(
rest.get(
'https://versions.backstage.io/v1/tags/main/manifest.json',
(_, res, ctx) =>
res(
ctx.status(200),
ctx.json({
packages: [],
}),
),
),
);
const { log: logs } = await withLogCollector(['log'], async () => {
await bump({ pattern: null } as unknown as Command);
await bump({ pattern: null, release: 'main' } as unknown as Command);
});
expect(logs.filter(Boolean)).toEqual([
'Using default pattern glob @backstage/*',
@@ -393,27 +658,12 @@ describe('bumpBackstageJsonVersion', () => {
'/backstage.json': JSON.stringify({ version: '0.0.1' }),
});
paths.targetDir = '/';
const latest = '1.4.1';
jest
.spyOn(paths, 'resolveTargetRoot')
.mockImplementation((...path) => resolvePath('/', ...path));
jest.spyOn(runObj, 'runPlain').mockImplementation(async (...[, , , name]) =>
JSON.stringify({
type: 'inspect',
data: {
name,
'dist-tags': {
latest,
},
},
}),
);
jest.spyOn(runObj, 'run').mockResolvedValue(undefined);
await bumpBackstageJsonVersion();
const json = await fs.readJson('/backstage.json');
expect(json).toEqual({ version: '1.4.1' });
await bumpBackstageJsonVersion('1.4.1');
expect(await fs.readJson('/backstage.json')).toEqual({ version: '1.4.1' });
});
it("should create backstage.json if doesn't exist", async () => {
@@ -423,22 +673,100 @@ describe('bumpBackstageJsonVersion', () => {
jest
.spyOn(paths, 'resolveTargetRoot')
.mockImplementation((...path) => resolvePath('/', ...path));
jest.spyOn(runObj, 'runPlain').mockImplementation(async (...[, , , name]) =>
JSON.stringify({
type: 'inspect',
data: {
name,
'dist-tags': {
latest,
},
},
}),
);
jest.spyOn(runObj, 'run').mockResolvedValue(undefined);
await bumpBackstageJsonVersion();
const json = await fs.readJson('/backstage.json');
expect(json).toEqual({ version: '1.4.1' });
await bumpBackstageJsonVersion(latest);
expect(await fs.readJson('/backstage.json')).toEqual({ version: latest });
});
});
describe('createVersionFinder', () => {
async function findVersion(tag: string, data: Partial<YarnInfoInspectData>) {
const fetcher = () =>
Promise.resolve({
name: '@backstage/core',
'dist-tags': {},
versions: [],
time: {},
...data,
});
const versionFinder = createVersionFinder({
releaseLine: tag,
packageInfoFetcher: fetcher,
});
let result;
await withLogCollector(async () => {
result = await versionFinder('@backstage/core');
});
return result;
}
it('should create version finder', async () => {
await expect(
findVersion('latest', {
time: { '1.0.0': '2020-01-01T00:00:00.000Z' },
'dist-tags': { latest: '1.0.0' },
}),
).resolves.toBe('1.0.0');
await expect(
findVersion('main', {
time: { '1.0.0': '2020-01-01T00:00:00.000Z' },
'dist-tags': { latest: '1.0.0' },
}),
).resolves.toBe('1.0.0');
await expect(
findVersion('next', {
time: { '1.0.0': '2020-01-01T00:00:00.000Z' },
'dist-tags': { latest: '1.0.0' },
}),
).resolves.toBe('1.0.0');
await expect(
findVersion('next', {
time: {
'1.0.0': '2020-01-01T00:00:00.000Z',
'0.9.0': '2010-01-01T00:00:00.000Z',
},
'dist-tags': { latest: '1.0.0', next: '0.9.0' },
}),
).resolves.toBe('1.0.0');
await expect(
findVersion('next', {
time: {
'1.0.0': '2020-01-01T00:00:00.000Z',
'0.9.0': '2020-02-01T00:00:00.000Z',
},
'dist-tags': { latest: '1.0.0', next: '0.9.0' },
}),
).resolves.toBe('0.9.0');
await expect(findVersion('next', {})).rejects.toThrow(
"No target 'latest' version found for @backstage/core",
);
await expect(
findVersion('next', {
time: {
'0.9.0': '2020-02-01T00:00:00.000Z',
},
'dist-tags': { latest: '1.0.0', next: '0.9.0' },
}),
).rejects.toThrow(
"No time available for version '1.0.0' of @backstage/core",
);
await expect(
findVersion('next', {
time: {
'1.0.0': '2020-01-01T00:00:00.000Z',
},
'dist-tags': { latest: '1.0.0', next: '0.9.0' },
}),
).rejects.toThrow(
"No time available for version '0.9.0' of @backstage/core",
);
});
});
+106 -18
View File
@@ -19,7 +19,7 @@ import chalk from 'chalk';
import semver from 'semver';
import minimatch from 'minimatch';
import { Command } from 'commander';
import { isError } from '@backstage/errors';
import { isError, NotFoundError } from '@backstage/errors';
import { resolve as resolvePath } from 'path';
import { run } from '../../lib/run';
import { paths } from '../../lib/paths';
@@ -27,10 +27,16 @@ import {
mapDependencies,
fetchPackageInfo,
Lockfile,
YarnInfoInspectData,
} from '../../lib/versioning';
import { forbiddenDuplicatesFilter } from './lint';
import { BACKSTAGE_JSON } from '@backstage/cli-common';
import { runParallelWorkers } from '../../lib/parallel';
import {
getManifestByReleaseLine,
getManifestByVersion,
ReleaseManifest,
} from '@backstage/release-manifests';
const DEP_TYPES = [
'dependencies',
@@ -60,7 +66,22 @@ export default async (cmd: Command) => {
console.log(`Using custom pattern glob ${pattern}`);
}
const findTargetVersion = createVersionFinder();
let findTargetVersion: (name: string) => Promise<string>;
let releaseManifest: ReleaseManifest;
if (semver.valid(cmd.release)) {
releaseManifest = await getManifestByVersion({ version: cmd.release });
findTargetVersion = createStrictVersionFinder({
releaseManifest,
});
} else {
releaseManifest = await getManifestByReleaseLine({
releaseLine: cmd.release,
});
findTargetVersion = createVersionFinder({
releaseLine: cmd.releaseLine,
releaseManifest,
});
}
// First we discover all Backstage dependencies within our own repo
const dependencyMap = await mapDependencies(paths.targetDir, pattern);
@@ -213,8 +234,16 @@ export default async (cmd: Command) => {
console.log();
await bumpBackstageJsonVersion();
// Do not update backstage.json when upgrade patterns are used.
if (pattern === DEFAULT_PATTERN_GLOB) {
await bumpBackstageJsonVersion(releaseManifest.releaseVersion);
} else {
console.log(
chalk.yellow(
`Skipping backstage.json update as custom pattern is used`,
),
);
}
console.log();
console.log(
`Running ${chalk.blue('yarn install')} to install new versions`,
@@ -284,9 +313,38 @@ export default async (cmd: Command) => {
}
};
function createVersionFinder() {
const found = new Map<string, string>();
export function createStrictVersionFinder(options: {
releaseManifest: ReleaseManifest;
}) {
const releasePackages = new Map(
options.releaseManifest.packages.map(p => [p.name, p.version]),
);
return async function findTargetVersion(name: string) {
console.log(`Checking for updates of ${name}`);
const manifestVersion = releasePackages.get(name);
if (manifestVersion) {
return manifestVersion;
}
throw new NotFoundError(`Package ${name} not found in release manifest`);
};
}
export function createVersionFinder(options: {
releaseLine?: string;
packageInfoFetcher?: () => Promise<YarnInfoInspectData>;
releaseManifest?: ReleaseManifest;
}) {
const {
releaseLine = 'latest',
packageInfoFetcher = fetchPackageInfo,
releaseManifest,
} = options;
// The main release line is just an alias for latest
const distTag = releaseLine === 'main' ? 'latest' : releaseLine;
const found = new Map<string, string>();
const releasePackages = new Map(
releaseManifest?.packages.map(p => [p.name, p.version]),
);
return async function findTargetVersion(name: string) {
const existing = found.get(name);
if (existing) {
@@ -294,17 +352,50 @@ function createVersionFinder() {
}
console.log(`Checking for updates of ${name}`);
const info = await fetchPackageInfo(name);
const latest = info['dist-tags'].latest;
if (!latest) {
throw new Error(`No latest version found for ${name}`);
const manifestVersion = releasePackages.get(name);
if (manifestVersion) {
return manifestVersion;
}
found.set(name, latest);
return latest;
const info = await packageInfoFetcher(name);
const latestVersion = info['dist-tags'].latest;
if (!latestVersion) {
throw new Error(`No target 'latest' version found for ${name}`);
}
const taggedVersion = info['dist-tags'][distTag];
if (distTag === 'latest' || !taggedVersion) {
found.set(name, latestVersion);
return latestVersion;
}
const latestVersionDateStr = info.time[latestVersion];
const taggedVersionDateStr = info.time[taggedVersion];
if (!latestVersionDateStr) {
throw new Error(
`No time available for version '${latestVersion}' of ${name}`,
);
}
if (!taggedVersionDateStr) {
throw new Error(
`No time available for version '${taggedVersion}' of ${name}`,
);
}
const latestVersionRelease = new Date(latestVersionDateStr).getTime();
const taggedVersionRelease = new Date(taggedVersionDateStr).getTime();
if (latestVersionRelease > taggedVersionRelease) {
// Prefer latest version if it's newer.
found.set(name, latestVersion);
return latestVersion;
}
found.set(name, taggedVersion);
return taggedVersion;
};
}
export async function bumpBackstageJsonVersion() {
export async function bumpBackstageJsonVersion(version: string) {
const backstageJsonPath = paths.resolveTargetRoot(BACKSTAGE_JSON);
const backstageJson = await fs.readJSON(backstageJsonPath).catch(e => {
if (e.code === 'ENOENT') {
@@ -314,10 +405,7 @@ export async function bumpBackstageJsonVersion() {
throw e;
});
const info = await fetchPackageInfo('@backstage/create-app');
const { latest } = info['dist-tags'];
if (backstageJson?.version === latest) {
if (backstageJson?.version === version) {
return;
}
@@ -331,7 +419,7 @@ export async function bumpBackstageJsonVersion() {
await fs.writeJson(
backstageJsonPath,
{ ...backstageJson, version: latest },
{ ...backstageJson, version },
{
spaces: 2,
encoding: 'utf8',
+1 -1
View File
@@ -28,7 +28,7 @@ const DEP_TYPES = [
// Package data as returned by `yarn info`
export type YarnInfoInspectData = {
name: string;
'dist-tags': { latest: string };
'dist-tags': Record<string, string>;
versions: string[];
time: { [version: string]: string };
};
+7
View File
@@ -1,5 +1,12 @@
# @backstage/codemods
## 0.1.33-next.0
### Patch Changes
- Updated dependencies
- @backstage/core-components@0.8.8-next.0
## 0.1.32
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@backstage/codemods",
"description": "A collection of codemods for Backstage projects",
"version": "0.1.32",
"version": "0.1.33-next.0",
"private": false,
"publishConfig": {
"access": "public",
+1 -1
View File
@@ -45,7 +45,7 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
"@backstage/cli": "^0.13.1",
"@backstage/cli": "^0.13.2-next.0",
"@backstage/test-utils": "^0.2.4",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
+8
View File
@@ -1,5 +1,13 @@
# @backstage/core-components
## 0.8.8-next.0
### Patch Changes
- 8d785a0b1b: chore: bump `ansi-regex` from `5.0.1` to `6.0.1`
- f2dfbd3fb0: Adjust ErrorPage to accept optional supportUrl property to override app support config. Update type of additionalInfo property to be ReactNode to accept both string and component.
- d62bdb7a8e: The `ErrorPage` now falls back to using the default support configuration if the `ConfigApi` is not available.
## 0.8.7
### Patch Changes
+2 -2
View File
@@ -1,7 +1,7 @@
{
"name": "@backstage/core-components",
"description": "Core components used by Backstage plugins and apps",
"version": "0.8.7",
"version": "0.8.8-next.0",
"private": false,
"publishConfig": {
"access": "public",
@@ -74,7 +74,7 @@
},
"devDependencies": {
"@backstage/core-app-api": "^0.5.2",
"@backstage/cli": "^0.13.1",
"@backstage/cli": "^0.13.2-next.0",
"@backstage/test-utils": "^0.2.4",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
+1 -1
View File
@@ -43,7 +43,7 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
"@backstage/cli": "^0.13.1-next.1",
"@backstage/cli": "^0.13.2-next.0",
"@backstage/core-app-api": "^0.5.2-next.0",
"@backstage/test-utils": "^0.2.4-next.0",
"@testing-library/jest-dom": "^5.10.1",
+70
View File
@@ -1,5 +1,75 @@
# @backstage/create-app
## 0.4.19-next.0
### Patch Changes
- 22f4ecb0e6: Switched the `file:` dependency for a `link:` dependency in the `backend` package. This makes sure that the `app` package is linked in rather than copied.
To apply this update to an existing app, make the following change to `packages/backend/package.json`:
```diff
"dependencies": {
- "app": "file:../app",
+ "app": "link:../app",
"@backstage/backend-common": "^{{version '@backstage/backend-common'}}",
```
- 1dd5a02e91: **BREAKING:** Updated `knex` to major version 1, which also implies changing out
the underlying `sqlite` implementation.
The old `sqlite3` NPM library has been abandoned by its maintainers, which has
led to unhandled security reports and other issues. Therefore, in the `knex` 1.x
release line they have instead switched over to the [`@vscode/sqlite3`
library](https://github.com/microsoft/vscode-node-sqlite3) by default, which is
actively maintained by Microsoft.
This means that as you update to this version of Backstage, there are two
breaking changes that you will have to address in your own repository:
## Bumping `knex` itself
All `package.json` files of your repo that used to depend on a 0.x version of
`knex`, should now be updated to depend on the 1.x release line. This applies in
particular to `packages/backend`, but may also occur in backend plugins or
libraries.
```diff
- "knex": "^0.95.1",
+ "knex": "^1.0.2",
```
Almost all existing database code will continue to function without modification
after this bump. The only significant difference that we discovered in the main
repo, is that the `alter()` function had a slightly different signature in
migration files. It now accepts an object with `alterType` and `alterNullable`
fields that clarify a previous grey area such that the intent of the alteration
is made explicit. This is caught by `tsc` and your editor if you are using the
`@ts-check` and `@param` syntax in your migration files
([example](https://github.com/backstage/backstage/blob/master/plugins/catalog-backend/migrations/20220116144621_remove_legacy.js#L17)),
which we strongly recommend.
See the [`knex` documentation](https://knexjs.org/#Schema-alter) for more
information about the `alter` syntax.
Also see the [`knex` changelog](https://knexjs.org/#changelog) for information
about breaking changes in the 1.x line; if you are using `RETURNING` you may
want to make some additional modifications in your code.
## Switching out `sqlite3`
All `package.json` files of your repo that used to depend on `sqlite3`, should
now be updated to depend on `@vscode/sqlite3`. This applies in particular to
`packages/backend`, but may also occur in backend plugins or libraries.
```diff
- "sqlite3": "^5.0.1",
+ "@vscode/sqlite3": "^5.0.7",
```
These should be functionally equivalent, except that the new library will have
addressed some long standing problems with old transitive dependencies etc.
## 0.4.18
### 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.4.18",
"version": "0.4.19-next.0",
"private": false,
"publishConfig": {
"access": "public"
+1 -1
View File
@@ -208,6 +208,6 @@ describe('templatingTask', () => {
// backend dependencies include `sqlite3` from `context.SQLite`
expect(
fs.readFileSync('templatedApp/packages/backend/package.json', 'utf-8'),
).toContain('"sqlite3"');
).toContain('sqlite3"');
});
});
@@ -40,7 +40,7 @@
"pg": "^8.3.0",
{{/if}}
{{#if dbTypeSqlite}}
"sqlite3": "^5.0.1",
"@vscode/sqlite3": "^5.0.7",
{{/if}}
"winston": "^3.2.1"
},
+10
View File
@@ -1,5 +1,15 @@
# @backstage/dev-utils
## 0.2.21-next.0
### Patch Changes
- Updated dependencies
- @backstage/core-components@0.8.8-next.0
- @backstage/plugin-catalog-react@0.6.14-next.0
- @backstage/app-defaults@0.1.7-next.0
- @backstage/integration-react@0.1.21-next.0
## 0.2.20
### Patch Changes
+6 -6
View File
@@ -1,7 +1,7 @@
{
"name": "@backstage/dev-utils",
"description": "Utilities for developing Backstage plugins.",
"version": "0.2.20",
"version": "0.2.21-next.0",
"private": false,
"publishConfig": {
"access": "public",
@@ -29,13 +29,13 @@
"clean": "backstage-cli clean"
},
"dependencies": {
"@backstage/app-defaults": "^0.1.6",
"@backstage/app-defaults": "^0.1.7-next.0",
"@backstage/core-app-api": "^0.5.2",
"@backstage/core-components": "^0.8.7",
"@backstage/core-components": "^0.8.8-next.0",
"@backstage/core-plugin-api": "^0.6.0",
"@backstage/catalog-model": "^0.9.10",
"@backstage/integration-react": "^0.1.20",
"@backstage/plugin-catalog-react": "^0.6.13",
"@backstage/integration-react": "^0.1.21-next.0",
"@backstage/plugin-catalog-react": "^0.6.14-next.0",
"@backstage/test-utils": "^0.2.4",
"@backstage/theme": "^0.2.14",
"@material-ui/core": "^4.12.2",
@@ -55,7 +55,7 @@
"react-dom": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
"@backstage/cli": "^0.13.1",
"@backstage/cli": "^0.13.2-next.0",
"@types/jest": "^26.0.7",
"@types/node": "^14.14.32"
},
+1 -1
View File
@@ -35,7 +35,7 @@
"serialize-error": "^8.0.1"
},
"devDependencies": {
"@backstage/cli": "^0.13.1-next.0",
"@backstage/cli": "^0.13.2-next.0",
"@types/jest": "^26.0.7"
},
"files": [
+7
View File
@@ -1,5 +1,12 @@
# @backstage/integration-react
## 0.1.21-next.0
### Patch Changes
- Updated dependencies
- @backstage/core-components@0.8.8-next.0
## 0.1.20
### Patch Changes
+4 -4
View File
@@ -1,7 +1,7 @@
{
"name": "@backstage/integration-react",
"description": "Frontend package for managing integrations towards external systems",
"version": "0.1.20",
"version": "0.1.21-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -22,7 +22,7 @@
},
"dependencies": {
"@backstage/config": "^0.1.13",
"@backstage/core-components": "^0.8.7",
"@backstage/core-components": "^0.8.8-next.0",
"@backstage/core-plugin-api": "^0.6.0",
"@backstage/integration": "^0.7.2",
"@backstage/theme": "^0.2.14",
@@ -35,8 +35,8 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
"@backstage/cli": "^0.13.1",
"@backstage/dev-utils": "^0.2.20",
"@backstage/cli": "^0.13.2-next.0",
"@backstage/dev-utils": "^0.2.21-next.0",
"@backstage/test-utils": "^0.2.4",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
+1 -1
View File
@@ -39,7 +39,7 @@
"lodash": "^4.17.21"
},
"devDependencies": {
"@backstage/cli": "^0.13.1-next.1",
"@backstage/cli": "^0.13.2-next.0",
"@backstage/config-loader": "^0.9.3",
"@backstage/test-utils": "^0.2.4-next.0",
"@types/jest": "^26.0.7",
+3
View File
@@ -0,0 +1,3 @@
module.exports = {
extends: [require.resolve('@backstage/cli/config/eslint.backend')],
};
+1
View File
@@ -0,0 +1 @@
# @backstage/release-manifests
+3
View File
@@ -0,0 +1,3 @@
# @backstage/release-manifests
This package provides a mapping between a Backstage release and the packages included in that release.
+34
View File
@@ -0,0 +1,34 @@
## API Report File for "@backstage/release-manifests"
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
// @public
export function getManifestByReleaseLine(
options: GetManifestByReleaseLineOptions,
): Promise<ReleaseManifest>;
// @public
export type GetManifestByReleaseLineOptions = {
releaseLine: string;
};
// @public
export function getManifestByVersion(
options: GetManifestByVersionOptions,
): Promise<ReleaseManifest>;
// @public
export type GetManifestByVersionOptions = {
version: string;
};
// @public
export type ReleaseManifest = {
releaseVersion: string;
packages: {
name: string;
version: string;
}[];
};
```
+44
View File
@@ -0,0 +1,44 @@
{
"name": "@backstage/release-manifests",
"description": "Helper library for receiving release manifests",
"version": "0.0.0",
"private": false,
"main": "src/index.ts",
"types": "src/index.ts",
"publishConfig": {
"access": "public",
"main": "dist/index.cjs.js",
"module": "dist/index.esm.js",
"types": "dist/index.d.ts"
},
"homepage": "https://backstage.io",
"repository": {
"type": "git",
"url": "https://github.com/backstage/backstage",
"directory": "packages/release-manifests"
},
"keywords": [
"backstage"
],
"license": "Apache-2.0",
"scripts": {
"build": "backstage-cli build",
"lint": "backstage-cli lint",
"test": "backstage-cli test",
"prepack": "backstage-cli prepack",
"postpack": "backstage-cli postpack",
"clean": "backstage-cli clean"
},
"dependencies": {
"cross-fetch": "^3.0.6"
},
"devDependencies": {
"@backstage/test-utils": "^0.2.3",
"msw": "^0.35.0",
"@types/jest": "^26.0.7",
"@types/node": "^14.14.32"
},
"files": [
"dist"
]
}
+28
View File
@@ -0,0 +1,28 @@
/*
* Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* Contains mapping between Backstage release and package versions.
*
* @packageDocumentation
*/
export { getManifestByVersion, getManifestByReleaseLine } from './manifest';
export type {
ReleaseManifest,
GetManifestByReleaseLineOptions,
GetManifestByVersionOptions,
} from './manifest';
@@ -0,0 +1,86 @@
/*
* Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { setupRequestMockHandlers } from '@backstage/test-utils';
import { getManifestByReleaseLine, getManifestByVersion } from './manifest';
import { setupServer } from 'msw/node';
import { rest } from 'msw';
describe('getManifestByVersion', () => {
const worker = setupServer();
setupRequestMockHandlers(worker);
it('should return a list of packages in a release', async () => {
worker.use(
rest.get('*/v1/releases/0.0.0/manifest.json', (_, res, ctx) =>
res(
ctx.status(200),
ctx.json({
packages: [{ name: '@backstage/core', version: '1.2.3' }],
}),
),
),
rest.get('*/v1/releases/999.0.1/manifest.json', (_, res, ctx) =>
res(ctx.status(404), ctx.json({})),
),
);
const pkgs = await getManifestByVersion({ version: '0.0.0' });
expect(pkgs.packages).toEqual([
{
name: '@backstage/core',
version: '1.2.3',
},
]);
await expect(getManifestByVersion({ version: '999.0.1' })).rejects.toThrow(
'No release found for 999.0.1 version',
);
});
});
describe('getManifestByReleaseLine', () => {
const worker = setupServer();
setupRequestMockHandlers(worker);
it('should return a list of packages in a release', async () => {
worker.use(
rest.get('*/v1/tags/main/manifest.json', (_, res, ctx) =>
res(
ctx.status(200),
ctx.json({
packages: [{ name: '@backstage/core', version: '1.2.3' }],
}),
),
),
rest.get('*/v1/tags/foo/manifest.json', (_, res, ctx) =>
res(ctx.status(404), ctx.json({})),
),
);
const pkgs = await getManifestByReleaseLine({ releaseLine: 'main' });
expect(pkgs.packages).toEqual([
{
name: '@backstage/core',
version: '1.2.3',
},
]);
await expect(
getManifestByReleaseLine({ releaseLine: 'foo' }),
).rejects.toThrow("No 'foo' release line found");
});
});
@@ -0,0 +1,88 @@
/*
* Copyright 2022 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import fetch from 'cross-fetch';
const VERSIONS_DOMAIN = 'https://versions.backstage.io';
/**
* Contains mapping between Backstage release and package versions.
* @public
*/
export type ReleaseManifest = {
releaseVersion: string;
packages: { name: string; version: string }[];
};
/**
* Options for {@link getManifestByVersion}.
* @public
*/
export type GetManifestByVersionOptions = {
version: string;
};
/**
* Returns a release manifest based on supplied version.
* @public
*/
export async function getManifestByVersion(
options: GetManifestByVersionOptions,
): Promise<ReleaseManifest> {
const url = `${VERSIONS_DOMAIN}/v1/releases/${encodeURIComponent(
options.version,
)}/manifest.json`;
const response = await fetch(url);
if (response.status === 404) {
throw new Error(`No release found for ${options.version} version`);
}
if (response.status !== 200) {
throw new Error(
`Unexpected response status ${response.status} when fetching release from ${url}.`,
);
}
return await response.json();
}
/**
* Options for {@link getManifestByReleaseLine}.
* @public
*/
export type GetManifestByReleaseLineOptions = {
releaseLine: string;
};
/**
* Returns a release manifest based on supplied release line.
* @public
*/
export async function getManifestByReleaseLine(
options: GetManifestByReleaseLineOptions,
): Promise<ReleaseManifest> {
const url = `${VERSIONS_DOMAIN}/v1/tags/${encodeURIComponent(
options.releaseLine,
)}/manifest.json`;
const response = await fetch(url);
if (response.status === 404) {
throw new Error(`No '${options.releaseLine}' release line found`);
}
if (response.status !== 200) {
throw new Error(
`Unexpected response status ${response.status} when fetching release from ${url}.`,
);
}
return await response.json();
}
+1 -1
View File
@@ -40,7 +40,7 @@
"@backstage/plugin-permission-common": "^0.4.0-next.0"
},
"devDependencies": {
"@backstage/cli": "^0.13.1-next.0"
"@backstage/cli": "^0.13.2-next.0"
},
"jest": {
"roots": [
@@ -1,5 +1,17 @@
# techdocs-cli-embedded-app
## 0.2.63-next.0
### Patch Changes
- Updated dependencies
- @backstage/cli@0.13.2-next.0
- @backstage/core-components@0.8.8-next.0
- @backstage/app-defaults@0.1.7-next.0
- @backstage/integration-react@0.1.21-next.0
- @backstage/plugin-catalog@0.7.12-next.0
- @backstage/plugin-techdocs@0.13.3-next.0
## 0.2.62
### Patch Changes
@@ -1,19 +1,19 @@
{
"name": "techdocs-cli-embedded-app",
"version": "0.2.62",
"version": "0.2.63-next.0",
"private": true,
"bundled": true,
"dependencies": {
"@backstage/app-defaults": "^0.1.6",
"@backstage/app-defaults": "^0.1.7-next.0",
"@backstage/catalog-model": "^0.9.10",
"@backstage/cli": "^0.13.1",
"@backstage/cli": "^0.13.2-next.0",
"@backstage/config": "^0.1.13",
"@backstage/core-app-api": "^0.5.2",
"@backstage/core-components": "^0.8.7",
"@backstage/core-components": "^0.8.8-next.0",
"@backstage/core-plugin-api": "^0.6.0",
"@backstage/integration-react": "^0.1.20",
"@backstage/plugin-catalog": "^0.7.11",
"@backstage/plugin-techdocs": "^0.13.2",
"@backstage/integration-react": "^0.1.21-next.0",
"@backstage/plugin-catalog": "^0.7.12-next.0",
"@backstage/plugin-techdocs": "^0.13.3-next.0",
"@backstage/test-utils": "^0.2.4",
"@backstage/theme": "^0.2.14",
"@material-ui/core": "^4.11.0",
@@ -26,7 +26,7 @@
"react-use": "^17.2.4"
},
"devDependencies": {
"@backstage/cli": "^0.13.1",
"@backstage/cli": "^0.13.2-next.0",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
"@testing-library/user-event": "^13.1.8",
+9
View File
@@ -1,5 +1,14 @@
# @techdocs/cli
## 0.8.13-next.0
### Patch Changes
- b70c186194: Updated the HTTP server to allow for simplification of the development of the CLI itself.
- Updated dependencies
- @backstage/backend-common@0.10.7-next.0
- @backstage/techdocs-common@0.11.7-next.0
## 0.8.12
### Patch Changes
+4 -4
View File
@@ -1,7 +1,7 @@
{
"name": "@techdocs/cli",
"description": "Utility CLI for managing TechDocs sites in Backstage.",
"version": "0.8.12",
"version": "0.8.13-next.0",
"private": false,
"publishConfig": {
"access": "public"
@@ -33,7 +33,7 @@
"techdocs-cli": "bin/techdocs-cli"
},
"devDependencies": {
"@backstage/cli": "^0.13.1",
"@backstage/cli": "^0.13.2-next.0",
"@types/commander": "^2.12.2",
"@types/fs-extra": "^9.0.6",
"@types/http-proxy": "^1.17.4",
@@ -56,11 +56,11 @@
"ext": "ts"
},
"dependencies": {
"@backstage/backend-common": "^0.10.6",
"@backstage/backend-common": "^0.10.7-next.0",
"@backstage/catalog-model": "^0.9.10",
"@backstage/cli-common": "^0.1.6",
"@backstage/config": "^0.1.13",
"@backstage/techdocs-common": "^0.11.6",
"@backstage/techdocs-common": "^0.11.7-next.0",
"@types/dockerode": "^3.3.0",
"commander": "^6.1.0",
"dockerode": "^3.3.1",
+7
View File
@@ -1,5 +1,12 @@
# @backstage/techdocs-common
## 0.11.7-next.0
### Patch Changes
- Updated dependencies
- @backstage/backend-common@0.10.7-next.0
## 0.11.6
### Patch Changes
+3 -3
View File
@@ -1,7 +1,7 @@
{
"name": "@backstage/techdocs-common",
"description": "Common functionalities for TechDocs, to be shared between techdocs-backend plugin and techdocs-cli",
"version": "0.11.6",
"version": "0.11.7-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"private": false,
@@ -38,7 +38,7 @@
"dependencies": {
"@azure/identity": "^2.0.1",
"@azure/storage-blob": "^12.5.0",
"@backstage/backend-common": "^0.10.6",
"@backstage/backend-common": "^0.10.7-next.0",
"@backstage/catalog-model": "^0.9.10",
"@backstage/config": "^0.1.13",
"@backstage/errors": "^0.2.0",
@@ -60,7 +60,7 @@
"winston": "^3.2.1"
},
"devDependencies": {
"@backstage/cli": "^0.13.1",
"@backstage/cli": "^0.13.2-next.0",
"@types/fs-extra": "^9.0.5",
"@types/js-yaml": "^4.0.0",
"@types/mime-types": "^2.1.0",
+1 -1
View File
@@ -51,7 +51,7 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
"@backstage/cli": "^0.13.1",
"@backstage/cli": "^0.13.2-next.0",
"@types/jest": "^26.0.7",
"@types/node": "^14.14.32",
"msw": "^0.35.0"
+1 -1
View File
@@ -31,7 +31,7 @@
"@material-ui/core": "^4.12.2"
},
"devDependencies": {
"@backstage/cli": "^0.13.1-next.0"
"@backstage/cli": "^0.13.2-next.0"
},
"files": [
"dist"
+1 -1
View File
@@ -31,7 +31,7 @@
},
"dependencies": {},
"devDependencies": {
"@backstage/cli": "^0.13.1-next.0",
"@backstage/cli": "^0.13.2-next.0",
"@types/zen-observable": "^0.8.0",
"zen-observable": "^0.8.15"
},
+1 -1
View File
@@ -33,7 +33,7 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
"@backstage/cli": "^0.13.1-next.0",
"@backstage/cli": "^0.13.2-next.0",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
"@testing-library/react-hooks": "^7.0.2"
+7
View File
@@ -1,5 +1,12 @@
# @backstage/plugin-airbrake
## 0.1.3-next.0
### Patch Changes
- Updated dependencies
- @backstage/core-components@0.8.8-next.0
## 0.1.2
### Patch Changes
+5 -5
View File
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-airbrake",
"version": "0.1.2",
"version": "0.1.3-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -20,7 +20,7 @@
"clean": "backstage-cli clean"
},
"dependencies": {
"@backstage/core-components": "^0.8.7",
"@backstage/core-components": "^0.8.8-next.0",
"@backstage/core-plugin-api": "^0.6.0",
"@backstage/theme": "^0.2.14",
"@material-ui/core": "^4.12.2",
@@ -34,10 +34,10 @@
},
"devDependencies": {
"@types/object-hash": "^2.2.1",
"@backstage/app-defaults": "^0.1.6",
"@backstage/cli": "^0.13.1",
"@backstage/app-defaults": "^0.1.7-next.0",
"@backstage/cli": "^0.13.2-next.0",
"@backstage/core-app-api": "^0.5.2",
"@backstage/dev-utils": "^0.2.20",
"@backstage/dev-utils": "^0.2.21-next.0",
"@backstage/test-utils": "^0.2.4",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
+8
View File
@@ -1,5 +1,13 @@
# @backstage/plugin-allure
## 0.1.14-next.0
### Patch Changes
- Updated dependencies
- @backstage/core-components@0.8.8-next.0
- @backstage/plugin-catalog-react@0.6.14-next.0
## 0.1.13
### Patch Changes
+5 -5
View File
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-allure",
"description": "A Backstage plugin that integrates with Allure",
"version": "0.1.13",
"version": "0.1.14-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -23,9 +23,9 @@
},
"dependencies": {
"@backstage/catalog-model": "^0.9.10",
"@backstage/core-components": "^0.8.7",
"@backstage/core-components": "^0.8.8-next.0",
"@backstage/core-plugin-api": "^0.6.0",
"@backstage/plugin-catalog-react": "^0.6.13",
"@backstage/plugin-catalog-react": "^0.6.14-next.0",
"@backstage/theme": "^0.2.14",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -37,9 +37,9 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
"@backstage/cli": "^0.13.1",
"@backstage/cli": "^0.13.2-next.0",
"@backstage/core-app-api": "^0.5.2",
"@backstage/dev-utils": "^0.2.20",
"@backstage/dev-utils": "^0.2.21-next.0",
"@backstage/test-utils": "^0.2.4",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
+7
View File
@@ -1,5 +1,12 @@
# @backstage/plugin-analytics-module-ga
## 0.1.9-next.0
### Patch Changes
- Updated dependencies
- @backstage/core-components@0.8.8-next.0
## 0.1.8
### Patch Changes
+4 -4
View File
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-analytics-module-ga",
"version": "0.1.8",
"version": "0.1.9-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -22,7 +22,7 @@
},
"dependencies": {
"@backstage/config": "^0.1.13",
"@backstage/core-components": "^0.8.7",
"@backstage/core-components": "^0.8.8-next.0",
"@backstage/core-plugin-api": "^0.6.0",
"@backstage/theme": "^0.2.14",
"@material-ui/core": "^4.12.2",
@@ -35,9 +35,9 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
"@backstage/cli": "^0.13.1",
"@backstage/cli": "^0.13.2-next.0",
"@backstage/core-app-api": "^0.5.2",
"@backstage/dev-utils": "^0.2.20",
"@backstage/dev-utils": "^0.2.21-next.0",
"@backstage/test-utils": "^0.2.4",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
+7
View File
@@ -1,5 +1,12 @@
# @backstage/plugin-apache-airflow
## 0.1.6-next.0
### Patch Changes
- Updated dependencies
- @backstage/core-components@0.8.8-next.0
## 0.1.5
### Patch Changes
+4 -4
View File
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-apache-airflow",
"version": "0.1.5",
"version": "0.1.6-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -20,7 +20,7 @@
"clean": "backstage-cli clean"
},
"dependencies": {
"@backstage/core-components": "^0.8.7",
"@backstage/core-components": "^0.8.8-next.0",
"@backstage/core-plugin-api": "^0.6.0",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -33,9 +33,9 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
"@backstage/cli": "^0.13.1",
"@backstage/cli": "^0.13.2-next.0",
"@backstage/core-app-api": "^0.5.2",
"@backstage/dev-utils": "^0.2.20",
"@backstage/dev-utils": "^0.2.21-next.0",
"@backstage/test-utils": "^0.2.4",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
+9
View File
@@ -1,5 +1,14 @@
# @backstage/plugin-api-docs
## 0.7.2-next.0
### Patch Changes
- Updated dependencies
- @backstage/core-components@0.8.8-next.0
- @backstage/plugin-catalog-react@0.6.14-next.0
- @backstage/plugin-catalog@0.7.12-next.0
## 0.7.1
### Patch Changes
+6 -6
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.7.1",
"version": "0.7.2-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -32,10 +32,10 @@
"dependencies": {
"@asyncapi/react-component": "1.0.0-next.32",
"@backstage/catalog-model": "^0.9.10",
"@backstage/core-components": "^0.8.7",
"@backstage/core-components": "^0.8.8-next.0",
"@backstage/core-plugin-api": "^0.6.0",
"@backstage/plugin-catalog": "^0.7.11",
"@backstage/plugin-catalog-react": "^0.6.13",
"@backstage/plugin-catalog": "^0.7.12-next.0",
"@backstage/plugin-catalog-react": "^0.6.14-next.0",
"@backstage/theme": "^0.2.14",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -53,9 +53,9 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
"@backstage/cli": "^0.13.1",
"@backstage/cli": "^0.13.2-next.0",
"@backstage/core-app-api": "^0.5.2",
"@backstage/dev-utils": "^0.2.20",
"@backstage/dev-utils": "^0.2.21-next.0",
"@backstage/test-utils": "^0.2.4",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
+11
View File
@@ -1,5 +1,16 @@
# @backstage/plugin-app-backend
## 0.3.24-next.0
### Patch Changes
- 2441d1cf59: chore(deps): bump `knex` from 0.95.6 to 1.0.2
This also replaces `sqlite3` with `@vscode/sqlite3` 5.0.7
- Updated dependencies
- @backstage/backend-common@0.10.7-next.0
## 0.3.23
### Patch Changes
+5 -5
View File
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-app-backend",
"description": "A Backstage backend plugin that serves the Backstage frontend app",
"version": "0.3.23",
"version": "0.3.24-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -30,7 +30,7 @@
"clean": "backstage-cli clean"
},
"dependencies": {
"@backstage/backend-common": "^0.10.6",
"@backstage/backend-common": "^0.10.7-next.0",
"@backstage/config-loader": "^0.9.3",
"@backstage/config": "^0.1.13",
"@backstage/types": "^0.1.1",
@@ -40,15 +40,15 @@
"express-promise-router": "^4.1.0",
"fs-extra": "9.1.0",
"helmet": "^4.0.0",
"knex": "^0.95.1",
"knex": "^1.0.2",
"lodash": "^4.17.21",
"luxon": "^2.0.2",
"winston": "^3.2.1",
"yn": "^4.0.0"
},
"devDependencies": {
"@backstage/backend-test-utils": "^0.1.16",
"@backstage/cli": "^0.13.1",
"@backstage/backend-test-utils": "^0.1.17-next.0",
"@backstage/cli": "^0.13.2-next.0",
"@backstage/types": "^0.1.1",
"@types/supertest": "^2.0.8",
"mock-fs": "^5.1.0",
+17
View File
@@ -1,5 +1,22 @@
# @backstage/plugin-auth-backend
## 0.10.0-next.0
### Minor Changes
- 08fcda13ef: The `callbackUrl` option of `OAuthAdapter` is now required.
### Patch Changes
- 2441d1cf59: chore(deps): bump `knex` from 0.95.6 to 1.0.2
This also replaces `sqlite3` with `@vscode/sqlite3` 5.0.7
- 3396bc5973: Enabled refresh for the Atlassian provider.
- 08fcda13ef: Added a new `cookieConfigurer` option to `AuthProviderConfig` that makes it possible to override the default logic for configuring OAuth provider cookies.
- Updated dependencies
- @backstage/backend-common@0.10.7-next.0
## 0.9.0
### Minor Changes
@@ -28,7 +28,7 @@ exports.up = async function up(knex) {
.notNullable()
.defaultTo(knex.fn.now())
.comment('The creation time of the key')
.alter();
.alter({ alterType: true });
});
}
};
@@ -45,7 +45,7 @@ exports.down = async function down(knex) {
.notNullable()
.defaultTo(knex.fn.now())
.comment('The creation time of the key')
.alter();
.alter({ alterType: true });
});
}
};
+4 -4
View File
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-auth-backend",
"description": "A Backstage backend plugin that handles authentication",
"version": "0.9.0",
"version": "0.10.0-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -30,7 +30,7 @@
"clean": "backstage-cli clean"
},
"dependencies": {
"@backstage/backend-common": "^0.10.6",
"@backstage/backend-common": "^0.10.7-next.0",
"@backstage/catalog-client": "^0.5.5",
"@backstage/catalog-model": "^0.9.10",
"@backstage/config": "^0.1.13",
@@ -50,7 +50,7 @@
"helmet": "^4.0.0",
"jose": "^1.27.1",
"jwt-decode": "^3.1.0",
"knex": "^0.95.1",
"knex": "^1.0.2",
"lodash": "^4.17.21",
"luxon": "^2.0.2",
"minimatch": "^3.0.3",
@@ -73,7 +73,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
"@backstage/cli": "^0.13.1",
"@backstage/cli": "^0.13.2-next.0",
"@backstage/test-utils": "^0.2.4",
"@types/body-parser": "^1.19.0",
"@types/cookie-parser": "^1.4.2",
@@ -231,7 +231,6 @@ export const createAtlassianProvider = (
});
return OAuthAdapter.fromConfig(globalConfig, provider, {
disableRefresh: true,
providerId,
tokenIssuer,
callbackUrl,
@@ -1,5 +1,12 @@
# @backstage/plugin-azure-devops-backend
## 0.3.3-next.0
### Patch Changes
- Updated dependencies
- @backstage/backend-common@0.10.7-next.0
## 0.3.2
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-azure-devops-backend",
"version": "0.3.2",
"version": "0.3.3-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -20,7 +20,7 @@
"clean": "backstage-cli clean"
},
"dependencies": {
"@backstage/backend-common": "^0.10.6",
"@backstage/backend-common": "^0.10.7-next.0",
"@backstage/config": "^0.1.13",
"@backstage/plugin-azure-devops-common": "^0.2.0",
"@types/express": "^4.17.6",
@@ -32,7 +32,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
"@backstage/cli": "^0.13.1",
"@backstage/cli": "^0.13.2-next.0",
"@types/supertest": "^2.0.8",
"supertest": "^6.1.6",
"msw": "^0.35.0"
+1 -1
View File
@@ -29,7 +29,7 @@
"clean": "backstage-cli clean"
},
"devDependencies": {
"@backstage/cli": "^0.13.1-next.0"
"@backstage/cli": "^0.13.2-next.0"
},
"files": [
"dist"
+8
View File
@@ -1,5 +1,13 @@
# @backstage/plugin-azure-devops
## 0.1.14-next.0
### Patch Changes
- Updated dependencies
- @backstage/core-components@0.8.8-next.0
- @backstage/plugin-catalog-react@0.6.14-next.0
## 0.1.13
### Patch Changes
+5 -5
View File
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-azure-devops",
"version": "0.1.13",
"version": "0.1.14-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -28,11 +28,11 @@
},
"dependencies": {
"@backstage/catalog-model": "^0.9.10",
"@backstage/core-components": "^0.8.7",
"@backstage/core-components": "^0.8.8-next.0",
"@backstage/core-plugin-api": "^0.6.0",
"@backstage/errors": "^0.2.0",
"@backstage/plugin-azure-devops-common": "^0.2.0",
"@backstage/plugin-catalog-react": "^0.6.13",
"@backstage/plugin-catalog-react": "^0.6.14-next.0",
"@backstage/theme": "^0.2.14",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -46,9 +46,9 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
"@backstage/cli": "^0.13.1",
"@backstage/cli": "^0.13.2-next.0",
"@backstage/core-app-api": "^0.5.2",
"@backstage/dev-utils": "^0.2.20",
"@backstage/dev-utils": "^0.2.21-next.0",
"@backstage/test-utils": "^0.2.4",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
+7
View File
@@ -1,5 +1,12 @@
# @backstage/plugin-badges-backend
## 0.1.18-next.0
### Patch Changes
- Updated dependencies
- @backstage/backend-common@0.10.7-next.0
## 0.1.17
### Patch Changes
+3 -3
View File
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-badges-backend",
"description": "A Backstage backend plugin that generates README badges for your entities",
"version": "0.1.17",
"version": "0.1.18-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -31,7 +31,7 @@
"clean": "backstage-cli clean"
},
"dependencies": {
"@backstage/backend-common": "^0.10.6",
"@backstage/backend-common": "^0.10.7-next.0",
"@backstage/catalog-client": "^0.5.5",
"@backstage/catalog-model": "^0.9.10",
"@backstage/config": "^0.1.13",
@@ -45,7 +45,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
"@backstage/cli": "^0.13.1",
"@backstage/cli": "^0.13.2-next.0",
"@types/supertest": "^2.0.8",
"supertest": "^6.1.3"
},
+8
View File
@@ -1,5 +1,13 @@
# @backstage/plugin-badges
## 0.2.22-next.0
### Patch Changes
- Updated dependencies
- @backstage/core-components@0.8.8-next.0
- @backstage/plugin-catalog-react@0.6.14-next.0
## 0.2.21
### Patch Changes
+5 -5
View File
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-badges",
"description": "A Backstage plugin that generates README badges for your entities",
"version": "0.2.21",
"version": "0.2.22-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -28,10 +28,10 @@
},
"dependencies": {
"@backstage/catalog-model": "^0.9.10",
"@backstage/core-components": "^0.8.7",
"@backstage/core-components": "^0.8.8-next.0",
"@backstage/core-plugin-api": "^0.6.0",
"@backstage/errors": "^0.2.0",
"@backstage/plugin-catalog-react": "^0.6.13",
"@backstage/plugin-catalog-react": "^0.6.14-next.0",
"@backstage/theme": "^0.2.14",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -43,9 +43,9 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
"@backstage/cli": "^0.13.1",
"@backstage/cli": "^0.13.2-next.0",
"@backstage/core-app-api": "^0.5.2",
"@backstage/dev-utils": "^0.2.20",
"@backstage/dev-utils": "^0.2.21-next.0",
"@backstage/test-utils": "^0.2.4",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
+12
View File
@@ -1,5 +1,17 @@
# @backstage/plugin-bazaar-backend
## 0.1.9-next.0
### Patch Changes
- 2441d1cf59: chore(deps): bump `knex` from 0.95.6 to 1.0.2
This also replaces `sqlite3` with `@vscode/sqlite3` 5.0.7
- Updated dependencies
- @backstage/backend-common@0.10.7-next.0
- @backstage/backend-test-utils@0.1.17-next.0
## 0.1.8
### Patch Changes
+5 -5
View File
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-bazaar-backend",
"version": "0.1.8",
"version": "0.1.9-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -20,18 +20,18 @@
"clean": "backstage-cli clean"
},
"dependencies": {
"@backstage/backend-common": "^0.10.6",
"@backstage/backend-test-utils": "^0.1.16",
"@backstage/backend-common": "^0.10.7-next.0",
"@backstage/backend-test-utils": "^0.1.17-next.0",
"@backstage/config": "^0.1.13",
"@types/express": "^4.17.6",
"express": "^4.17.1",
"express-promise-router": "^4.1.0",
"knex": "^0.95.1",
"knex": "^1.0.2",
"winston": "^3.2.1",
"yn": "^4.0.0"
},
"devDependencies": {
"@backstage/cli": "^0.13.1"
"@backstage/cli": "^0.13.2-next.0"
},
"files": [
"dist",
+10
View File
@@ -1,5 +1,15 @@
# @backstage/plugin-bazaar
## 0.1.13-next.0
### Patch Changes
- Updated dependencies
- @backstage/cli@0.13.2-next.0
- @backstage/core-components@0.8.8-next.0
- @backstage/plugin-catalog-react@0.6.14-next.0
- @backstage/plugin-catalog@0.7.12-next.0
## 0.1.12
### Patch Changes
+7 -7
View File
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-bazaar",
"version": "0.1.12",
"version": "0.1.13-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -23,11 +23,11 @@
"dependencies": {
"@backstage/catalog-client": "^0.5.5",
"@backstage/catalog-model": "^0.9.10",
"@backstage/cli": "^0.13.1",
"@backstage/core-components": "^0.8.7",
"@backstage/cli": "^0.13.2-next.0",
"@backstage/core-components": "^0.8.8-next.0",
"@backstage/core-plugin-api": "^0.6.0",
"@backstage/plugin-catalog": "^0.7.11",
"@backstage/plugin-catalog-react": "^0.6.13",
"@backstage/plugin-catalog": "^0.7.12-next.0",
"@backstage/plugin-catalog-react": "^0.6.14-next.0",
"@date-io/luxon": "2.x",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -44,8 +44,8 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
"@backstage/cli": "^0.13.1",
"@backstage/dev-utils": "^0.2.20",
"@backstage/cli": "^0.13.2-next.0",
"@backstage/dev-utils": "^0.2.21-next.0",
"@testing-library/jest-dom": "^5.10.1",
"cross-fetch": "^3.0.6"
},
+8
View File
@@ -1,5 +1,13 @@
# @backstage/plugin-bitrise
## 0.1.25-next.0
### Patch Changes
- Updated dependencies
- @backstage/core-components@0.8.8-next.0
- @backstage/plugin-catalog-react@0.6.14-next.0
## 0.1.24
### Patch Changes

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