You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Action执行CDK deploy时找不到frontend/build资产的问题

解决方案:GitHub Actions中CDK Deploy找不到Build目录资产

可能的原因及对应解决步骤

1. 检查GitHub Runner的工作目录是否正确

GitHub Actions的默认工作目录是$GITHUB_WORKSPACE,如果项目存在嵌套子目录结构,容易出现路径解析错误:

  • 在工作流中添加调试步骤,确认当前目录:
    - name: Check current directory
      run: pwd
    
  • 执行cdk deploy前显式切换到正确的项目根目录:
    - name: Switch to project root
      run: cd $GITHUB_WORKSPACE/CDK_Test
    

2. 确认Build目录已被正确推送到GitHub仓库

即使本地执行了npm run build,如果.gitignore包含build/或dist/规则,Build目录会被忽略无法推送到远程:

  • 检查项目根目录和frontend/frontendapp下的.gitignore文件,移除对build/的忽略规则;
  • 直接在GitHub仓库对应分支中查看frontend/frontendapp/build目录是否存在,确认所有产物文件已提交。

3. 在GitHub Actions中重新执行Build步骤

本地Build产物可能和GitHub Runner环境(系统架构、依赖版本)存在差异,建议在工作流中直接生成Build产物:

- name: Install frontend dependencies
  working-directory: ./frontend/frontendapp
  run: npm install

- name: Build frontend assets
  working-directory: ./frontend/frontendapp
  run: npm run build

- name: Deploy with CDK
  run: cdk deploy --all --require-approval never

4. 修正CDK代码中的资产路径定义

如果CDK代码使用绝对路径指向Build目录,在Runner环境下必然失效,需改为基于项目根目录的相对路径:

  • 错误示例(绝对路径):
    const frontendAsset = new Asset(this, 'FrontendAsset', {
      path: '/Users/xxx/CDK_Test/frontend/frontendapp/build'
    });
    
  • 正确示例(基于文件目录的相对路径):
    import * as path from 'path';
    
    const frontendAsset = new Asset(this, 'FrontendAsset', {
      path: path.join(__dirname, '../frontend/frontendapp/build')
    });
    

或者直接使用项目根目录相对路径:./frontend/frontendapp/build

5. 排查缓存或清理步骤的干扰

  • 如果工作流配置了npm缓存,尝试暂时禁用缓存,避免旧依赖导致Build失败;
  • 检查是否有lint、测试等步骤误删了Build目录文件,确保Build步骤在这些操作之后执行。

内容的提问来源于stack exchange,提问作者Awais Nisar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 20:02:43