Skip to content

Latest commit

 

History

History
2837 lines (2078 loc) · 88.2 KB

v1.8.0-changelog.md

File metadata and controls

2837 lines (2078 loc) · 88.2 KB

Release v1.8.0

Minor Changes

  • a7607b5413: BREAKING CHANGE: The UrlReader interface has been updated to require that readUrl is implemented. readUrl has previously been optional to implement but a warning has been logged when calling its predecessor read. The read method is now deprecated and will be removed in a future release.

Patch Changes

  • 88f99b8b13: Bumped tar dependency to ^6.1.12 in order to ensure Node.js v18 compatibility.
  • 55227712dd: Generated development HTTPS backend certificate is now checked for expiration date instead of file age.
  • d05e1841ce: This patch adds GiteaURLReader to the available classes. It currently only reads single files via gitea's public repos api
  • e6ced2446a: Change to using @keyv/memcache now that keyv-memcache is deprecated
  • 210a3b5668: Small update to fix compatibility with newer versions of the keyv library
  • cfb30b700c: Pin @kubernetes/client-node version to 0.17.0.
  • c1784a4980: Replaces in-code uses of GitHub with Github and deprecates old versions.
  • Updated dependencies

Minor Changes

  • 7539b36748: Added a new ESLint rule that restricts imports of Link from @material-ui

    The rule can be can be overridden in the following way:

    module.exports = require('@backstage/cli/config/eslint-factory')(__dirname, {
    +  restrictedImports: [
    +    { name: '@material-ui/core', importNames: [] },
    +    { name: '@material-ui/core/Link', importNames: [] },
    +  ],
    });
  • 384eaa2307: Switched tsconfig.json to target and support ES2021, in line with the bump to Node.js 16 & 18.

Patch Changes

  • e52d6ad861: Updated the backstage-cli so that the list-deprecations command is visible and also removed the "[EXPERIMENTAL]" tag.
  • 88f99b8b13: Bumped tar dependency to ^6.1.12 in order to ensure Node.js v18 compatibility.
  • df21bbd4ad: Removed googleAnalyticsTrackingId configSchema.
  • 286d474675: Minor update to the index.html template that updates the comment at the end to be more accurate.
  • 4c16213e7d: The built-in Jest configuration now always uses the Jest environments that are bundled with the CLI by default. This avoids a situation where Jest potentially picks up an incompatible version of the environment package from a different dependency in the project.
  • 4091c73e68: Updated @swc/core to version 1.3.9 which fixes a .tsx parser bug
  • 969a8444ea: Updated dependency esbuild to ^0.15.0.
  • 9c767e8f45: Updated dependency @svgr/plugin-jsx to 6.5.x. Updated dependency @svgr/plugin-svgo to 6.5.x. Updated dependency @svgr/rollup to 6.5.x. Updated dependency @svgr/webpack to 6.5.x.
  • Updated dependencies

Minor Changes

  • 9b737e5f2e: Updated the React Router wiring to make use of the new basename property of the router components in React Router v6 stable. To implement this, a new optional basename property has been added to the Router app component, which can be forwarded to the concrete router implementation in order to support this new behavior. This is done by default in any app that does not have a Router component override.
  • 127fcad26d: Deprecated the homepage config as the component that used it - HomepageTimer - has been removed and replaced by the HeaderWorldClock in the home plugin

Patch Changes

Minor Changes

  • fb3733e446: BREAKING: Removed the HomepageTimer as it has been replaced by the HeaderWorldClock in the Home plugin and was deprecated over a year ago.

Patch Changes

  • 5f695c219a: Set the searchTooltip to "Filter" to follow how the searchPlaceholder is set making this more consistent
  • f36127f5fe: Add optional step to SimpleStepper
  • b4fb5c8ecc: MissingAnnotationEmptyState now accepts either a string or an array of strings to support multiple missing annotations.
  • 7573b65232: Internal refactor of imports to avoid circular dependencies
  • 858986f6b6: Disable base path workaround in Link component when React Router v6 stable is used.
  • f905853ad6: Prefer using Link from @backstage/core-components rather than material-UI.
  • Updated dependencies

Minor Changes

  • a228f113d0: The app Router component now accepts an optional basename property.

Patch Changes

