I'm trying to deploy a AWS CDK app on AWS CodePipeline using CodeBuild actions.
The build and deploy works perfect locally (as it would!) but when running on CodeBuild, cdk command fails with
Cannot find module './index'
Subprocess exited with error 1
This is most likely something trivial but scratching my head trying to figure out what!
The project structure is auto-generated (with cdk init --language typescript)
<>/cdk$ ls
README.md app cdk.context.json cdk.json cdk.out jest.config.js lib node_modules package.json test tsconfig.json yarn.lock
buildspec.yml for the Build stage is
phases:
build:
commands:
- cd ${CODEBUILD_SRC_DIR}/cdk
- yarn install
- yarn build
artifacts:
base-directory: ${CODEBUILD_SRC_DIR}/cdk
files:
- '**/*'
buildspec.yml for the Deploy stage is (the input directory to this stage is the artifact from Build stage i.e. the cdk directory)
phases:
install:
commands:
- npm install -g aws-cdk
- cdk --version
build:
commands:
- cd ${CODEBUILD_SRC_DIR} # this is cdk directory
- cdk ls
- cdk deploy app
The Deploy stage throws the Cannot find module './index' error at the cdk ls step. Since the above build/deploy steps work locally (in a clean checkout) I suspect it could be something to do with copying artifacts from Build to Deploy stages is what's causing the problem, but can't pinpoint what. Any suggestions for troubleshooting?
lsbeforecdk lscommand to verify that all files are therenpm install && npm run build && cdk deploy