我们正在迁移一个从竹子到大厅的Ionic android构建设置。使用离子型cordova的android构建是在一个较大的concourse作业中触发的命令之一,它首先执行npm安装,然后执行离子构建命令。
失败的实际离子命令是:
ionic cordova build android --dev --debug --release --no-interactive --no- confirm --buildConfig --nofetch --minifyjs --minifycss --gradleArg=--no-daemon
作为离子cordova的先决条件,通过执行gradle分布的wget和将gradle home环境变量设置为指向下载的gradle二进制文件,可以确保gradle正确地安装在基本的坞映像中。以下是dockerfile的内容:
FROM runmymind/docker-android-sdk
# make /bin/sh symlink to bash instead of dash:
RUN echo "dash dash/sh boolean false" | debconf-set-selections \
&& DEBIAN_FRONTEND=noninteractive dpkg-reconfigure dash
# Installing NodeJS
RUN ARCH=x64 \
&& curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" \
&& curl -SLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
&& tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
&& rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc \
&& ln -s /usr/local/bin/node /usr/local/bin/nodejs
# Installing gradle
ENV GRADLE_VERSION 3.3
RUN mkdir /opt/gradle \
&& wget https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip \
&& unzip -d /opt/gradle gradle-${GRADLE_VERSION}-bin.zip
ENV GRADLE_HOME /opt/gradle/gradle-${GRADLE_VERSION}/bin
ENV PATH $PATH:$GRADLE_HOME
当使用这个对接映像时,码头容器出现,我能够正确地访问这个等级。但是,在安装cordova7后调用上面的离子cordova build命令时,我们会得到一条详细的错误消息:Gradle构建守护进程意外消失(它可能已被关闭或崩溃)。详细的错误信息如下:
失败:生成失败,出现异常。
Gradle构建守护进程意外消失(它可能已被杀死或崩溃)*尝试:使用--stacktrace选项运行以获得堆栈跟踪。使用--info或-调试选项运行以获得更多日志输出。错误: /opt/gradle/gradle-3.3/bin/gradle:命令失败,退出代码1
运行cordova build android -调试-版本-buildConfig(退出代码1)时出错。
我们尝试使用最新的gradle构建版本4.6,问题仍然存在,gradle守护进程立即被杀死。在汇合词中打印的一些gradle日志如下:
cordova构建android --调试--发布--buildConfig --你被选择退出遥测系统。要改变这一点,请运行:科多瓦遥测仪。将推送字符串数组{"name":"lang",“title”:"English (US)",“English (UK)",”value“:”en-us“,"en-gb"} android preferences文件已成功生成android_HOME=/opt/android linux。 java_HOME=/usr/lib/jvm/8-OpenJDK-AMD 64读取构建配置文件: /tmp/ build /80754af9/source/build.json从: /tmp/build/80754af9/source/Elsa2Go_android.keystore启动一个Gradle守护进程(后续构建将更快)从守护进程收到的消息表明守护进程已经消失。 发送的构建请求: Build{id=a31854f5-a2c8-4248-b580-2ae398dbba4c.1,currentDir=/tmp/ Build /80754af9/source}试图从守护进程日志读取最后消息.守护进程pid: 731日志文件:/root/..gradle/ Daemon /3.3/daemon-731.out.log -守护进程日志文件中的最后20行-守护进程-731.out.log- 10:01:27.698调试完成了编写守护进程问候语。关闭溪流..。 10:01:27.795调试stopOnExpiration()调用守护进程10:01:27.799调试awaitExpiration()调用守护进程10:01:27.800调试接受的连接从/127.0.0.1:54152到/127.0.0.1:45644。 10:01:27.801调试守护进程正在运行。一直睡到州变。10:01:27.950调试线程14:接收类org.gradle.launcher.daemon.protocol.Build 10:01:27.950调试线程14:从客户端接收非IO消息: Build{id=a31854f5-a2c8-4248-b580-2ae398dbba4c.1,currentDir=/tmp/build/80754af9/source} 10:01:27.951 INFO接收命令: Build{id=a31854f5-a2c8-4248-b580-2ae398dbba4c.1,currentDir=/tmp/build/80754af9/source}。10:01:27.951调试启动执行命令: Build{id=a31854f5-a2c8-4248-b580-2ae398dbba4c.1,currentDir=/tmp/build/80754af9/source},连接: /127.0.0.1:45644到/127.0.0.1:54152的套接字连接。10:01:27.953错误命令执行:启动Build{id=a31854f5-a2c8-4248-b580-2ae398dbba4c.1,currentDir=/tmp/ DaemonCommandExecutioncommand /80754af9/source},连接= DefaultDaemonConnection: socket连接从/127.0.0.1:45644到/127.0.0.1:54152在空闲的0.0分钟后显示守护进程忙,地址:[2f4d8bed-fcce-4001-8cd5-896af7ca9860端口:45644,地址:/127.0.0.1] 10:01:27.954按地址标记忙:[2f4d8bed-fcce-4001-8cd5-896af7ca9860端口:45644,地址:/127.0.0.1] 10:01:27.955调试等待获得守护进程地址注册表上的独占锁。10:01:27.956调试锁已获得。 10:01:27.957调试释放守护进程地址注册表上的锁。10:01:27.957调试重置空闲计时器10:01:27.958调试守护进程正在运行。一直睡到州变。10:01:27.961信息守护进程即将开始构建Build{id=a31854f5-a2c8-4248-b580-2ae398dbba4c.1,currentDir=/tmp/build/80754af9/source}。调度建设启动信息..。10:01:27.967调试线程16:分派类org.gradle.launcher.daemon.protocol.BuildStarted 10:01:27.996调试配置env变量:...
P.S :版本信息
已尝试了一些办法,但也注意到了同样的问题:
任何关于什么是根本原因的想法/建议都会有很大帮助。提前谢谢。
发布于 2018-03-15 17:24:04
如果从args中删除--无守护进程会发生什么?我的意思是,Gradle说,首选的方法是从Gradle3.0 (daemon)开始使用deamon。此外,您不需要它,因为Docker为您提供了一个新的环境。
https://stackoverflow.com/questions/49297651
复制相似问题