Jenkins 管道:如何用变量替换 sh 命令 arg 的一部分

Jenkins Pipeline: How to replace part of a sh command arg with a variable

我不确定我为 Jenkins 管道步骤组合的一些语法,我想用我定义的变量替换 shell 脚本中的部分命令行 arg(用于文件名)

sh "npx cypress run --config-file cypress/cypress.$e2eEnvironment.json --env $envCredentials || true"

我想我上面的内容会寻找一个变量 $e2eEnvironment.json 但我不想要那个,因为我需要保持 .json 在 cli arg 中。例如。如果我将 $e2eEnvironment 值设置为 integration 那么该值应该构建为 cypress/cypress.integration.json

有人可以指导我吗?

您可以使用 Groovy 中的 ${<varName>} 语法在字符串插值中强制执行变量解析的确切名称。在你的例子中:

sh "npx cypress run --config-file cypress/cypress.${e2eEnvironment}.json --env $envCredentials || true"

将解析为:

sh "npx cypress run --config-file cypress/cypress.integration.json --env $envCredentials || true"

根据需要,而不是解析变量名称的赋值 e2eEnvironment.json