plugin(jfrog-artifactory): initial migration of jfrog-artifactory plu… (#1349)

* plugin(jfrog-artifactory): initial migration of jfrog-artifactory plugin from janus-idp/backstage-plugins

The [jfrog-artifactory](https://github.com/janus-idp/backstage-plugins/tree/main/plugins/jfrog-artifactory) plugin from the [janus-idp/backstage-plugins](https://github.com/janus-idp/backstage-plugins) repository was migrated to the [community plugins](https://github.com/backstage/community-plugins/tree/main), based on commit 0c7c7f4a.
The migration was performed by following the manual migration steps outlined in the [Community Plugins CONTRIBUTING guide](https://github.com/backstage/community-plugins/blob/main/CONTRIBUTING.md#migrating-a-plugin).

Signed-off-by: Beth Griggs <bethanyngriggs@gmail.com>

* fixup! yarn repo fix

Signed-off-by: Beth Griggs <bethanyngriggs@gmail.com>

* meta: add CODEOWNER

Signed-off-by: Beth Griggs <bethanyngriggs@gmail.com>

* fixup! rename app-config.janus-idp.yaml

Signed-off-by: Beth Griggs <bethanyngriggs@gmail.com>

---------

Signed-off-by: Beth Griggs <bethanyngriggs@gmail.com>
This commit is contained in:
Bethany Griggs 2024-10-08 16:47:26 +01:00 committed by GitHub
parent caa9401602
commit a696ba29ef
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
43 changed files with 28775 additions and 0 deletions

1
.github/CODEOWNERS vendored
View File

@ -25,6 +25,7 @@ yarn.lock @backstage/community-plugins
/workspaces/fossa @backstage/community-plugins-maintainers @backstage/sda-se-reviewers
/workspaces/git-release-manager @backstage/community-plugins-maintainers @erikengervall
/workspaces/github-pull-requests-board @backstage/community-plugins-maintainers @gregorytalita
/workspaces/jfrog-artifactory @backstage/community-plugins-maintainers @BethGriggs
/workspaces/kafka @backstage/community-plugins-maintainers @andrewthauer
/workspaces/linguist @backstage/community-plugins-maintainers @awanlin
/workspaces/nexus-repository-manager @backstage/community-plugins-maintainers @schultzp2020

View File

@ -0,0 +1,8 @@
# Changesets
Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
with multi-package repos, or single-package repos to help you version and publish your code. You can
find the full documentation for it [in our repository](https://github.com/changesets/changesets)
We have a quick list of common questions to get you started engaging with this project in
[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)

View File

@ -0,0 +1,6 @@
---
'@backstage-community/plugin-jfrog-artifactory': patch
---
The [jfrog-artifactory](https://github.com/janus-idp/backstage-plugins/tree/main/plugins/jfrog-artifactory) plugin from the [janus-idp/backstage-plugins](https://github.com/janus-idp/backstage-plugins) repository was migrated to the [community plugins](https://github.com/backstage/community-plugins/tree/main), based on commit 0c7c7f4a.
The migration was performed by following the manual migration steps outlined in the [Community Plugins CONTRIBUTING guide](https://github.com/backstage/community-plugins/blob/main/CONTRIBUTING.md#migrating-a-plugin).

View File

@ -0,0 +1,10 @@
{
"$schema": "https://unpkg.com/@changesets/config@3.0.0/schema.json",
"changelog": "@changesets/cli/changelog",
"commit": false,
"fixed": [],
"linked": [],
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch"
}

View File

@ -0,0 +1,8 @@
.git
.yarn/cache
.yarn/install-state.gz
node_modules
packages/*/src
packages/*/node_modules
plugins
*.local.yaml

View File

@ -0,0 +1 @@
playwright.config.ts

View File

@ -0,0 +1 @@
module.exports = require('../../.eslintrc.cjs');

54
workspaces/jfrog-artifactory/.gitignore vendored Normal file
View File

@ -0,0 +1,54 @@
# macOS
.DS_Store
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
# Coverage directory generated when running tests with coverage
coverage
# Dependencies
node_modules/
# Yarn 3 files
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
# Node version directives
.nvmrc
# dotenv environment variables file
.env
.env.test
# Build output
dist
dist-types
# Temporary change files created by Vim
*.swp
# MkDocs build output
site
# Local configuration files
*.local.yaml
# Sensitive credentials
*-credentials.yaml
# vscode database functionality support files
*.session.sql
# E2E test reports
e2e-test-report/

View File

@ -0,0 +1,5 @@
dist
dist-types
coverage
.vscode
.eslintrc.js

View File

@ -0,0 +1,16 @@
# [Backstage](https://backstage.io)
This is your newly scaffolded Backstage App, Good Luck!
To start the app, run:
```sh
yarn install
yarn dev
```
To generate knip reports for this app, run:
```sh
yarn backstage-repo-tools knip-reports
```

View File

@ -0,0 +1 @@
{ "version": "1.31.1" }

View File

@ -0,0 +1,13 @@
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: jfrog-artifactory
description: An example of a Backstage application.
# Example for optional annotations
# annotations:
# github.com/project-slug: backstage/backstage
# backstage.io/techdocs-ref: dir:.
spec:
type: website
owner: john@example.com
lifecycle: experimental

View File

@ -0,0 +1,65 @@
{
"name": "@internal/jfrog-artifactory",
"version": "1.0.0",
"private": true,
"engines": {
"node": "18 || 20"
},
"scripts": {
"tsc": "tsc",
"tsc:full": "tsc --skipLibCheck true --incremental false",
"build:all": "backstage-cli repo build --all",
"build:api-reports": "yarn build:api-reports:only",
"build:api-reports:only": "backstage-repo-tools api-reports --allow-all-warnings -o ae-wrong-input-file-type --validate-release-tags",
"clean": "backstage-cli repo clean",
"test": "backstage-cli repo test",
"test:all": "backstage-cli repo test --coverage",
"fix": "backstage-cli repo fix",
"lint": "backstage-cli repo lint --since origin/main",
"lint:all": "backstage-cli repo lint",
"prettier:check": "prettier --check .",
"new": "backstage-cli new --scope @backstage-community",
"postinstall": "cd ../../ && yarn install"
},
"workspaces": {
"packages": [
"packages/*",
"plugins/*"
]
},
"repository": {
"type": "git",
"url": "https://github.com/backstage/community-plugins",
"directory": "workspaces/jfrog-artifactory"
},
"devDependencies": {
"@backstage/cli": "^0.27.1",
"@backstage/e2e-test-utils": "^0.1.1",
"@backstage/repo-tools": "^0.8.0",
"@changesets/cli": "^2.27.1",
"@spotify/prettier-config": "^12.0.0",
"node-gyp": "^9.0.0",
"prettier": "^2.3.2",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"typescript": "~5.3.0"
},
"dependencies": {
"knip": "^5.27.4"
},
"resolutions": {
"@types/react": "^18",
"@types/react-dom": "^18",
"@microsoft/api-extractor": "7.36.4"
},
"prettier": "@spotify/prettier-config",
"lint-staged": {
"*.{js,jsx,ts,tsx,mjs,cjs}": [
"eslint --fix",
"prettier --write"
],
"*.{json,md}": [
"prettier --write"
]
}
}

View File

@ -0,0 +1,9 @@
# The Plugins Folder
This is where your own plugins and their associated modules live, each in a
separate folder of its own.
If you want to create a new plugin here, go to your project root directory, run
the command `yarn new`, and follow the on-screen instructions.
You can also check out existing plugins on [the plugin marketplace](https://backstage.io/plugins)!

View File

@ -0,0 +1 @@
module.exports = require('@backstage/cli/config/eslint-factory')(__dirname);

View File

@ -0,0 +1,2 @@
- Bumped to 1.3.0 in main branch for next release 1.2.0
- Bumped to 1.8.0 in main branch for next release 1.3.0

View File

@ -0,0 +1,550 @@
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.11.1
- **@janus-idp/cli:** upgraded to 1.15.0
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.11.0
- **@janus-idp/cli:** upgraded to 1.14.0
### Dependencies
- **@janus-idp/cli:** upgraded to 1.13.2
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.10.3
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.10.2
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.10.1
### Dependencies
- **@janus-idp/cli:** upgraded to 1.13.1
## @janus-idp/backstage-plugin-jfrog-artifactory [1.7.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.7.2...@janus-idp/backstage-plugin-jfrog-artifactory@1.7.3) (2024-08-02)
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.10.0
## @janus-idp/backstage-plugin-jfrog-artifactory [1.7.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.7.1...@janus-idp/backstage-plugin-jfrog-artifactory@1.7.2) (2024-08-02)
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.10.0
## @janus-idp/backstage-plugin-jfrog-artifactory [1.7.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.7.0...@janus-idp/backstage-plugin-jfrog-artifactory@1.7.1) (2024-08-02)
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.10.0
## @janus-idp/backstage-plugin-jfrog-artifactory [1.7.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.6.0...@janus-idp/backstage-plugin-jfrog-artifactory@1.7.0) (2024-07-26)
### Features
- **deps:** update to backstage 1.29 ([#1900](https://github.com/janus-idp/backstage-plugins/issues/1900)) ([f53677f](https://github.com/janus-idp/backstage-plugins/commit/f53677fb02d6df43a9de98c43a9f101a6db76802))
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.9.0
## @janus-idp/backstage-plugin-jfrog-artifactory [1.6.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.5.1...@janus-idp/backstage-plugin-jfrog-artifactory@1.6.0) (2024-07-24)
### Features
- **deps:** update to backstage 1.28 ([#1891](https://github.com/janus-idp/backstage-plugins/issues/1891)) ([1ba1108](https://github.com/janus-idp/backstage-plugins/commit/1ba11088e0de60e90d138944267b83600dc446e5))
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.8.0
## @janus-idp/backstage-plugin-jfrog-artifactory [1.5.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.5.0...@janus-idp/backstage-plugin-jfrog-artifactory@1.5.1) (2024-06-19)
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.7.1
- **@janus-idp/cli:** upgraded to 1.11.1
## @janus-idp/backstage-plugin-jfrog-artifactory [1.5.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.4.12...@janus-idp/backstage-plugin-jfrog-artifactory@1.5.0) (2024-06-13)
### Features
- **deps:** update to backstage 1.27 ([#1683](https://github.com/janus-idp/backstage-plugins/issues/1683)) ([a14869c](https://github.com/janus-idp/backstage-plugins/commit/a14869c3f4177049cb8d6552b36c3ffd17e7997d))
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.7.0
- **@janus-idp/cli:** upgraded to 1.11.0
## @janus-idp/backstage-plugin-jfrog-artifactory [1.4.12](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.4.11...@janus-idp/backstage-plugin-jfrog-artifactory@1.4.12) (2024-06-13)
### Dependencies
- **@janus-idp/cli:** upgraded to 1.10.1
## @janus-idp/backstage-plugin-jfrog-artifactory [1.4.11](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.4.10...@janus-idp/backstage-plugin-jfrog-artifactory@1.4.11) (2024-06-05)
### Dependencies
- **@janus-idp/cli:** upgraded to 1.10.0
## @janus-idp/backstage-plugin-jfrog-artifactory [1.4.10](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.4.9...@janus-idp/backstage-plugin-jfrog-artifactory@1.4.10) (2024-06-04)
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.6.4
## @janus-idp/backstage-plugin-jfrog-artifactory [1.4.9](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.4.8...@janus-idp/backstage-plugin-jfrog-artifactory@1.4.9) (2024-06-03)
## @janus-idp/backstage-plugin-jfrog-artifactory [1.4.8](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.4.7...@janus-idp/backstage-plugin-jfrog-artifactory@1.4.8) (2024-06-03)
### Dependencies
- **@janus-idp/cli:** upgraded to 1.9.0
## @janus-idp/backstage-plugin-jfrog-artifactory [1.4.7](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.4.6...@janus-idp/backstage-plugin-jfrog-artifactory@1.4.7) (2024-05-31)
## @janus-idp/backstage-plugin-jfrog-artifactory [1.4.6](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.4.5...@janus-idp/backstage-plugin-jfrog-artifactory@1.4.6) (2024-05-29)
### Dependencies
- **@janus-idp/cli:** upgraded to 1.8.10
## @janus-idp/backstage-plugin-jfrog-artifactory [1.4.5](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.4.4...@janus-idp/backstage-plugin-jfrog-artifactory@1.4.5) (2024-05-29)
### Bug Fixes
- **release:** change problematic plugins to private ([#1738](https://github.com/janus-idp/backstage-plugins/issues/1738)) ([69176bd](https://github.com/janus-idp/backstage-plugins/commit/69176bd75ccd842a313445e096223ecc339b655b))
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.6.3
- **@janus-idp/cli:** upgraded to 1.8.9
## @janus-idp/backstage-plugin-jfrog-artifactory [1.4.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.4.3...@janus-idp/backstage-plugin-jfrog-artifactory@1.4.4) (2024-05-29)
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.6.3
## @janus-idp/backstage-plugin-jfrog-artifactory [1.4.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.4.2...@janus-idp/backstage-plugin-jfrog-artifactory@1.4.3) (2024-05-17)
## @janus-idp/backstage-plugin-jfrog-artifactory [1.4.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.4.1...@janus-idp/backstage-plugin-jfrog-artifactory@1.4.2) (2024-05-16)
## @janus-idp/backstage-plugin-jfrog-artifactory [1.4.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.4.0...@janus-idp/backstage-plugin-jfrog-artifactory@1.4.1) (2024-05-16)
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.6.2
- **@janus-idp/cli:** upgraded to 1.8.7
## @janus-idp/backstage-plugin-jfrog-artifactory [1.4.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.3.6...@janus-idp/backstage-plugin-jfrog-artifactory@1.4.0) (2024-05-14)
### Features
- **deps:** use RHDH themes in the backstage app and dev pages ([#1480](https://github.com/janus-idp/backstage-plugins/issues/1480)) ([8263bf0](https://github.com/janus-idp/backstage-plugins/commit/8263bf099736cbb0d0f2316082d338ba81fa6927))
## @janus-idp/backstage-plugin-jfrog-artifactory [1.3.6](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.3.5...@janus-idp/backstage-plugin-jfrog-artifactory@1.3.6) (2024-05-09)
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.6.1
- **@janus-idp/cli:** upgraded to 1.8.6
## @janus-idp/backstage-plugin-jfrog-artifactory [1.3.5](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.3.4...@janus-idp/backstage-plugin-jfrog-artifactory@1.3.5) (2024-05-02)
### Dependencies
- **@janus-idp/cli:** upgraded to 1.8.5
## @janus-idp/backstage-plugin-jfrog-artifactory [1.3.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.3.3...@janus-idp/backstage-plugin-jfrog-artifactory@1.3.4) (2024-05-02)
### Dependencies
- **@janus-idp/cli:** upgraded to 1.8.4
## @janus-idp/backstage-plugin-jfrog-artifactory [1.3.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.3.2...@janus-idp/backstage-plugin-jfrog-artifactory@1.3.3) (2024-04-30)
### Dependencies
- **@janus-idp/cli:** upgraded to 1.8.3
## @janus-idp/backstage-plugin-jfrog-artifactory [1.3.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.3.1...@janus-idp/backstage-plugin-jfrog-artifactory@1.3.2) (2024-04-30)
### Dependencies
- **@janus-idp/cli:** upgraded to 1.8.2
## @janus-idp/backstage-plugin-jfrog-artifactory [1.3.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.3.0...@janus-idp/backstage-plugin-jfrog-artifactory@1.3.1) (2024-04-25)
### Dependencies
- **@janus-idp/cli:** upgraded to 1.8.1
## @janus-idp/backstage-plugin-jfrog-artifactory [1.3.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.35...@janus-idp/backstage-plugin-jfrog-artifactory@1.3.0) (2024-04-15)
### Features
- checkPluginVersion.sh bump plugins for 1.2.0 release ([#1511](https://github.com/janus-idp/backstage-plugins/issues/1511)) ([73c6588](https://github.com/janus-idp/backstage-plugins/commit/73c6588adb7e8c20907b06f2a8ef248cfd4332e4))
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.6.0
- **@janus-idp/cli:** upgraded to 1.8.0
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.35](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.34...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.35) (2024-04-09)
### Dependencies
- **@janus-idp/cli:** upgraded to 1.7.10
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.34](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.33...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.34) (2024-04-09)
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.5.5
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.33](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.32...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.33) (2024-04-09)
### Dependencies
- **@janus-idp/cli:** upgraded to 1.7.9
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.32](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.31...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.32) (2024-04-08)
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.5.4
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.31](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.30...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.31) (2024-04-05)
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.5.4
- **@janus-idp/cli:** upgraded to 1.7.8
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.30](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.29...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.30) (2024-04-02)
### Dependencies
- **@janus-idp/cli:** upgraded to 1.7.7
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.29](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.28...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.29) (2024-03-29)
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.5.3
- **@janus-idp/cli:** upgraded to 1.7.6
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.28](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.27...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.28) (2024-03-04)
### Dependencies
- **@janus-idp/cli:** upgraded to 1.7.5
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.27](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.26...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.27) (2024-02-27)
### Dependencies
- **@janus-idp/cli:** upgraded to 1.7.4
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.26](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.25...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.26) (2024-02-26)
### Dependencies
- **@janus-idp/cli:** upgraded to 1.7.3
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.25](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.24...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.25) (2024-02-21)
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.5.2
- **@janus-idp/cli:** upgraded to 1.7.2
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.24](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.23...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.24) (2024-02-05)
### Dependencies
- **@janus-idp/cli:** upgraded to 1.7.1
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.23](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.22...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.23) (2024-02-02)
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.5.1
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.22](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.21...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.22) (2024-01-30)
### Dependencies
- **@janus-idp/cli:** upgraded to 1.7.0
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.21](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.20...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.21) (2024-01-30)
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.5.0
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.20](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.19...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.20) (2024-01-25)
### Dependencies
- **@janus-idp/cli:** upgraded to 1.6.0
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.19](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.18...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.19) (2024-01-17)
### Other changes
- **web-terminal:** remove TerminalComponent test race condition issue ([#1071](https://github.com/janus-idp/backstage-plugins/issues/1071)) ([05ee8dc](https://github.com/janus-idp/backstage-plugins/commit/05ee8dc8812c012217d7fc9de24cd86843ed9642)), closes [#1070](https://github.com/janus-idp/backstage-plugins/issues/1070)
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.4.0
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.18](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.17...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.18) (2024-01-16)
### Dependencies
- **@janus-idp/cli:** upgraded to 1.5.0
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.17](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.16...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.17) (2023-12-22)
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.3.0
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.16](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.15...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.16) (2023-12-20)
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.2.0
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.15](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.14...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.15) (2023-12-14)
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.1.0
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.14](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.13...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.14) (2023-12-07)
### Dependencies
- **@janus-idp/cli:** upgraded to 1.4.7
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.13](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.12...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.13) (2023-11-30)
### Dependencies
- **@janus-idp/cli:** upgraded to 1.4.6
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.12](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.11...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.12) (2023-11-23)
### Bug Fixes
- add config partials for dynamic frontend plugins ([#965](https://github.com/janus-idp/backstage-plugins/issues/965)) ([b01e55e](https://github.com/janus-idp/backstage-plugins/commit/b01e55e877278afc5de8d28a4c687a6989566bdc))
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.11](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.10...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.11) (2023-11-23)
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.0.1
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.10](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.9...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.10) (2023-11-22)
### Dependencies
- **@janus-idp/cli:** upgraded to 1.4.5
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.9](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.8...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.9) (2023-11-21)
### Bug Fixes
- sync versions in dynamic assets and publish derived packages as additional packages ([#963](https://github.com/janus-idp/backstage-plugins/issues/963)) ([7d0a386](https://github.com/janus-idp/backstage-plugins/commit/7d0a38609b4a18b54c75378a150e8b5c3ba8ff43))
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.8](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.7...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.8) (2023-11-20)
### Dependencies
- **@janus-idp/cli:** upgraded to 1.4.4
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.7](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.6...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.7) (2023-11-16)
### Dependencies
- **@janus-idp/cli:** upgraded to 1.4.3
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.6](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.5...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.6) (2023-11-13)
### Dependencies
- **@janus-idp/cli:** upgraded to 1.4.2
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.5](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.4...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.5) (2023-11-13)
### Dependencies
- **@janus-idp/cli:** upgraded to 1.4.1
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.3...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.4) (2023-11-07)
### Dependencies
- **@janus-idp/cli:** upgraded to 1.4.0
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.2...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.3) (2023-11-06)
### Bug Fixes
- **cli:** add default scalprum config ([#909](https://github.com/janus-idp/backstage-plugins/issues/909)) ([d74fc72](https://github.com/janus-idp/backstage-plugins/commit/d74fc72ab7e0a843da047c7b6570d8a6fbc068e1))
### Dependencies
- **@janus-idp/cli:** upgraded to 1.3.3
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.1...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.2) (2023-11-06)
### Documentation
- update frontend plugin docs to use EntityLayout instead of EntityPageLayout ([#907](https://github.com/janus-idp/backstage-plugins/issues/907)) ([aa91bba](https://github.com/janus-idp/backstage-plugins/commit/aa91bba4c7a43de416258eb019724e21c7cf4bb8))
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.2.0...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.1) (2023-11-02)
### Dependencies
- **@janus-idp/cli:** upgraded to 1.3.2
## @janus-idp/backstage-plugin-jfrog-artifactory [1.2.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.1.6...@janus-idp/backstage-plugin-jfrog-artifactory@1.2.0) (2023-11-01)
### Features
- **dynamic-plugins:** publish dynamic assets for all frontend plugins ([#896](https://github.com/janus-idp/backstage-plugins/issues/896)) ([dcfb0ac](https://github.com/janus-idp/backstage-plugins/commit/dcfb0ac56769c82f6b8b2cef2726251e0b60c375))
## @janus-idp/backstage-plugin-jfrog-artifactory [1.1.6](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.1.5...@janus-idp/backstage-plugin-jfrog-artifactory@1.1.6) (2023-10-23)
### Dependencies
- **@janus-idp/shared-react:** upgraded to 2.0.0
## @janus-idp/backstage-plugin-jfrog-artifactory [1.1.5](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.1.4...@janus-idp/backstage-plugin-jfrog-artifactory@1.1.5) (2023-10-19)
### Dependencies
- **@janus-idp/shared-react:** upgraded to 1.3.3
## @janus-idp/backstage-plugin-jfrog-artifactory [1.1.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.1.3...@janus-idp/backstage-plugin-jfrog-artifactory@1.1.4) (2023-10-16)
### Dependencies
- **@janus-idp/shared-react:** upgraded to 1.3.2
## @janus-idp/backstage-plugin-jfrog-artifactory [1.1.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.1.2...@janus-idp/backstage-plugin-jfrog-artifactory@1.1.3) (2023-09-22)
### Dependencies
- **@janus-idp/shared-react:** upgraded to 1.3.1
## @janus-idp/backstage-plugin-jfrog-artifactory [1.1.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.1.1...@janus-idp/backstage-plugin-jfrog-artifactory@1.1.2) (2023-09-06)
### Documentation
- **jfrog:** jfrog artifactory plugin documentation ([#708](https://github.com/janus-idp/backstage-plugins/issues/708)) ([078fd1c](https://github.com/janus-idp/backstage-plugins/commit/078fd1c9d7185792b38c59673d3d173eae6cebf2))
## @janus-idp/backstage-plugin-jfrog-artifactory [1.1.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.1.0...@janus-idp/backstage-plugin-jfrog-artifactory@1.1.1) (2023-09-05)
### Documentation
- **jfrog:** update README.md ([#696](https://github.com/janus-idp/backstage-plugins/issues/696)) ([425a09b](https://github.com/janus-idp/backstage-plugins/commit/425a09b212d1f4ee1fb43e3562d0dde589950249))
## @janus-idp/backstage-plugin-jfrog-artifactory [1.1.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.0.14...@janus-idp/backstage-plugin-jfrog-artifactory@1.1.0) (2023-08-14)
### Features
- **ts:** transpile each plugin separately ([#634](https://github.com/janus-idp/backstage-plugins/issues/634)) ([b94c4dc](https://github.com/janus-idp/backstage-plugins/commit/b94c4dc50ada328e5ce1bed5fb7c76f64607e1ee))
## @janus-idp/backstage-plugin-jfrog-artifactory [1.0.14](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.0.13...@janus-idp/backstage-plugin-jfrog-artifactory@1.0.14) (2023-07-25)
### Bug Fixes
- **plugins:** add bearer token to request headers when sending requests, authmiddleware issue ([#498](https://github.com/janus-idp/backstage-plugins/issues/498)) ([86881c3](https://github.com/janus-idp/backstage-plugins/commit/86881c37321d1b446f15ff59b2fcb8ebc8500786))
## @janus-idp/backstage-plugin-jfrog-artifactory [1.0.13](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.0.12...@janus-idp/backstage-plugin-jfrog-artifactory@1.0.13) (2023-07-25)
## @janus-idp/backstage-plugin-jfrog-artifactory [1.0.12](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.0.11...@janus-idp/backstage-plugin-jfrog-artifactory@1.0.12) (2023-06-26)
### Documentation
- **jfrog:** be explicit about JFrog SaaS target URI ([#451](https://github.com/janus-idp/backstage-plugins/issues/451)) ([2ca2d7a](https://github.com/janus-idp/backstage-plugins/commit/2ca2d7afe18a4f5d858e5a43c908228ef828792e))
## @janus-idp/backstage-plugin-jfrog-artifactory [1.0.11](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.0.10...@janus-idp/backstage-plugin-jfrog-artifactory@1.0.11) (2023-06-21)
### Documentation
- **jfrog:** adding admin sections in readme ([#474](https://github.com/janus-idp/backstage-plugins/issues/474)) ([36ba737](https://github.com/janus-idp/backstage-plugins/commit/36ba73717f5d7ae52968a1213d792a1f6a78bc1e))
## @janus-idp/backstage-plugin-jfrog-artifactory [1.0.10](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.0.9...@janus-idp/backstage-plugin-jfrog-artifactory@1.0.10) (2023-06-14)
### Other changes
- reorder imports via prettier ([#419](https://github.com/janus-idp/backstage-plugins/issues/419)) ([17f1e6a](https://github.com/janus-idp/backstage-plugins/commit/17f1e6a689bd793a619ec5e42e5cdda0998f78a5))
### Documentation
- update plugin README formatting ([#396](https://github.com/janus-idp/backstage-plugins/issues/396)) ([9b39056](https://github.com/janus-idp/backstage-plugins/commit/9b39056f6c66e9a6a0a5d0c4059420dff66db263)), closes [#295](https://github.com/janus-idp/backstage-plugins/issues/295) [#369](https://github.com/janus-idp/backstage-plugins/issues/369) [#295](https://github.com/janus-idp/backstage-plugins/issues/295) [#369](https://github.com/janus-idp/backstage-plugins/issues/369)
## @janus-idp/backstage-plugin-jfrog-artifactory [1.0.9](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.0.8...@janus-idp/backstage-plugin-jfrog-artifactory@1.0.9) (2023-05-30)
## @janus-idp/backstage-plugin-jfrog-artifactory [1.0.8](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.0.7...@janus-idp/backstage-plugin-jfrog-artifactory@1.0.8) (2023-05-30)
## @janus-idp/backstage-plugin-jfrog-artifactory [1.0.7](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.0.6...@janus-idp/backstage-plugin-jfrog-artifactory@1.0.7) (2023-05-18)
### Documentation
- update plugin READMEs ([#373](https://github.com/janus-idp/backstage-plugins/issues/373)) ([478560e](https://github.com/janus-idp/backstage-plugins/commit/478560e38cceaa40d976bccf4785956ed58b5221))
## @janus-idp/backstage-plugin-jfrog-artifactory [1.0.6](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.0.5...@janus-idp/backstage-plugin-jfrog-artifactory@1.0.6) (2023-05-17)
### Bug Fixes
- **deps:** update all non-major dependencies ([#358](https://github.com/janus-idp/backstage-plugins/issues/358)) ([086a9ed](https://github.com/janus-idp/backstage-plugins/commit/086a9ed839f3a6dd1460f0f87b71453a7ed62ea3))
## @janus-idp/backstage-plugin-jfrog-artifactory [1.0.5](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.0.4...@janus-idp/backstage-plugin-jfrog-artifactory@1.0.5) (2023-05-15)
## @janus-idp/backstage-plugin-jfrog-artifactory [1.0.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.0.3...@janus-idp/backstage-plugin-jfrog-artifactory@1.0.4) (2023-05-15)
## @janus-idp/backstage-plugin-jfrog-artifactory [1.0.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.0.2...@janus-idp/backstage-plugin-jfrog-artifactory@1.0.3) (2023-05-11)
### Bug Fixes
- **deps:** update all non-major dependencies ([#339](https://github.com/janus-idp/backstage-plugins/issues/339)) ([d19d96d](https://github.com/janus-idp/backstage-plugins/commit/d19d96de7b55c205e0f77528e476104c0685aad2))
## @janus-idp/backstage-plugin-jfrog-artifactory [1.0.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.0.1...@janus-idp/backstage-plugin-jfrog-artifactory@1.0.2) (2023-05-09)
### Other changes
- **deps:** update all non-major dependencies ([#333](https://github.com/janus-idp/backstage-plugins/issues/333)) ([dce0ea4](https://github.com/janus-idp/backstage-plugins/commit/dce0ea4a9b9f517bd864d39f0b364c68e6a2e143))
## @janus-idp/backstage-plugin-jfrog-artifactory [1.0.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-jfrog-artifactory@1.0.0...@janus-idp/backstage-plugin-jfrog-artifactory@1.0.1) (2023-05-04)
### Other changes
- **deps:** update all non-major dependencies ([#127](https://github.com/janus-idp/backstage-plugins/issues/127)) ([a9d359f](https://github.com/janus-idp/backstage-plugins/commit/a9d359f01448d1b9b4b4d3d9b087052fb6ff16b3))
## @janus-idp/backstage-plugin-jfrog-artifactory 1.0.0 (2023-04-13)
### Features
- **artifactory:** Rename to jfrog-artifactory ([#211](https://github.com/janus-idp/backstage-plugins/issues/211)) ([2c0ecaf](https://github.com/janus-idp/backstage-plugins/commit/2c0ecafb6fbf68aeb1646b37dc9f7565253261e8))
## @janus-idp/backstage-plugin-artifactory 1.0.0 (2023-03-29)
### Features
- **artifactory:** First funtional version of the plugin ([#198](https://github.com/janus-idp/backstage-plugins/issues/198)) ([b900593](https://github.com/janus-idp/backstage-plugins/commit/b900593f4ee7c0f7f40672acc3e64926eb381af9))

View File

@ -0,0 +1,11 @@
# Setting up the development environment for Jfrog Artifactory plugin
In [Backstage plugin terminology](https://backstage.io/docs/local-dev/cli-build-system#package-roles), this is a `frontend-plugin`. However it requires backend proxy to be available at all times. Development environment therefore requires you to run a backend instance as well. You can start a live dev session from the repository root using following commands concurrently:
```console
yarn start-backend
```
```console
yarn workspace @backstage-community/plugin-jfrog-artifactory run start
```

View File

@ -0,0 +1,84 @@
# Jfrog Artifactory plugin for Backstage
The Jfrog Artifactory plugin displays information about your container images within the Jfrog Artifactory registry.
## For administrators
### Installation and configuration
#### Procedure
1. Run the following command to install the Jfrog Artifactory plugin:
```console
yarn workspace app add @backstage-community/plugin-jfrog-artifactory
```
1. Set the proxy to the desired Artifactory server in the `app-config.yaml` file as follows:
```yaml title="app-config.yaml"
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
```
1. Enable the **JFROG ARTIFACTORY** tab on the entity view page in `packages/app/src/components/catalog/EntityPage.tsx`:
```ts title="packages/app/src/components/catalog/EntityPage.tsx"
/* highlight-add-start */
import {
isJfrogArtifactoryAvailable,
JfrogArtifactoryPage,
} from '@backstage-community/plugin-jfrog-artifactory';
/* highlight-add-end */
const serviceEntityPage = (
<EntityLayout>
// ...
{/* highlight-add-start */}
<EntityLayout.Route
if={isJfrogArtifactoryAvailable}
path="/jfrog-artifactory"
title="Jfrog Artifactory"
>
<JfrogArtifactoryPage />
</EntityLayout.Route>
{/* highlight-add-end */}
</EntityLayout>
);
```
1. Annotate your entity with the following annotations:
```yaml title="catalog-info.yaml"
metadata:
annotations:
'jfrog-artifactory/image-name': '<IMAGE-NAME>'
```
## For users
### Using the Jfrog Artifactory plugin in Backstage
Jfrog Artifactory is a front-end plugin that enables you to view the information about the container images that are available in your Jfrog Artifactory registry.
#### Prerequisites
- Your Backstage application is installed and running.
- You have installed the Jfrog Artifactory plugin. For installation and configuration steps, see [Installation and configuration](#installation-and-configuration).
#### Procedure
1. Open your Backstage application and select a component from the **Catalog** page.
1. Go to the **JFROG ARTIFACTORY** tab.
![jfrog-tab](./images/jfrog-plugin-user1.png)
The **JFROG ARTIFACTORY** tab contains a list of container images and related information, such as **VERSION**, **REPOSITORIES**, **MANIFEST**, **MODIFIED**, and **SIZE**.

View File

@ -0,0 +1,35 @@
## API Report File for "@backstage-community/plugin-jfrog-artifactory"
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
/// <reference types="react" />
import { BackstagePlugin } from '@backstage/core-plugin-api';
import { Entity } from '@backstage/catalog-model';
import { JSX as JSX_2 } from 'react';
import { RouteRef } from '@backstage/core-plugin-api';
// Warning: (ae-missing-release-tag) "isJfrogArtifactoryAvailable" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export const isJfrogArtifactoryAvailable: (entity: Entity) => boolean;
// Warning: (ae-missing-release-tag) "JfrogArtifactoryPage" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export const JfrogArtifactoryPage: () => JSX_2.Element;
// Warning: (ae-missing-release-tag) "jfrogArtifactoryPlugin" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export const jfrogArtifactoryPlugin: BackstagePlugin<
{
root: RouteRef<undefined>;
},
{},
{}
>;
// (No @packageDocumentation comment for this package)
```

View File

@ -0,0 +1,21 @@
proxy:
endpoints:
'/jfrog-artifactory/api':
target: ${ARTIFACTORY_URL}
headers:
Authorization: Bearer ${ARTIFACTORY_TOKEN}
# Change to "false" in case of using self hosted artifactory instance with a self-signed certificate
secure: true
dynamicPlugins:
frontend:
backstage-community.plugin-jfrog-artifactory:
mountPoints:
- mountPoint: entity.page.image-registry/cards
importName: JfrogArtifactoryPage
config:
layout:
gridColumn: 1 / -1
if:
anyOf:
- isJfrogArtifactoryAvailable

View File

@ -0,0 +1,49 @@
# https://backstage.io/docs/features/software-catalog/descriptor-format#kind-component
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: backstage-community-jfrog-artifactory
title: Jfrog Artifactory plugin
description: Jfrog Artifactory plugin for Backstage
annotations:
backstage.io/source-location: url:https://github.com/backstage/community-plugins/tree/main/workspaces/jfrog-artifactory
backstage.io/view-url: https://github.com/backstage/community-plugins/tree/main/workspaces/jfrog-artifactory/plugins/jfrog-artifactory/catalog-info.yaml
backstage.io/edit-url: https://github.com/backstage/community-plugins/edit/main/workspaces/jfrog-artifactory/plugins/jfrog-artifactory/catalog-info.yaml
github.com/project-slug: backstage/community-plugins
github.com/team-slug: backstage/community-plugins-maintainers
links:
- url: https://github.com/backstage/community-plugins/edit/main/workspaces/jfrog-artifactory
title: GitHub Source
icon: source
type: source
spec:
type: backstage-plugin
lifecycle: production
owner: owner-unknown
system: rhdh
subcomponentOf: backstage-community-jfrog-artifactory
---
# https://backstage.io/docs/features/software-catalog/descriptor-format#kind-component
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: backstage-community-jfrog-artifactory-frontend
title: '@backstage-community/plugin-jfrog-artifactory'
description: Jfrog Artifactory plugin for Backstage
annotations:
backstage.io/source-location: url:https://github.com/backstage/community-plugins/tree/main/workspaces/jfrog-artifactory
backstage.io/view-url: https://github.com/backstage/community-plugins/tree/main/workspaces/jfrog-artifactory/plugins/jfrog-artifactory/catalog-info.yaml
backstage.io/edit-url: https://github.com/backstage/community-plugins/edit/main/workspaces/jfrog-artifactory/plugins/jfrog-artifactory/catalog-info.yaml
github.com/project-slug: backstage/community-plugins
github.com/team-slug: ckstage/community-plugins-maintainers
links:
- url: https://github.com/backstage/community-plugins/edit/main/workspaces/jfrog-artifactory
title: GitHub Source
icon: source
type: source
spec:
type: backstage-frontend-plugin
lifecycle: production
owner: owner-unknown
system: rhdh
subcomponentOf: backstage-community-jfrog-artifactory

View File

@ -0,0 +1,25 @@
/*
* Copyright 2024 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.
*/
export interface Config {
/** Configurations for the Jfrog Artifactory plugin */
jfrogArtifactory?: {
/**
* The base url of the Jfrog Artifactory instance.
* @visibility frontend
*/
proxyPath?: string;
};
}

View File

@ -0,0 +1,55 @@
/*
* Copyright 2024 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 React from 'react';
import { Entity } from '@backstage/catalog-model';
import { createDevApp } from '@backstage/dev-utils';
import { EntityProvider } from '@backstage/plugin-catalog-react';
import { getAllThemes } from '@redhat-developer/red-hat-developer-hub-theme';
import { JfrogArtifactoryPage, jfrogArtifactoryPlugin } from '../src/plugin';
const mockEntity: Entity = {
apiVersion: 'backstage.io/v1alpha1',
kind: 'Component',
metadata: {
name: 'backstage',
description: 'backstage.io',
annotations: {
'jfrog-artifactory/image-name': 'backstage',
},
},
spec: {
lifecycle: 'production',
type: 'service',
owner: 'user:guest',
},
};
createDevApp()
.registerPlugin(jfrogArtifactoryPlugin)
.addThemes(getAllThemes())
.addPage({
element: (
<EntityProvider entity={mockEntity}>
<JfrogArtifactoryPage />
</EntityProvider>
),
title: 'Root Page',
path: '/artifactory',
})
.render();

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 KiB

View File

@ -0,0 +1,86 @@
{
"name": "@backstage-community/plugin-jfrog-artifactory",
"version": "1.8.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
"publishConfig": {
"access": "public",
"main": "dist/index.esm.js",
"types": "dist/index.d.ts"
},
"backstage": {
"role": "frontend-plugin",
"supported-versions": "1.28.4",
"pluginId": "jfrog-artifactory",
"pluginPackage": "@backstage-community/plugin-jfrog-artifactory",
"pluginPackages": [
"@backstage-community/plugin-jfrog-artifactory"
]
},
"sideEffects": false,
"scripts": {
"build": "backstage-cli package build",
"clean": "backstage-cli package clean",
"export-dynamic": "janus-cli package export-dynamic-plugin --in-place",
"lint": "backstage-cli package lint",
"postpack": "backstage-cli package postpack",
"postversion": "yarn run export-dynamic",
"prepack": "backstage-cli package prepack",
"start": "backstage-cli package start",
"test": "backstage-cli package test --passWithNoTests --coverage",
"tsc": "tsc"
},
"dependencies": {
"@backstage/catalog-model": "^1.5.0",
"@backstage/core-components": "^0.14.9",
"@backstage/core-plugin-api": "^1.9.3",
"@backstage/plugin-catalog-react": "^1.12.2",
"@backstage/theme": "^0.5.6",
"@janus-idp/shared-react": "2.11.1",
"@material-ui/core": "^4.9.13",
"@material-ui/icons": "^4.11.3",
"@material-ui/lab": "^4.0.0-alpha.45",
"react-use": "^17.4.0"
},
"peerDependencies": {
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0"
},
"devDependencies": {
"@backstage/cli": "0.26.11",
"@backstage/core-app-api": "1.14.1",
"@backstage/dev-utils": "1.0.36",
"@backstage/test-utils": "1.5.9",
"@janus-idp/cli": "1.15.0",
"@redhat-developer/red-hat-developer-hub-theme": "0.2.0",
"@testing-library/jest-dom": "6.4.8",
"@testing-library/react": "14.3.1",
"@testing-library/user-event": "14.5.2",
"@types/node": "18.19.33",
"cross-fetch": "4.0.0",
"msw": "1.3.3",
"react-router-dom": "^6.26.2"
},
"files": [
"dist",
"dist-scalprum",
"config.d.ts",
"app-config.yaml"
],
"configSchema": "config.d.ts",
"repository": {
"type": "git",
"url": "https://github.com/backstage/community-plugins",
"directory": "workspaces/jfrog-artifactory/plugins/jfrog-artifactory"
},
"keywords": [
"support:tech-preview",
"lifecycle:active",
"backstage",
"plugin"
],
"homepage": "https://red.ht/rhdh",
"bugs": "https://github.com/backstage/community-plugins/issues",
"author": "Red Hat"
}

View File

@ -0,0 +1,104 @@
/*
* Copyright 2024 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 {
ConfigApi,
createApiRef,
DiscoveryApi,
IdentityApi,
} from '@backstage/core-plugin-api';
import { TagsResponse } from '../types';
const DEFAULT_PROXY_PATH = '/jfrog-artifactory/api';
export interface JfrogArtifactoryApiV1 {
getTags(repo: string): Promise<TagsResponse>;
}
export const jfrogArtifactoryApiRef = createApiRef<JfrogArtifactoryApiV1>({
id: 'plugin.jfrog-artifactory.service',
});
export type Options = {
discoveryApi: DiscoveryApi;
configApi: ConfigApi;
identityApi: IdentityApi;
};
export class JfrogArtifactoryApiClient implements JfrogArtifactoryApiV1 {
// @ts-ignore
private readonly discoveryApi: DiscoveryApi;
private readonly configApi: ConfigApi;
private readonly identityApi: IdentityApi;
constructor(options: Options) {
this.discoveryApi = options.discoveryApi;
this.configApi = options.configApi;
this.identityApi = options.identityApi;
}
private async getBaseUrl() {
const proxyPath =
this.configApi.getOptionalString('jfrogArtifactory.proxyPath') ||
DEFAULT_PROXY_PATH;
return `${await this.discoveryApi.getBaseUrl('proxy')}${proxyPath}`;
}
private async fetcher(url: string, query: string) {
const { token: idToken } = await this.identityApi.getCredentials();
const response = await fetch(url, {
headers: {
'Content-Type': 'application/json',
...(idToken && { Authorization: `Bearer ${idToken}` }),
},
method: 'POST',
body: query,
});
if (!response.ok) {
throw new Error(
`failed to fetch data, status ${response.status}: ${response.statusText}`,
);
}
return await response.json();
}
async getTags(repo: string) {
const proxyUrl = await this.getBaseUrl();
const tagQuery = {
query:
'query ($filter: VersionFilter!, $first: Int, $orderBy: VersionOrder) { versions (filter: $filter, first: $first, orderBy: $orderBy) { edges { node { name, created, modified, package { id }, repos { name, type, leadFilePath }, licenses { name, source }, size, stats { downloadCount }, vulnerabilities { critical, high, medium, low, info, unknown, skipped }, files { name, lead, size, md5, sha1, sha256, mimeType } } } } }',
variables: {
filter: {
packageId: `docker://${repo}`,
name: '*',
ignorePreRelease: false,
},
first: 100,
orderBy: {
field: 'NAME_SEMVER',
direction: 'DESC',
},
},
};
return (await this.fetcher(
`${proxyUrl}/metadata/api/v1/query`,
JSON.stringify(tagQuery),
)) as TagsResponse;
}
}

View File

@ -0,0 +1,28 @@
/*
* Copyright 2024 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 React from 'react';
import { useEntity } from '@backstage/plugin-catalog-react';
import { JfrogArtifactoryRepository } from '../JfrogArtifactoryRepository';
import { useJfrogArtifactoryAppData } from '../useJfrogArtifactoryAppData';
export const JfrogArtifactoryDashboardPage = () => {
const { entity } = useEntity();
const { imageName } = useJfrogArtifactoryAppData({ entity });
return <JfrogArtifactoryRepository image={imageName} />;
};

View File

@ -0,0 +1,16 @@
/*
* Copyright 2024 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.
*/
export { JfrogArtifactoryDashboardPage } from './JfrogArtifactoryDashboardPage';

View File

@ -0,0 +1,101 @@
/*
* Copyright 2024 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 React, { useState } from 'react';
import { useAsync } from 'react-use';
import { Link, Progress, Table } from '@backstage/core-components';
import { useApi } from '@backstage/core-plugin-api';
import { Box, Chip, makeStyles } from '@material-ui/core';
import { formatByteSize, formatDate } from '@janus-idp/shared-react';
import { jfrogArtifactoryApiRef } from '../../api';
import { Edge } from '../../types';
import { columns, useStyles } from './tableHeading';
const useLocalStyles = makeStyles({
chip: {
margin: 0,
marginRight: '.2em',
height: '1.5em',
'& > span': {
padding: '.3em',
},
},
});
export function JfrogArtifactoryRepository({ image }: RepositoryProps) {
const jfrogArtifactoryClient = useApi(jfrogArtifactoryApiRef);
const classes = useStyles();
const localClasses = useLocalStyles();
const [edges, setEdges] = useState<Edge[]>([]);
const titleprop = `Jfrog Artifactory repository: ${image}`;
const { loading } = useAsync(async () => {
const tagsResponse = await jfrogArtifactoryClient.getTags(image);
setEdges(tagsResponse.data.versions.edges);
return tagsResponse;
});
if (loading) {
return <Progress />;
}
const data = edges?.map((edge: Edge) => {
const shortHash = edge.node.files
.find(manifest => manifest.name === 'manifest.json')
?.sha256.substring(0, 12);
return {
name: edge.node.name,
last_modified: formatDate(edge.node.modified),
size: formatByteSize(Number(edge.node.size)),
manifest_digest: (
<Box sx={{ display: 'flex', alignItems: 'center' }}>
<Chip label="sha256" className={localClasses.chip} />
{shortHash}
</Box>
),
repositories:
`${edge.node.repos.length}` +
' | ' +
`${edge.node.repos.map(repo => repo.name).join('| ')}`,
};
});
return (
<div style={{ border: '1px solid #ddd' }}>
<Table
title={titleprop}
options={{ paging: true, padding: 'dense' }}
data={data}
columns={columns}
emptyContent={
<div className={classes.empty}>
No data was added yet,&nbsp;
<Link to="https://backstage.io/">learn how to add data</Link>.
</div>
}
/>
</div>
);
}
interface RepositoryProps {
image: string;
}

View File

@ -0,0 +1,16 @@
/*
* Copyright 2024 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.
*/
export { JfrogArtifactoryRepository } from './JfrogArtifactoryRepository';

View File

@ -0,0 +1,55 @@
/*
* Copyright 2024 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 { TableColumn } from '@backstage/core-components';
import makeStyles from '@material-ui/core/styles/makeStyles';
export const columns: TableColumn[] = [
{
title: 'Version',
field: 'name',
type: 'string',
highlight: true,
},
{
title: 'Repositories',
field: 'repositories',
type: 'string',
},
{
title: 'Manifest',
field: 'manifest_digest',
type: 'string',
},
{
title: 'Modified',
field: 'last_modified',
type: 'date',
},
{
title: 'Size',
field: 'size',
type: 'string',
},
];
export const useStyles = makeStyles(theme => ({
empty: {
padding: theme.spacing(2),
display: 'flex',
justifyContent: 'center',
},
}));

View File

@ -0,0 +1,30 @@
/*
* Copyright 2024 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 { Entity } from '@backstage/catalog-model';
export const JFROG_ARTIFACTORY_ANNOTATION_IMAGE_NAME =
'jfrog-artifactory/image-name';
export const useJfrogArtifactoryAppData = ({ entity }: { entity: Entity }) => {
const imageName =
entity?.metadata.annotations?.[JFROG_ARTIFACTORY_ANNOTATION_IMAGE_NAME] ??
'';
if (!imageName) {
throw new Error("'Jfrog Artifactory' annotations are missing");
}
return { imageName };
};

View File

@ -0,0 +1,20 @@
/*
* Copyright 2024 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.
*/
export {
jfrogArtifactoryPlugin,
JfrogArtifactoryPage,
isJfrogArtifactoryAvailable,
} from './plugin';

View File

@ -0,0 +1,22 @@
/*
* Copyright 2024 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 { jfrogArtifactoryPlugin } from './plugin';
describe('jfrog artifactory', () => {
it('should export plugin', () => {
expect(jfrogArtifactoryPlugin).toBeDefined();
});
});

View File

@ -0,0 +1,64 @@
/*
* Copyright 2024 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 { Entity } from '@backstage/catalog-model';
import {
configApiRef,
createApiFactory,
createComponentExtension,
createPlugin,
discoveryApiRef,
identityApiRef,
} from '@backstage/core-plugin-api';
import { JfrogArtifactoryApiClient, jfrogArtifactoryApiRef } from './api';
import { JFROG_ARTIFACTORY_ANNOTATION_IMAGE_NAME } from './components/useJfrogArtifactoryAppData';
import { rootRouteRef } from './routes';
export const jfrogArtifactoryPlugin = createPlugin({
id: 'jfrog-artifactory',
routes: {
root: rootRouteRef,
},
apis: [
createApiFactory({
api: jfrogArtifactoryApiRef,
deps: {
discoveryApi: discoveryApiRef,
configApi: configApiRef,
identityApi: identityApiRef,
},
factory: ({ discoveryApi, configApi, identityApi }) =>
new JfrogArtifactoryApiClient({ discoveryApi, configApi, identityApi }),
}),
],
});
export const JfrogArtifactoryPage = jfrogArtifactoryPlugin.provide(
createComponentExtension({
name: 'JfrogArtifactoryPage',
component: {
lazy: () =>
import('./components/JfrogArtifactoryDashboardPage').then(
m => m.JfrogArtifactoryDashboardPage,
),
},
}),
);
export const isJfrogArtifactoryAvailable = (entity: Entity) =>
Boolean(
entity?.metadata.annotations?.[JFROG_ARTIFACTORY_ANNOTATION_IMAGE_NAME],
);

View File

@ -0,0 +1,20 @@
/*
* Copyright 2024 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 { createRouteRef } from '@backstage/core-plugin-api';
export const rootRouteRef = createRouteRef({
id: 'jfrog-artifactory',
});

View File

@ -0,0 +1,17 @@
/*
* Copyright 2024 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 '@testing-library/jest-dom';
import 'cross-fetch/polyfill';

View File

@ -0,0 +1,77 @@
/*
* Copyright 2024 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.
*/
export interface TagsResponse {
data: Data;
}
export interface Data {
versions: Versions;
}
export interface Versions {
edges: Edge[];
}
export interface Edge {
node: Node;
}
export interface Node {
name: string;
created: Date;
modified: Date;
package: Package;
repos: Repo[];
licenses: any[];
size: string;
stats: Stats;
vulnerabilities: Vulnerabilities | null;
files: File[];
}
export interface File {
name: string;
lead: boolean;
size: string;
md5: string;
sha1: string;
sha256: string;
mimeType: null | string;
}
export interface Package {
id: string;
}
export interface Repo {
name: string;
type: string;
leadFilePath: string;
}
export interface Stats {
downloadCount: number;
}
export interface Vulnerabilities {
critical: number;
high: number;
medium: number;
low: number;
info: number;
unknown: number;
skipped: number;
}

View File

@ -0,0 +1,9 @@
{
"extends": "@backstage/cli/config/tsconfig.json",
"include": ["src", "dev", "migrations"],
"exclude": ["node_modules"],
"compilerOptions": {
"outDir": "../../dist-types/plugins/jfrog-artifactory",
"rootDir": "."
}
}

View File

@ -0,0 +1,9 @@
{
"extends": ["//"],
"pipeline": {
"tsc": {
"outputs": ["../../dist-types/plugins/jfrog-artifactory/**"],
"dependsOn": ["^tsc"]
}
}
}

View File

@ -0,0 +1,18 @@
{
"extends": "@backstage/cli/config/tsconfig.json",
"include": [
"packages/*/src",
"plugins/*/src",
"plugins/*/dev",
"plugins/*/migrations"
],
"files": ["node_modules/@backstage/cli/asset-types/asset-types.d.ts"],
"exclude": ["node_modules"],
"compilerOptions": {
"outDir": "dist-types",
"rootDir": ".",
"lib": ["DOM", "DOM.Iterable", "ScriptHost", "ES2022"],
"target": "ES2022",
"useUnknownInCatchVariables": false
}
}

File diff suppressed because it is too large Load Diff