linux - 通过Jenkins执行Groovy命令: "find: missing argument to ` -exec'"

标签 linux bash jenkins groovy jenkins-pipeline

我正在尝试使用 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/

相关文章:

jenkins - Nexus 在发布工件时返回错误 502(坏网关)

c - 带 ptrace 的内存调试器

.net - 告诉 mono/.NET 只使用 X 内存量?

linux - Bash awk 脚本 : document splitter issue

bash - 从 OS X 中的 bash 脚本,是否可以提示管理员权限?

java - 无法安装 Jenkins 的 SSH 代理插件

linux - 使用 shell 脚本验证设备配置

linux - 在线和重新排序线的多个过滤器

linux - 如何从 WSL (Ubuntu) Bash 运行 Windows 可执行文件

python nose xunit报告文件为空