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

首次通过GitHub Actions部署React应用至Azure Web App遇磁盘空间不足错误

解决GitHub Actions部署React到Azure Web App时的磁盘空间不足问题

问题核心分析

你遇到的磁盘空间不足报错,不一定是artifact总大小超过1GiB导致的:

  • ZIP部署时,Azure会先将压缩包解压到临时目录,这个目录和Web App的主存储共享磁盘空间,加上之前部署残留的临时文件,很容易触发空间不足。
  • 文件数量超过40000个时,会占用大量磁盘inode(文件索引节点),哪怕总容量还有剩余,inode耗尽也会导致"磁盘空间不足"的错误。

具体解决步骤

1. 清理部署残留文件

在GitHub Actions的部署步骤前,添加清理Azure Web App临时部署文件的操作:

- name: Clean up old deployment artifacts
  uses: azure/cli@v1
  with:
    inlineScript: |
      az webapp deployment source delete --name <你的Web App名称> --resource-group <你的资源组名称>

或者在部署步骤中启用自动清理:

- name: Deploy to Azure Web App
  uses: azure/webapps-deploy@v2
  with:
    app-name: <你的Web App名称>
    slot-name: production
    package: ${{ steps.build.outputs.webapp-path }}
    clean: true  # 启用清理,删除旧的文件

2. 大幅减少构建产物的文件数量和大小

(1)确保只上传React生产构建产物

不要把node_modules、源码、测试文件等打包到artifact里,只保留build(或dist)目录下的文件:
在GitHub Actions的上传artifact步骤中明确指定路径:

- name: Upload artifact for deployment job
  uses: actions/upload-artifact@v3
  with:
    name: react-app
    path: ./build/  # 只上传build目录

(2)优化React构建过程

  • 关闭source map(会生成大量.map文件):在package.json的build命令中添加GENERATE_SOURCEMAP=false:
    "scripts": {
      "build": "GENERATE_SOURCEMAP=false react-scripts build"
    }
    
  • 确认生产构建已启用代码压缩和tree shaking:React生产构建默认已开启,若已eject项目可检查webpack.config.js确保配置正确。
  • 合并小资源文件:使用webpack插件将多个小CSS/JS文件合并,减少文件总数。

(3)过滤不必要的文件

在项目根目录创建.artifactignore文件,排除不需要打包的文件:

node_modules/
src/
public/*.map
README.md
.gitignore

3. 使用Run From Package模式(推荐)

这种模式不需要解压ZIP包,直接从压缩文件运行应用,彻底避免解压时的空间占用问题:

  • 在GitHub Actions部署步骤中添加应用设置:
- name: Deploy to Azure Web App
  uses: azure/webapps-deploy@v2
  with:
    app-name: <你的Web App名称>
    slot-name: production
    package: ${{ steps.build.outputs.webapp-path }}
    app-settings: WEBSITE_RUN_FROM_PACKAGE=1
  • 或者在Azure Portal的Web App「配置」>「应用设置」中添加WEBSITE_RUN_FROM_PACKAGE = 1。

额外排查点

  • 登录Azure Portal,进入Web App的「高级工具」>「Kudu」,查看D:\home和D:\local目录的空间使用情况,确认是总容量不足还是inode耗尽。
  • 检查构建过程中是否生成了重复文件,比如多次构建的缓存文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 14:12:43