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
。
我不确定我为 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
。