构建.如何在构建后运行任务是在jenkins中通过gradle脚本创建的



我有一个build.gradle脚本,其中包括几个任务,最后一个任务如下。最后一个任务将创建一个zip文件,现在我需要将其复制到具有不同zip文件名的目标目录中。我尝试了几个函数来实现这一点,但由于不同类型的错误,构建失败了。

build.gradle:中的任务

task createDBDeploy(type: Zip, dependsOn: 'copyToDbfiles') {
System.out.println("Starts createDBDeploy");
includeEmptyDirs = false
zip64 true
archiveName = "dbfiles.zip"
destinationDir = file("${buildDir}")
System.out.println("Destination directory :${buildDir}");
from "${buildDir}/dbfiles"
}

在我运行了上面的任务之后,我需要运行下面的任务。我需要将上述文件dbfiles.zip复制到目标目录"${buildDir}"中,其名称不同,分别为abc.zipdef.zipfeg.zipijk.zip。你能帮我完成上面的任务吗?

我尝试使用doLastfinalizedBy函数,但我的Jenkins构建失败了。因此,我不确定在创建构建后如何执行上述任务。

我尝试了以下方式或方法:

第一种方法:gradle.build中添加了以下任务,并运行了jenkins作业,但构建失败。

task copyFiles(type: Copy) {
from file("$buildDir/dbfiles.zip")
into file("$buildDir/abc.zip") 
from file("$buildDir/dbfiles.zip")
into file("$buildDir/def.zip")
from file("$buildDir/dbfiles.zip")
into file("$buildDir/feg.zip") 
from file("$buildDir/dbfiles.zip")
into file("$buildDir/ijk.zip")
}
build.dependsOn copyFiles

第二种方法:在gradle.build中添加了以下任务,并运行了jenkins作业,但构建失败。

task renameArtifacts(type: Copy) { 
from ('$buildDir/') include 'dbfiles.zip' 
destinationDir file('$buildDir/abc.zip')
from ('$buildDir/') include 'dbfiles.zip' 
destinationDir file('$buildDir/def.zip')
from ('$buildDir/') include 'dbfiles.zip' 
destinationDir file('$buildDir/feg.zip')
from ('$buildDir/') include 'dbfiles.zip' 
destinationDir file('$buildDir/ijk.zip')
}
build.dependsOn renameArtifcats

第三种方法:在gradle.build中添加了以下任务,并运行了jenkins作业,但构建失败。

task finalize {
doLast {
from file("$buildDir/dbfiles.zip")
into file("$buildDir/abc.zip") 
from file("$buildDir/dbfiles.zip")
into file("$buildDir/def.zip")
from file("$buildDir/dbfiles.zip")
into file("$buildDir/feg.zip") 
from file("$buildDir/dbfiles.zip")
into file("$buildDir/ijk.zip")
}
}
build.finalizedBy finalize

在我尝试了所有方法之后,当我运行上述步骤时,在运行构建时出现了错误。

Jenkins错误日志:

FAILURE: Build failed with an exception.
22:34:54  
22:34:54  * Where:
22:34:54  Build file '/apps/jenkins_slave/workspace/proj/mod1/build.gradle' line: 292
22:34:54  
22:34:54  * What went wrong:
22:34:54  A problem occurred evaluating root project 'mod1'.
22:34:54  > Could not get unknown property 'build' for root project 'mod1' of  type org.gradle.api.Project.

换句话说,您想将同一个ZIP文件复制到四个新文件中吗?以下Copy任务实现应该做到这一点(用Gradle 6.7.1测试(:

task copyFiles(type: Copy) {
into buildDir
from(buildDir) {
include 'dbfiles.zip'
rename 'dbfiles.zip', 'abc.zip'
}
from(buildDir) {
include 'dbfiles.zip'
rename 'dbfiles.zip', 'def.zip'
}
from(buildDir) {
include 'dbfiles.zip'
rename 'dbfiles.zip', 'feg.zip'
}
from(buildDir) {
include 'dbfiles.zip'
rename 'dbfiles.zip', 'ijk.zip'
}
}

或者更简洁地说:

task copyFiles(type: Copy) {
into buildDir
['abc', 'def', 'feg', 'ijk'].each { name ->
from(buildDir) {
include 'dbfiles.zip'
rename 'dbfiles.zip', "${name}.zip"
}
}
}