Jenkins 构建总是返回到 Gradle 3.5 Wrapper

问题描述 投票:0回答:1

尝试使用 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 不适合这里,我不得不相信。 在构建脚本中,有:

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()
stage('Build')
中添加了
Jenkinsfile

非常感谢!

gradle jenkins grails
1个回答
0
投票

我的 Jenkins 构建配置中有两个主要的配置错误。

第一个是

GRADLE_USER_HOME
设置为Gradle SDK,但是必须设置包含
gradle.properties
的目录。

第二个,负责 Gradle 3.5 错误消息,是我有两个并行构建作业,一个使用 Grails 3(Gradle 3.5)的旧作业和这个使用 Grails 5(Gradle 7.5.1)的作业。在我的构建脚本中的

cd
命令中,我不小心使用了旧构建作业的路径。

修复了这些错误后,小的更正就很容易了,现在我的构建成功了。

© www.soinside.com 2019 - 2024. All rights reserved.