程序员查理 2024-08-22 17:11 采纳率: 0%
浏览 4
已结题

eas build 在 jenkins 流水线上执行报错

目前使用expo 创建了一个 rn项目,在本地执行 eas build --platform android --local 是正常的,但在服务器 linux ubuntu 上和jenkins执行一直报 spawn E2BIG Error: build command failed。该问题如何解决?

  • 写回答

1条回答 默认 最新

  • 吃不了席 2024-08-22 17:12
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    这个问题可能是由于在Jenkins服务器上执行eas build命令时,进程的内存限制不足导致的。你可以尝试以下方法来解决:

    1. 增加Jenkins服务器的内存限制。你可以根据服务器的实际情况来调整内存限制。例如,你可以在Jenkins的配置文件中设置-Xmx参数来增加Java虚拟机的最大堆内存。具体操作如下:

      • 找到Jenkins的配置文件,通常位于/etc/default/jenkins/etc/sysconfig/jenkins
      • 在配置文件中找到JAVA_ARGSJENKINS_JAVA_OPTIONS参数,将其修改为类似于-Xmx2048m -Xms1024m的形式,表示将最大堆内存设置为2GB,初始堆内存设置为1GB。
      • 保存配置文件并重启Jenkins服务。
    2. 在执行eas build命令之前,关闭不必要的进程以释放内存。你可以使用tophtop命令查看当前系统的内存使用情况,并根据需要关闭一些占用内存较大的进程。

    3. 如果以上方法仍无法解决问题,你可以考虑在Jenkins流水线中使用Docker容器来执行eas build命令。这样可以避免直接在服务器上执行命令,而是在一个隔离的环境中进行构建。具体操作如下:

      • 安装Docker并确保Jenkins可以访问Docker守护进程。
      • 在Jenkins流水线脚本中添加以下内容:
      pipeline {
        agent {
          docker {
            image 'node:latest'
            args '-u 0 --privileged -v /dev/stdout:/dev/stdout -v /dev/stderr:/dev/stderr'
          }
        }
        stages {
          stage('Build') {
            steps {
              sh 'npm install -g expo-cli'
              sh 'eas build --platform android --local'
            }
          }
        }
      }
      

      这段脚本会在Docker容器中执行eas build命令,使用的镜像是最新的Node.js镜像。这样可以确保在构建过程中有足够的内存和资源。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月21日
  • 创建了问题 8月22日