From cdcc60b2fdf6d0868e5655a5464cb5ef51b83d5a Mon Sep 17 00:00:00 2001 From: Meng Xin Zhu <843303+zxkane@users.noreply.github.com> Date: Wed, 22 May 2024 14:17:54 +0800 Subject: [PATCH] chore: mitigate intermitent failure of ci build (#1333) --- .github/workflows/build.yml | 1 + .projenrc.js | 4 ++++ src/private/function.ts | 28 +++++++++++++++++++++------- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0c0b5d69ef..a137c71be6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,6 +19,7 @@ jobs: CI: "true" iam_role_to_assume: ${{ secrets.ROLE_ARN }} JEST_MAX_WORKERS: ${{ vars.JEST_MAX_WORKERS || 'auto' }} + DISABLE_V8_COMPILE_CACHE: "1" steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.projenrc.js b/.projenrc.js index 19c6ea562b..8e2b37c06c 100644 --- a/.projenrc.js +++ b/.projenrc.js @@ -635,6 +635,10 @@ project.buildWorkflow.workflow.file?.addOverride( 'jobs.build.env.JEST_MAX_WORKERS', '${{ vars.JEST_MAX_WORKERS || \'auto\' }}', ); +project.buildWorkflow.workflow.file?.addOverride( + 'jobs.build.env.DISABLE_V8_COMPILE_CACHE', + '1', +); project.buildWorkflow.preBuildSteps.push({ name: 'Configure AWS Credentials', if: '${{ env.iam_role_to_assume != \'\' }}', diff --git a/src/private/function.ts b/src/private/function.ts index 6bd7d0b663..20af051d61 100644 --- a/src/private/function.ts +++ b/src/private/function.ts @@ -14,7 +14,7 @@ import { POWERTOOLS_ENVS } from '@aws/clickstream-base-lib'; import { CfnResource, RemovalPolicy } from 'aws-cdk-lib'; import { Architecture, Runtime } from 'aws-cdk-lib/aws-lambda'; -import { NodejsFunction, NodejsFunctionProps } from 'aws-cdk-lib/aws-lambda-nodejs'; +import { BundlingOptions, NodejsFunction, NodejsFunctionProps } from 'aws-cdk-lib/aws-lambda-nodejs'; import { LogGroup, LogGroupClass, RetentionDays } from 'aws-cdk-lib/aws-logs'; import { Construct } from 'constructs'; import { addCfnNagSuppressRules, ruleToSuppressCloudWatchLogEncryption } from '../common/cfn-nag'; @@ -32,12 +32,7 @@ export class SolutionNodejsFunction extends NodejsFunction { constructor(scope: Construct, id: string, props?: SolutionNodejsFunctionProps) { super(scope, id, { ...props, - bundling: props?.bundling ? { - ...props.bundling, - externalModules: props.bundling.externalModules?.filter(p => p === '@aws-sdk/*') ?? [], - } : { - externalModules: [], - }, + bundling: _buildBundlingConfig(props?.bundling), runtime: Runtime.NODEJS_20_X, architecture: Architecture.ARM_64, environment: { @@ -51,6 +46,25 @@ export class SolutionNodejsFunction extends NodejsFunction { } } +function _buildBundlingConfig(bundling?: BundlingOptions) { + const esbuildOptions = { + environment: { + NODE_ENV: 'production', + }, + esbuildArgs: { // Pass additional arguments to esbuild + '--log-limit': '3000', + }, + }; + return bundling ? { + ...bundling, + externalModules: bundling.externalModules?.filter(p => p === '@aws-sdk/*') ?? [], + ...esbuildOptions, + } : { + externalModules: [], + ...esbuildOptions, + }; +} + function getLogGroup(scope: Construct, id: string, logConf?: { retention?: RetentionDays; removalPolicy?: RemovalPolicy;