backstage-showcase icon indicating copy to clipboard operation
backstage-showcase copied to clipboard

[WIP] add install method of plugin from container registry

Open durandom opened this issue 6 months ago • 6 comments

Description

Adds support for loading plugins packaged inside OCI images.

Rework of #1469

Instead of the oras python library, which does not work out of the box with ghcr or docker registries (due to authentication and requesting temporary tokens for auth), this PR uses skopeo

The image is downloaded only once, even if it contains multiple plugins. We're still assuming there's only one layer in the image and only inspect the first layer.

config example

    plugins:
      - disabled: false
        package: >-
          oci://quay.io/tkral/simple-chat:v0.0.1!internal-backstage-plugin-simple-chat-backend-dynamic
      - disabled: false
        package: >-
          oci://quay.io/tkral/simple-chat:v0.0.1!internal-backstage-plugin-simple-chat
        pluginConfig:
          dynamicPlugins:
            frontend:
              internal.backstage-plugin-simple-chat:
                appIcons:
                  - importName: ChatIcon
                    name: chatIcon
                dynamicRoutes:
                  - importName: SimpleChatPage
                    menuItem:
                      icon: chatIcon
                      text: Simple Chat
                    path: /simple-chat

PR acceptance criteria

Please make sure that the following steps are complete:

  • [ ] GitHub Actions are completed and successful
  • [ ] Unit Tests are updated and passing
  • [ ] E2E Tests are updated and passing
  • [ ] Documentation is updated if necessary (requirement for new features)
  • [ ] Add a screenshot if the change is UX/UI related

Signed-off-by: Marcel Hild [email protected]

durandom avatar Aug 13 '24 08:08 durandom