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
-
From the Backstage repo root, add the package to the app
yarn workspace app add @backstage-community/plugin-jfrog-artifactory
Configure the proxy
-
Edit app-config.yaml. Add a proxy endpoint that points to your Artifactory server
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
-
If you have more than one Artifactory instance, add one proxy block for each
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
-
Edit packages/app/src/components/catalog/EntityPage.tsx. Import the components from the plugin
import { isJfrogArtifactoryAvailable, JfrogArtifactoryPage, } from '@backstage-community/plugin-jfrog-artifactory';
-
Add a route in your service entity page layout so the tab shows up
// 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
-
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
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
Focus on using Backstage, rather than building and maintaining it.