1588 serverless follow ups 2 (#14998)

This commit is contained in:
martmull
2025-10-09 12:56:59 +02:00
committed by GitHub
parent ebc6bbabaf
commit 5252384f14
18 changed files with 3377 additions and 135 deletions
@@ -1 +0,0 @@
export const COMMON_LAYER_NAME = 'common-layer';
@@ -27,7 +27,6 @@ import {
} from 'src/engine/core-modules/serverless/drivers/interfaces/serverless-driver.interface';
import { type FileStorageService } from 'src/engine/core-modules/file-storage/file-storage.service';
import { COMMON_LAYER_NAME } from 'src/engine/core-modules/serverless/drivers/constants/common-layer-name';
import { copyAndBuildDependencies } from 'src/engine/core-modules/serverless/drivers/utils/copy-and-build-dependencies';
import { copyExecutor } from 'src/engine/core-modules/serverless/drivers/utils/copy-executor';
import { createZipFile } from 'src/engine/core-modules/serverless/drivers/utils/create-zip-file';
@@ -134,11 +133,7 @@ export class LambdaDriver implements ServerlessDriver {
}
private getLayerName(serverlessFunction: ServerlessFunctionEntity) {
if (isDefined(serverlessFunction?.serverlessFunctionLayer)) {
return serverlessFunction?.serverlessFunctionLayer.checksum;
}
return COMMON_LAYER_NAME;
return serverlessFunction.serverlessFunctionLayer.checksum;
}
private async createLayerIfNotExists(
@@ -1,15 +1,12 @@
import { promises as fs } from 'fs';
import { join } from 'path';
import { isDefined } from 'twenty-shared/utils';
import {
type ServerlessDriver,
type ServerlessExecuteResult,
} from 'src/engine/core-modules/serverless/drivers/interfaces/serverless-driver.interface';
import { type FileStorageService } from 'src/engine/core-modules/file-storage/file-storage.service';
import { COMMON_LAYER_NAME } from 'src/engine/core-modules/serverless/drivers/constants/common-layer-name';
import { SERVERLESS_TMPDIR_FOLDER } from 'src/engine/core-modules/serverless/drivers/constants/serverless-tmpdir-folder';
import { copyAndBuildDependencies } from 'src/engine/core-modules/serverless/drivers/utils/copy-and-build-dependencies';
import { ConsoleListener } from 'src/engine/core-modules/serverless/drivers/utils/intercept-console';
@@ -34,17 +31,9 @@ export class LocalDriver implements ServerlessDriver {
private getInMemoryLayerFolderPath = (
serverlessFunction: ServerlessFunctionEntity,
) => {
if (!isDefined(serverlessFunction?.serverlessFunctionLayer?.checksum)) {
return join(
SERVERLESS_TMPDIR_FOLDER,
COMMON_LAYER_NAME,
`${serverlessFunction.layerVersion}`,
);
}
return join(
SERVERLESS_TMPDIR_FOLDER,
serverlessFunction.serverlessFunctionLayer?.checksum,
serverlessFunction.serverlessFunctionLayer.checksum,
);
};
@@ -3,11 +3,8 @@ import { promisify } from 'util';
import { exec } from 'child_process';
import { join } from 'path';
import { isDefined } from 'twenty-shared/utils';
import { getLayerDependenciesDirName } from 'src/engine/core-modules/serverless/drivers/utils/get-layer-dependencies-dir-name';
import type { ServerlessFunctionEntity } from 'src/engine/metadata-modules/serverless-function/serverless-function.entity';
import { LAST_LAYER_VERSION } from 'src/engine/core-modules/serverless/drivers/layers/last-layer-version';
const execPromise = promisify(exec);
@@ -19,29 +16,17 @@ export const copyAndBuildDependencies = async (
recursive: true,
});
if (!isDefined(serverlessFunction.serverlessFunctionLayer)) {
await fs.cp(
getLayerDependenciesDirName(
serverlessFunction.layerVersion || LAST_LAYER_VERSION,
),
buildDirectory,
{
recursive: true,
},
);
} else {
const packageJson = serverlessFunction.serverlessFunctionLayer.packageJson;
const packageJson = serverlessFunction.serverlessFunctionLayer.packageJson;
const yarnLock = serverlessFunction.serverlessFunctionLayer.yarnLock;
const yarnLock = serverlessFunction.serverlessFunctionLayer.yarnLock;
await fs.writeFile(
join(buildDirectory, 'package.json'),
JSON.stringify(packageJson, null, 2),
'utf8',
);
await fs.writeFile(
join(buildDirectory, 'package.json'),
JSON.stringify(packageJson, null, 2),
'utf8',
);
await fs.writeFile(join(buildDirectory, 'yarn.lock'), yarnLock, 'utf8');
}
await fs.writeFile(join(buildDirectory, 'yarn.lock'), yarnLock, 'utf8');
await fs.cp(getLayerDependenciesDirName('engine'), buildDirectory, {
recursive: true,
@@ -1,10 +1,7 @@
import fs from 'fs/promises';
import { join } from 'path';
import { isDefined } from 'twenty-shared/utils';
import { getLayerDependenciesDirName } from 'src/engine/core-modules/serverless/drivers/utils/get-layer-dependencies-dir-name';
import { type ServerlessFunctionEntity } from 'src/engine/metadata-modules/serverless-function/serverless-function.entity';
import { LAST_LAYER_VERSION } from 'src/engine/core-modules/serverless/drivers/layers/last-layer-version';
import { type PackageJson } from 'src/engine/core-modules/application/types/application.types';
@@ -24,18 +21,3 @@ export const getLastCommonLayerDependencies = async (
return { packageJson: JSON.parse(packageJson), yarnLock };
};
export const getLayerDependencies = async (
serverlessFunction: ServerlessFunctionEntity,
): Promise<LayerDependencies> => {
if (!isDefined(serverlessFunction.serverlessFunctionLayer)) {
return getLastCommonLayerDependencies(
serverlessFunction.layerVersion ?? undefined,
);
}
return {
packageJson: serverlessFunction.serverlessFunctionLayer.packageJson,
yarnLock: serverlessFunction.serverlessFunctionLayer.yarnLock,
};
};