如何在Jenkins中使用groovy env.变量在Jenkins管道中传递bat命令

jdgnovmf  于 2022-11-21  发布在  Jenkins
关注(0)|答案(2)|浏览(303)

我在jenkinsfile中有一个stage,它执行一个bat命令:

stage ('build'){
  bat '%cd%\\MySimpleProject\\bin\\Execute.bat "${env.BRANCH_NAME}"'
}

我的批处理命令需要一个参数,这个参数是svn中的当前分支.
当我使用这个:
回显“SVN分支名称是${环境分支名称}”
它会给予分支_NAME的值,但是如果我将它作为参数传递给我的批处理文件,它会直接传递${env.BRANCH_NAME}而不是值。
是他们这样做的一种方式吗?

htrmnn0y

htrmnn0y1#

这是因为所有内容都用单引号括起来,groovy不会插入字符串。

stage ('build'){ bat "%cd%\\MySimpleProject\\bin\\Execute.bat ${env.BRANCH_NAME}"}
iyr7buue

iyr7buue2#

我 遇到 了 类似 的 问题 , 在 Jenkins 中 运行 bat 时 , 我 无法 将 变量 传递 到 命令 中 , 它 将 按 原样 打印 变量 。 例如 , ${env.P4_CHANGELIST} 将 按 原样 打印 , 而 没有 实际 的 更改 列表 。

    • 我 最初 的 方法 : * *
bat 'xcopy "D://CookedBuildInProgress" "\\Path\\To\\File\\CookedBuilds\\Win64_Development_${env.P4_CHANGELIST}" /e /i /s /y'

中 的 每 一 个
问题 是 ${env.P4_CHANGELIST}" 没有 传入 更改 列表 , 而是 保持 自己 为 空 。 正如@shipperizer 所说 , 这 是 由于 用 单 引号 Package 。 然而 , 他 的 解决 方案 并 不 适合 我 的 需要 。

    • 我 的 解决 方案 : * *
bat """xcopy "D://CookedBuildInProgress" "\\Path\\To\\File\\CookedBuilds\\Win64_Development_${env.P4_CHANGELIST}" /e /i /s /y'"""

格式
三 重 引号 用于 传入 变量 , 因此 它 现在 是 Win64_Development_1234

相关问题