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

Github Action Runner空间不足:React Native构建失败求助

GitHub Action Runner 存储空间不足问题处理

问题背景

近期在项目中遇到GitHub Action Runner存储空间不足的问题。最初执行构建、运行步骤并生成APK产物时出现该问题,使用uses: jlumbroso/free-disk-space@main清理runner默认文件后暂时解决。但最近在ubuntu-latest runner(官方文档标注提供14GB存储)上构建单个React Native应用时,构建步骤再次触发空间不足。

报错信息

stderr: org.gradle.api.UncheckedIOException: 无法将条目':app:fullstoryDevelopmentRelease'添加到缓存executionHistory.bin(路径:/home/runner/work/mobile-app/mobile-app/android/.gradle/8.0.1/executionHistory/executionHistory.bin)。
    at org.gradle.cache.internal.btree.BTreePersistentIndexedCache.put(BTreePersistentIndexedCache.java:162)
    at org.gradle.cache.internal.DefaultMultiProcessSafePersistentIndexedCache.lambda$put$1(DefaultMultiProcessSafePersistentIndexedCache.java:67)
    at org.gradle.cache.internal.DefaultFileLockManager$DefaultFileLock.doWriteAction(DefaultFileLockManager.java:216)
    at org.gradle.cache.internal.DefaultFileLockManager$DefaultFileLock.writeFile(DefaultFileLockManager.java:206)
    at org.gradle.cache.internal.DefaultCacheAccess$UnitOfWorkFileAccess.writeFile(DefaultCacheAccess.java:471)
    at org.gradle.cache.internal.DefaultMultiProcessSafePersistentIndexedCache.put(DefaultMultiProcessSafePersistentIndexedCache.java:67)
    at org.gradle.cache.internal.AsyncCacheAccessDecoratedCache.lambda$putLater$1(AsyncCacheAccessDecoratedCache.java:56)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
    at org.gradle.cache.internal.CacheAccessWorker$2.run(CacheAccessWorker.java:185)
    at org.gradle.internal.Factories$1.create(Factories.java:31)
    at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:247)
    at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:228)
    at org.gradle.cache.internal.CacheAccessWorker.flushOperations(CacheAccessWorker.java:175)
    at org.gradle.cache.internal.CacheAccessWorker.run(CacheAccessWorker.java:145)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:49)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: org.gradle.api.UncheckedIOException: java.io.IOException: 设备上没有剩余空间
    at org.gradle.cache.internal.btree.FileBackedBlockStore.write(FileBackedBlockStore.java:140)
    at org.gradle.cache.internal.btree.CachingBlockStore.flush(CachingBlockStore.java:64)
    at org.gradle.cache.internal.btree.FreeListBlockStore.flush(FreeListBlockStore.java:103)
    at org.gradle.cache.internal.btree.StateCheckBlockStore.flush(StateCheckBlockStore.java:85)
stdout: 
    at org.gradle.cache.internal.btree.BTreePersistentIndexedCache.put(BTreePersistentIndexedCache.java:160)
    ... 18 more
Caused by: java.io.IOException: 设备上没有剩余空间
    at java.base/java.io.RandomAccessFile.writeBytes(Native Method)
    at java.base/java.io.RandomAccessFile.write(RandomAccessFile.java:558)
    at org.gradle.internal.io.RandomAccessFileOutputStream.write(RandomAccessFileOutputStream.java:46)
    at java.base/java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:81)
    at java.base/java.io.BufferedOutputStream.flush(BufferedOutputStream.java:142)
    at java.base/java.io.FilterOutputStream.flush(FilterOutputStream.java:153)
    at org.gradle.cache.internal.btree.ByteOutput.done(ByteOutput.java:62)
    at org.gradle.cache.internal.btree.FileBackedBlockStore$BlockImpl.write(FileBackedBlockStore.java:223)
    at org.gradle.cache.internal.btree.FileBackedBlockStore.write(FileBackedBlockStore.java:136)
    ... 22 more

构建失败,出现3个错误。

1: 任务执行失败。
-----------
* 错误原因:
任务':react-native-safe-area-context:prepareLintJarForPublish'执行失败。
> 创建目录'/home/runner/work/mobile-app/mobile-app/node_modules/react-native-safe-area-context/android/build/intermediates/lint_publish_jar/global'时,无法创建父目录'/home/runner/work/mobile-app/mobile-app/node_modules/react-native-safe-area-context/android/build/intermediates/lint_publish_jar'

* 尝试方案:
> 使用--stacktrace选项获取堆栈跟踪。
> 使用--info或--debug选项获取更多日志输出。
> 使用--scan选项获取完整分析信息。
==============================================================================

2: 任务执行失败。
-----------
* 错误原因:
任务':app:packageDevelopmentRelease'执行失败。
> 执行com.android.build.gradle.tasks.PackageAndroidArtifact$IncrementalSplitterRunnable时发生失败
   > java.io.IOException: 设备上没有剩余空间

解决方案尝试与优化

  • 强化磁盘清理:默认的jlumbroso/free-disk-space可能清理不彻底,可自定义清理步骤,删除Android SDK旧版本、Docker镜像、系统缓存、旧的Node_modules等大文件。示例命令:
    sudo rm -rf /usr/local/lib/android/sdk/build-tools/*30*
    sudo rm -rf /var/lib/docker
    rm -rf ~/.npm
    
  • 优化Gradle缓存策略:在构建前清理旧的Gradle缓存,或配置Gradle仅保留最近的缓存记录,避免缓存文件过度膨胀。可添加步骤:
    rm -rf android/.gradle/caches
    
  • 拆分构建流程:将构建、产物打包等步骤拆分,避免单步骤生成过多临时文件;同时利用GitHub Action的缓存功能,缓存Node_modules、Gradle依赖等重复使用的资源,减少重复下载与生成。
  • 监控磁盘使用:在构建前添加磁盘空间检查步骤,定位占用空间的目录,针对性清理:
    df -h
    du -sh /home/runner/work/mobile-app/mobile-app/* | sort -h
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 17:54:53