Minor Changes

  • d05e1841ce: This patch brings Gitea as a valid integration: target, via the ScmIntegration interface. It adds gitea to the relevant static properties (get integration by name, get integration by type) for plugins to be able to reference the same Gitea server.

  • c1784a4980: Replaces in-code uses of GitHub with Github and deprecates old versions.

    Deprecates:

    • getGitHubFileFetchUrl replaced by getGithubFileFetchUrl
    • GitHubIntegrationConfig replaced by GithubIntegrationConfig
    • GitHubIntegration replaced by GithubIntegration
    • readGitHubIntegrationConfig replaced by readGithubIntegrationConfig
    • readGitHubIntegrationConfigs replaced by readGithubIntegrationConfigs
    • replaceGitHubUrlType replaced by replaceGithubUrlType

Patch Changes

  • 7573b65232: Internal refactor of imports to avoid circular dependencies

  • a6d779d58a: Remove explicit default visibility at config.d.ts files.

    /**
     * @visibility backend
     */
  • Updated dependencies

Minor Changes

  • 4a75ce761c: Azure Sites (Apps & Functions) support for a given entity. View the current status of the site, quickly jump to site's Overview page, or Log Stream page.

Patch Changes

Minor Changes

  • 4a75ce761c: Azure Sites (Apps & Functions) support for a given entity. View the current status of the site, quickly jump to site's Overview page, or Log Stream page.

Patch Changes

Minor Changes

  • 4a75ce761c: Azure Sites (Apps & Functions) support for a given entity. View the current status of the site, quickly jump to site's Overview page, or Log Stream page.

Minor Changes

  • 28b39e0e0e: The limit prop of BazaarOverviewCard has been removed entirely, and instead replaced with a new optional boolean prop fullWidth. The BazaarOverviewCard now always use full height without fixed width. Also fixed problem with link to Bazaar.

Patch Changes

Minor Changes

  • 67fe5bc9a9: BREAKING: Support authenticated backends by including a server token for catalog requests. The constructor of GithubLocationAnalyzer now requires an instance of TokenManager to be supplied:

    ...
      builder.addLocationAnalyzers(
        new GitHubLocationAnalyzer({
          discovery: env.discovery,
          config: env.config,
    +     tokenManager: env.tokenManager,
        }),
      );
    ...
  • f64d66a45c: Added the ability for the GitHub discovery provider to validate that catalog files exist before emitting them.

    Users can now set the validateLocationsExist property to true in their GitHub discovery configuration to opt in to this feature. This feature only works with catalogPaths that do not contain wildcards.

    When validateLocationsExist is set to true, the GitHub discovery provider will retrieve the object from the repository at the provided catalogPath. If this file exists and is non-empty, then it will be emitted as a location for further processing. If this file does not exist or is empty, then it will not be emitted. Not emitting locations that do not exist allows for far fewer calls to the GitHub API to validate locations that do not exist.

Patch Changes

Minor Changes

  • 43afded227: Updated recharts to v2.0.0 and fixed typing issues

Patch Changes

Minor Changes

  • dc9da28abd: Support events received via HTTP endpoints at plugin-events-backend.

    The plugin provides an event publisher HttpPostIngressEventPublisher which will allow you to receive events via HTTP endpoints POST /api/events/http/{topic} and will publish these to the used event broker.

    Using a provided custom validator, you can participate in the decision which events are accepted, e.g. by verifying the source of the request.

    Please find more information at https://github.com/backstage/backstage/tree/master/plugins/events-backend/README.md.

  • 7bbd2403a1: Adds a new backend plugin plugin-events-backend for managing events.

    plugin-events-node exposes interfaces which can be used by modules.

    plugin-events-backend-test-utils provides utilities which can be used while writing tests e.g. for modules.

    Please find more information at https://github.com/backstage/backstage/tree/master/plugins/events-backend/README.md.

Patch Changes

Minor Changes

Patch Changes

Minor Changes

Patch Changes

Minor Changes

Patch Changes

Minor Changes

Patch Changes

Minor Changes

Patch Changes

Minor Changes

Patch Changes

Minor Changes

Patch Changes

Minor Changes

  • dc9da28abd: Support events received via HTTP endpoints at plugin-events-backend.

    The plugin provides an event publisher HttpPostIngressEventPublisher which will allow you to receive events via HTTP endpoints POST /api/events/http/{topic} and will publish these to the used event broker.

    Using a provided custom validator, you can participate in the decision which events are accepted, e.g. by verifying the source of the request.

    Please find more information at https://github.com/backstage/backstage/tree/master/plugins/events-backend/README.md.

  • 7bbd2403a1: Adds a new backend plugin plugin-events-backend for managing events.

    plugin-events-node exposes interfaces which can be used by modules.

    plugin-events-backend-test-utils provides utilities which can be used while writing tests e.g. for modules.

    Please find more information at https://github.com/backstage/backstage/tree/master/plugins/events-backend/README.md.

