Skip to content
Merged
43 changes: 43 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Deploy

on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4.2.2

- name: Set up Node.js
uses: actions/setup-node@v4.4.0
with:
node-version: 24
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Build application
run: npm run build

- name: Build Lambda layer
run: npm run build:lambda-layer

- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4.1.0
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ vars.AWS_REGION }}

- name: Install CDK dependencies
run: npm ci
working-directory: infra

- name: Deploy CDK Stack
run: npx cdk deploy --require-approval never
working-directory: infra
4 changes: 2 additions & 2 deletions infra/lib/infra-stack.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@ export class InfraStack extends cdk.Stack {

const nodeModulesLayer = new lambda.LayerVersion(this, 'NodeModulesLayer', {
code: lambda.Code.fromAsset(path.join(__dirname, '../../layer')),
compatibleRuntimes: [lambda.Runtime.NODEJS_20_X],
compatibleRuntimes: [lambda.Runtime.NODEJS_24_X],
description: 'Production node_modules for NestJS Lambda',
});

const nestApiLambda = new lambda.Function(this, 'NestApiLambdaFunction', {
runtime: lambda.Runtime.NODEJS_20_X,
runtime: lambda.Runtime.NODEJS_24_X,
handler: 'src/lambda.handler',
code: lambda.Code.fromAsset(path.join(__dirname, '../../dist'), {
exclude: ['infra', 'tsconfig*'],
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
"test:cov": "jest --coverage",
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
"test:e2e": "jest --config ./test/jest-e2e.json",
"build:lambda-layer": "cp package.json package-lock.json layer/nodejs/ && npm ci --prefix layer/nodejs --omit=dev && rm layer/nodejs/package.json layer/nodejs/package-lock.json"
"build:lambda-layer": "mkdir -p layer/nodejs && cp package.json package-lock.json layer/nodejs/ && npm ci --prefix layer/nodejs --omit=dev && rm layer/nodejs/package.json layer/nodejs/package-lock.json"
},
"dependencies": {
"@codegenie/serverless-express": "^4.17.1",
Expand Down
5 changes: 4 additions & 1 deletion tsconfig.build.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"extends": "./tsconfig.json",
"exclude": ["node_modules", "test", "dist", "**/*spec.ts"]
"compilerOptions": {
"rootDir": "./"
},
"exclude": ["node_modules", "test", "dist", "infra", "**/*spec.ts"]
}