【问题标题】:pass parameter from jenkins parameterized build to windows batch command将参数从 jenkins 参数化构建传递到 Windows 批处理命令
【发布时间】:2021-01-03 03:32:31
【问题描述】:

我开始使用 Jenkins,这是一个非常棒的工具。我们正在使用参数化构建,我们定义参数,例如分支名称 ${Branch}(例如 dev、release、main 等)。

在构建配置中,我可以添加一个 windows 批处理命令,有没有办法可以将这些参数传递给批处理命令?

我尝试像“%${Branch}%”或“%Branch%”一样通过,但似乎不起作用。

谁能帮忙?

非常感谢

【问题讨论】:

  • 这和 TFS 有什么关系?
  • @GiulioVian 标签已更新。 :)

标签: batch-file jenkins cmd


【解决方案1】:

使用Parameterized Build,你需要定义参数。当您单击“构建”链接时,将提示您这些值。

参数的名称应该是纯名称,最好不要有空格,例如Branch。不要在参数名称的定义中添加任何${}%%

构建步骤中,如Execute Windows Batch Command,您可以使用常规批处理语法引用参数,如%Branch%

如果您在 *nix 机器上,您将使用 Execute shell 构建步骤并使用常规 bash 语法引用参数,例如 ${Branch}

请注意,即使在 Windows 上运行,许多 Jenkins 插件本身也采用 *nix 语法中的参数,但是 Execute Windows Batch Command 将类似于批处理,即%Branch%

所以,您可以尝试输入:
echo %Branch%

我还建议将set 命令单独放在一行中,它会在构建过程中向您显示所有可用的环境变量,这非常有用。

【讨论】:

  • @UnderDog 您可以覆盖该参数,但下一个构建步骤(“Windows 之外的批处理命令”)从作业继承的 clean 环境开始,因此您的修改丢失。这是为了保持构建系统清洁而设计的。您可以使用 EnvInject plugin 进行各种环境变量操作,包括您需要的。
  • 谢谢..真的帮帮我。
  • 我希望使用选择参数在 Jenkins 中运行 cypress 测试。使用上面的解决方案我做到了:npm run %scripts%.其中“脚本”是选择参数的名称。
【解决方案2】:

我并没有真正理解你所说的分支,因为我有点新,但如果你谈论如何像 yourcmd -a 那样运行并让它运行与原始代码和 -b 不同的代码,这对我有用。 在目录中,使用您的参数名称创建两个文件 例如 -一只蝙蝠 -b.bat 您不需要在其中编写任何代码。 在您的命令的代码中 例如 createfolder.bat 写

@echo off
if %~n1 == -a goto :aran
if %~n1 == -b goto :bran
:aran
Your first parameter code
cls
:bran
Your 2nd parameter code
cls

希望对您有所帮助! 您甚至可以添加多达 50 个参数!

【讨论】:

    猜你喜欢
    • 2013-08-30
    • 2015-08-30
    • 2022-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-30
    • 1970-01-01
    相关资源
    最近更新 更多