【发布时间】:2020-08-23 22:44:06
【问题描述】:
我正在尝试使用 CodeBuild 操作在 AWS CodePipeline 上部署 AWS CDK 应用程序。
构建和部署在本地完美运行(因为它会!)但是在 CodeBuild 上运行时,cdk 命令失败并显示
Cannot find module './index'
Subprocess exited with error 1
这很可能是一件微不足道的事情,但我想弄清楚是什么!
项目结构是自动生成的(带有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 为Build 阶段是
phases:
build:
commands:
- cd ${CODEBUILD_SRC_DIR}/cdk
- yarn install
- yarn build
artifacts:
base-directory: ${CODEBUILD_SRC_DIR}/cdk
files:
- '**/*'
Deploy 阶段的buildspec.yml 是(此阶段的输入目录是来自Build 阶段的工件,即cdk 目录)
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
Deploy 阶段在cdk ls 步骤中引发Cannot find module './index' 错误。由于上述构建/部署步骤在本地工作(在干净的结帐中),我怀疑这可能与将工件从 Build 复制到 Deploy 阶段有关,这是导致问题的原因,但无法查明是什么。有什么故障排除建议吗?
【问题讨论】:
-
尝试在
cdk ls命令之前添加ls,以验证所有文件都在那里 -
是的,试过了,所有文件似乎都在那里..
-
奇怪..你能分享你手动执行的步骤吗?我知道它与 buildspec.yaml 相同,但可能需要进行一些小改动
-
是的,这确实很奇怪。可能是我遗漏了一些简单的东西。我手动运行的步骤是
npm install && npm run build && cdk deploy -
用最小的应用程序复制github.com/IndikaUdagedara/CDKSample
标签: typescript aws-codepipeline aws-codebuild aws-cdk