diff --git a/app-config.yaml b/app-config.yaml
index ca553afc7..0510d7db3 100644
--- a/app-config.yaml
+++ b/app-config.yaml
@@ -125,6 +125,11 @@ catalog:
target: ../../catalog/catalog.yaml
rules:
- allow: [Component, Group, User]
+ - type: file
+ target: ../../catalog/templates/*.yaml
+ rules:
+ - allow:
+ - Template
grafana:
domain: https://giantswarm.grafana.net
diff --git a/catalog/templates/go-project.yaml b/catalog/templates/go-project.yaml
new file mode 100644
index 000000000..fd2fdfc73
--- /dev/null
+++ b/catalog/templates/go-project.yaml
@@ -0,0 +1,167 @@
+apiVersion: scaffolder.backstage.io/v1beta3
+kind: Template
+metadata:
+ name: go-project
+ title: Go project
+ description: A Go project without any deployment capabilities, suited best for CLIs or libraries
+spec:
+ owner: team-honeybadger
+ type: Component
+
+ # User input parameters and form details config
+ parameters:
+ - title: Basic details
+ required:
+ - name
+ - description
+ - visibility
+ - owner
+ description: Please fill in the required details. Make sure to pick a name carefully, as it will be quite a hassle to change it later.
+ properties:
+ name:
+ title: Name
+ type: string
+ description: Unique name of the component and repository
+ pattern: "[a-z][-a-z0-9]+"
+ minLength: 2
+ maxLength: 100
+ ui:autofocus: true
+ description:
+ title: Description
+ type: string
+ description: Please give a general description in one sentence, so everybody can understand what this project and repo is for.
+ visibility:
+ title: Repository visibility
+ type: string
+ default: public
+ enum:
+ - public
+ - private
+ ui:widget: radio
+ owner:
+ type: string
+ ui:field: OwnerPicker
+
+ - title: Integrations
+ description: Select the technical integrations you need for sure. You can always add integrations later.
+ properties:
+ circleci:
+ type: boolean
+ title: I want CircleCI checks and builds for this project
+ default: true
+ ui:autofocus: true
+ image_registry:
+ type: boolean
+ title: I want a container image repository for this project
+ default: false
+ renovate:
+ type: boolean
+ title: I want Renovate to help update dependencies in this project
+ default: true
+
+ - title: Additional options
+ description: For fine-tuning our automations you can set some additional options here. These can also be modified later.
+ properties:
+ precommit:
+ type: boolean
+ default: true
+ title: Provide pre-commit framework configuration
+ ui:autofocus: true
+ flavors:
+ type: object
+ title: Flavours
+ description: Select the type of repository features you want to enable for your project. Check [the docs](https://devportal.giantswarm.io/docs/default/component/devctl/docs/flavours/) to read more.
+ properties:
+ cli:
+ type: boolean
+ description: Check this if the project will include a CLI utility.
+ k8sapi:
+ type: boolean
+ description: Check if the project will include a Kubernetes API definition (CRD).
+
+ - title: Developer portal catalog
+ description: Specify how this project will appear in the catalog.
+ properties:
+ componentType:
+ type: string
+ title: Component type
+ description: The component type this project should be shown as here in the developer portal catalog-info.yaml
+ default: unspecified
+ ui:autofocus: true
+ enum:
+ - unspecified
+ - cli
+ - library
+ - service
+ # system:
+ # type: string
+ # title: System
+ # description: Pick the system your new component belongs to (if any).
+ # ui:field: EntityPicker
+ # default: ""
+ # ui:options:
+ # catalogFilter:
+ # - kind: System
+
+ # Creation steps
+ steps:
+ - id: fetch-base
+ name: Fetch and adapt template
+ action: fetch:template
+ input:
+ url: https://github.com/giantswarm/template/tree/nunjucks-syntax
+ copyWithoutTemplating:
+ - .github/workflows/* # required to prevent the attempt to replace ${{ variables }}
+ values:
+ REPOSITORY_NAME: ${{ parameters.name }}
+ OWNER: ${{ parameters.owner }}
+ DESCRIPTION: ${{ parameters.description }}
+ COMPONENT_TYPE: ${{ parameters.componentType }}
+ SYSTEM: ${{ parameters.system }}
+ VISIBILITY: ${{ parameters.visibility }}
+ WANT_CIRCLECI: ${{ parameters.circleci }}
+ WANT_IMAGE_REGISTRY: ${{ parameters.image_registry }}
+ RENOVATE: ${{ parameters.renovate }}
+ FLAVOUR_CLI: ${{ parameters.flavors.cli }}
+ FLAVOUR_K8SAPI: ${{ parameters.flavors.k8sapi }}
+
+ - id: overwrite-codeowners
+ name: Create CODEOWNERS file
+ action: github:codeowners:create
+ input:
+ organization: giantswarm
+ team: ${{ parameters.owner }}
+
+ - id: publish
+ name: Publish new repository
+ action: publish:github
+ input:
+ repoUrl: github.com?repo=${{ parameters.name }}&owner=giantswarm
+ description: ${{ parameters.description }}
+ access: giantswarm/employees
+ repoVisibility: ${{ parameters.visibility }}
+ defaultBranch: main
+ protectDefaultBranch: true
+ protectEnforceAdmins: true
+ deleteBranchOnMerge: true
+ gitAuthorName: Developer portal
+ allowMergeCommit: false
+ allowSquashMerge: true
+ allowRebaseMerge: false
+ allowAutoMerge: true
+ collaborators:
+ - team: bots
+ access: push
+ hasProjects: false
+ hasWiki: false
+ hasIssues: false
+
+ # Results output
+ output:
+ links:
+ - title: Your new repository
+ url: ${{ steps['publish'].output.repoContentsUrl }}
+ text:
+ - title: Next steps
+ content: |
+ **Please read your new repository's README file.** There are some instructions for you regarding how to proceed.
diff --git a/packages/app/src/App.tsx b/packages/app/src/App.tsx
index 3539e32e3..1aa55cbbe 100644
--- a/packages/app/src/App.tsx
+++ b/packages/app/src/App.tsx
@@ -5,11 +5,8 @@ import {
CatalogIndexPage,
catalogPlugin,
} from '@backstage/plugin-catalog';
-import {
- CatalogImportPage,
- catalogImportPlugin,
-} from '@backstage/plugin-catalog-import';
-import { ScaffolderPage, scaffolderPlugin } from '@backstage/plugin-scaffolder';
+import { scaffolderPlugin } from '@backstage/plugin-scaffolder';
+import { NextScaffolderPage } from '@backstage/plugin-scaffolder/alpha';
import { orgPlugin } from '@backstage/plugin-org';
import { SearchPage } from '@backstage/plugin-search';
import {
@@ -30,8 +27,6 @@ import { AlertDisplay, OAuthRequestDialog } from '@backstage/core-components';
import { createApp } from '@backstage/app-defaults';
import { AppRouter, FlatRoutes } from '@backstage/core-app-api';
import { CatalogGraphPage } from '@backstage/plugin-catalog-graph';
-import { RequirePermission } from '@backstage/plugin-permission-react';
-import { catalogEntityCreatePermission } from '@backstage/plugin-catalog-common/alpha';
import { githubAuthApiRef } from '@backstage/core-plugin-api';
import { SignInPage } from '@backstage/core-components';
@@ -59,9 +54,6 @@ const app = createApp({
createComponent: scaffolderPlugin.routes.root,
viewTechDoc: techdocsPlugin.routes.docRoot,
});
- bind(scaffolderPlugin.externalRoutes, {
- registerComponent: catalogImportPlugin.routes.importPage,
- });
bind(orgPlugin.externalRoutes, {
catalogIndex: catalogPlugin.routes.catalogIndex,
});
@@ -89,15 +81,7 @@ const routes = (
- } />
-
-
-
- }
- />
+ } />
}>
{searchPage}
diff --git a/packages/app/src/components/Root/Root.tsx b/packages/app/src/components/Root/Root.tsx
index e694f861a..d4982267a 100644
--- a/packages/app/src/components/Root/Root.tsx
+++ b/packages/app/src/components/Root/Root.tsx
@@ -1,5 +1,6 @@
import React, { PropsWithChildren } from 'react';
import { makeStyles } from '@material-ui/core';
+import CreateComponentIcon from '@material-ui/icons/AddCircleOutline';
import HomeIcon from '@material-ui/icons/Home';
import LibraryBooks from '@material-ui/icons/LibraryBooks';
import LogoFull from './LogoFull';
@@ -63,6 +64,7 @@ export const Root = ({ children }: PropsWithChildren<{}>) => (
{/* Global nav, not org-specific */}
+
{/* End global nav */}
diff --git a/packages/backend/package.json b/packages/backend/package.json
index 0f2ee5f91..e8be0a9ee 100644
--- a/packages/backend/package.json
+++ b/packages/backend/package.json
@@ -21,6 +21,7 @@
"@backstage/catalog-client": "^1.4.3",
"@backstage/catalog-model": "^1.4.1",
"@backstage/config": "^1.0.8",
+ "@backstage/integration": "^1.6.2",
"@backstage/plugin-app-backend": "^0.3.47",
"@backstage/plugin-auth-backend": "^0.18.5",
"@backstage/plugin-auth-node": "^0.2.16",
@@ -29,6 +30,7 @@
"@backstage/plugin-permission-node": "^0.7.10",
"@backstage/plugin-proxy-backend": "^0.2.41",
"@backstage/plugin-scaffolder-backend": "^1.15.1",
+ "@backstage/plugin-scaffolder-node": "^0.2.2",
"@backstage/plugin-search-backend": "^1.3.3",
"@backstage/plugin-search-backend-module-pg": "^0.5.8",
"@backstage/plugin-search-backend-node": "^1.2.3",
@@ -43,7 +45,8 @@
"fs-extra": "^11.1.1",
"js-yaml": "^4.0.0",
"pg": "^8.10.0",
- "winston": "^3.2.1"
+ "winston": "^3.2.1",
+ "zod": "^3.22.2"
},
"devDependencies": {
"@backstage/cli": "^0.22.9",
diff --git a/packages/backend/src/plugins/scaffolder.ts b/packages/backend/src/plugins/scaffolder.ts
index a12fee229..3be851a05 100644
--- a/packages/backend/src/plugins/scaffolder.ts
+++ b/packages/backend/src/plugins/scaffolder.ts
@@ -1,7 +1,9 @@
import { CatalogClient } from '@backstage/catalog-client';
-import { createRouter } from '@backstage/plugin-scaffolder-backend';
+import { createBuiltinActions, createRouter } from '@backstage/plugin-scaffolder-backend';
+import { ScmIntegrations } from '@backstage/integration';
import { Router } from 'express';
import type { PluginEnvironment } from '../types';
+import { createCodeownersAction } from './scaffolder/actions/custom';
export default async function createPlugin(
env: PluginEnvironment,
@@ -10,7 +12,19 @@ export default async function createPlugin(
discoveryApi: env.discovery,
});
+ const integrations = ScmIntegrations.fromConfig(env.config);
+
+ const builtInActions = createBuiltinActions({
+ integrations,
+ catalogClient,
+ config: env.config,
+ reader: env.reader,
+ });
+
+ const actions = [...builtInActions, createCodeownersAction()];
+
return await createRouter({
+ actions,
logger: env.logger,
config: env.config,
database: env.database,
diff --git a/packages/backend/src/plugins/scaffolder/actions/custom.ts b/packages/backend/src/plugins/scaffolder/actions/custom.ts
new file mode 100644
index 000000000..3656f6950
--- /dev/null
+++ b/packages/backend/src/plugins/scaffolder/actions/custom.ts
@@ -0,0 +1,43 @@
+import { createTemplateAction } from '@backstage/plugin-scaffolder-node';
+import { writeFile } from 'fs';
+
+export const createCodeownersAction = () => {
+ return createTemplateAction<{ organization: string; team: string }>({
+ id: 'github:codeowners:create',
+ schema: {
+ input: {
+ required: ['organization', 'team'],
+ type: 'object',
+ properties: {
+ organization: {
+ type: 'string',
+ title: 'Organization',
+ description: 'The GitHub organization name',
+ },
+ team: {
+ type: 'string',
+ title: 'Filename',
+ description: 'The filename of the file that will be created',
+ },
+ },
+ },
+ },
+ async handler(ctx) {
+ const { signal } = ctx;
+
+ // Sanitize a string like 'group:default/foobar'
+ const parts = ctx.input.team.split("/");
+ const team = parts[parts.length - 1];
+
+ let contents = "# generated by giantswarm/github actions - changes will be overwritten\n";
+ contents += `* @${ctx.input.organization}/${team}\n`;
+
+ await writeFile(
+ `${ctx.workspacePath}/CODEOWNERS`,
+ contents,
+ { signal },
+ _ => {},
+ );
+ },
+ });
+};
diff --git a/yarn.lock b/yarn.lock
index f55fd1f90..383419c05 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1939,6 +1939,42 @@
winston "^3.2.1"
winston-transport "^4.5.0"
+"@backstage/backend-app-api@^0.5.2":
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/@backstage/backend-app-api/-/backend-app-api-0.5.2.tgz#a5be3250c34b0813f728f82df4c87e16534cbc1a"
+ integrity sha512-ecJEhPFMaT7IjSMHUvTEKo8Pvjkv35/JbmZRifPy79EAK/7DxSCb6pHekU1e/nnmcvuIWfpguLINbBeqKL5HSg==
+ dependencies:
+ "@backstage/backend-common" "^0.19.4"
+ "@backstage/backend-plugin-api" "^0.6.2"
+ "@backstage/backend-tasks" "^0.5.7"
+ "@backstage/cli-common" "^0.1.12"
+ "@backstage/cli-node" "^0.1.3"
+ "@backstage/config" "^1.0.8"
+ "@backstage/config-loader" "^1.4.0"
+ "@backstage/errors" "^1.2.1"
+ "@backstage/plugin-auth-node" "^0.2.19"
+ "@backstage/plugin-permission-node" "^0.7.13"
+ "@backstage/types" "^1.1.0"
+ "@manypkg/get-packages" "^1.1.3"
+ "@types/cors" "^2.8.6"
+ "@types/express" "^4.17.6"
+ compression "^1.7.4"
+ cors "^2.8.5"
+ express "^4.17.1"
+ express-promise-router "^4.1.0"
+ fs-extra "10.1.0"
+ helmet "^6.0.0"
+ lodash "^4.17.21"
+ logform "^2.3.2"
+ minimatch "^5.0.0"
+ minimist "^1.2.5"
+ morgan "^1.10.0"
+ node-forge "^1.3.1"
+ selfsigned "^2.0.0"
+ stoppable "^1.1.0"
+ winston "^3.2.1"
+ winston-transport "^4.5.0"
+
"@backstage/backend-common@^0.19.1":
version "0.19.1"
resolved "https://registry.yarnpkg.com/@backstage/backend-common/-/backend-common-0.19.1.tgz#7921e5130cf8bdca79187ecd42c94df15a40e4a2"
@@ -2003,6 +2039,70 @@
yauzl "^2.10.0"
yn "^4.0.0"
+"@backstage/backend-common@^0.19.4":
+ version "0.19.4"
+ resolved "https://registry.yarnpkg.com/@backstage/backend-common/-/backend-common-0.19.4.tgz#c27fb52ed69c9b28d9db85318cc6b5d161ba2322"
+ integrity sha512-D0pXpfLVWFSPejsW9OQaebhpV3ujRtVNFlRYPGbcJRq3Q0oebnNCz+9KO/Aunv27oGi7Pl0OYDjY9hpMPH+O4w==
+ dependencies:
+ "@aws-sdk/abort-controller" "^3.347.0"
+ "@aws-sdk/client-s3" "^3.350.0"
+ "@aws-sdk/credential-providers" "^3.350.0"
+ "@aws-sdk/types" "^3.347.0"
+ "@backstage/backend-app-api" "^0.5.2"
+ "@backstage/backend-dev-utils" "^0.1.1"
+ "@backstage/backend-plugin-api" "^0.6.2"
+ "@backstage/cli-common" "^0.1.12"
+ "@backstage/config" "^1.0.8"
+ "@backstage/config-loader" "^1.4.0"
+ "@backstage/errors" "^1.2.1"
+ "@backstage/integration" "^1.6.2"
+ "@backstage/integration-aws-node" "^0.1.5"
+ "@backstage/types" "^1.1.0"
+ "@google-cloud/storage" "^6.0.0"
+ "@keyv/memcache" "^1.3.5"
+ "@keyv/redis" "^2.5.3"
+ "@kubernetes/client-node" "0.18.1"
+ "@manypkg/get-packages" "^1.1.3"
+ "@octokit/rest" "^19.0.3"
+ "@types/cors" "^2.8.6"
+ "@types/dockerode" "^3.3.0"
+ "@types/express" "^4.17.6"
+ "@types/luxon" "^3.0.0"
+ "@types/webpack-env" "^1.15.2"
+ archiver "^5.0.2"
+ base64-stream "^1.0.0"
+ compression "^1.7.4"
+ concat-stream "^2.0.0"
+ cors "^2.8.5"
+ dockerode "^3.3.1"
+ express "^4.17.1"
+ express-promise-router "^4.1.0"
+ fs-extra "10.1.0"
+ git-url-parse "^13.0.0"
+ helmet "^6.0.0"
+ isomorphic-git "^1.23.0"
+ jose "^4.6.0"
+ keyv "^4.5.2"
+ knex "^2.0.0"
+ lodash "^4.17.21"
+ logform "^2.3.2"
+ luxon "^3.0.0"
+ minimatch "^5.0.0"
+ minimist "^1.2.5"
+ morgan "^1.10.0"
+ node-fetch "^2.6.7"
+ node-forge "^1.3.1"
+ pg "^8.3.0"
+ raw-body "^2.4.1"
+ selfsigned "^2.0.0"
+ stoppable "^1.1.0"
+ tar "^6.1.12"
+ uuid "^8.3.2"
+ winston "^3.2.1"
+ winston-transport "^4.5.0"
+ yauzl "^2.10.0"
+ yn "^4.0.0"
+
"@backstage/backend-dev-utils@^0.1.1":
version "0.1.1"
resolved "https://registry.yarnpkg.com/@backstage/backend-dev-utils/-/backend-dev-utils-0.1.1.tgz#5a10998436df08adb86066f1d685421de5d05f1c"
@@ -2022,6 +2122,20 @@
express "^4.17.1"
knex "^2.0.0"
+"@backstage/backend-plugin-api@^0.6.2":
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/@backstage/backend-plugin-api/-/backend-plugin-api-0.6.2.tgz#bf1215d62b31c2bee9e7b51aac4237b7d3d56690"
+ integrity sha512-ViSENG/e4+6/19R0xcEduXc8XjBPpxXzi1FFke4J5NwR+OIOjtMugVnJLWiAfHJNMvUI2Q4Jb2zGouxqbwgBIA==
+ dependencies:
+ "@backstage/backend-tasks" "^0.5.7"
+ "@backstage/config" "^1.0.8"
+ "@backstage/plugin-auth-node" "^0.2.19"
+ "@backstage/plugin-permission-common" "^0.7.7"
+ "@backstage/types" "^1.1.0"
+ "@types/express" "^4.17.6"
+ express "^4.17.1"
+ knex "^2.0.0"
+
"@backstage/backend-tasks@^0.5.4":
version "0.5.4"
resolved "https://registry.yarnpkg.com/@backstage/backend-tasks/-/backend-tasks-0.5.4.tgz#31fc5af9685f81e9faa1b83f710dbac8fe6e7e33"
@@ -2040,6 +2154,24 @@
winston "^3.2.1"
zod "^3.21.4"
+"@backstage/backend-tasks@^0.5.7":
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/@backstage/backend-tasks/-/backend-tasks-0.5.7.tgz#49b761bd8906fc4252a806305811e94ab6a21eb3"
+ integrity sha512-ksWvho3zJQz6Xrx/ecLoi4Q4poLncexXKw/Y1aNhsVFbvBtajgGn+atsjSY9vK/GWv9WjFjr7n5zg+3Bm7mW8Q==
+ dependencies:
+ "@backstage/backend-common" "^0.19.4"
+ "@backstage/config" "^1.0.8"
+ "@backstage/errors" "^1.2.1"
+ "@backstage/types" "^1.1.0"
+ "@types/luxon" "^3.0.0"
+ cron "^2.0.0"
+ knex "^2.0.0"
+ lodash "^4.17.21"
+ luxon "^3.0.0"
+ uuid "^8.0.0"
+ winston "^3.2.1"
+ zod "^3.21.4"
+
"@backstage/catalog-client@^1.4.3":
version "1.4.3"
resolved "https://registry.yarnpkg.com/@backstage/catalog-client/-/catalog-client-1.4.3.tgz#e7631dcae97a7620b1532666a12e92be092a9f34"
@@ -2081,6 +2213,20 @@
semver "^7.5.3"
zod "^3.21.4"
+"@backstage/cli-node@^0.1.3":
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/@backstage/cli-node/-/cli-node-0.1.3.tgz#be32582957c52c80cd421893ec3b1d85ab2419ce"
+ integrity sha512-3djqOzkHYosxxriWjqeqIAcLRUcVGM/YXuS1lDMLQDdZKuIEoyXJddTOm9bsaio6huDrvnMBcJ5kgkHTm3mgKA==
+ dependencies:
+ "@backstage/cli-common" "^0.1.12"
+ "@backstage/errors" "^1.2.1"
+ "@backstage/types" "^1.1.0"
+ "@manypkg/get-packages" "^1.1.3"
+ "@yarnpkg/parsers" "^3.0.0-rc.4"
+ fs-extra "10.1.0"
+ semver "^7.5.3"
+ zod "^3.21.4"
+
"@backstage/cli@^0.22.9":
version "0.22.9"
resolved "https://registry.yarnpkg.com/@backstage/cli/-/cli-0.22.9.tgz#4f47b23366a2f438f27a0d37ea1790aad725e0b2"
@@ -2217,6 +2363,29 @@
yaml "^2.0.0"
yup "^0.32.9"
+"@backstage/config-loader@^1.4.0":
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/@backstage/config-loader/-/config-loader-1.4.0.tgz#d2f8aaad3d2977f9bfda98239e51cdf3ecb610f6"
+ integrity sha512-Qk3U4fYvqpcWOPr5ClC+Q+ByXB1GCRRieiQNsgSszR2hFqWpRNVoiv0j+6YMsbvVmNX8VFO3iKJEd11Ae1RB/g==
+ dependencies:
+ "@backstage/cli-common" "^0.1.12"
+ "@backstage/config" "^1.0.8"
+ "@backstage/errors" "^1.2.1"
+ "@backstage/types" "^1.1.0"
+ "@types/json-schema" "^7.0.6"
+ ajv "^8.10.0"
+ chokidar "^3.5.2"
+ fs-extra "10.1.0"
+ json-schema "^0.4.0"
+ json-schema-merge-allof "^0.8.1"
+ json-schema-traverse "^1.0.0"
+ lodash "^4.17.21"
+ minimist "^1.2.5"
+ node-fetch "^2.6.7"
+ typescript-json-schema "^0.55.0"
+ yaml "^2.0.0"
+ yup "^0.32.9"
+
"@backstage/config@^1.0.7", "@backstage/config@^1.0.8":
version "1.0.8"
resolved "https://registry.yarnpkg.com/@backstage/config/-/config-1.0.8.tgz#283a4900c7aae216bd4e3dce4389ce060f989884"
@@ -2405,6 +2574,21 @@
lodash "^4.17.21"
luxon "^3.0.0"
+"@backstage/integration@^1.6.2":
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/@backstage/integration/-/integration-1.6.2.tgz#83e70aea9d78624a2b6c0c4c3a37675752cdbede"
+ integrity sha512-10XNwGmzoLwcsRPieZLoYRXBBYvdkakT+TY5ucNaGw9QwxvlFZxDel1hIPLJIEctV9yFCkf1iw4ufJBiaHNJjQ==
+ dependencies:
+ "@azure/identity" "^3.2.1"
+ "@backstage/config" "^1.0.8"
+ "@backstage/errors" "^1.2.1"
+ "@octokit/auth-app" "^4.0.0"
+ "@octokit/rest" "^19.0.3"
+ cross-fetch "^3.1.5"
+ git-url-parse "^13.0.0"
+ lodash "^4.17.21"
+ luxon "^3.0.0"
+
"@backstage/plugin-app-backend@^0.3.47":
version "0.3.47"
resolved "https://registry.yarnpkg.com/@backstage/plugin-app-backend/-/plugin-app-backend-0.3.47.tgz#b5df54f7484967e462e1ffc9240c7d470c45e53c"
@@ -2490,6 +2674,20 @@
node-fetch "^2.6.7"
winston "^3.2.1"
+"@backstage/plugin-auth-node@^0.2.19":
+ version "0.2.19"
+ resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-node/-/plugin-auth-node-0.2.19.tgz#bae4befc72ad79a4a805a2e847f6d68f75dc0195"
+ integrity sha512-E/GuS0OzcrauE5b4ODKXOT59EEuCaNHSWnBeerXlxoqBaGSVdXodOjpfmcU7sxMHmJvT0W04G4gOR9Jc+VPLEw==
+ dependencies:
+ "@backstage/backend-common" "^0.19.4"
+ "@backstage/config" "^1.0.8"
+ "@backstage/errors" "^1.2.1"
+ "@types/express" "*"
+ express "^4.17.1"
+ jose "^4.6.0"
+ node-fetch "^2.6.7"
+ winston "^3.2.1"
+
"@backstage/plugin-catalog-backend@^1.11.0":
version "1.11.0"
resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog-backend/-/plugin-catalog-backend-1.11.0.tgz#d625b307fdbe1dba9fbdcb625101edac8608a45b"
@@ -2775,6 +2973,23 @@
zod "^3.21.4"
zod-to-json-schema "^3.20.4"
+"@backstage/plugin-permission-node@^0.7.13":
+ version "0.7.13"
+ resolved "https://registry.yarnpkg.com/@backstage/plugin-permission-node/-/plugin-permission-node-0.7.13.tgz#ac071912ac7608ee695328cf22a7007f8f4418e3"
+ integrity sha512-u7STVvR0IExRzrl4VHhe0iHKnVvSvxtjqwI0hJS+zy2nid9koceCDeDDVzZ+gCY0IBqX470mysbA8yGciMDywA==
+ dependencies:
+ "@backstage/backend-common" "^0.19.4"
+ "@backstage/backend-plugin-api" "^0.6.2"
+ "@backstage/config" "^1.0.8"
+ "@backstage/errors" "^1.2.1"
+ "@backstage/plugin-auth-node" "^0.2.19"
+ "@backstage/plugin-permission-common" "^0.7.7"
+ "@types/express" "^4.17.6"
+ express "^4.17.1"
+ express-promise-router "^4.1.0"
+ zod "^3.21.4"
+ zod-to-json-schema "^3.20.4"
+
"@backstage/plugin-permission-react@^0.4.14":
version "0.4.14"
resolved "https://registry.yarnpkg.com/@backstage/plugin-permission-react/-/plugin-permission-react-0.4.14.tgz#50b1e60230a6385fbd7f5bbb175c64710114f2bd"
@@ -2874,6 +3089,15 @@
"@backstage/plugin-permission-common" "^0.7.7"
"@backstage/types" "^1.1.0"
+"@backstage/plugin-scaffolder-common@^1.4.0":
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/@backstage/plugin-scaffolder-common/-/plugin-scaffolder-common-1.4.0.tgz#e1cad29f7e4adde2e9c853854aa76ccdda0b183e"
+ integrity sha512-NO15B4RsQEDUzQCjcs1B7RMVlTYmUjrUgfucCfRc3bJZAeGuk+1H2WFzHzKvKYdmW3M/JrNQXrEjv0xILbfiEg==
+ dependencies:
+ "@backstage/catalog-model" "^1.4.1"
+ "@backstage/plugin-permission-common" "^0.7.7"
+ "@backstage/types" "^1.1.0"
+
"@backstage/plugin-scaffolder-node@^0.1.5":
version "0.1.5"
resolved "https://registry.yarnpkg.com/@backstage/plugin-scaffolder-node/-/plugin-scaffolder-node-0.1.5.tgz#8cc82ab47940c187d1e44fcb89390885278b0e94"
@@ -2888,6 +3112,24 @@
zod "^3.21.4"
zod-to-json-schema "^3.20.4"
+"@backstage/plugin-scaffolder-node@^0.2.2":
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/@backstage/plugin-scaffolder-node/-/plugin-scaffolder-node-0.2.2.tgz#7f8339954e4b843da2067ff85ab50825e2a0ca2f"
+ integrity sha512-qkDFxQQQckx5HECkVkxW1YJ2qvMCQgqSNA2ARhzLJ6gWch+jh9SwrG7CtZJbkgW6l8Xq8Q3U2uy3wTPsH8GLjA==
+ dependencies:
+ "@backstage/backend-common" "^0.19.4"
+ "@backstage/backend-plugin-api" "^0.6.2"
+ "@backstage/catalog-model" "^1.4.1"
+ "@backstage/errors" "^1.2.1"
+ "@backstage/integration" "^1.6.2"
+ "@backstage/plugin-scaffolder-common" "^1.4.0"
+ "@backstage/types" "^1.1.0"
+ fs-extra "10.1.0"
+ jsonschema "^1.2.6"
+ winston "^3.2.1"
+ zod "^3.21.4"
+ zod-to-json-schema "^3.20.4"
+
"@backstage/plugin-scaffolder-react@^1.5.1":
version "1.5.1"
resolved "https://registry.yarnpkg.com/@backstage/plugin-scaffolder-react/-/plugin-scaffolder-react-1.5.1.tgz#925030c3ece04438ed292ca051f117cb91d716b0"
@@ -7543,7 +7785,7 @@
resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc"
integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==
-"@types/react-dom@*", "@types/react-dom@<18.0.0", "@types/react-dom@^17":
+"@types/react-dom@*", "@types/react-dom@<18.0.0":
version "17.0.20"
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.20.tgz#e0c8901469d732b36d8473b40b679ad899da1b53"
integrity sha512-4pzIjSxDueZZ90F52mU3aPoogkHIoSIDG+oQ+wQK7Cy2B9S+MvOqY0uEA/qawKz381qrEDkvpwyt8Bm31I8sbA==
@@ -21651,6 +21893,11 @@ zod@^3.21.4:
resolved "https://registry.yarnpkg.com/zod/-/zod-3.21.4.tgz#10882231d992519f0a10b5dd58a38c9dabbb64db"
integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==
+zod@^3.22.2:
+ version "3.22.2"
+ resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.2.tgz#3add8c682b7077c05ac6f979fea6998b573e157b"
+ integrity sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg==
+
zod@~3.18.0:
version "3.18.0"
resolved "https://registry.yarnpkg.com/zod/-/zod-3.18.0.tgz#2eed58b3cafb8d9a67aa2fee69279702f584f3bc"