Patch Changes

Minor Changes

  • ead285b9e4: BREAKING: Changed the casing of all exported types to have a lowercase "h" in "github". E.g. "GitHubIssuesPage" was renamed to "GithubIssuesPage". Please rename your imports where necessary.

Patch Changes

Minor Changes

  • 0697af30da: Added support for multiple responders in alert list, added new tab with list to support iLert resource 'service', added new tab with list to support iLert resource 'status page'

Patch Changes

Minor Changes

  • cbf5d11fdf: The Kubernetes errors when fetching pod metrics are now captured and returned to the frontend.

    • BREAKING The method fetchPodMetricsByNamespace in the interface KubernetesFetcher is changed to fetchPodMetricsByNamespaces. It now accepts a set of namespace strings and returns Promise<FetchResponseWrapper>.
    • Add the PodStatusFetchResponse to the FetchResponse union type.
    • Add NOT_FOUND to the KubernetesErrorTypes union type, the HTTP error with status code 404 will be mapped to this error.

Patch Changes

Minor Changes

  • 0b11500151: Updates the User and Group Profile cards to add the links from the UserEntity or the GroupEntity

Patch Changes

Minor Changes

  • e96274f1fe: Implemented the org-react plugin, with it's first component being: a GroupListPicker component that will give the user the ability to choose a group

Patch Changes

Minor Changes

  • edae17309e: Added props to override default Scaffolder page title, subtitle and pageTitleOverride. Routes like rootRouteRef, selectedTemplateRouteRef, nextRouteRef, nextSelectedTemplateRouteRef were made public and can be used in your app (e.g. in custom TemplateCard component).

Patch Changes

  • 580285787d: The create and click analytics events are now also captured on the "next" version of the component creation page.

  • 4830a3569f: Basic analytics instrumentation is now in place:

    • As users make their way through template steps, a click event is fired, including the step number.
    • After a user clicks "Create" a create event is fired, including the name of the software that was just created. The template used at creation is set on the entityRef context key.
  • 94b7ca9c6d: Updated to use @rjsf packages of version ^5.0.0-beta.12

  • 87840c8c6c: Fixed tiny grammar error in EntityNamePicker. The first letter of the description is now capitalized.

  • 3b3fc3cc3c: Fix formData not being present in the next version

  • b2bb48a6f4: Fix the return type for the createNextScaffodlerFieldExtension type as before it wasn't a component type for the extension

  • f905853ad6: Prefer using Link from @backstage/core-components rather than material-UI.

  • Updated dependencies

Minor Changes

  • ea14eb62a2: Added a set of default Prometheus metrics around scaffolding. See below for a list of metrics and an explanation of their labels:

    • scaffolder_task_count: Tracks successful task runs.

      Labels:

      • template: The entity ref of the scaffolded template
      • user: The entity ref of the user that invoked the template run
      • result: A string describing whether the task ran successfully, failed, or was skipped
    • scaffolder_task_duration: a histogram which tracks the duration of a task run

      Labels:

      • template: The entity ref of the scaffolded template
      • result: A boolean describing whether the task ran successfully
    • scaffolder_step_count: a count that tracks each step run

      Labels:

      • template: The entity ref of the scaffolded template
      • step: The name of the step that was run
      • result: A string describing whether the task ran successfully, failed, or was skipped
    • scaffolder_step_duration: a histogram which tracks the duration of each step run

      Labels:

      • template: The entity ref of the scaffolded template
      • step: The name of the step that was run
      • result: A string describing whether the task ran successfully, failed, or was skipped

    You can find a guide for running Prometheus metrics here: https://github.com/backstage/backstage/blob/master/contrib/docs/tutorials/prometheus-metrics.md

  • 5921b5ce49: - The GitLab Project ID for the publish:gitlab:merge-request action is now passed through the query parameter project in the repoUrl. It still allows people to not use the projectid and use the repoUrl with the owner and repo query parameters instead. This makes it easier to publish to repositories instead of writing the full path to the project.

  • 5025d2e8b6: Adds the ability to pass (an optional) array of strings that will be applied to the newly scaffolded repository as topic labels.

Patch Changes

Minor Changes

  • 786117e98a: Fix sonarqube annotation parsing. Add content page for Sonarqube. Removed the deprecated plugin export; please use sonarQubePlugin instead.

Patch Changes

