Merge remote-tracking branch 'origin/master' into shutdown-tasks-on-restart
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-api-docs': minor
|
||||
---
|
||||
|
||||
Replace GraphiQL playground with DocExplorer
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/create-app': patch
|
||||
---
|
||||
|
||||
Bumped create-app version.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-gcp': patch
|
||||
---
|
||||
|
||||
Allow integration with kubernetes dashboard
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes-backend': patch
|
||||
'@backstage/plugin-kubernetes-common': patch
|
||||
---
|
||||
|
||||
Allow storing dashboard parameters for kubernetes in catalog
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-msgraph': patch
|
||||
'@backstage/integration': patch
|
||||
'@backstage/plugin-auth-backend': patch
|
||||
---
|
||||
|
||||
JSDoc and Error message updates to handle `Azure Active Directory` re-brand to `Entra ID`
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes-react': patch
|
||||
---
|
||||
|
||||
Internal refactor to avoid a null pointer problem
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-techdocs-backend': patch
|
||||
---
|
||||
|
||||
Fix potential memory leak by not creating a build log transport if not given via `RouterOptions`.
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes-react': patch
|
||||
---
|
||||
|
||||
Make sure types exported by other `kubernetes` plugins in the past are exported again after the creation
|
||||
of the react package.
|
||||
|
||||
Some types have been moved to this new package but the export was missing, so they were not available anymore for developers.
|
||||
@@ -257,10 +257,14 @@
|
||||
"@backstage/plugin-vault-node": "0.0.0"
|
||||
},
|
||||
"changesets": [
|
||||
"blue-bags-warn",
|
||||
"chatty-cobras-cheer",
|
||||
"chilled-knives-rule",
|
||||
"chilly-books-sneeze",
|
||||
"chilly-terms-behave",
|
||||
"clever-houses-scream",
|
||||
"create-app-1698763033",
|
||||
"curvy-carrots-thank",
|
||||
"dirty-ducks-behave",
|
||||
"dry-days-invite",
|
||||
"eighty-chairs-camp",
|
||||
@@ -271,19 +275,24 @@
|
||||
"fluffy-years-shake",
|
||||
"four-files-behave",
|
||||
"four-pears-swim",
|
||||
"fresh-camels-give",
|
||||
"fresh-crews-promise",
|
||||
"fresh-schools-thank",
|
||||
"gentle-pears-camp",
|
||||
"gentle-pumpkins-carry",
|
||||
"giant-cars-walk",
|
||||
"giant-cycles-end",
|
||||
"good-plums-confess",
|
||||
"great-baboons-allow",
|
||||
"healthy-shirts-fold",
|
||||
"heavy-experts-accept",
|
||||
"heavy-rings-play",
|
||||
"hip-moose-boil",
|
||||
"hip-mugs-camp",
|
||||
"hungry-paws-dress",
|
||||
"hungry-radios-play",
|
||||
"large-forks-arrive",
|
||||
"late-forks-fetch",
|
||||
"lazy-hotels-wait",
|
||||
"long-turkeys-argue",
|
||||
"loud-ghosts-deny",
|
||||
@@ -297,43 +306,60 @@
|
||||
"ninety-numbers-study",
|
||||
"old-apricots-taste",
|
||||
"old-chairs-switch",
|
||||
"old-coats-doubt",
|
||||
"olive-paws-divide",
|
||||
"orange-planes-crash",
|
||||
"plenty-buckets-float",
|
||||
"plenty-tigers-argue",
|
||||
"poor-seahorses-rush",
|
||||
"popular-bikes-do",
|
||||
"pretty-swans-worry",
|
||||
"quick-pumpkins-shave",
|
||||
"quick-roses-move",
|
||||
"real-apes-build",
|
||||
"real-carrots-brake",
|
||||
"real-jars-yawn",
|
||||
"red-beers-roll",
|
||||
"red-yaks-press",
|
||||
"renovate-dacadfa",
|
||||
"rich-pugs-chew",
|
||||
"rude-penguins-press",
|
||||
"rude-tomatoes-itch",
|
||||
"shaggy-beers-collect",
|
||||
"shaggy-buses-beg",
|
||||
"sharp-chefs-attend",
|
||||
"sharp-falcons-clean",
|
||||
"shiny-geese-watch",
|
||||
"silent-chairs-smoke",
|
||||
"silver-kiwis-float",
|
||||
"six-books-arrive",
|
||||
"sixty-tips-argue",
|
||||
"small-buckets-roll",
|
||||
"smart-dancers-watch",
|
||||
"sour-toes-joke",
|
||||
"stale-rice-count",
|
||||
"strange-gifts-try",
|
||||
"strange-queens-deliver",
|
||||
"strong-taxis-wait",
|
||||
"sweet-buckets-fry",
|
||||
"sweet-countries-share",
|
||||
"swift-badgers-hide",
|
||||
"swift-mice-care",
|
||||
"tall-colts-roll",
|
||||
"tame-spies-hunt",
|
||||
"tender-lies-wonder",
|
||||
"tender-maps-type",
|
||||
"thick-dolphins-boil",
|
||||
"thirty-stingrays-grin",
|
||||
"three-moles-mix",
|
||||
"tidy-camels-boil",
|
||||
"tidy-planets-trade",
|
||||
"tricky-cups-hammer",
|
||||
"tricky-vans-behave",
|
||||
"two-jars-melt",
|
||||
"unlucky-houses-end",
|
||||
"violet-lamps-appear",
|
||||
"weak-zebras-cover",
|
||||
"wet-cows-brake",
|
||||
"wicked-ties-knock",
|
||||
"wild-cows-watch",
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/core-components': patch
|
||||
---
|
||||
|
||||
Reverting the `MissingAnnotationEmptyState` component due to cyclical dependency. This component is now deprecated, please use the import from `@backstage/plugin-catalog-react` instead to use the new functionality
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-cost-insights': patch
|
||||
---
|
||||
|
||||
Updated dependency `@types/pluralize` to `^0.0.32`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
---
|
||||
|
||||
Title and description in RepoUrlPicker are now correctly displayed.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/frontend-app-api': patch
|
||||
---
|
||||
|
||||
Fix for app node output IDs not being serialized correctly.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/frontend-plugin-api': minor
|
||||
---
|
||||
|
||||
Extensions now return their output from the factory function rather than calling `bind(...)`.
|
||||
@@ -0,0 +1,23 @@
|
||||
---
|
||||
'@backstage/plugin-techdocs-module-addons-contrib': patch
|
||||
'@backstage/plugin-microsoft-calendar': patch
|
||||
'@backstage/plugin-scaffolder-react': patch
|
||||
'@backstage/plugin-catalog-graph': patch
|
||||
'@backstage/plugin-cost-insights': patch
|
||||
'@backstage/plugin-tech-insights': patch
|
||||
'@backstage/plugin-code-climate': patch
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
'@backstage/plugin-gcalendar': patch
|
||||
'@backstage/plugin-org-react': patch
|
||||
'@backstage/plugin-sonarqube': patch
|
||||
'@backstage/plugin-xcmetrics': patch
|
||||
'@backstage/plugin-api-docs': patch
|
||||
'@backstage/plugin-playlist': patch
|
||||
'@backstage/plugin-catalog': patch
|
||||
'@backstage/plugin-explore': patch
|
||||
'@backstage/plugin-bazaar': patch
|
||||
'@backstage/plugin-search': patch
|
||||
'@backstage/plugin-org': patch
|
||||
---
|
||||
|
||||
Internal theme type updates
|
||||
@@ -0,0 +1,32 @@
|
||||
---
|
||||
'@backstage/plugin-github-deployments': patch
|
||||
'@backstage/plugin-kubernetes-cluster': patch
|
||||
'@backstage/plugin-newrelic-dashboard': patch
|
||||
'@backstage/plugin-github-actions': patch
|
||||
'@backstage/plugin-splunk-on-call': patch
|
||||
'@backstage/plugin-code-coverage': patch
|
||||
'@backstage/plugin-code-climate': patch
|
||||
'@backstage/plugin-azure-sites': patch
|
||||
'@backstage/plugin-cloudbuild': patch
|
||||
'@backstage/plugin-kubernetes': patch
|
||||
'@backstage/plugin-lighthouse': patch
|
||||
'@backstage/plugin-dynatrace': patch
|
||||
'@backstage/plugin-sonarqube': patch
|
||||
'@backstage/plugin-airbrake': patch
|
||||
'@backstage/plugin-circleci': patch
|
||||
'@backstage/plugin-puppetdb': patch
|
||||
'@backstage/plugin-techdocs': patch
|
||||
'@backstage/plugin-bitrise': patch
|
||||
'@backstage/plugin-jenkins': patch
|
||||
'@backstage/plugin-rollbar': patch
|
||||
'@backstage/plugin-allure': patch
|
||||
'@backstage/plugin-sentry': patch
|
||||
'@backstage/plugin-fossa': patch
|
||||
'@backstage/plugin-kafka': patch
|
||||
'@backstage/plugin-nomad': patch
|
||||
'@backstage/plugin-vault': patch
|
||||
'@backstage/plugin-gocd': patch
|
||||
'@backstage/plugin-adr': patch
|
||||
---
|
||||
|
||||
Import `MissingAnnotationEmptyState` from `@backstage/plugin-catalog-react` to remove the cyclical dependency
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
'@backstage/frontend-app-api': patch
|
||||
'@backstage/plugin-catalog': patch
|
||||
'@backstage/plugin-catalog-react': patch
|
||||
'@backstage/plugin-graphiql': patch
|
||||
'@backstage/plugin-search-react': patch
|
||||
---
|
||||
|
||||
Internal updates to match changes in the experimental `@backstage/frontend-plugin-api`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/frontend-app-api': patch
|
||||
---
|
||||
|
||||
Internal refactor to rename the app graph to app tree
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
---
|
||||
|
||||
Add examples for `github:deployKey:create` scaffolder action & improve related tests
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
'@backstage/plugin-scaffolder-common': patch
|
||||
'@backstage/plugin-scaffolder-react': patch
|
||||
---
|
||||
|
||||
Make it possible to define control buttons text (Back, Create, Review) per template
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-react': patch
|
||||
---
|
||||
|
||||
Export `MissingAnnotationEmptyState` from `@backstage/plugin-catalog-react`
|
||||
@@ -1,35 +0,0 @@
|
||||
version: '3'
|
||||
|
||||
x-uffizzi:
|
||||
ingress:
|
||||
service: backstage
|
||||
port: 7007
|
||||
|
||||
services:
|
||||
backstage:
|
||||
image: '${BACKSTAGE_IMAGE}'
|
||||
|
||||
environment:
|
||||
POSTGRES_HOST: localhost
|
||||
POSTGRES_PORT: 5432
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_PASSWORD: kiTMoTsiEuyQ43GrL4Hv
|
||||
REF_NAME: ${GITHUB_SHA}
|
||||
NODE_ENV: production
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 500M
|
||||
entrypoint: '/bin/sh'
|
||||
command:
|
||||
- '-c'
|
||||
- "APP_CONFIG_app_baseUrl=$$UFFIZZI_URL APP_CONFIG_backend_baseUrl=$$UFFIZZI_URL APP_CONFIG_auth_environment='production' node packages/backend --config app-config.yaml"
|
||||
|
||||
db:
|
||||
image: postgres
|
||||
environment:
|
||||
POSTGRES_PASSWORD: kiTMoTsiEuyQ43GrL4Hv
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 250M
|
||||
@@ -0,0 +1,12 @@
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: backstage-cluster-ro
|
||||
subjects:
|
||||
- namespace: backstage
|
||||
kind: ServiceAccount
|
||||
name: backstage-service-account
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: system:aggregate-to-view
|
||||
@@ -0,0 +1,37 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: backstage
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: backstage
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: backstage
|
||||
spec:
|
||||
serviceAccountName: backstage-service-account
|
||||
containers:
|
||||
- name: backstage
|
||||
image: backstage
|
||||
command:
|
||||
- /bin/sh
|
||||
args:
|
||||
- '-c'
|
||||
- "APP_CONFIG_app_baseUrl=$$UFFIZZI_URL APP_CONFIG_backend_baseUrl=$$UFFIZZI_URL APP_CONFIG_auth_environment='production' node packages/backend --config app-config.yaml"
|
||||
imagePullPolicy: IfNotPresent
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 7007
|
||||
envFrom:
|
||||
- secretRef:
|
||||
name: postgres-secrets
|
||||
env:
|
||||
- name: POSTGRES_PORT
|
||||
value: '5432'
|
||||
- name: POSTGRES_HOST
|
||||
value: 'postgres.default.svc.cluster.local'
|
||||
- name: NODE_ENV
|
||||
value: production
|
||||
@@ -0,0 +1,20 @@
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: backstage
|
||||
spec:
|
||||
ingressClassName: uffizzi
|
||||
rules:
|
||||
- host: backstage.example.com
|
||||
http:
|
||||
paths:
|
||||
- backend:
|
||||
service:
|
||||
name: backstage
|
||||
port:
|
||||
number: 80
|
||||
path: /
|
||||
pathType: Prefix
|
||||
tls:
|
||||
- hosts:
|
||||
- backstage.example.com
|
||||
@@ -0,0 +1,5 @@
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: backstage-service-account
|
||||
namespace: default
|
||||
@@ -0,0 +1,11 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: backstage
|
||||
spec:
|
||||
selector:
|
||||
app: backstage
|
||||
ports:
|
||||
- name: http
|
||||
port: 80
|
||||
targetPort: http
|
||||
@@ -0,0 +1,12 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- backstage-deploy.yaml
|
||||
- backstage-crb.yaml
|
||||
- backstage-ingress.yaml
|
||||
- backstage-sa.yaml
|
||||
- backstage-svc.yaml
|
||||
- pg-svc.yaml
|
||||
- pg-deploy.yaml
|
||||
- pg-secret.yaml
|
||||
- pg-volume.yaml
|
||||
@@ -0,0 +1,31 @@
|
||||
# kubernetes/postgres.yaml
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: postgres
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: postgres
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: postgres
|
||||
spec:
|
||||
containers:
|
||||
- name: postgres
|
||||
image: postgres:13.2-alpine
|
||||
imagePullPolicy: 'IfNotPresent'
|
||||
ports:
|
||||
- containerPort: 5432
|
||||
envFrom:
|
||||
- secretRef:
|
||||
name: postgres-secrets
|
||||
volumeMounts:
|
||||
- mountPath: /var/lib/postgresql
|
||||
name: postgresdb
|
||||
volumes:
|
||||
- name: postgresdb
|
||||
persistentVolumeClaim:
|
||||
claimName: postgres-storage-claim
|
||||
@@ -0,0 +1,8 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: postgres-secrets
|
||||
type: Opaque
|
||||
data:
|
||||
POSTGRES_USER: YmFja3N0YWdl
|
||||
POSTGRES_PASSWORD: aHVudGVyMg==
|
||||
@@ -0,0 +1,9 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: postgres
|
||||
spec:
|
||||
selector:
|
||||
app: postgres
|
||||
ports:
|
||||
- port: 5432
|
||||
@@ -0,0 +1,10 @@
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: postgres-storage-claim
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 2G
|
||||
@@ -160,7 +160,10 @@ kubernetes:
|
||||
type: 'multiTenant'
|
||||
clusterLocatorMethods:
|
||||
- type: 'config'
|
||||
clusters: []
|
||||
clusters:
|
||||
- url: ${UFFIZZI_CLUSTER_APISERVER}
|
||||
name: uffizzi
|
||||
authProvider: 'serviceAccount'
|
||||
|
||||
kafka:
|
||||
clientId: backstage
|
||||
|
||||
@@ -207,6 +207,7 @@ mailto
|
||||
maintainer's
|
||||
maintainership
|
||||
makefile
|
||||
Matomo
|
||||
md
|
||||
memcache
|
||||
memoize
|
||||
@@ -459,3 +460,4 @@ Lightsail
|
||||
PR
|
||||
rebasing
|
||||
lookbehind
|
||||
Entra
|
||||
@@ -12,7 +12,7 @@ jobs:
|
||||
build-backstage:
|
||||
env:
|
||||
NODE_OPTIONS: --max-old-space-size=4096
|
||||
UFFIZZI_URL: https://uffizzi.com
|
||||
UFFIZZI_URL: https://app.uffizzi.com
|
||||
name: Build PR image
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ github.event_name != 'pull_request' || github.event.action != 'closed' }}
|
||||
@@ -72,14 +72,14 @@ jobs:
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
push: true
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
|
||||
render-compose-file:
|
||||
name: Render Docker Compose File
|
||||
render-kustomize:
|
||||
name: Render Kustomize Manifests
|
||||
runs-on: ubuntu-latest
|
||||
needs:
|
||||
- build-backstage
|
||||
outputs:
|
||||
compose-file-cache-key: ${{ steps.hash.outputs.hash }}
|
||||
steps:
|
||||
- name: Harden Runner
|
||||
uses: step-security/harden-runner@8ca2b8b2ece13480cda6dacd3511b49857a23c09 # v2.5.1
|
||||
@@ -90,16 +90,16 @@ jobs:
|
||||
uses: actions/checkout@v4.1.1
|
||||
- name: Render Compose File
|
||||
run: |
|
||||
BACKSTAGE_IMAGE=$(echo ${{ needs.build-backstage.outputs.tags }})
|
||||
export BACKSTAGE_IMAGE
|
||||
# Render simple template from environment variables.
|
||||
envsubst '$BACKSTAGE_IMAGE $GITHUB_SHA' < .github/uffizzi/docker-compose.uffizzi.yml > docker-compose.rendered.yml
|
||||
cat docker-compose.rendered.yml
|
||||
- name: Upload Rendered Compose File as Artifact
|
||||
uses: actions/upload-artifact@v3.1.3
|
||||
# update image after the build above
|
||||
cd ./.github/uffizzi/k8s/manifests
|
||||
kustomize edit set image backstage=${{ needs.build-backstage.outputs.tags }}
|
||||
kustomize build . > manifests.rendered.yml
|
||||
cat manifests.rendered.yml
|
||||
- name: Upload Rendered Manifests File as Artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: preview-spec
|
||||
path: docker-compose.rendered.yml
|
||||
path: ./.github/uffizzi/k8s/manifests/manifests.rendered.yml
|
||||
retention-days: 2
|
||||
- name: Upload PR Event as Artifact
|
||||
uses: actions/upload-artifact@v3.1.3
|
||||
|
||||
@@ -8,14 +8,15 @@ on:
|
||||
- completed
|
||||
|
||||
jobs:
|
||||
cache-compose-file:
|
||||
name: Cache Compose File
|
||||
cache-manifests-file:
|
||||
name: Cache Manifests File
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ github.event.workflow_run.conclusion == 'success' }}
|
||||
outputs:
|
||||
compose-file-cache-key: ${{ env.COMPOSE_FILE_HASH }}
|
||||
manifests-cache-key: ${{ env.MANIFESTS_FILE_HASH }}
|
||||
git-ref: ${{ env.GIT_REF }}
|
||||
pr-number: ${{ env.PR_NUMBER }}
|
||||
action: ${{ env.ACTION }}
|
||||
steps:
|
||||
- name: Harden Runner
|
||||
uses: step-security/harden-runner@8ca2b8b2ece13480cda6dacd3511b49857a23c09 # v2.5.1
|
||||
@@ -56,23 +57,29 @@ jobs:
|
||||
cat event.json >> $GITHUB_ENV
|
||||
echo -e '\nEOF' >> $GITHUB_ENV
|
||||
|
||||
- name: Hash Rendered Compose File
|
||||
- name: Hash Rendered Manifests File
|
||||
id: hash
|
||||
# If the previous workflow was triggered by a PR close event, we will not have a compose file artifact.
|
||||
# If the previous workflow was triggered by a PR close event, we will not have a manifests file artifact.
|
||||
if: ${{ fromJSON(env.EVENT_JSON).action != 'closed' }}
|
||||
run: echo "COMPOSE_FILE_HASH=$(md5sum docker-compose.rendered.yml | awk '{ print $1 }')" >> $GITHUB_ENV
|
||||
run: |
|
||||
ls
|
||||
echo "MANIFESTS_FILE_HASH=$(md5sum manifests.rendered.yml | awk '{ print $1 }')" >> $GITHUB_ENV
|
||||
|
||||
- name: Cache Rendered Compose File
|
||||
- name: Cache Manifests File
|
||||
if: ${{ fromJSON(env.EVENT_JSON).action != 'closed' }}
|
||||
uses: actions/cache@v3.3.2
|
||||
with:
|
||||
path: docker-compose.rendered.yml
|
||||
key: ${{ env.COMPOSE_FILE_HASH }}
|
||||
path: manifests.rendered.yml
|
||||
key: ${{ env.MANIFESTS_FILE_HASH }}
|
||||
|
||||
- name: Read PR Number From Event Object
|
||||
id: pr
|
||||
run: echo "PR_NUMBER=${{ fromJSON(env.EVENT_JSON).number }}" >> $GITHUB_ENV
|
||||
|
||||
- name: Read Event Type from Event Object
|
||||
id: action
|
||||
run: echo "ACTION=${{ fromJSON(env.EVENT_JSON).action }}" >> $GITHUB_ENV
|
||||
|
||||
- name: Read Git Ref From Event Object
|
||||
id: ref
|
||||
run: echo "GIT_REF=${{ fromJSON(env.EVENT_JSON).pull_request.head.sha }}" >> $GITHUB_ENV
|
||||
@@ -82,24 +89,153 @@ jobs:
|
||||
run: |
|
||||
echo "PR number: ${{ env.PR_NUMBER }}"
|
||||
echo "Git Ref: ${{ env.GIT_REF }}"
|
||||
echo "Compose file hash: ${{ env.COMPOSE_FILE_HASH }}"
|
||||
echo "Manifests file hash: ${{ env.MANIFESTS_FILE_HASH }}"
|
||||
cat event.json
|
||||
|
||||
deploy-uffizzi-preview:
|
||||
name: Use Remote Workflow to Preview on Uffizzi
|
||||
needs:
|
||||
- cache-compose-file
|
||||
if: ${{ github.event.workflow_run.conclusion == 'success' }}
|
||||
uses: UffizziCloud/preview-action/.github/workflows/reusable.yaml@v2
|
||||
with:
|
||||
# If this workflow was triggered by a PR close event, cache-key will be an empty string
|
||||
# and this reusable workflow will delete the preview deployment.
|
||||
compose-file-cache-key: ${{ needs.cache-compose-file.outputs.compose-file-cache-key }}
|
||||
compose-file-cache-path: docker-compose.rendered.yml
|
||||
git-ref: ${{ needs.cache-compose-file.outputs.git-ref }}
|
||||
pr-number: ${{ needs.cache-compose-file.outputs.pr-number }}
|
||||
server: https://app.uffizzi.com
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
id-token: write
|
||||
name: Deploy to Uffizzi Virtual Cluster
|
||||
needs:
|
||||
- cache-manifests-file
|
||||
if: ${{ github.event.workflow_run.conclusion == 'success' && needs.cache-manifests-file.outputs.action != 'closed' }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
# Identify comment to be updated
|
||||
- name: Find comment for Ephemeral Environment
|
||||
uses: peter-evans/find-comment@v2
|
||||
id: find-comment
|
||||
with:
|
||||
issue-number: ${{ needs.cache-manifests-file.outputs.pr-number }}
|
||||
comment-author: 'github-actions[bot]'
|
||||
body-includes: pr-${{ needs.cache-manifests-file.outputs.pr-number }}
|
||||
direction: last
|
||||
|
||||
# Create/Update comment with action deployment status
|
||||
- name: Create or Update Comment with Deployment Notification
|
||||
id: notification
|
||||
uses: peter-evans/create-or-update-comment@v2
|
||||
with:
|
||||
comment-id: ${{ steps.find-comment.outputs.comment-id }}
|
||||
issue-number: ${{ needs.cache-manifests-file.outputs.pr-number }}
|
||||
body: |
|
||||
## Uffizzi Ephemeral Environment - Virtual Cluster
|
||||
|
||||
:cloud: deploying ...
|
||||
|
||||
:gear: Updating now by workflow run [${{ github.run_id }}](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}).
|
||||
|
||||
Download the Uffizzi CLI to interact with the upcoming virtual cluster
|
||||
https://docs.uffizzi.com/install
|
||||
edit-mode: replace
|
||||
|
||||
- name: Connect to Virtual Cluster
|
||||
uses: UffizziCloud/cluster-action@main
|
||||
with:
|
||||
cluster-name: pr-${{ needs.cache-manifests-file.outputs.pr-number }}
|
||||
server: https://app.uffizzi.com
|
||||
|
||||
- name: Fetch cached Manifests File
|
||||
id: cache
|
||||
# if: ${{ contains(fromJSON('["create", "update"]'), env.UFFIZZI_ACTION) }}
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: manifests.rendered.yml
|
||||
key: ${{ needs.cache-manifests-file.outputs.manifests-cache-key }}
|
||||
|
||||
- name: Kustomize and Apply Manifests
|
||||
id: prev
|
||||
run: |
|
||||
# Apply kustomized manifests to virtual cluster.
|
||||
export KUBECONFIG=`pwd`/kubeconfig
|
||||
kubectl apply -f manifests.rendered.yml --kubeconfig ./kubeconfig
|
||||
# Allow uffizzi to sync the resources
|
||||
sleep 10
|
||||
# Get the hostnames assigned by uffizzi
|
||||
export BACKSTAGE_HOST=$(kubectl get ingress backstage --kubeconfig kubeconfig -o json | jq '.spec.rules[0].host' | tr -d '"')
|
||||
export UFFIZZI_CLUSTER_APISERVER=$(kubectl config view --minify | grep server | cut -f 2- -d ":" | tr -d " ")
|
||||
# Patch backstage deployment to use UFFIZZI_URL
|
||||
kubectl patch deployment backstage --kubeconfig kubeconfig -p '{"spec": {"template": {"spec": {"containers": [{"name": "backstage", "args":["-c", "APP_CONFIG_app_baseUrl='https://${BACKSTAGE_HOST}' APP_CONFIG_backend_baseUrl='https://${BACKSTAGE_HOST}' APP_CONFIG_auth_environment='production' node packages/backend --config app-config.yaml"], "env": [{"name": "UFFIZZI_URL", "value": "'https://${BACKSTAGE_HOST}'"}, {"name": "UFFIZZI_CLUSTER_APISERVER", "value": "'${UFFIZZI_CLUSTER_APISERVER}'"}, {"name": "GITHUB_SHA", "value": "'${GITHUB_SHA}'"}, {"name": "REF_NAME", "value": "'${{ needs.cache-manifests-file.outputs.git-ref }}'"}]}]}}}}'
|
||||
if [[ ${RUNNER_DEBUG} == 1 ]]; then
|
||||
kubectl get all --kubeconfig ./kubeconfig
|
||||
fi
|
||||
echo "backstage_url=${BACKSTAGE_HOST}" >> $GITHUB_OUTPUT
|
||||
echo "Access the \`backstage\` endpoint at [\`${BACKSTAGE_HOST}\`](http://${BACKSTAGE_HOST})" >> $GITHUB_STEP_SUMMARY
|
||||
|
||||
- name: Create or Update Comment with Deployment URL
|
||||
uses: peter-evans/create-or-update-comment@v2
|
||||
with:
|
||||
comment-id: ${{ steps.notification.outputs.comment-id }}
|
||||
issue-number: ${{ github.event.pull_request.number }}
|
||||
body: |
|
||||
## Uffizzi Ephemeral Environment - Virtual Cluster
|
||||
|
||||
Your cluster `pr-${{ needs.cache-manifests-file.outputs.pr-number }}` was successfully created. Learn more about [Uffizzi virtual clusters](https://docs.uffizzi.com/topics/virtual-clusters)
|
||||
To connect to this cluster, follow these steps:
|
||||
|
||||
1. Download and install the Uffizzi CLI from https://docs.uffizzi.com/install
|
||||
2. Login to Uffizzi, then select the `backstage` account and project:
|
||||
```
|
||||
uffizzi login
|
||||
```
|
||||
|
||||
```
|
||||
Select an account:
|
||||
‣ ${{ github.event.repository.name }}
|
||||
jdoe
|
||||
|
||||
Select a project or create a new project:
|
||||
‣ ${{ github.event.repository.name }}-6783521
|
||||
```
|
||||
3. Update your kubeconfig: `uffizzi cluster update-kubeconfig pr-${{ needs.cache-manifests-file.outputs.pr-number }} --kubeconfig=[PATH_TO_KUBECONFIG]`
|
||||
After updating your kubeconfig, you can manage your cluster with `kubectl`, `kustomize`, `helm`, and other tools that use kubeconfig files: `kubectl get namespace --kubeconfig [PATH_TO_KUBECONFIG]`
|
||||
|
||||
|
||||
Access the `backstage` endpoint at [`https://${{ steps.prev.outputs.backstage_url }}`](https://${{ steps.prev.outputs.backstage_url }})
|
||||
|
||||
edit-mode: replace
|
||||
|
||||
delete-uffizzi-preview:
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
id-token: write
|
||||
name: Delete the Uffizzi Virtual Cluster
|
||||
needs:
|
||||
- cache-manifests-file
|
||||
if: ${{ needs.cache-manifests-file.outputs.action == 'closed' }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Delete Virtual Cluster
|
||||
uses: UffizziCloud/cluster-action@main
|
||||
with:
|
||||
cluster-name: pr-${{ needs.cache-manifests-file.outputs.pr-number }}
|
||||
server: https://app.uffizzi.com
|
||||
action: delete
|
||||
|
||||
# Identify comment to be updated
|
||||
- name: Find comment for Ephemeral Environment
|
||||
uses: peter-evans/find-comment@v2
|
||||
id: find-comment
|
||||
with:
|
||||
issue-number: ${{ needs.cache-manifests-file.outputs.pr-number }}
|
||||
comment-author: 'github-actions[bot]'
|
||||
body-includes: pr-${{ needs.cache-manifests-file.outputs.pr-number }}
|
||||
direction: last
|
||||
|
||||
- name: Update Comment with Deletion
|
||||
uses: peter-evans/create-or-update-comment@v2
|
||||
with:
|
||||
comment-id: ${{ steps.find-comment.outputs.comment-id }}
|
||||
issue-number: ${{ needs.cache-manifests-file.outputs.pr-number }}
|
||||
body: |
|
||||
Uffizzi Cluster `pr-${{ needs.cache-manifests-file.outputs.pr-number }}` was deleted.
|
||||
edit-mode: replace
|
||||
|
||||
@@ -51,7 +51,7 @@ jobs:
|
||||
|
||||
- run: yarn build-storybook
|
||||
|
||||
- uses: chromaui/action@723135c179d14b28039985d79da5c3d6ee1ac32e # v1
|
||||
- uses: chromaui/action@c7e9d129ad2b8e728e10522270e14596473a7958 # v1
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
# projectToken intentionally shared to allow collaborators to run Chromatic on forks
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
diff --git a/build/watchers/FSEventsWatcher.js b/build/watchers/FSEventsWatcher.js
|
||||
index 2273a6cbd2110ddbbd1525820289c3d93ab46cac..d637a644239ae4a7db407ce779f43b4dec9a44ed 100644
|
||||
index a8b59d7f382b290ed9e09593c439c17137d8fb3e..07549f187257fd568add4fcff3a6d7646c2915c1 100644
|
||||
--- a/build/watchers/FSEventsWatcher.js
|
||||
+++ b/build/watchers/FSEventsWatcher.js
|
||||
@@ -103,7 +103,7 @@ function _interopRequireWildcard(obj, nodeInterop) {
|
||||
+1
-2
@@ -117,8 +117,7 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/
|
||||
| [Pachama](https://pachama.com/) | [Aron Gates](https://github.com/agates4) | Internal Developer Portal, a catalog of all microservices, architecture documentation, and templates to generate developer resources. |
|
||||
| [SEEK](https://www.seek.com.au) | [Jahred Hope](https://github.com/jahredhope) | Developer portal for developer tooling and technical documentation. |
|
||||
| [Marks & Spencer](https://www.marksandspencer.com/) | [Kamal Cheriyath](https://github.com/kcheriyath) | Centralised discovery, adoption and devops automation hub for Engineering & Architecture. |
|
||||
| [McKesson](https://www.mckesson.com/) | [Agnel Antony](https://github.com/aantony2) | Internal Developer Platform for developer gated CI/CD templates, technical documentation, cloud automation service catalog, etc. |
|
||||
| [World Fuel Services](https://www.wfscorp.com/) | [Anirudh Kurapathi](https://github.com/anirudhkurapati), [Alex Kwon](https://github.com/alexkwon), [Lester Hernandez](https://github.com/lhernandez-wfscorp), [Avi Boru](https://github.com/aviboru), [Vardhan Annapureddy](https://github.com/harshaaws) | Internal Developer Portal, service catalog product, API's, Software Templates, tech docs and more. |
|
||||
| [McKesson](https://www.mckesson.com/) | [Agnel Antony](https://github.com/aantony2) | Internal Developer Platform for developer gated CI/CD templates, technical documentation, cloud automation service catalog, etc. |
|
||||
| [leboncoin](https://www.leboncoin.fr/) | [Andy Ladjadj](https://github.com/aladjadj) | Centralize our multiple UI in a single portal. Simplify onbording, new features and harmonize how people search information. |
|
||||
| [Contentful](https://www.contentful.com) | [James Bourne](https://github.com/jamesmbourne) | Centralized documentation of service ownership, APIs, and documentation, and new service creation with a custom scaffolder - [full case study with Roadie](https://roadie.io/case-studies/maintaining-velocity-through-hypergrowth-contentful/). |
|
||||
| [Back Market](https://www.backmarket.com) | [Sami Farhat](https://github.com/skfarhat) | Internal Developer Portal featuring catalog, tech-radar, ownership management, component creation (scaffolder) and centralized infrastructure management -- probably more to come. |
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
# [Backstage](https://backstage.io)
|
||||
|
||||
> 🏖️ From October 30th - November 5th, employees at Spotify will have a week to recharge, which means all core maintainers & some project area maintainers are out of office. Right after that, we will go into the week of BackstageCon + KubeCon in Chicago, hoping to see some of you there! Expect slower responses & reviews during the 2 weeks, but we're on it for urgent issues. We will be up to speed again on November 13th! 🏖️
|
||||
|
||||
[](https://opensource.org/licenses/Apache-2.0)
|
||||
[](https://www.cncf.io/projects)
|
||||
[](https://discord.gg/backstage-687207715902193673)
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
# Using AWS Application Load Balancer with Azure Active Directory to authenticate requests
|
||||
# Using AWS Application Load Balancer with Entra ID to authenticate requests
|
||||
|
||||
Backstage allows offloading the responsibility of authenticating users to an AWS Application Load Balancer (**ALB**), leveraging the authentication support on ALB.
|
||||
This tutorial shows how to use authentication on an ALB sitting in front of Backstage.
|
||||
Azure Active Directory (**AAD**) is used as identity provider but any identity provider supporting OpenID Connect (OIDC) can be used.
|
||||
Entra Id (formerly Azure Active Directory) is used as identity provider but any identity provider supporting OpenID Connect (OIDC) can be used.
|
||||
|
||||
It is assumed an ALB is already serving traffic in front of a Backstage instance configured to serve the frontend app from the backend.
|
||||
|
||||
## Infrastructure setup
|
||||
|
||||
### AAD App
|
||||
### Entra App Registration
|
||||
|
||||
The AAD App is used to execute the authentication flow, serve and refresh the identity token.
|
||||
The App Registration is used to execute the authentication flow, serve and refresh the identity token.
|
||||
|
||||
Create the AAD App following the steps outlined in `Create a Microsoft App Registration in Microsoft Portal` section from the tutorial [Monorepo App Setup With Authentication][monorepo-app-setup-with-auth].
|
||||
Create the App following the steps outlined in `Create a Microsoft App Registration in Microsoft Portal` section from the tutorial [Monorepo App Setup With Authentication][monorepo-app-setup-with-auth].
|
||||
|
||||
Instead of `localhost` addresses, use the following values.
|
||||
|
||||
@@ -27,12 +27,12 @@ In the AWS console, configure ALB Authentication:
|
||||
|
||||
- Edit the ALB rule used to forward the traffic to Backstage and add a new `Authenticate` action. The action will have higher priority compared to the existing `Forward to`.
|
||||
- Select `OIDC` under `Authenticate`
|
||||
- Set `Issuer` to `https://login.microsoftonline.com/{TENANT_ID}/v2.0`, replacing `{TENANT_ID}` with the value of `Directory (tenant) ID` of the AAD App.
|
||||
- Set `Authorization endpoint` to `https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0/authorize`, replacing `{TENANT_ID}` with the value of `Directory (tenant) ID` of the AAD App.
|
||||
- Set `Token endpoint` to `https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0/token`, replacing `{TENANT_ID}` with the value of `Directory (tenant) ID` of the AAD App.
|
||||
- Set `Issuer` to `https://login.microsoftonline.com/{TENANT_ID}/v2.0`, replacing `{TENANT_ID}` with the value of `Directory (tenant) ID` of the App Registration.
|
||||
- Set `Authorization endpoint` to `https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0/authorize`, replacing `{TENANT_ID}` with the value of `Directory (tenant) ID` of the App Registration.
|
||||
- Set `Token endpoint` to `https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0/token`, replacing `{TENANT_ID}` with the value of `Directory (tenant) ID` of the App Registration.
|
||||
- Set `User info endpoint` to `https://graph.microsoft.com/oidc/userinfo`
|
||||
- Set `Client ID` to the AAD App `Application (client) Id`
|
||||
- Set `Client secret` to the AAD APP `client secret`
|
||||
- Set `Client ID` to the App Registration `Application (client) Id`
|
||||
- Set `Client secret` to the App Registration `client secret`
|
||||
|
||||
Use the following advanced settings:
|
||||
|
||||
@@ -41,7 +41,7 @@ Use the following advanced settings:
|
||||
- `Scope` = `openid profile offline_access`
|
||||
- `Action on unauthenticated request` = `Autenticate (client reattempt)`
|
||||
|
||||
Once you've saved the action, you should see an authentication flow be triggered against AAD when visiting Backstage address at `https://backstage.yourdomain.com`. The flow will not complete successfully as the Backstage app isn't yet configured properly.
|
||||
Once you've saved the action, you should see an authentication flow be triggered against Entra ID when visiting Backstage address at `https://backstage.yourdomain.com`. The flow will not complete successfully as the Backstage app isn't yet configured properly.
|
||||
|
||||
## Backstage changes
|
||||
|
||||
@@ -215,11 +215,11 @@ auth:
|
||||
region: <AWS_REGION>
|
||||
```
|
||||
|
||||
Replace `<TENANT_ID>` with the value of `Directory (tenant) ID` of the AAD App and `<AWS_REGION>` with the AWS region identifier where the ALB is deployed (for example: `eu-central-1`).
|
||||
Replace `<TENANT_ID>` with the value of `Directory (tenant) ID` of the App Registration and `<AWS_REGION>` with the AWS region identifier where the ALB is deployed (for example: `eu-central-1`).
|
||||
|
||||
## Conclusion
|
||||
|
||||
Once it's deployed, after going through the AAD authentication flow, Backstage should display the AAD user details.
|
||||
Once it's deployed, after going through the Entra ID authentication flow, Backstage should display the Entra user details.
|
||||
|
||||
<!-- links -->
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ sidebar_label: Azure Easy Auth
|
||||
description: Adding Azure's EasyAuth Proxy as an authentication provider in Backstage
|
||||
---
|
||||
|
||||
The Backstage `core-plugin-api` package comes with a Microsoft authentication provider that can authenticate users using Azure Active Directory for PaaS service hosted in Azure that support Easy Auth, such as Azure App Services.
|
||||
The Backstage `core-plugin-api` package comes with a Microsoft authentication provider that can authenticate users using Microsoft Entra ID (formerly Azure Active Directory) for PaaS service hosted in Azure that support Easy Auth, such as Azure App Services.
|
||||
|
||||
## Backstage Changes
|
||||
|
||||
@@ -101,11 +101,11 @@ const app = createApp({
|
||||
|
||||
## Azure Configuration
|
||||
|
||||
How to configure azure depends on the service you're enable AAD auth on the app service.
|
||||
How to configure azure depends on the Azure service you're using to host Backstage.
|
||||
|
||||
### Azure App Services
|
||||
|
||||
To use EasyAuth with App Services, turn on Active Directory authentication
|
||||
To use EasyAuth with App Services, turn on Entra ID (formerly Azure Active Directory) authentication
|
||||
You must also enable the token store.
|
||||
|
||||
The following example shows how to do this via a bicep template:
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 102 KiB |
@@ -8,21 +8,36 @@ description: Adding Microsoft Azure as an authentication provider in Backstage
|
||||
The Backstage `core-plugin-api` package comes with a Microsoft authentication
|
||||
provider that can authenticate users using Azure OAuth.
|
||||
|
||||
## Create an App Registration on Azure
|
||||
## Configure App Registration on Azure
|
||||
|
||||
To support Azure authentication, you must create an App Registration:
|
||||
Depending on how locked down your company is, you may need a directory administrator to do some or all of these instructions.
|
||||
|
||||
1. Log in to the [Azure Portal](https://portal.azure.com/)
|
||||
2. Create an
|
||||
[Active Directory Tenant](https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/Overview),
|
||||
if one does not yet exist
|
||||
3. Navigate to
|
||||
[Azure Active Directory > App Registrations](https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps)
|
||||
4. Register an application
|
||||
- Name: Backstage (or your custom app name)
|
||||
- Redirect URI: Web >
|
||||
`http://localhost:7007/api/auth/microsoft/handler/frame`
|
||||
5. Navigate to **Certificates & secrets > New client secret** to create a secret
|
||||
Go to [Azure Portal > App registrations](https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade) and find your existing app registration, or create a new one.
|
||||
If you have an existing App Registration for Backstage, use that rather than create a new one.
|
||||
|
||||
On your app registration's overview page, add a new `Web` platform configuration, with the configuration:
|
||||
|
||||
- **Redirect URI**: `https://your-backstage.com/api/auth/microsoft/handler/frame` (for local dev, typically `http://localhost:7007/api/auth/microsoft/handler/frame`)
|
||||
- **Front-channel logout Url**: blank
|
||||
- **Implicit grant and hybrid flows**: All unchecked
|
||||
|
||||
On the **API permissions** tab, click on `Add Permission`, then add the following `Delegated` permission for the `Microsoft Graph` API.
|
||||
|
||||
- `email`
|
||||
- `offline_access`
|
||||
- `openid`
|
||||
- `profile`
|
||||
- `User.Read`
|
||||
|
||||
Your company may require you to grant [admin consent](https://learn.microsoft.com/en-us/azure/active-directory/manage-apps/user-admin-consent-overview) for these permissions.
|
||||
Even if your company doesn't require admin consent, you may wish to do so as it means users don't need to individually consent the first time they access backstage.
|
||||
To grant admin consent, a directory admin will need to come to this page and click on the **Grant admin consent for COMPANY NAME** button.
|
||||
|
||||

|
||||
|
||||
If you're using an existing app registration, and backstage already has a client secret, you can re-use that.
|
||||
If not, go to the **Certificates & Secrets** page, then the **Client secrets** tab and create a new client secret.
|
||||
Make a note of this value as you'll need it in the next section.
|
||||
|
||||
## Configuration
|
||||
|
||||
@@ -35,9 +50,9 @@ auth:
|
||||
providers:
|
||||
microsoft:
|
||||
development:
|
||||
clientId: ${AUTH_MICROSOFT_CLIENT_ID}
|
||||
clientSecret: ${AUTH_MICROSOFT_CLIENT_SECRET}
|
||||
tenantId: ${AUTH_MICROSOFT_TENANT_ID}
|
||||
clientId: ${AZURE_CLIENT_ID}
|
||||
clientSecret: ${AZURE_CLIENT_SECRET}
|
||||
tenantId: ${AZURE_TENANT_ID}
|
||||
domainHint: ${AZURE_TENANT_ID}
|
||||
```
|
||||
|
||||
@@ -51,6 +66,12 @@ The Microsoft provider is a structure with three mandatory configuration keys:
|
||||
When specified, this reduces login friction for users with accounts in multiple tenants by automatically filtering away accounts from other tenants.
|
||||
For more details, see [Home Realm Discovery](https://learn.microsoft.com/en-us/azure/active-directory/manage-apps/home-realm-discovery-policy)
|
||||
|
||||
## Adding the provider to the Backstage frontend
|
||||
|
||||
To add the provider to the frontend, add the `microsoftAuthApiRef` reference and
|
||||
`SignInPage` component as shown in
|
||||
[Adding the provider to the sign-in page](../index.md#adding-the-provider-to-the-sign-in-page).
|
||||
|
||||
## Outbound Network Access
|
||||
|
||||
If your environment has restrictions on outgoing access (e.g. through
|
||||
@@ -63,9 +84,3 @@ hosts:
|
||||
in [this source
|
||||
code](https://github.com/seanfisher/passport-microsoft/blob/0456aa9bce05579c18e77f51330176eb26373658/lib/strategy.js#L93-L95)).
|
||||
If this host is unreachable, users may see an `Authentication failed, failed to fetch user profile` error when they attempt to log in.
|
||||
|
||||
## Adding the provider to the Backstage frontend
|
||||
|
||||
To add the provider to the frontend, add the `microsoftAuthApiRef` reference and
|
||||
`SignInPage` component as shown in
|
||||
[Adding the provider to the sign-in page](../index.md#adding-the-provider-to-the-sign-in-page).
|
||||
|
||||
@@ -11,7 +11,7 @@ add custom providers there if needed.
|
||||
|
||||
These providers are configured so your Kubernetes plugin can locate and access the
|
||||
clusters you have access to, some of them have special requirements in the third party in
|
||||
question, like Azure's Managed AAD subscription or Azure RBAC support active on the cluster.
|
||||
question, like Microsoft Entra ID (formerly Azure Active Directory) subscription or Azure RBAC support active on the cluster.
|
||||
|
||||
The providers currently available are divided into server side and client side.
|
||||
|
||||
@@ -78,7 +78,7 @@ You get both, the cluster `url` and `caData` directly from the AWS console by go
|
||||
### Azure
|
||||
|
||||
The Azure server side authentication provider works by authenticating on the server with
|
||||
the Azure CLI, please note that [Azure AD Authentication][1] is a requirement and has to
|
||||
the Azure CLI, please note that [Microsoft Entra authentication][1] is a requirement and has to
|
||||
be enabled in your AKS cluster, then follow these steps:
|
||||
|
||||
- [Install the Azure CLI][2] in the environment where the backstage application will run.
|
||||
|
||||
@@ -89,6 +89,6 @@ The `credentials` element is a structure with these elements:
|
||||
> Note:
|
||||
>
|
||||
> - You cannot use a service principal or managed identity for Azure DevOps Server (on-premises) organizations
|
||||
> - You can only use a service principal or managed identity for Azure AD backed Azure DevOps organizations
|
||||
> - You can only use a service principal or managed identity for Microsoft Entra ID (formerly Azure Active Directory) backed Azure DevOps organizations
|
||||
> - You can only specify one credential per host without any organizations specified
|
||||
> - The personal access token should just be provided as the raw token generated by Azure DevOps using the format `raw_token` with no base64 encoding. Formatting and base64'ing is handled by dependent libraries handling the Azure DevOps API
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
---
|
||||
id: org
|
||||
title: Microsoft Azure Active Directory Organizational Data
|
||||
title: Microsoft Entra tenantal Data
|
||||
sidebar_label: Org Data
|
||||
# prettier-ignore
|
||||
description: Importing users and groups from Microsoft Azure Active Directory into Backstage
|
||||
description: Importing users and groups from Microsoft Entra ID into Backstage
|
||||
---
|
||||
|
||||
The Backstage catalog can be set up to ingest organizational data - users and
|
||||
teams - directly from a tenant in Microsoft Azure Active Directory via the
|
||||
teams - directly from a tenant in Microsoft Entra ID via the
|
||||
Microsoft Graph API.
|
||||
|
||||
## Installation
|
||||
@@ -205,7 +205,7 @@ export async function myGroupTransformer(
|
||||
annotations: {},
|
||||
},
|
||||
spec: {
|
||||
type: 'aad',
|
||||
type: 'Microsoft Entra ID',
|
||||
children: [],
|
||||
},
|
||||
};
|
||||
@@ -219,7 +219,7 @@ export async function myUserTransformer(
|
||||
const backstageUser = await defaultUserTransformer(graphUser, userPhoto);
|
||||
|
||||
if (backstageUser) {
|
||||
backstageUser.metadata.description = 'Loaded from Azure Active Directory';
|
||||
backstageUser.metadata.description = 'Loaded from Microsoft Entra ID';
|
||||
}
|
||||
|
||||
return backstageUser;
|
||||
|
||||
@@ -25,6 +25,8 @@ integrations:
|
||||
> Note: A public Bitbucket Cloud provider is added automatically at startup for
|
||||
> convenience, so you only need to list it if you want to supply credentials.
|
||||
|
||||
> Note: The credential used for this is type [App Password](https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/). An Atlassian Account API key will not work
|
||||
|
||||
Directly under the `bitbucketCloud` key is a list of provider configurations, where
|
||||
you can list the Bitbucket Cloud providers you want to fetch data from.
|
||||
In the case of Bitbucket Cloud, you will have up to one entry.
|
||||
|
||||
@@ -39,6 +39,7 @@ choice below.
|
||||
| [Google Analytics][ga] | Yes ✅ |
|
||||
| [Google Analytics 4][ga4] | Yes ✅ |
|
||||
| [New Relic Browser][newrelic-browser] | Community ✅ |
|
||||
| [Matomo][matomo] | Community ✅ |
|
||||
|
||||
To suggest an integration, please [open an issue][add-tool] for the analytics
|
||||
tool your organization uses. Or jump to [Writing Integrations][int-howto] to
|
||||
@@ -47,6 +48,7 @@ learn how to contribute the integration yourself!
|
||||
[ga]: https://github.com/backstage/backstage/blob/master/plugins/analytics-module-ga/README.md
|
||||
[ga4]: https://github.com/backstage/backstage/blob/master/plugins/analytics-module-ga4/README.md
|
||||
[newrelic-browser]: https://github.com/backstage/backstage/blob/master/plugins/analytics-module-newrelic-browser/README.md
|
||||
[matomo]: https://github.com/janus-idp/backstage-plugins/blob/main/plugins/analytics-module-matomo/README.md
|
||||
[add-tool]: https://github.com/backstage/backstage/issues/new?assignees=&labels=plugin&template=plugin_template.md&title=%5BAnalytics+Module%5D+THE+ANALYTICS+TOOL+TO+INTEGRATE
|
||||
[int-howto]: #writing-integrations
|
||||
[analytics-api-type]: https://backstage.io/docs/reference/core-plugin-api.analyticsapi
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -5,6 +5,6 @@ authorUrl: https://redhat.com
|
||||
category: Monitoring
|
||||
description: Track usage of your Backstage instance using Matomo Analytics.
|
||||
documentation: https://github.com/janus-idp/backstage-plugins/blob/main/plugins/analytics-module-matomo/README.md
|
||||
iconUrl: img/matomo.png
|
||||
iconUrl: /img/matomo.png
|
||||
npmPackageName: '@janus-idp/backstage-plugin-analytics-module-matomo'
|
||||
addedDate: '2023-10-17'
|
||||
|
||||
+43
-43
@@ -2701,90 +2701,90 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-darwin-arm64@npm:1.3.92":
|
||||
version: 1.3.92
|
||||
resolution: "@swc/core-darwin-arm64@npm:1.3.92"
|
||||
"@swc/core-darwin-arm64@npm:1.3.95":
|
||||
version: 1.3.95
|
||||
resolution: "@swc/core-darwin-arm64@npm:1.3.95"
|
||||
conditions: os=darwin & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-darwin-x64@npm:1.3.92":
|
||||
version: 1.3.92
|
||||
resolution: "@swc/core-darwin-x64@npm:1.3.92"
|
||||
"@swc/core-darwin-x64@npm:1.3.95":
|
||||
version: 1.3.95
|
||||
resolution: "@swc/core-darwin-x64@npm:1.3.95"
|
||||
conditions: os=darwin & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-arm-gnueabihf@npm:1.3.92":
|
||||
version: 1.3.92
|
||||
resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.92"
|
||||
"@swc/core-linux-arm-gnueabihf@npm:1.3.95":
|
||||
version: 1.3.95
|
||||
resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.95"
|
||||
conditions: os=linux & cpu=arm
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-arm64-gnu@npm:1.3.92":
|
||||
version: 1.3.92
|
||||
resolution: "@swc/core-linux-arm64-gnu@npm:1.3.92"
|
||||
"@swc/core-linux-arm64-gnu@npm:1.3.95":
|
||||
version: 1.3.95
|
||||
resolution: "@swc/core-linux-arm64-gnu@npm:1.3.95"
|
||||
conditions: os=linux & cpu=arm64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-arm64-musl@npm:1.3.92":
|
||||
version: 1.3.92
|
||||
resolution: "@swc/core-linux-arm64-musl@npm:1.3.92"
|
||||
"@swc/core-linux-arm64-musl@npm:1.3.95":
|
||||
version: 1.3.95
|
||||
resolution: "@swc/core-linux-arm64-musl@npm:1.3.95"
|
||||
conditions: os=linux & cpu=arm64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-x64-gnu@npm:1.3.92":
|
||||
version: 1.3.92
|
||||
resolution: "@swc/core-linux-x64-gnu@npm:1.3.92"
|
||||
"@swc/core-linux-x64-gnu@npm:1.3.95":
|
||||
version: 1.3.95
|
||||
resolution: "@swc/core-linux-x64-gnu@npm:1.3.95"
|
||||
conditions: os=linux & cpu=x64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-x64-musl@npm:1.3.92":
|
||||
version: 1.3.92
|
||||
resolution: "@swc/core-linux-x64-musl@npm:1.3.92"
|
||||
"@swc/core-linux-x64-musl@npm:1.3.95":
|
||||
version: 1.3.95
|
||||
resolution: "@swc/core-linux-x64-musl@npm:1.3.95"
|
||||
conditions: os=linux & cpu=x64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-win32-arm64-msvc@npm:1.3.92":
|
||||
version: 1.3.92
|
||||
resolution: "@swc/core-win32-arm64-msvc@npm:1.3.92"
|
||||
"@swc/core-win32-arm64-msvc@npm:1.3.95":
|
||||
version: 1.3.95
|
||||
resolution: "@swc/core-win32-arm64-msvc@npm:1.3.95"
|
||||
conditions: os=win32 & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-win32-ia32-msvc@npm:1.3.92":
|
||||
version: 1.3.92
|
||||
resolution: "@swc/core-win32-ia32-msvc@npm:1.3.92"
|
||||
"@swc/core-win32-ia32-msvc@npm:1.3.95":
|
||||
version: 1.3.95
|
||||
resolution: "@swc/core-win32-ia32-msvc@npm:1.3.95"
|
||||
conditions: os=win32 & cpu=ia32
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-win32-x64-msvc@npm:1.3.92":
|
||||
version: 1.3.92
|
||||
resolution: "@swc/core-win32-x64-msvc@npm:1.3.92"
|
||||
"@swc/core-win32-x64-msvc@npm:1.3.95":
|
||||
version: 1.3.95
|
||||
resolution: "@swc/core-win32-x64-msvc@npm:1.3.95"
|
||||
conditions: os=win32 & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core@npm:^1.3.46":
|
||||
version: 1.3.92
|
||||
resolution: "@swc/core@npm:1.3.92"
|
||||
version: 1.3.95
|
||||
resolution: "@swc/core@npm:1.3.95"
|
||||
dependencies:
|
||||
"@swc/core-darwin-arm64": 1.3.92
|
||||
"@swc/core-darwin-x64": 1.3.92
|
||||
"@swc/core-linux-arm-gnueabihf": 1.3.92
|
||||
"@swc/core-linux-arm64-gnu": 1.3.92
|
||||
"@swc/core-linux-arm64-musl": 1.3.92
|
||||
"@swc/core-linux-x64-gnu": 1.3.92
|
||||
"@swc/core-linux-x64-musl": 1.3.92
|
||||
"@swc/core-win32-arm64-msvc": 1.3.92
|
||||
"@swc/core-win32-ia32-msvc": 1.3.92
|
||||
"@swc/core-win32-x64-msvc": 1.3.92
|
||||
"@swc/core-darwin-arm64": 1.3.95
|
||||
"@swc/core-darwin-x64": 1.3.95
|
||||
"@swc/core-linux-arm-gnueabihf": 1.3.95
|
||||
"@swc/core-linux-arm64-gnu": 1.3.95
|
||||
"@swc/core-linux-arm64-musl": 1.3.95
|
||||
"@swc/core-linux-x64-gnu": 1.3.95
|
||||
"@swc/core-linux-x64-musl": 1.3.95
|
||||
"@swc/core-win32-arm64-msvc": 1.3.95
|
||||
"@swc/core-win32-ia32-msvc": 1.3.95
|
||||
"@swc/core-win32-x64-msvc": 1.3.95
|
||||
"@swc/counter": ^0.1.1
|
||||
"@swc/types": ^0.1.5
|
||||
peerDependencies:
|
||||
@@ -2813,7 +2813,7 @@ __metadata:
|
||||
peerDependenciesMeta:
|
||||
"@swc/helpers":
|
||||
optional: true
|
||||
checksum: 88c0c62ff790e896180862c341be8bae98baf0a5c5e87f2f04f49e14b8c4fba460d6b352618b4dda066c8ae6bf152cd843eab25837f38128175208b8c0635721
|
||||
checksum: 49856ad64fa16151f7f784956c8134060c5ed612c9b3fcb79e33676c77219f61fa3bb6b9e0dd15d78c7bff92cacc0c944d2b4e60849eb93caca917a8544b1c2c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
||||
+2
-2
@@ -49,12 +49,12 @@
|
||||
"resolutions": {
|
||||
"@types/react": "^18",
|
||||
"@types/react-dom": "^18",
|
||||
"jest-haste-map@^29.4.3": "patch:jest-haste-map@npm%3A29.4.3#./.yarn/patches/jest-haste-map-npm-29.4.3-19b03fcef3.patch",
|
||||
"jest-haste-map@^29.7.0": "patch:jest-haste-map@npm%3A29.7.0#./.yarn/patches/jest-haste-map-npm-29.7.0-e3be419eff.patch",
|
||||
"mock-fs@^5.2.0": "patch:mock-fs@npm%3A5.2.0#./.yarn/patches/mock-fs-npm-5.2.0-5103a7b507.patch",
|
||||
"@material-ui/pickers@^3.3.10": "patch:@material-ui/pickers@npm%3A3.3.11#./.yarn/patches/@material-ui-pickers-npm-3.3.11-1c8f68ea20.patch",
|
||||
"@material-ui/pickers@^3.2.10": "patch:@material-ui/pickers@npm%3A3.3.11#./.yarn/patches/@material-ui-pickers-npm-3.3.11-1c8f68ea20.patch"
|
||||
},
|
||||
"version": "1.20.0-next.0",
|
||||
"version": "1.20.0-next.1",
|
||||
"dependencies": {
|
||||
"@backstage/errors": "workspace:^",
|
||||
"@manypkg/get-packages": "^1.1.3",
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
# @backstage/app-defaults
|
||||
|
||||
## 1.4.5-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/core-components@0.13.8-next.1
|
||||
- @backstage/core-app-api@1.11.1-next.0
|
||||
- @backstage/core-plugin-api@1.8.0-next.0
|
||||
- @backstage/theme@0.4.4-next.0
|
||||
- @backstage/plugin-permission-react@0.4.17-next.0
|
||||
|
||||
## 1.4.5-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/app-defaults",
|
||||
"description": "Provides the default wiring of a Backstage App",
|
||||
"version": "1.4.5-next.0",
|
||||
"version": "1.4.5-next.1",
|
||||
"publishConfig": {
|
||||
"access": "public",
|
||||
"main": "dist/index.esm.js",
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# app-next-example-plugin
|
||||
|
||||
## 0.0.3-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/frontend-plugin-api@0.3.0-next.1
|
||||
- @backstage/core-components@0.13.8-next.1
|
||||
|
||||
## 0.0.3-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "app-next-example-plugin",
|
||||
"description": "Backstage internal example plugin",
|
||||
"version": "0.0.3-next.0",
|
||||
"version": "0.0.3-next.1",
|
||||
"publishConfig": {
|
||||
"access": "public",
|
||||
"main": "dist/index.esm.js",
|
||||
|
||||
@@ -1,5 +1,82 @@
|
||||
# example-app-next
|
||||
|
||||
## 0.0.3-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-home@0.5.10-next.1
|
||||
- @backstage/plugin-cost-insights@0.12.15-next.1
|
||||
- @backstage/plugin-scaffolder@1.16.0-next.1
|
||||
- @backstage/frontend-app-api@0.3.0-next.1
|
||||
- @backstage/frontend-plugin-api@0.3.0-next.1
|
||||
- @backstage/plugin-techdocs-module-addons-contrib@1.1.2-next.1
|
||||
- @backstage/plugin-microsoft-calendar@0.1.9-next.1
|
||||
- @backstage/plugin-scaffolder-react@1.6.0-next.1
|
||||
- @backstage/plugin-catalog-graph@0.2.38-next.1
|
||||
- @backstage/plugin-tech-insights@0.3.18-next.1
|
||||
- @backstage/plugin-gcalendar@0.3.20-next.1
|
||||
- @backstage/plugin-api-docs@0.9.13-next.1
|
||||
- @backstage/plugin-playlist@0.1.18-next.1
|
||||
- @backstage/plugin-catalog@1.15.0-next.1
|
||||
- @backstage/plugin-explore@0.4.12-next.1
|
||||
- @backstage/plugin-search@1.4.2-next.1
|
||||
- @backstage/plugin-org@0.6.16-next.1
|
||||
- @backstage/plugin-catalog-react@1.9.0-next.1
|
||||
- @backstage/plugin-graphiql@0.3.0-next.1
|
||||
- @backstage/plugin-search-react@1.7.2-next.1
|
||||
- @backstage/cli@0.24.0-next.1
|
||||
- @backstage/integration-react@1.1.21-next.1
|
||||
- @backstage/plugin-catalog-import@0.10.2-next.1
|
||||
- @backstage/plugin-github-actions@0.6.7-next.1
|
||||
- @backstage/plugin-techdocs@1.8.1-next.1
|
||||
- @backstage/plugin-kubernetes@0.11.1-next.1
|
||||
- @backstage/plugin-newrelic@0.3.42-next.1
|
||||
- app-next-example-plugin@0.0.3-next.1
|
||||
- @backstage/core-compat-api@0.0.1-next.1
|
||||
- @backstage/plugin-adr@0.6.9-next.1
|
||||
- @backstage/plugin-tech-radar@0.6.10-next.1
|
||||
- @backstage/plugin-user-settings@0.7.12-next.1
|
||||
- @backstage/core-components@0.13.8-next.1
|
||||
- @backstage/plugin-airbrake@0.3.26-next.1
|
||||
- @backstage/plugin-azure-devops@0.3.8-next.1
|
||||
- @backstage/plugin-azure-sites@0.1.15-next.1
|
||||
- @backstage/plugin-badges@0.2.50-next.1
|
||||
- @backstage/plugin-circleci@0.3.26-next.1
|
||||
- @backstage/plugin-cloudbuild@0.3.26-next.1
|
||||
- @backstage/plugin-code-coverage@0.2.19-next.1
|
||||
- @backstage/plugin-dynatrace@8.0.0-next.1
|
||||
- @backstage/plugin-entity-feedback@0.2.9-next.1
|
||||
- @backstage/plugin-gocd@0.1.32-next.1
|
||||
- @backstage/plugin-jenkins@0.9.1-next.1
|
||||
- @backstage/plugin-kafka@0.3.26-next.1
|
||||
- @backstage/plugin-lighthouse@0.4.11-next.1
|
||||
- @backstage/plugin-linguist@0.1.11-next.1
|
||||
- @backstage/plugin-newrelic-dashboard@0.3.1-next.1
|
||||
- @backstage/plugin-octopus-deploy@0.2.8-next.1
|
||||
- @backstage/plugin-pagerduty@0.6.7-next.1
|
||||
- @backstage/plugin-puppetdb@0.1.9-next.1
|
||||
- @backstage/plugin-rollbar@0.4.26-next.1
|
||||
- @backstage/plugin-sentry@0.5.11-next.1
|
||||
- @backstage/plugin-todo@0.2.30-next.1
|
||||
- @backstage/app-defaults@1.4.5-next.1
|
||||
- @backstage/catalog-model@1.4.3
|
||||
- @backstage/config@1.1.1
|
||||
- @backstage/core-app-api@1.11.1-next.0
|
||||
- @backstage/core-plugin-api@1.8.0-next.0
|
||||
- @backstage/theme@0.4.4-next.0
|
||||
- @backstage/plugin-apache-airflow@0.2.17-next.1
|
||||
- @backstage/plugin-catalog-common@1.0.17
|
||||
- @backstage/plugin-catalog-unprocessed-entities@0.1.5-next.1
|
||||
- @backstage/plugin-devtools@0.1.6-next.1
|
||||
- @backstage/plugin-gcp-projects@0.3.43-next.1
|
||||
- @backstage/plugin-linguist-common@0.1.2
|
||||
- @backstage/plugin-permission-react@0.4.17-next.0
|
||||
- @backstage/plugin-search-common@1.2.7
|
||||
- @backstage/plugin-shortcuts@0.3.16-next.1
|
||||
- @backstage/plugin-stackstorm@0.1.8-next.1
|
||||
- @backstage/plugin-techdocs-react@1.1.13-next.1
|
||||
|
||||
## 0.0.3-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "example-app-next",
|
||||
"version": "0.0.3-next.0",
|
||||
"version": "0.0.3-next.1",
|
||||
"private": true,
|
||||
"backstage": {
|
||||
"role": "frontend"
|
||||
|
||||
@@ -79,8 +79,8 @@ const homePageExtension = createExtension({
|
||||
children: coreExtensionData.reactElement,
|
||||
title: titleExtensionDataRef,
|
||||
},
|
||||
factory({ bind }) {
|
||||
bind({ children: homePage, title: 'just a title' });
|
||||
factory() {
|
||||
return { children: homePage, title: 'just a title' };
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
@@ -1,5 +1,82 @@
|
||||
# example-app
|
||||
|
||||
## 0.2.89-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-home@0.5.10-next.1
|
||||
- @backstage/plugin-cost-insights@0.12.15-next.1
|
||||
- @backstage/plugin-scaffolder@1.16.0-next.1
|
||||
- @backstage/frontend-app-api@0.3.0-next.1
|
||||
- @backstage/plugin-techdocs-module-addons-contrib@1.1.2-next.1
|
||||
- @backstage/plugin-microsoft-calendar@0.1.9-next.1
|
||||
- @backstage/plugin-scaffolder-react@1.6.0-next.1
|
||||
- @backstage/plugin-catalog-graph@0.2.38-next.1
|
||||
- @backstage/plugin-tech-insights@0.3.18-next.1
|
||||
- @backstage/plugin-gcalendar@0.3.20-next.1
|
||||
- @backstage/plugin-api-docs@0.9.13-next.1
|
||||
- @backstage/plugin-playlist@0.1.18-next.1
|
||||
- @backstage/plugin-catalog@1.15.0-next.1
|
||||
- @backstage/plugin-explore@0.4.12-next.1
|
||||
- @backstage/plugin-search@1.4.2-next.1
|
||||
- @backstage/plugin-org@0.6.16-next.1
|
||||
- @backstage/plugin-catalog-react@1.9.0-next.1
|
||||
- @backstage/plugin-graphiql@0.3.0-next.1
|
||||
- @backstage/plugin-search-react@1.7.2-next.1
|
||||
- @backstage/cli@0.24.0-next.1
|
||||
- @backstage/integration-react@1.1.21-next.1
|
||||
- @backstage/plugin-catalog-import@0.10.2-next.1
|
||||
- @backstage/plugin-github-actions@0.6.7-next.1
|
||||
- @backstage/plugin-techdocs@1.8.1-next.1
|
||||
- @backstage/plugin-kubernetes@0.11.1-next.1
|
||||
- @backstage/plugin-kubernetes-cluster@0.0.2-next.1
|
||||
- @backstage/plugin-newrelic@0.3.42-next.1
|
||||
- @backstage/plugin-adr@0.6.9-next.1
|
||||
- @backstage/plugin-stack-overflow@0.1.22-next.1
|
||||
- @backstage/plugin-tech-radar@0.6.10-next.1
|
||||
- @backstage/plugin-user-settings@0.7.12-next.1
|
||||
- @backstage/core-components@0.13.8-next.1
|
||||
- @backstage/plugin-airbrake@0.3.26-next.1
|
||||
- @backstage/plugin-azure-devops@0.3.8-next.1
|
||||
- @backstage/plugin-azure-sites@0.1.15-next.1
|
||||
- @backstage/plugin-badges@0.2.50-next.1
|
||||
- @backstage/plugin-circleci@0.3.26-next.1
|
||||
- @backstage/plugin-cloudbuild@0.3.26-next.1
|
||||
- @backstage/plugin-code-coverage@0.2.19-next.1
|
||||
- @backstage/plugin-dynatrace@8.0.0-next.1
|
||||
- @backstage/plugin-entity-feedback@0.2.9-next.1
|
||||
- @backstage/plugin-gocd@0.1.32-next.1
|
||||
- @backstage/plugin-jenkins@0.9.1-next.1
|
||||
- @backstage/plugin-kafka@0.3.26-next.1
|
||||
- @backstage/plugin-lighthouse@0.4.11-next.1
|
||||
- @backstage/plugin-linguist@0.1.11-next.1
|
||||
- @backstage/plugin-newrelic-dashboard@0.3.1-next.1
|
||||
- @backstage/plugin-nomad@0.1.7-next.1
|
||||
- @backstage/plugin-octopus-deploy@0.2.8-next.1
|
||||
- @backstage/plugin-pagerduty@0.6.7-next.1
|
||||
- @backstage/plugin-puppetdb@0.1.9-next.1
|
||||
- @backstage/plugin-rollbar@0.4.26-next.1
|
||||
- @backstage/plugin-sentry@0.5.11-next.1
|
||||
- @backstage/plugin-todo@0.2.30-next.1
|
||||
- @backstage/app-defaults@1.4.5-next.1
|
||||
- @backstage/catalog-model@1.4.3
|
||||
- @backstage/config@1.1.1
|
||||
- @backstage/core-app-api@1.11.1-next.0
|
||||
- @backstage/core-plugin-api@1.8.0-next.0
|
||||
- @backstage/theme@0.4.4-next.0
|
||||
- @backstage/plugin-apache-airflow@0.2.17-next.1
|
||||
- @backstage/plugin-catalog-common@1.0.17
|
||||
- @backstage/plugin-catalog-unprocessed-entities@0.1.5-next.1
|
||||
- @backstage/plugin-devtools@0.1.6-next.1
|
||||
- @backstage/plugin-gcp-projects@0.3.43-next.1
|
||||
- @backstage/plugin-linguist-common@0.1.2
|
||||
- @backstage/plugin-permission-react@0.4.17-next.0
|
||||
- @backstage/plugin-search-common@1.2.7
|
||||
- @backstage/plugin-shortcuts@0.3.16-next.1
|
||||
- @backstage/plugin-stackstorm@0.1.8-next.1
|
||||
- @backstage/plugin-techdocs-react@1.1.13-next.1
|
||||
|
||||
## 0.2.89-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "example-app",
|
||||
"version": "0.2.89-next.0",
|
||||
"version": "0.2.89-next.1",
|
||||
"private": true,
|
||||
"backstage": {
|
||||
"role": "frontend"
|
||||
|
||||
@@ -1,5 +1,22 @@
|
||||
# @backstage/backend-app-api
|
||||
|
||||
## 0.5.8-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/backend-common@0.19.9-next.1
|
||||
- @backstage/backend-tasks@0.5.12-next.1
|
||||
- @backstage/config-loader@1.5.3-next.0
|
||||
- @backstage/plugin-auth-node@0.4.1-next.1
|
||||
- @backstage/plugin-permission-node@0.7.18-next.1
|
||||
- @backstage/backend-plugin-api@0.6.7-next.1
|
||||
- @backstage/cli-common@0.1.13
|
||||
- @backstage/cli-node@0.2.0-next.0
|
||||
- @backstage/config@1.1.1
|
||||
- @backstage/errors@1.2.3
|
||||
- @backstage/types@1.1.1
|
||||
|
||||
## 0.5.8-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/backend-app-api",
|
||||
"description": "Core API used by Backstage backend apps",
|
||||
"version": "0.5.8-next.0",
|
||||
"version": "0.5.8-next.1",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"publishConfig": {
|
||||
|
||||
@@ -1,5 +1,21 @@
|
||||
# @backstage/backend-common
|
||||
|
||||
## 0.19.9-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/integration@1.7.2-next.0
|
||||
- @backstage/backend-app-api@0.5.8-next.1
|
||||
- @backstage/config-loader@1.5.3-next.0
|
||||
- @backstage/backend-dev-utils@0.1.2
|
||||
- @backstage/backend-plugin-api@0.6.7-next.1
|
||||
- @backstage/cli-common@0.1.13
|
||||
- @backstage/config@1.1.1
|
||||
- @backstage/errors@1.2.3
|
||||
- @backstage/integration-aws-node@0.1.7
|
||||
- @backstage/types@1.1.1
|
||||
|
||||
## 0.19.9-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/backend-common",
|
||||
"description": "Common functionality library for Backstage backends",
|
||||
"version": "0.19.9-next.0",
|
||||
"version": "0.19.9-next.1",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"publishConfig": {
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
# @backstage/backend-defaults
|
||||
|
||||
## 0.2.7-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/backend-common@0.19.9-next.1
|
||||
- @backstage/backend-app-api@0.5.8-next.1
|
||||
- @backstage/backend-plugin-api@0.6.7-next.1
|
||||
|
||||
## 0.2.7-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/backend-defaults",
|
||||
"description": "Backend defaults used by Backstage backend apps",
|
||||
"version": "0.2.7-next.0",
|
||||
"version": "0.2.7-next.1",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"publishConfig": {
|
||||
|
||||
@@ -1,5 +1,46 @@
|
||||
# example-backend-next
|
||||
|
||||
## 0.0.17-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-backend@1.15.0-next.1
|
||||
- @backstage/plugin-techdocs-backend@1.9.0-next.1
|
||||
- @backstage/plugin-scaffolder-backend@1.19.0-next.1
|
||||
- @backstage/plugin-catalog-backend-module-openapi@0.1.24-next.1
|
||||
- @backstage/plugin-catalog-backend-module-backstage-openapi@0.1.0-next.1
|
||||
- @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.4-next.1
|
||||
- @backstage/plugin-jenkins-backend@0.3.1-next.1
|
||||
- @backstage/plugin-kubernetes-backend@0.13.1-next.1
|
||||
- @backstage/plugin-lighthouse-backend@0.3.4-next.1
|
||||
- @backstage/plugin-linguist-backend@0.5.4-next.1
|
||||
- @backstage/plugin-search-backend-module-catalog@0.1.11-next.1
|
||||
- @backstage/plugin-search-backend-module-techdocs@0.1.11-next.1
|
||||
- @backstage/plugin-todo-backend@0.3.5-next.1
|
||||
- @backstage/plugin-adr-backend@0.4.4-next.1
|
||||
- @backstage/backend-defaults@0.2.7-next.1
|
||||
- @backstage/backend-tasks@0.5.12-next.1
|
||||
- @backstage/plugin-app-backend@0.3.55-next.1
|
||||
- @backstage/plugin-auth-node@0.4.1-next.1
|
||||
- @backstage/plugin-badges-backend@0.3.4-next.1
|
||||
- @backstage/plugin-entity-feedback-backend@0.2.4-next.1
|
||||
- @backstage/plugin-permission-backend-module-allow-all-policy@0.1.4-next.1
|
||||
- @backstage/plugin-permission-node@0.7.18-next.1
|
||||
- @backstage/plugin-playlist-backend@0.3.11-next.1
|
||||
- @backstage/plugin-proxy-backend@0.4.5-next.1
|
||||
- @backstage/plugin-search-backend@1.4.7-next.1
|
||||
- @backstage/plugin-search-backend-module-explore@0.1.11-next.1
|
||||
- @backstage/plugin-sonarqube-backend@0.2.9-next.1
|
||||
- @backstage/plugin-azure-devops-backend@0.4.4-next.1
|
||||
- @backstage/plugin-devtools-backend@0.2.4-next.1
|
||||
- @backstage/plugin-nomad-backend@0.1.9-next.1
|
||||
- @backstage/plugin-permission-backend@0.5.30-next.1
|
||||
- @backstage/plugin-search-backend-node@1.2.11-next.1
|
||||
- @backstage/backend-plugin-api@0.6.7-next.1
|
||||
- @backstage/plugin-catalog-backend-module-unprocessed@0.3.4-next.1
|
||||
- @backstage/plugin-permission-common@0.7.9
|
||||
|
||||
## 0.0.17-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "example-backend-next",
|
||||
"version": "0.0.17-next.0",
|
||||
"version": "0.0.17-next.1",
|
||||
"main": "dist/index.cjs.js",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
# @backstage/backend-openapi-utils
|
||||
|
||||
## 0.1.0-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/backend-plugin-api@0.6.7-next.1
|
||||
- @backstage/config@1.1.1
|
||||
- @backstage/errors@1.2.3
|
||||
|
||||
## 0.1.0-next.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/backend-openapi-utils",
|
||||
"description": "OpenAPI typescript support.",
|
||||
"version": "0.1.0-next.0",
|
||||
"version": "0.1.0-next.1",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
# @backstage/backend-plugin-api
|
||||
|
||||
## 0.6.7-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/backend-tasks@0.5.12-next.1
|
||||
- @backstage/plugin-auth-node@0.4.1-next.1
|
||||
- @backstage/config@1.1.1
|
||||
- @backstage/types@1.1.1
|
||||
- @backstage/plugin-permission-common@0.7.9
|
||||
|
||||
## 0.6.7-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/backend-plugin-api",
|
||||
"description": "Core API used by Backstage backend plugins",
|
||||
"version": "0.6.7-next.0",
|
||||
"version": "0.6.7-next.1",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"publishConfig": {
|
||||
|
||||
@@ -1,5 +1,28 @@
|
||||
# @backstage/backend-plugin-manager
|
||||
|
||||
## 0.0.3-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-backend@1.15.0-next.1
|
||||
- @backstage/backend-common@0.19.9-next.1
|
||||
- @backstage/plugin-scaffolder-node@0.2.8-next.1
|
||||
- @backstage/backend-tasks@0.5.12-next.1
|
||||
- @backstage/plugin-auth-node@0.4.1-next.1
|
||||
- @backstage/plugin-events-backend@0.2.16-next.1
|
||||
- @backstage/plugin-permission-node@0.7.18-next.1
|
||||
- @backstage/plugin-search-backend-node@1.2.11-next.1
|
||||
- @backstage/backend-plugin-api@0.6.7-next.1
|
||||
- @backstage/cli-common@0.1.13
|
||||
- @backstage/cli-node@0.2.0-next.0
|
||||
- @backstage/config@1.1.1
|
||||
- @backstage/errors@1.2.3
|
||||
- @backstage/types@1.1.1
|
||||
- @backstage/plugin-events-node@0.2.16-next.1
|
||||
- @backstage/plugin-permission-common@0.7.9
|
||||
- @backstage/plugin-search-common@1.2.7
|
||||
|
||||
## 0.0.3-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/backend-plugin-manager",
|
||||
"description": "Backstage plugin management backend",
|
||||
"version": "0.0.3-next.0",
|
||||
"version": "0.0.3-next.1",
|
||||
"private": true,
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# @backstage/backend-tasks
|
||||
|
||||
## 0.5.12-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/backend-common@0.19.9-next.1
|
||||
- @backstage/config@1.1.1
|
||||
- @backstage/errors@1.2.3
|
||||
- @backstage/types@1.1.1
|
||||
|
||||
## 0.5.12-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/backend-tasks",
|
||||
"description": "Common distributed task management library for Backstage backends",
|
||||
"version": "0.5.12-next.0",
|
||||
"version": "0.5.12-next.1",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"publishConfig": {
|
||||
|
||||
@@ -1,5 +1,19 @@
|
||||
# @backstage/backend-test-utils
|
||||
|
||||
## 0.2.8-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- bb688f7b3b: Ensure recursive deletion of temporary directories in tests
|
||||
- Updated dependencies
|
||||
- @backstage/backend-common@0.19.9-next.1
|
||||
- @backstage/backend-app-api@0.5.8-next.1
|
||||
- @backstage/plugin-auth-node@0.4.1-next.1
|
||||
- @backstage/backend-plugin-api@0.6.7-next.1
|
||||
- @backstage/config@1.1.1
|
||||
- @backstage/errors@1.2.3
|
||||
- @backstage/types@1.1.1
|
||||
|
||||
## 0.2.8-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/backend-test-utils",
|
||||
"description": "Test helpers library for Backstage backends",
|
||||
"version": "0.2.8-next.0",
|
||||
"version": "0.2.8-next.1",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"publishConfig": {
|
||||
|
||||
@@ -1,5 +1,64 @@
|
||||
# example-backend
|
||||
|
||||
## 0.2.89-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-backend@1.15.0-next.1
|
||||
- @backstage/plugin-catalog-node@1.5.0-next.1
|
||||
- @backstage/integration@1.7.2-next.0
|
||||
- @backstage/plugin-auth-backend@0.20.0-next.1
|
||||
- @backstage/plugin-techdocs-backend@1.9.0-next.1
|
||||
- @backstage/plugin-scaffolder-backend@1.19.0-next.1
|
||||
- @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.4-next.1
|
||||
- @backstage/plugin-jenkins-backend@0.3.1-next.1
|
||||
- @backstage/plugin-kubernetes-backend@0.13.1-next.1
|
||||
- @backstage/plugin-lighthouse-backend@0.3.4-next.1
|
||||
- @backstage/plugin-linguist-backend@0.5.4-next.1
|
||||
- @backstage/plugin-search-backend-module-catalog@0.1.11-next.1
|
||||
- @backstage/plugin-search-backend-module-techdocs@0.1.11-next.1
|
||||
- @backstage/plugin-todo-backend@0.3.5-next.1
|
||||
- example-app@0.2.89-next.1
|
||||
- @backstage/backend-common@0.19.9-next.1
|
||||
- @backstage/plugin-adr-backend@0.4.4-next.1
|
||||
- @backstage/plugin-code-coverage-backend@0.2.21-next.1
|
||||
- @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.8-next.1
|
||||
- @backstage/plugin-scaffolder-backend-module-rails@0.4.24-next.1
|
||||
- @backstage/backend-tasks@0.5.12-next.1
|
||||
- @backstage/plugin-app-backend@0.3.55-next.1
|
||||
- @backstage/plugin-auth-node@0.4.1-next.1
|
||||
- @backstage/plugin-badges-backend@0.3.4-next.1
|
||||
- @backstage/plugin-entity-feedback-backend@0.2.4-next.1
|
||||
- @backstage/plugin-events-backend@0.2.16-next.1
|
||||
- @backstage/plugin-permission-node@0.7.18-next.1
|
||||
- @backstage/plugin-playlist-backend@0.3.11-next.1
|
||||
- @backstage/plugin-proxy-backend@0.4.5-next.1
|
||||
- @backstage/plugin-rollbar-backend@0.1.52-next.1
|
||||
- @backstage/plugin-search-backend@1.4.7-next.1
|
||||
- @backstage/plugin-search-backend-module-explore@0.1.11-next.1
|
||||
- @backstage/plugin-search-backend-module-pg@0.5.16-next.1
|
||||
- @backstage/plugin-tech-insights-backend@0.5.21-next.1
|
||||
- @backstage/plugin-azure-devops-backend@0.4.4-next.1
|
||||
- @backstage/plugin-azure-sites-backend@0.1.17-next.1
|
||||
- @backstage/plugin-devtools-backend@0.2.4-next.1
|
||||
- @backstage/plugin-explore-backend@0.0.17-next.1
|
||||
- @backstage/plugin-graphql-backend@0.2.1-next.1
|
||||
- @backstage/plugin-kafka-backend@0.3.5-next.1
|
||||
- @backstage/plugin-nomad-backend@0.1.9-next.1
|
||||
- @backstage/plugin-permission-backend@0.5.30-next.1
|
||||
- @backstage/plugin-search-backend-module-elasticsearch@1.3.10-next.1
|
||||
- @backstage/plugin-search-backend-node@1.2.11-next.1
|
||||
- @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.39-next.1
|
||||
- @backstage/plugin-tech-insights-node@0.4.13-next.1
|
||||
- @backstage/catalog-client@1.4.5
|
||||
- @backstage/catalog-model@1.4.3
|
||||
- @backstage/config@1.1.1
|
||||
- @backstage/plugin-catalog-backend-module-unprocessed@0.3.4-next.1
|
||||
- @backstage/plugin-events-node@0.2.16-next.1
|
||||
- @backstage/plugin-permission-common@0.7.9
|
||||
- @backstage/plugin-search-common@1.2.7
|
||||
|
||||
## 0.2.89-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "example-backend",
|
||||
"version": "0.2.89-next.0",
|
||||
"version": "0.2.89-next.1",
|
||||
"main": "dist/index.cjs.js",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
@@ -1,5 +1,21 @@
|
||||
# @backstage/cli
|
||||
|
||||
## 0.24.0-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/integration@1.7.2-next.0
|
||||
- @backstage/config-loader@1.5.3-next.0
|
||||
- @backstage/catalog-model@1.4.3
|
||||
- @backstage/cli-common@0.1.13
|
||||
- @backstage/cli-node@0.2.0-next.0
|
||||
- @backstage/config@1.1.1
|
||||
- @backstage/errors@1.2.3
|
||||
- @backstage/eslint-plugin@0.1.3
|
||||
- @backstage/release-manifests@0.0.10
|
||||
- @backstage/types@1.1.1
|
||||
|
||||
## 0.24.0-next.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/cli",
|
||||
"description": "CLI for developing Backstage plugins and apps",
|
||||
"version": "0.24.0-next.0",
|
||||
"version": "0.24.0-next.1",
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/config-loader",
|
||||
"description": "Config loading functionality used by Backstage backend, and CLI",
|
||||
"version": "1.5.2-next.0",
|
||||
"version": "1.5.3-next.0",
|
||||
"publishConfig": {
|
||||
"access": "public",
|
||||
"main": "dist/index.cjs.js",
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# @backstage/core-compat-api
|
||||
|
||||
## 0.0.1-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/frontend-plugin-api@0.3.0-next.1
|
||||
- @backstage/core-plugin-api@1.8.0-next.0
|
||||
|
||||
## 0.0.1-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@backstage/core-compat-api",
|
||||
"version": "0.0.1-next.0",
|
||||
"version": "0.0.1-next.1",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
@@ -113,18 +113,18 @@ export function convertLegacyApp(
|
||||
output: {
|
||||
element: coreExtensionData.reactElement,
|
||||
},
|
||||
factory({ bind, inputs }) {
|
||||
factory({ inputs }) {
|
||||
// Clone the root element, this replaces the FlatRoutes declared in the app with out content input
|
||||
bind({
|
||||
return {
|
||||
element: React.cloneElement(rootEl, undefined, inputs.content.element),
|
||||
});
|
||||
};
|
||||
},
|
||||
});
|
||||
const CoreNavOverride = createExtension({
|
||||
id: 'core.nav',
|
||||
attachTo: { id: 'core.layout', input: 'nav' },
|
||||
output: {},
|
||||
factory() {},
|
||||
factory: () => ({}),
|
||||
disabled: true,
|
||||
});
|
||||
|
||||
|
||||
@@ -1,5 +1,18 @@
|
||||
# @backstage/core-components
|
||||
|
||||
## 0.13.8-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-react@1.9.0-next.1
|
||||
- @backstage/catalog-model@1.4.3
|
||||
- @backstage/config@1.1.1
|
||||
- @backstage/core-plugin-api@1.8.0-next.0
|
||||
- @backstage/errors@1.2.3
|
||||
- @backstage/theme@0.4.4-next.0
|
||||
- @backstage/version-bridge@1.0.7-next.0
|
||||
|
||||
## 0.13.7-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -746,16 +746,13 @@ export type MetadataTableTitleCellClassKey = 'root';
|
||||
export type MicDropClassKey = 'micDrop';
|
||||
|
||||
// Warning: (ae-forgotten-export) The symbol "Props_3" needs to be exported by the entry point index.d.ts
|
||||
// Warning: (ae-missing-release-tag) "MissingAnnotationEmptyState" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal)
|
||||
//
|
||||
// @public (undocumented)
|
||||
// @public @deprecated (undocumented)
|
||||
export function MissingAnnotationEmptyState(
|
||||
props: Props_3,
|
||||
): React_2.JSX.Element;
|
||||
|
||||
// Warning: (ae-missing-release-tag) "MissingAnnotationEmptyStateClassKey" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal)
|
||||
//
|
||||
// @public (undocumented)
|
||||
// @public @deprecated (undocumented)
|
||||
export type MissingAnnotationEmptyStateClassKey = 'code';
|
||||
|
||||
// @public
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/core-components",
|
||||
"description": "Core components used by Backstage plugins and apps",
|
||||
"version": "0.13.7-next.0",
|
||||
"version": "0.13.8-next.1",
|
||||
"publishConfig": {
|
||||
"access": "public",
|
||||
"main": "dist/index.esm.js",
|
||||
@@ -33,11 +33,9 @@
|
||||
"start": "backstage-cli package start"
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage/catalog-model": "workspace:^",
|
||||
"@backstage/config": "workspace:^",
|
||||
"@backstage/core-plugin-api": "workspace:^",
|
||||
"@backstage/errors": "workspace:^",
|
||||
"@backstage/plugin-catalog-react": "workspace:^",
|
||||
"@backstage/theme": "workspace:^",
|
||||
"@backstage/version-bridge": "workspace:^",
|
||||
"@date-io/core": "^1.3.13",
|
||||
|
||||
+41
-48
@@ -25,14 +25,33 @@ import { CodeSnippet } from '../CodeSnippet';
|
||||
import { Link } from '../Link';
|
||||
import { EmptyState } from './EmptyState';
|
||||
|
||||
import { useEntity } from '@backstage/plugin-catalog-react';
|
||||
import { Entity } from '@backstage/catalog-model';
|
||||
const COMPONENT_YAML_TEMPLATE = `apiVersion: backstage.io/v1alpha1
|
||||
kind: Component
|
||||
metadata:
|
||||
name: example
|
||||
description: example.com
|
||||
annotations:
|
||||
ANNOTATION: value
|
||||
spec:
|
||||
type: website
|
||||
lifecycle: production
|
||||
owner: user:guest`;
|
||||
|
||||
const ANNOTATION_REGEXP = /^.*ANNOTATION.*$/m;
|
||||
const ANNOTATION_YAML = COMPONENT_YAML_TEMPLATE.match(ANNOTATION_REGEXP)![0];
|
||||
const ANNOTATION_LINE = COMPONENT_YAML_TEMPLATE.split('\n').findIndex(line =>
|
||||
ANNOTATION_REGEXP.test(line),
|
||||
);
|
||||
|
||||
type Props = {
|
||||
annotation: string | string[];
|
||||
readMoreUrl?: string;
|
||||
};
|
||||
|
||||
/**
|
||||
* @public
|
||||
* @deprecated This component is deprecated, please use {@link @backstage/plugin-catalog-react#MissingAnnotationEmptyStateClassKey} instead
|
||||
*/
|
||||
export type MissingAnnotationEmptyStateClassKey = 'code';
|
||||
|
||||
const useStyles = makeStyles<BackstageTheme>(
|
||||
@@ -47,38 +66,18 @@ const useStyles = makeStyles<BackstageTheme>(
|
||||
{ name: 'BackstageMissingAnnotationEmptyState' },
|
||||
);
|
||||
|
||||
function generateYamlExample(
|
||||
annotations: string[],
|
||||
entity?: Entity,
|
||||
): { yamlText: string; lineNumbers: number[] } {
|
||||
const kind = entity?.kind || 'Component';
|
||||
const name = entity?.metadata.name || 'example';
|
||||
const type = entity?.spec?.type || 'website';
|
||||
const owner = entity?.spec?.owner || 'user:default/guest';
|
||||
|
||||
const yamlText = `apiVersion: backstage.io/v1alpha1
|
||||
kind: ${kind}
|
||||
metadata:
|
||||
name: ${name}
|
||||
annotations:${annotations.map(ann => `\n ${ann}: value`).join('')}
|
||||
spec:
|
||||
type: ${type}
|
||||
owner: ${owner}`;
|
||||
|
||||
let line = 6; // Line 6 is the line number that annotations are added to.
|
||||
const lineNumbers: number[] = [];
|
||||
annotations.forEach(() => {
|
||||
lineNumbers.push(line);
|
||||
line++;
|
||||
});
|
||||
|
||||
return {
|
||||
yamlText,
|
||||
lineNumbers,
|
||||
};
|
||||
function generateLineNumbers(lineCount: number) {
|
||||
return Array.from(Array(lineCount + 1).keys(), i => i + ANNOTATION_LINE);
|
||||
}
|
||||
|
||||
function generateDescription(annotations: string[], entityKind = 'Component') {
|
||||
function generateComponentYaml(annotations: string[]) {
|
||||
const annotationYaml = annotations
|
||||
.map(ann => ANNOTATION_YAML.replace('ANNOTATION', ann))
|
||||
.join('\n');
|
||||
return COMPONENT_YAML_TEMPLATE.replace(ANNOTATION_YAML, annotationYaml);
|
||||
}
|
||||
|
||||
function generateDescription(annotations: string[]) {
|
||||
const isSingular = annotations.length <= 1;
|
||||
return (
|
||||
<>
|
||||
@@ -91,21 +90,17 @@ function generateDescription(annotations: string[], entityKind = 'Component') {
|
||||
</>
|
||||
))}{' '}
|
||||
{isSingular ? 'is' : 'are'} missing. You need to add the{' '}
|
||||
{isSingular ? 'annotation' : 'annotations'} to your {entityKind} if you
|
||||
want to enable this tool.
|
||||
{isSingular ? 'annotation' : 'annotations'} to your component if you want
|
||||
to enable this tool.
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @public
|
||||
* @deprecated This component is deprecated, please use {@link @backstage/plugin-catalog-react#MissingAnnotationEmptyState} instead
|
||||
*/
|
||||
export function MissingAnnotationEmptyState(props: Props) {
|
||||
let entity: Entity | undefined;
|
||||
try {
|
||||
const entityContext = useEntity();
|
||||
entity = entityContext.entity;
|
||||
} catch (err) {
|
||||
// ignore when entity context doesnt exist
|
||||
}
|
||||
|
||||
const { annotation, readMoreUrl } = props;
|
||||
const annotations = Array.isArray(annotation) ? annotation : [annotation];
|
||||
const url =
|
||||
@@ -113,25 +108,23 @@ export function MissingAnnotationEmptyState(props: Props) {
|
||||
'https://backstage.io/docs/features/software-catalog/well-known-annotations';
|
||||
const classes = useStyles();
|
||||
|
||||
const entityKind = entity?.kind || 'Component';
|
||||
const { yamlText, lineNumbers } = generateYamlExample(annotations, entity);
|
||||
return (
|
||||
<EmptyState
|
||||
missing="field"
|
||||
title="Missing Annotation"
|
||||
description={generateDescription(annotations, entityKind)}
|
||||
description={generateDescription(annotations)}
|
||||
action={
|
||||
<>
|
||||
<Typography variant="body1">
|
||||
Add the annotation to your {entityKind} YAML as shown in the
|
||||
Add the annotation to your component YAML as shown in the
|
||||
highlighted example below:
|
||||
</Typography>
|
||||
<Box className={classes.code}>
|
||||
<CodeSnippet
|
||||
text={yamlText}
|
||||
text={generateComponentYaml(annotations)}
|
||||
language="yaml"
|
||||
showLineNumbers
|
||||
highlightedNumbers={lineNumbers}
|
||||
highlightedNumbers={generateLineNumbers(annotations.length)}
|
||||
customStyle={{ background: 'inherit', fontSize: '115%' }}
|
||||
/>
|
||||
</Box>
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# @backstage/create-app
|
||||
|
||||
## 0.5.7-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Bumped create-app version.
|
||||
- Updated dependencies
|
||||
- @backstage/cli-common@0.1.13
|
||||
|
||||
## 0.5.7-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/create-app",
|
||||
"description": "A CLI that helps you create your own Backstage app",
|
||||
"version": "0.5.7-next.0",
|
||||
"version": "0.5.7-next.1",
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
|
||||
@@ -1,5 +1,19 @@
|
||||
# @backstage/dev-utils
|
||||
|
||||
## 1.0.23-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-react@1.9.0-next.1
|
||||
- @backstage/integration-react@1.1.21-next.1
|
||||
- @backstage/core-components@0.13.8-next.1
|
||||
- @backstage/app-defaults@1.4.5-next.1
|
||||
- @backstage/catalog-model@1.4.3
|
||||
- @backstage/core-app-api@1.11.1-next.0
|
||||
- @backstage/core-plugin-api@1.8.0-next.0
|
||||
- @backstage/theme@0.4.4-next.0
|
||||
|
||||
## 1.0.23-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/dev-utils",
|
||||
"description": "Utilities for developing Backstage plugins.",
|
||||
"version": "1.0.23-next.0",
|
||||
"version": "1.0.23-next.1",
|
||||
"publishConfig": {
|
||||
"access": "public",
|
||||
"main": "dist/index.esm.js",
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
# e2e-test
|
||||
|
||||
## 0.2.9-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/create-app@0.5.7-next.1
|
||||
- @backstage/cli-common@0.1.13
|
||||
- @backstage/errors@1.2.3
|
||||
|
||||
## 0.2.9-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "e2e-test",
|
||||
"description": "E2E test for verifying Backstage packages",
|
||||
"version": "0.2.9-next.0",
|
||||
"version": "0.2.9-next.1",
|
||||
"private": true,
|
||||
"backstage": {
|
||||
"role": "cli"
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
# @backstage/frontend-app-api
|
||||
|
||||
## 0.3.0-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- fe6d09953d: Fix for app node output IDs not being serialized correctly.
|
||||
- 77f009b35d: Internal updates to match changes in the experimental `@backstage/frontend-plugin-api`.
|
||||
- 4d6fa921db: Internal refactor to rename the app graph to app tree
|
||||
- Updated dependencies
|
||||
- @backstage/frontend-plugin-api@0.3.0-next.1
|
||||
- @backstage/plugin-graphiql@0.3.0-next.1
|
||||
- @backstage/core-components@0.13.8-next.1
|
||||
- @backstage/config@1.1.1
|
||||
- @backstage/core-app-api@1.11.1-next.0
|
||||
- @backstage/core-plugin-api@1.8.0-next.0
|
||||
- @backstage/theme@0.4.4-next.0
|
||||
- @backstage/types@1.1.1
|
||||
- @backstage/version-bridge@1.0.7-next.0
|
||||
|
||||
## 0.3.0-next.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@backstage/frontend-app-api",
|
||||
"version": "0.3.0-next.0",
|
||||
"version": "0.3.0-next.1",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user