Container Registry for Artifactory logo

Backstage Container Image Registry for JFrog Artifactory Plugin

Created by Red Hat

Container Image Registry for JFrog Artifactory lets you see your container images from Artifactory inside Backstage. It adds a tab to an entity page so engineers can browse images tied to that component. You can view tags, repositories, the manifest, last modified, and size. This keeps image context close to your code and docs. It reduces switching between portals. It works well in shops that already use Artifactory for container storage.

The plugin helps with common tasks in delivery. Check the latest tag before a deploy. Trace a running image back to its repo and manifest. Compare image sizes over time to spot bloat. Confirm that a service points at the right image. Teams with several Artifactory instances can surface images for each service in a consistent way. This gives a simple view of image health across your catalog.You can find it in use across vendor portals.

Installation Instructions

These instructions apply to self-hosted Backstage only.

Install the plugin

  1. From the Backstage repo root, add the package to the app

    Copy
    yarn workspace app add @backstage-community/plugin-jfrog-artifactory

Configure the proxy

  1. Edit app-config.yaml. Add a proxy endpoint that points to your Artifactory server

    Copy
    proxy:
      endpoints:
        '/jfrog-artifactory/api':
          target: 'http://<hostname>:8082' # or https://<customer>.jfrog.io
          headers:
            # Authorization: 'Bearer <YOUR TOKEN>'
          # Change to "false" in case of using self hosted artifactory instance with a self-signed certificate
          secure: true
  2. If you have more than one Artifactory instance, add one proxy block for each

    Copy
    proxy:
      endpoints:
        '/jfrog-instance1':
          target: 'https://<hostname1>'
          # headers, secure, and other options for instance 1
        '/jfrog-instance2':
          target: 'https://<hostname2>'
          # headers, secure, and other options for instance 2

    For self hosted with a self signed certificate set secure to false.

Add the Jfrog Artifactory tab to the entity page

  1. Edit packages/app/src/components/catalog/EntityPage.tsx. Import the components from the plugin

    Copy
    import {
      isJfrogArtifactoryAvailable,
      JfrogArtifactoryPage,
    } from '@backstage-community/plugin-jfrog-artifactory';
  2. Add a route in your service entity page layout so the tab shows up

    Copy
    // packages/app/src/components/catalog/EntityPage.tsx
    
    import React from 'react';
    import { EntityLayout } from '@backstage/plugin-catalog';
    import {
      isJfrogArtifactoryAvailable,
      JfrogArtifactoryPage,
    } from '@backstage-community/plugin-jfrog-artifactory';
    
    const serviceEntityPage = (
      <EntityLayout>
        {/* other routes */}
        <EntityLayout.Route
          if={isJfrogArtifactoryAvailable}
          path="/jfrog-artifactory"
          title="Jfrog Artifactory"
        >
          <JfrogArtifactoryPage />
        </EntityLayout.Route>
      </EntityLayout>
    );
    
    export default serviceEntityPage;

Annotate your entities

  1. In each catalog entity that should show image data, add the required annotations. Use the proxy target path only when you have more than one instance

    Copy
    apiVersion: backstage.io/v1alpha1
    kind: Component
    metadata:
      name: my-service
      annotations:
        jfrog-artifactory/image-name: '<IMAGE-NAME>'
        # Only needed when you configured multiple instances above
        jfrog-artifactory/target-proxy: '/<PROXY-TARGET>' # for example /jfrog-instance1
    spec:
      type: service
      owner: team-a
      lifecycle: production

Backend setup

  • This plugin is frontend only
  • There is no backend package to install for the classic backend
  • There is no backend package to install for the new backend system
  • The proxy configuration in app-config.yaml is the only backend change you need

Where the UI shows up

  • Open a component page in the catalog
  • You will see a Jfrog Artifactory tab for entities with the annotations above

Changelog

This changelog is produced from commits made to the Container Registry for Artifactory plugin since a year ago, and based on the code located here. It may not contain information about all commits. Releases and version bumps are intentionally omitted. This changelog is generated by AI.

Breaking changes

None

Features

  • Add optional support for multiple Artifactory instances using an entity annotation to pick the target instance #4347 merged 3 months ago

Improvements

  • Switch date formatting to Luxon for consistent display across the plugin no API change #4375 merged 2 months ago

Bug fixes

  • Replace internal formatByteSize usage with a local implementation using the filesize library output stays the same #4252 merged 3 months ago

Documentation

  • Update README and remove an unused README in the workspace #4286 merged 3 months ago

Maintenance

  • Remove a dev dependency on the Red Hat Developer Hub theme impacts only the dev app #4397 merged 3 months ago
  • Clean up support keywords and lifecycle keywords in plugin metadata #4302 merged 3 months ago
  • Clean up historical vendor and Janus references in package files #3476 merged 6 months ago
  • Fix report warnings and remove unnecessary files #2083 merged 10 months ago

Compatibility

  • Bump Backstage to 1.34.2 and remove the spotify prettier config #2525 merged 9 months ago

Dependencies

  • Update testing library jest dom to 6.8.0 #5252 merged 3 weeks ago
  • Update testing library jest dom to 6.7.0 #4988 merged 1 month ago
  • Update testing library jest dom to 6.6.4 #4843 merged 2 months ago
  • Update testing library jest dom to 6.6.3 #1872 merged 10 months ago
  • Update testing library user event to 14.6.1 #2940 merged 7 months ago
  • Update types for Node to 18.19.68 #2092 merged 10 months ago
  • Update Red Hat Developer Hub theme to 0.4.0 #1750 merged 10 months ago
  • Update msw to 1.3.5 #1907 merged 11 months ago
  • Remove unused dependencies in the plugin workspace #3439 merged 6 months ago
  • Update repo tools to cut false positives in unused code reports #3018 merged 7 months ago
  • Update shared react library to 2.16.0 with a newer Kubernetes client #2871 merged 8 months ago

Set up Backstage in minutes with Roadie