Spring 引导:Jenkins 从命令中删除转义的双引号字符
Spring Boot: Jenkins removes escaped double quote character from commands
我正在 运行为我的 Spring 启动项目在 Jenkins 上做作业,最近我遇到了一个问题,Jenkins 正在从它应该 [=41] 的命令中删除双引号=].不管它是在 Gradle 作业还是管道中,转义的双引号都将被删除。示例:
Gradle 工作:
proc = "git log --pretty=format:\"%cd - ${tag} (backend) - %s \" -${distance} --no-merges --date=short".execute()
在本地工作正常,但它在 Jenkins 上失败并出现错误:fatal: ambiguous argument '(backend)': unknown revision or path not in the working tree.
詹金斯管道:
sh "git log --pretty=format:\"%cd - ${tag} (backend) - %s \" -${distance} --no-merges --date=short"
因 语法错误而失败:“(” unexpected 这归结为与我通过此实验确定的相同:
sh "echo git log --pretty=format:\"%cd - ${tag} (backend) - %s \" -${distance} --no-merges --date=short"
这个 returns 没有转义双引号的命令:
git log --pretty=format:%cd - 2.0.4 (backend) - %s -8 --no-merges --date=short
有人知道如何解决这个问题吗?谢谢!
我无法强制 Jenkins 使用双引号。我在 Jenkinsfile 中找到了关于转义字符的指南:
https://gist.github.com/Faheetah/e11bd0315c34ed32e681616e41279ef4
然而,即使命令看起来有双引号,它仍然会失败,就好像没有双引号一样。
我最终将命令写入了一个文件,运行 它来自 Jenkins,如下所示:
def command = $/echo 'cd logs/backend/ && git log --pretty=format:"%cd - ${tag} (backend) - %s" -${distance} --no-merges --date=short > src/main/resources/changeLog.txt' > cmd/$
sh command
sh "./cmd"
您可能需要使用双反斜杠来转义引号:
\"
我正在 运行为我的 Spring 启动项目在 Jenkins 上做作业,最近我遇到了一个问题,Jenkins 正在从它应该 [=41] 的命令中删除双引号=].不管它是在 Gradle 作业还是管道中,转义的双引号都将被删除。示例:
Gradle 工作:
proc = "git log --pretty=format:\"%cd - ${tag} (backend) - %s \" -${distance} --no-merges --date=short".execute()
在本地工作正常,但它在 Jenkins 上失败并出现错误:fatal: ambiguous argument '(backend)': unknown revision or path not in the working tree.
詹金斯管道:
sh "git log --pretty=format:\"%cd - ${tag} (backend) - %s \" -${distance} --no-merges --date=short"
因 语法错误而失败:“(” unexpected 这归结为与我通过此实验确定的相同:
sh "echo git log --pretty=format:\"%cd - ${tag} (backend) - %s \" -${distance} --no-merges --date=short"
这个 returns 没有转义双引号的命令:
git log --pretty=format:%cd - 2.0.4 (backend) - %s -8 --no-merges --date=short
有人知道如何解决这个问题吗?谢谢!
我无法强制 Jenkins 使用双引号。我在 Jenkinsfile 中找到了关于转义字符的指南:
https://gist.github.com/Faheetah/e11bd0315c34ed32e681616e41279ef4
然而,即使命令看起来有双引号,它仍然会失败,就好像没有双引号一样。
我最终将命令写入了一个文件,运行 它来自 Jenkins,如下所示:
def command = $/echo 'cd logs/backend/ && git log --pretty=format:"%cd - ${tag} (backend) - %s" -${distance} --no-merges --date=short > src/main/resources/changeLog.txt' > cmd/$
sh command
sh "./cmd"
您可能需要使用双反斜杠来转义引号:
\"