我正在尝试使用 Jenkins 管道脚本(groovy)将生成的 war 文件从一个构建目录复制到另一个构建目录。我已经以 jenkins 用户身份在系统本身上测试了 find/exec/cp 命令,在脚本运行的同一工作区中,它工作正常(直接从控制台复制粘贴)。
String buildNumber = env.BUILD_NUMBER
def sout = new StringBuffer()
def serr = new StringBuffer()
//Create package directory in jenkins job folder
def packageDir = "${env.JENKINS_HOME}/jobs/Package_Deploy_Pipeline/builds/${buildNumber}/package/"
def command = "mkdir ${packageDir}"
def proc = command.execute()
proc.consumeProcessOutput(sout, serr)
proc.waitForOrKill(3000)
println "out> $sout err> $serr"
command = "find ${env.JENKINS_HOME}/jobs/myJob/builds/lastSuccessfulBuild/archive/build/libs/ -name *.war -exec cp {} ${packageDir} \\;"
println command
proc = command.execute()
proc.consumeProcessOutput(sout, serr)
proc.waitForOrKill(3000)
println "out> $sout err> $serr"
控制台输出中看到的错误是:
[Pipeline] echo
out> err>
[Pipeline] echo
find /var/lib/jenkins/jobs/myJob/builds/lastSuccessfulBuild/archive/build/libs/ -name *.war -exec cp {} /var/lib/jenkins/jobs/Package_Deploy_Pipeline/builds/23/package/ \;
[Pipeline] echo
out> err> find: missing argument to `-exec'
编辑:我还尝试过 "*.war"
、'*.war'
、\;
和 '; '
最佳答案
具有声明式管道的 Jenkins 仅对我有效:
sh '查找 . -ipath "*src/header.h"-exec rm {} ";"'
关于linux - 通过Jenkins执行Groovy命令: "find: missing argument to ` -exec'",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37034429/