diff --git a/app-config.yaml b/app-config.yaml index c53a6475f4..8e2b176985 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -304,6 +304,14 @@ scaffolder: # email: scaffolder@backstage.io # Use to customize the default commit message when new components are created # defaultCommitMessage: 'Initial commit' + # + # Use to run check on stale tasks every minute. By default, it is '*/5 * * * *', what means to run every 5 minutes. + # staleTasks: + # cron: * * * * * + # + # Use to consider the task stale when no task heartbeat during 2 minutes. By default, it is 24 hours. + # staleTasks: + # timeout: 120 # seconds auth: ### Add auth.keyStore.provider to more granularly control how to store JWK data when running diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.ts index 9f9b86b723..be9d02a737 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.ts @@ -14,14 +14,19 @@ * limitations under the License. */ -import { TaskContext, TaskBroker, WorkflowRunner } from './types'; +import { WorkflowRunner } from './types'; +import { + TaskContext, + TaskBroker, + TemplateFilter, + TemplateGlobal, +} from '@backstage/plugin-scaffolder-node'; import PQueue from 'p-queue'; import { NunjucksWorkflowRunner } from './NunjucksWorkflowRunner'; import { Logger } from 'winston'; import { TemplateActionRegistry } from '../actions'; import { ScmIntegrations } from '@backstage/integration'; import { assertError } from '@backstage/errors'; -import { TemplateFilter, TemplateGlobal } from '../../lib'; import { PermissionEvaluator } from '@backstage/plugin-permission-common'; /** * TaskWorkerOptions diff --git a/plugins/scaffolder-backend/src/service/helpers.ts b/plugins/scaffolder-backend/src/service/helpers.ts index 97d4ab93aa..3412fec2d3 100644 --- a/plugins/scaffolder-backend/src/service/helpers.ts +++ b/plugins/scaffolder-backend/src/service/helpers.ts @@ -107,7 +107,3 @@ export async function findTemplate(options: { return template as TemplateEntityV1beta3; } - -export type TemplateTransform = ( - template: TemplateEntityV1beta3, -) => TemplateEntityV1beta3; diff --git a/plugins/scaffolder-backend/src/service/router.test.ts b/plugins/scaffolder-backend/src/service/router.test.ts index f5aa043ce0..7a0bcc6877 100644 --- a/plugins/scaffolder-backend/src/service/router.test.ts +++ b/plugins/scaffolder-backend/src/service/router.test.ts @@ -38,7 +38,8 @@ import { stringifyEntityRef, UserEntity, } from '@backstage/catalog-model'; -import { createRouter, DatabaseTaskStore, TaskBroker } from '../index'; +import { createRouter, DatabaseTaskStore } from '../index'; +import { TaskBroker } from '@backstage/plugin-scaffolder-node'; import { StorageTaskBroker } from '../scaffolder/tasks/StorageTaskBroker'; import { IdentityApiGetIdentityRequest, diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index 15f7c11eba..a76b47fad2 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -48,11 +48,14 @@ import Router from 'express-promise-router'; import { validate } from 'jsonschema'; import { Logger } from 'winston'; import { z } from 'zod'; -import { TemplateFilter, TemplateGlobal } from '../lib'; +import { + TaskBroker, + TemplateFilter, + TemplateGlobal, +} from '@backstage/plugin-scaffolder-node'; import { createBuiltinActions, DatabaseTaskStore, - TaskBroker, TaskWorker, TemplateActionRegistry, } from '../scaffolder'; @@ -256,11 +259,18 @@ export async function createRouter( if (scheduler && databaseTaskStore.listStaleTasks) { await scheduler.scheduleTask({ id: 'close_stale_tasks', - frequency: { cron: '*/5 * * * *' }, // every 5 minutes, also supports Duration + frequency: { + cron: + options.config.getOptionalString('scaffolder.staleTasks.cron') ?? + '*/5 * * * *', + }, // every 5 minutes, also supports Duration timeout: { minutes: 15 }, fn: async () => { const { tasks } = await databaseTaskStore.listStaleTasks({ - timeoutS: 86400, + timeoutS: + options.config.getOptionalNumber( + 'scaffolder.staleTasks.timeout', + ) ?? 86400, }); for (const task of tasks) {