尝试使用SDKMan提供的SDK构建Grails 5.3.2项目时,Jenkins因以下错误而停止:
| Error Command [war] error: Could not execute build using connection to Gradle distribution 'https://services.gradle.org/distributions/gradle-3.5-all.zip'. (NOTE: Stack trace has been filtered. Use --verbose to see entire trace.)
org.gradle.tooling.GradleConnectionException: Could not execute build using connection to Gradle distribution 'https://services.gradle.org/distributions/gradle-3.5-all.zip'.
at org.gradle.tooling.internal.consumer.ExceptionTransformer.transform(ExceptionTransformer.java:55)
at org.gradle.tooling.internal.consumer.ExceptionTransformer.transform(ExceptionTransformer.java:29)
at org.gradle.tooling.internal.consumer.ResultHandlerAdapter.onFailure(ResultHandlerAdapter.java:43)
at org.gradle.tooling.internal.consumer.async.DefaultAsyncConsumerActionExecutor$1$1.run(DefaultAsyncConsumerActionExecutor.java:69)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
at org.gradle.tooling.internal.consumer.BlockingResultHandler.getResult(BlockingResultHandler.java:46)
at org.gradle.tooling.internal.consumer.DefaultBuildLauncher.run(DefaultBuildLauncher.java:83)
at org.grails.cli.gradle.GradleUtil$_runBuildWithConsoleOutput_closure3.doCall(GradleUtil.groovy:97)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.grails.cli.gradle.GradleUtil$_withProjectConnection_closure1.doCall(GradleUtil.groovy:78)
at org.grails.cli.gradle.GradleUtil$_withProjectConnection_closure1.call(GradleUtil.groovy)
at grails.io.support.SystemOutErrCapturer.withNullOutput(SystemOutErrCapturer.groovy:64)
at org.grails.cli.gradle.GradleUtil.withProjectConnection(GradleUtil.groovy:77)
at org.grails.cli.gradle.GradleUtil.runBuildWithConsoleOutput(GradleUtil.groovy:92)
at org.grails.cli.gradle.GradleInvoker.invokeMethod(GradleInvoker.groovy:50)
at assemble.run(assemble.groovy:21)
at org.grails.cli.profile.commands.script.GroovyScriptCommand.handle(GroovyScriptCommand.groovy:153)
at org.grails.cli.profile.AbstractProfile.handleCommand(AbstractProfile.groovy:475)
at org.grails.cli.GrailsCli.handleCommand(GrailsCli.groovy:377)
at org.grails.cli.GrailsCli.handleCommand(GrailsCli.groovy:350)
at org.grails.cli.GrailsCli.execute(GrailsCli.groovy:271)
at org.grails.cli.GrailsCli.main(GrailsCli.groovy:159)
Caused by: org.gradle.api.GradleException: Unable to start the daemon process.
我相信,关键可能是Gradle 3.5不适合这里。在buildscript中,有:
export GRADLE_USER_HOME="/var/lib/jenkins/.sdkman/candidates/gradle/7.5.1/bin"
sdk use java 11.0.12-open
sdk use grails 5.3.2
sdk use gradle 7.5.1
并且生成日志确认正在使用这些设置:
[1;32mUsing java version 11.0.12-open in this shell.[0m
[1;32mUsing gradle version 7.5.1 in this shell.[0m
[1;32mUsing grails version 5.3.2 in this shell.[0m
...
WARNING: Illegal reflective access by org.gradle.internal.reflect.JavaMethod (file:/var/lib/jenkins/.sdkman/candidates/gradle/7.5.1/bin/wrapper/dists/gradle-3.5-all/exhrs6ca08n232b14ue48lbye/gradle-3.5/lib/gradle-base-services-3.5.jar) to method java.lang.ClassLoader.getPackages()
gradle.properties
配置:gradleWrapperVersion=7.5.1
.gradle-wrapper.properties
配置:
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
在以前的Grails 3项目版本中,gradle.properties
实际上是在配置gradleWrapperVersion=3.5
,Grails 3构建在同一个Jenkins示例上已经成功,为了避免Jenkins Grails 3项目构建的副作用,我将cleanWs()
添加到Jenkinsfile
的stage('Build')
中。
- 这是什么问题?
- 为什么构建总是引用回Gradle wrapper 3.5?我可以在哪里更改它?我在正在部署的the project's Grails 5 branch中找不到对版本3.5的引用。
- Jenkins中是否有我缺少的配置选项?
多谢了!
1条答案
按热度按时间sshcrbum1#
在我的Jenkins构建配置中有两个主要的配置错误。
第一个是
GRADLE_USER_HOME
设置为Gradle SDK,但必须设置包含gradle.properties
的目录。第二个原因是,我有两个并行的构建作业,一个使用Grails 3(使用Gradle 3.5),另一个使用Grails 5(使用Gradle 7.5.1)。在构建脚本中的
cd
命令中,我不小心使用了旧构建作业的路径。有了这些错误被修复,小的修正是很容易的,现在我有一个成功的建设。