Gitlab CI构建Ionic应用时报unable to create new native thread错误
解决方案
1. 限制Gradle运行线程数
在你的mobile-build job中新增Gradle参数环境变量,直接限制其线程开销:
stage: mobile-build image: beevelop/ionic:latest # 新增以下变量配置 variables: GRADLE_OPTS: "-Dorg.gradle.daemon=false -Dorg.gradle.parallel=false -Dorg.gradle.workers.max=2 -Xmx2048m" cache: paths: - platforms/ - plugins/ artifacts: paths: - platforms/android/app/build/outputs/apk/release/app-release-unsigned.apk script: - npm install - if [ ! -d platforms/android ]; then ionic cordova platform add android@^9.0.0; fi - ionic cordova build android --release -- --gradleArg=-Dorg.gradle.jvmargs="-Xmx2048m"
workers.max可根据你的Runner配置调整,2C4G规格的Runner设置2~4即可,避免线程数超出容器上限
2. 调整Gitlab Runner Docker容器的ulimit限制
修改Gitlab Runner所在宿主机的/etc/gitlab-runner/config.toml配置文件,找到对应Runner的[runners.docker]配置段,添加ulimit参数:
[runners.docker] # 其他原有配置保留 ulimit = ["nproc=65535:65535", "nofile=65535:65535"]
修改完成后执行gitlab-runner restart重启Runner生效,该配置会直接提升容器内的进程和文件句柄上限,解决系统级ulimit不生效的问题。
3. 可选优化
如果上述配置还出现报错,可以将Ionic镜像替换为固定版本而非latest,避免镜像最新版本存在依赖兼容性问题,例如使用beevelop/ionic:v6.20.1这类明确版本号的镜像。
内容的提问来源于stack exchange,提问作者Willy Steinbach
相关产品推荐
相关产品推荐

