Azure App Service通过Github Actions部署报错:磁盘空间不足(空间充足)求助
排查方案
1. 检查临时存储占用
Github Actions部署时会用到App Service的临时磁盘(Windows为D:\local,Linux为/home/tmp),你当前查看的是持久存储(wwwroot所在分区),两者不是同一空间:
- 通过KUDU的Debug Console执行命令查看临时盘使用:
- Windows:
Get-ChildItem D:\local -Recurse | Sort-Object Length -Descending | Select-Object -First 20 - Linux:
du -sh /home/tmp/*
- Windows:
- IDE直接发布通常采用增量模式,不会在临时盘生成大量缓存文件,而Github Actions可能是全量部署,会先把完整构建包下载到临时盘解压,导致临时盘满。
2. 清理部署缓存与临时文件
- 在Github Actions的部署步骤前添加清理命令:
- Windows环境:
Remove-Item -Recurse -Force D:\local\Temp\* Remove-Item -Recurse -Force D:\home\site\deployments\* - Linux环境:
rm -rf /home/tmp/* rm -rf /home/site/deployments/*
- Windows环境:
- 也可以通过Azure Portal进入App Service的高级工具(KUDU),打开
Site extensions安装Cleanup工具,一键清理旧部署包、日志和缓存。
3. 调整Github Actions部署策略
- 修改Github Actions的Azure部署配置,改用增量发布(IDE默认采用此模式):
使用Azure/webapps-deployAction时,设置clean: false(默认true会全量清理并部署):- name: Deploy to Azure Web App uses: Azure/webapps-deploy@v2 with: app-name: '<your-app-name>' slot-name: 'production' publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }} package: '.' clean: false - 改用Zip Deploy方式,直接上传压缩包到App Service,避免在临时盘解压的过程:
- name: Zip deploy uses: azure/zip-deploy@v1 with: app-name: '<your-app-name>' publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }} package: './path/to/your/build.zip'
4. 核查App Service Plan的共享存储配额
如果你的App Service使用Free/Shared/Basic层,存储是同计划内所有实例共享的配额,即便你的实例显示空间充足,同计划其他实例可能占用了大量空间:
- 进入Azure Portal的
App Service Plan页面,查看使用情况指标里的磁盘使用量,确认整体配额是否被占满。
5. 排查大文件或冗余日志
- 通过KUDU的
Site Diagnostics->Disk Usage生成详细报告,定位占用空间的大文件(比如旧日志、未清理的构建产物)。 - 配置App Service的日志清理策略,比如设置Web日志的保留天数,避免日志无限累积。
内容的提问来源于stack exchange,提问作者DevQu
相关产品推荐
相关产品推荐

