我们目前正在将一个离子的Android构建设置从竹子迁移到大厅。使用离子cordova的android构建是作为更大的concourse-ci作业中的一个命令触发的,它首先执行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正确安装在基本docker镜像中。以下是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
使用此泊坞窗图像时; docker容器出现,我能够正确访问gradle。但是在安装cordova7之后调用上面的ionic cordova build命令时,我们收到一条详细的错误信息: Gradle构建守护程序意外消失(可能已被杀死或可能已崩溃。详细错误消息如下:
失败:构建因异常而失败。
- 出了什么问题:
Gradle build守护程序意外消失(它可能已被杀死 或者可能已经崩溃了) *尝试:使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。错误:/opt/gradle/gradle-3.3/bin/gradle:命令失败,退出代码为1
[错误]运行cordova build android --debug时发生错误 - 发布 --buildConfig(退出代码1)。
我们尝试使用最新的gradle build版本4.6并且问题仍然存在并且gradle守护程序立即被杀死。一些gradle日志将在大厅ci中打印出来:
cordova build android --debug --release --buildConfig
您已选择退出遥测。要更改此设置,请运行:cordova 遥测。将推送字符串数组 {"姓名":" lang","标题":["英语(美国)","英语 (英国)"],"价值观":[" en-us"," en-gb"]} android偏好文件被 成功生成ANDROID_HOME = / opt / android-sdk-linux
JAVA_HOME = / usr / lib / jvm / java-8-openjdk-amd64阅读构建配置 file:/tmp/build/80754af9/source/build.json阅读密钥库 来自:/tmp/build/80754af9/source/Elsa2Go_android.keystore开始 Gradle守护进程(后续构建将更快)消息 从守护进程收到的信息表明该守护进程已经消失 发送构建请求:构建{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 [DEBUG] [org.gradle.launcher.daemon.bootstrap.DaemonStartupCommunication] 完成了守护进程的问候。关闭流......
10:01:27.795 [DEBUG] [org.gradle.launcher.daemon.server.Daemon] 在守护进程上调用stopOnExpiration()10:01:27.799 [DEBUG] [org.gradle.launcher.daemon.server.Daemon] awaitExpiration()调用 守护进程10:01:27.800 [调试] [org.gradle.internal.remote.internal.inet.TcpIncomingConnector] 接受从/127.0.0.1:54152到/127.0.0.1:45644的连接。
10:01:27.801 [调查] [org.gradle.launcher.daemon.server.DaemonStateCoordinator]守护进程是 运行。睡觉直到状态改变。 10:01:27.950 [调查] [org.gradle.launcher.daemon.server.SynchronizedDispatchConnection] 线程14:收到类org.gradle.launcher.daemon.protocol.Build
10:01:27.950 [调查] [org.gradle.launcher.daemon.server.DefaultDaemonConnection]主题14: 从客户端收到非IO消息: 建立{ID = a31854f5-a2c8-4248-b580-2ae398dbba4c.1, currentDir = / tmp / build / 80754af9 / source} 10:01:27.951 [INFO] [org.gradle.launcher.daemon.server.DefaultIncomingConnectionHandler] 收到命令:构建{id = a31854f5-a2c8-4248-b580-2ae398dbba4c.1, currentDir = / TMP /构建/ 80754af9 /源}。 10:01:27.951 [调试] [org.gradle.launcher.daemon.server.DefaultIncomingConnectionHandler] 开始执行命令: 建立{ID = a31854f5-a2c8-4248-b580-2ae398dbba4c.1, currentDir = / tmp / build / 80754af9 / source} with connection:socket 从/127.0.0.1:45644到/127.0.0.1:54152的连接。 10:01:27.953 [错误] [org.gradle.launcher.daemon.server.DaemonStateCoordinator] 命令执行:启动DaemonCommandExecution [command = 建立{ID = a31854f5-a2c8-4248-b580-2ae398dbba4c.1, currentDir = / tmp / build / 80754af9 / source},connection = DefaultDaemonConnection:从/127.0.0.1:45644到的套接字连接 /127.0.0.1:54152]闲置0.0分钟后10:01:27.954 [INFO] [org.gradle.launcher.daemon.server.DaemonRegistryUpdater]标记 守护进程忙,地址:[2f4d8bed-fcce-4001-8cd5-896af7ca9860 端口:45644,地址:[/ 127.0.0.1]] 10:01:27.954 [DEBUG] [org.gradle.launcher.daemon.registry.PersistentDaemonRegistry]标记 地址繁忙:[2f4d8bed-fcce-4001-8cd5-896af7ca9860 port:45644, 地址:[/ 127.0.0.1]] 10:01:27.955 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager]等待获取 对守护进程地址注册表的独占锁定。 10:01:27.956 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager]获取锁定。
10:01:27.957 [调试] [org.gradle.cache.internal.DefaultFileLockManager]释放锁定 守护进程解决注册表问题。 10:01:27.957 [调试] [org.gradle.launcher.daemon.server.DaemonStateCoordinator]重置 idle timer 10:01:27.958 [DEBUG] [org.gradle.launcher.daemon.server.DaemonStateCoordinator]守护进程是 运行。睡觉直到状态改变。 10:01:27.961 [INFO] [org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy] 守护进程即将开始建设 建立{ID = a31854f5-a2c8-4248-b580-2ae398dbba4c.1, currentDir = / TMP /构建/ 80754af9 /源}。调度构建已开始 信息...... 10:01:27.967 [调查] [org.gradle.launcher.daemon.server.SynchronizedDispatchConnection] 线程16:调度类 org.gradle.launcher.daemon.protocol.BuildStarted 10:01:27.996 [DEBUG] [org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment] 配置env变量:............. ..................
P.S:版本信息
尝试了方法,但观察到同样的问题:
关于什么是根本原因的任何想法/建议都会有很大的帮助。 提前致谢。
答案 0 :(得分:0)
如果从args中删除--no-daemon,会发生什么? 我的意思是Gradle说,首选的方法是自Gradle 3.0(https://docs.gradle.org/current/userguide/gradle_daemon.html#sec:disabling_the_daemon)以来的守护。 此外,您不需要它,因为Docker为您提供了一个全新的环境。