Minor Changes

  • 34b772ef31: Use the routing key if it's available instead of team name when triggering incidents.

    BREAKING CHANGE: Before, the team name was used even if the routing key (with or without team) was used. Now, the routing key defined for the component will be used instead of the team name.

Patch Changes

Minor Changes

  • 5691baea69: Add ability to configure filters when using EntityListDocsGrid

    The following example will render two sections of cards grid:

    • One section for documentations tagged as recommended
    • One section for documentations tagged as runbook
    <EntityListDocsGrid groups={{[
      {
        title: "Recommended Documentation",
        filterPredicate: entity =>
          entity?.metadata?.tags?.includes('recommended') ?? false,
      },
      {
        title: "RunBooks Documentation",
        filterPredicate: entity =>
          entity?.metadata?.tags?.includes('runbook') ?? false,
      }
    ]}} />
  • 63705e73d9: Hide document description if not provided

  • 847fc588a6: Updated TechDocs header to include label for source code icon and updated label to reflect Kind name

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

  • 58502ec285: Updated dependency jscodeshift to ^0.14.0.
  • Updated dependencies

Patch Changes

Patch Changes

Patch Changes

  • f1c3cdfb2d: Bumped create-app version.

  • df21bbd4ad: The Analytics API is the recommended way to track usage in Backstage; an optionally installable Google Analytics module has superseded the old app.googleAnalyticsTrackingId config and its corresponding script tags in packages/app/public/index.html.

    For an existing installation where you want to remove the redundant app.googleAnalyticsTrackingId, you should make the following adjustment to packages/app/public/index.html:

        <title><%= config.getString('app.title') %></title>
    -   <% if (config.has('app.googleAnalyticsTrackingId')) { %>
    -   <script
    -       async
    -       src="https://www.googletagmanager.com/gtag/js?id=<%= config.getString('app.googleAnalyticsTrackingId') %>"
    -   ></script>
    -   <script>
    -       window.dataLayer = window.dataLayer || [];
    -       function gtag() {
    -       dataLayer.push(arguments);
    -       }
    -       gtag('js', new Date());
    -       gtag(
    -       'config',
    -       '<%= config.getString("app.googleAnalyticsTrackingId") %>',
    -       );
    -   </script>
    -   <% } %>
    </head>

    Additionally, you should make the following adjustment to app-config.yaml:

    app:
      title: Backstage Example App
      baseUrl: http://localhost:3000
    - googleAnalyticsTrackingId: # UA-000000-0
  • 4091c73e68: Updated @swc/core to v1.3.9 which fixes a .tsx parser bug. You may want to run yarn backstage-cli versions:bump to get on latest version including the CLI itself.

  • 80bfac5266: Updated the create-app command to no longer require Git to be installed and configured. A git repository will only be initialized if possible and if not already in an git repository.

  • 286d474675: The build script in the root package.json has been split into two separate scripts, build:backend and build:all. This is to more accurately reflect what is being built, to avoid confusion.

    If you want to build the project for a production deployment, you will want to use build:backend, as this builds both the frontend and backend package. If you are not using the app-backend plugin you will want to add your own build:frontend script, to which you can pass additional configuration parameters if needed.

    The build:all script is useful if you simply want to check that it is possible to build all packages in the project. This might be useful as a CI check, but is generally unnecessary.

    If you want to publish the packages in your repository you can add a build:packages script that calls backstage-cli repo build. This will skip the frontend and backend packages builds, as those are quite time consuming.

    To apply these changes to an existing project, make the following change to the root package.json file:

    -    "build": "backstage-cli repo build --all",
    +    "build:backend": "yarn workspace backend build",
    +    "build:all": "backstage-cli repo build --all",

    There are also a couple of places where documentation has been updated, see the upgrade helper for a full list of changes.

  • 384eaa2307: Switched Node.js version to support version 16 & 18, rather than 14 & 16. To switch the Node.js version in your own project, apply the following change to the root package.json:

       "engines": {
    -    "node": "14 || 16"
    +    "node": "16 || 18"
       },

    As well as the following change to packages/app/package.json:

    -    "@types/node": "^14.14.32",
    +    "@types/node": "^16.11.26",
  • f905853ad6: Prefer using Link from @backstage/core-components rather than material-UI.

  • 864c876e57: Fixed incorrect comments in the templated app-config.yaml and app-config.production.yaml. The backend.listen directive is not in fact needed to override the backend.baseUrl, the backend listens to all interfaces by default. The configuration has also been updated to listen to all interfaces, rather than just IPv4 ones, as this is required for Node.js v18. The production configuration now also shows the option to specify backend.listen as a single string.

    To apply this changes to an existing app, make the following change to app-config.yaml:

    -    # Uncomment the following host directive to bind to all IPv4 interfaces and
    -    # not just the baseUrl hostname.
    -    # host: 0.0.0.0
    +    # Uncomment the following host directive to bind to specific interfaces
    +    # host: 127.0.0.1

    And the following change to app-config.production.yaml:

    -  listen:
    -    port: 7007
    -    # The following host directive binds to all IPv4 interfaces when its value
    -    # is "0.0.0.0". This is the most permissive setting. The right value depends
    -    # on your specific deployment. If you remove the host line entirely, the
    -    # backend will bind on the interface that corresponds to the backend.baseUrl
    -    # hostname.
    -    host: 0.0.0.0
    +  # The listener can also be expressed as a single <host>:<port> string. In this case we bind to
    +  # all interfaces, the most permissive setting. The right value depends on your specific deployment.
    +  listen: ':7007'
  • Updated dependencies

