Jenkins Gradle 使用 wrapper 构建,使用 artifactory 插件

Jenkins Gradle build with wrapper, using artifactory plugin

有没有办法做到这一点?。想在 Artifactory 中发布 gradle.jar。我能够在 jenkins 中使用已安装的 maven 版本进行 maven 构建,并成功发布了 artifactory 中的 war,但现在开发人员希望使用 gradle 包装器而不是 maven 转移到 gradle 构建。 使用此代码,正常 Gradle 构建工作正常。

stage('Clean Build') { 
        
                
        withGradle { // using gradle wrapper
            
            
            sh './gradlew clean build'
      }
}

但是当我尝试使用 Artifactory 插件实现它时,我做不到。我明白了。

    [Pipeline] ArtifactoryGradleBuild
[api-build] $ /var/lib/jenkins/workspace/api-build/gradlew --init-script /var/lib/jenkins/workspace/api-build@tmp/artifactory/init-artifactory11329321758849387716gradle clean artifactoryPublish -b ./build.gradle
Starting a Gradle Daemon (subsequent builds will be faster)
FAILURE: Build failed with an exception.

* What went wrong:
Failed to create Jar file /var/lib/jenkins/.gradle/caches/jars-8/8535adf040d7c5fdb7fd6bc28bb0ef3f/ok.
> Prefix string "ok" too short: length must be at least 3

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 8s

这是管道代码:

node {
    def server  = Artifactory.server 'artifactory'
    def rtGradle = Artifactory.newGradleBuild()
    def buildInfo
    


    jdk = tool name: 'JDK11'
    //jdk = tool name: 'Java 8'
    env.JAVA_HOME = "${jdk}"
    
     stage('Get Code from Bitbucket') { 
        
                git branch: "${branch}", 
                credentialsId: 'jenkins',
                url: 'ssh://git@bitbucket.org/project1/api1'
                
        sh "chmod 755 gradlew"      
    }
    
    stage('Artifactory Configuration') {
       
        // Set Artifactory repositories for dependencies resolution and artifacts deployment.
        rtGradle.deployer server: server, repo: 'myrepo'
        rtGradle.useWrapper = true
        
                
    }

     stage('Gradle build') {

     withGradle {   

       
 buildInfo = rtGradle.run rootDir: ".", buildFile: 'build.gradle', tasks: 'clean artifactoryPublish'

     }
    
    }


stage('Publish build info') {
       
       server.publishBuildInfo buildInfo
    }
    

}

有人能做到这一点吗?提前谢谢你。

此问题与 this and there is also a PR 修复的问题重复,后者描述了错误的根本原因。 作为临时解决方法,请使用 Gradle V6.5.1 或更低版本。