diff --git a/packages/backend/package.json b/packages/backend/package.json index 21ab51d..e9767ca 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -18,6 +18,7 @@ "dependencies": { "@backstage/backend-common": "^0.21.7", "@backstage/backend-defaults": "^0.2.17", + "@backstage/backend-plugin-api": "^0.6.17", "@backstage/backend-tasks": "^0.5.22", "@backstage/config": "^1.2.0", "@backstage/plugin-app-backend": "^0.3.65", @@ -33,6 +34,8 @@ "@backstage/plugin-permission-node": "^0.7.28", "@backstage/plugin-proxy-backend": "^0.4.15", "@backstage/plugin-scaffolder-backend": "^1.22.4", + "@backstage/plugin-scaffolder-backend-module-github": "^0.2.7", + "@backstage/plugin-scaffolder-node": "^0.4.3", "@backstage/plugin-search-backend": "^1.5.7", "@backstage/plugin-search-backend-module-catalog": "^0.1.22", "@backstage/plugin-search-backend-module-techdocs": "^0.1.22", diff --git a/packages/backend/src/actions/get-environment.ts b/packages/backend/src/actions/get-environment.ts index 414c805..f6ed1fa 100644 --- a/packages/backend/src/actions/get-environment.ts +++ b/packages/backend/src/actions/get-environment.ts @@ -1,12 +1,16 @@ -import { createTemplateAction } from '@backstage/plugin-scaffolder-backend'; +import { + createBackendModule, + coreServices, +} from '@backstage/backend-plugin-api'; +import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node/alpha'; +import { createTemplateAction } from '@backstage/plugin-scaffolder-node'; interface EnvironmentAction { orgId: string - awsRegion: string cloudProvider: string } -export function createGetEnvironmentAction({ orgId, awsRegion, cloudProvider }: EnvironmentAction) { +export function createGetEnvironmentAction({ orgId, cloudProvider }: EnvironmentAction) { return createTemplateAction({ id: 'backend:get-environment', schema: { @@ -16,9 +20,6 @@ export function createGetEnvironmentAction({ orgId, awsRegion, cloudProvider }: orgId: { type: 'string' }, - awsRegion: { - type: 'string' - }, cloudProvider: { type: 'string' }, @@ -30,7 +31,6 @@ export function createGetEnvironmentAction({ orgId, awsRegion, cloudProvider }: }, handler: async (ctx) => { ctx.output('orgId', orgId); - ctx.output('awsRegion', awsRegion); ctx.output('cloudProvider', cloudProvider); let githubOIDCCustomization @@ -44,3 +44,25 @@ export function createGetEnvironmentAction({ orgId, awsRegion, cloudProvider }: }, }); } + + +export default createBackendModule({ + moduleId: 'get-environment-scaffolder-module', + pluginId: 'scaffolder', + register({ registerInit }) { + registerInit({ + deps: { + scaffolderActions: scaffolderActionsExtensionPoint, + config: coreServices.rootConfig, + }, + async init({ scaffolderActions, config }) { + scaffolderActions.addActions( + createGetEnvironmentAction({ + orgId: config.getString('humanitec.orgId'), + cloudProvider: config.getString('cloudProvider'), + }), + ); + }, + }); + }, +}); diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts index ad2603d..65a895b 100644 --- a/packages/backend/src/index.ts +++ b/packages/backend/src/index.ts @@ -12,7 +12,6 @@ const backend = createBackend(); backend.add(import('@backstage/plugin-app-backend/alpha')); backend.add(import('@backstage/plugin-proxy-backend/alpha')); -backend.add(import('@backstage/plugin-scaffolder-backend/alpha')); backend.add(import('@backstage/plugin-techdocs-backend/alpha')); // auth plugin @@ -38,8 +37,15 @@ backend.add(import('@backstage/plugin-search-backend/alpha')); backend.add(import('@backstage/plugin-search-backend-module-catalog/alpha')); backend.add(import('@backstage/plugin-search-backend-module-techdocs/alpha')); +// scaffolder plugin +backend.add(import('@backstage/plugin-scaffolder-backend/alpha')); +backend.add(import('@backstage/plugin-scaffolder-backend-module-github')); +// backend:get-environment used in humanitec templates +backend.add(import('./actions/get-environment')); + // humanitec backend.add(import('@humanitec/backstage-plugin-backend')); backend.add(import('@humanitec/backstage-plugin-scaffolder-backend-module')); + backend.start();