Patch Changes

Patch Changes

Patch Changes

Patch Changes

  • a4496131fa: Added a fallback that fetches manifests from https://raw.githubusercontent.com if https://versions.backstage.io is unavailable.

Patch Changes

Patch Changes

Patch Changes

  • 30e43717c7: Added the HumanDuration type, moved here from @backstage/backend-tasks. This type matches the Duration.fromObject form of luxon.

Patch Changes

  • e70984325d: Updated the value created by createVersionedValueMap to give it an extra hidden property that makes it easier to inspect during debugging.

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

  • 989731cabf: 1. Added a new column in the table to quickly view the latest DAG runs, plus a link to it if you want to have a deeper look. 2. Table columns are togglable 3. Set hidden columns 4. Fixed bug with turning on/off the DAGs
  • Updated dependencies

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

  • d089fbe7dc: Add interfaces for Bitbucket Cloud (webhook) events.
  • Updated dependencies

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

  • d089fbe7dc: Handle Bitbucket Cloud repo:push events at the BitbucketCloudEntityProvider by subscribing to the topic bitbucketCloud.repo:push.

    Implements EventSubscriber to receive events for the topic bitbucketCloud.repo:push.

    On repo:push, the affected repository will be refreshed. This includes adding new Location entities, refreshing existing ones, and removing obsolete ones.

    To support this, a new annotation bitbucket.org/repo-url was added to Location entities.

    A full refresh will require 1 API call to Bitbucket Cloud to discover all catalog files. When we handle one repo:push event, we also need 1 API call in order to know which catalog files exist. This may lead to more discovery-related API calls (code search). The main cause for hitting the rate limits are Locations refresh-related operations.

    A reduction of total API calls to reduce the rate limit issues can only be achieved in combination with

    1. reducing the full refresh frequency (e.g., to monthly)
    2. reducing the frequency of general Location refresh operations by the processing loop

    For (2.), it is not possible to reduce the frequency only for Bitbucket Cloud-related Locations though.

    Further optimizations might be required to resolve the rate limit issue.

    Installation and Migration

    Please find more information at https://backstage.io/docs/integrations/bitbucketCloud/discovery, in particular the section about "Installation with Events Support".

    In case of the new backend-plugin-api (alpha) the module will take care of registering itself at both.

  • Updated dependencies

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

  • da0bf25d1a: Preserve graph options and increment maxDepth by 1.

    The change will preserve options used at the CatalogGraphCard (displayed at the entity page) and additionally, increments the maxDepth option by 1 to increase the scope slightly compared to the graph already seen by the users.

    The default for maxDepth at CatalogGraphCard is 1.

  • 21d84ef332: feat: Enable theme overrides for components in catalog-graph plugin

  • Updated dependencies

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

  • cfb30b700c: Pin @kubernetes/client-node version to 0.17.0.

  • cbf5d11fdf: The Kubernetes errors when fetching pod metrics are now captured and returned to the frontend.

    • BREAKING The method fetchPodMetricsByNamespace in the interface KubernetesFetcher is changed to fetchPodMetricsByNamespaces. It now accepts a set of namespace strings and returns Promise<FetchResponseWrapper>.
    • Add the PodStatusFetchResponse to the FetchResponse union type.
    • Add NOT_FOUND to the KubernetesErrorTypes union type, the HTTP error with status code 404 will be mapped to this error.
  • Updated dependencies

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes

Patch Changes