代码之家  ›  专栏  ›  技术社区  ›  Anee

从Windows批处理文件返回字符串

  •  1
  • Anee  · 技术社区  · 6 年前

    当在Github上提交请求时,我想在我的Jenkins管道中找到目标分支。为了实现这一点,我正在做以下工作:

    我正在从jenkinsfile调用一个windows批处理文件,它反过来调用一个nodejs脚本。此脚本在内部调用GitHub API以获取要在JenkinsFile中的某个变量上设置的目标分支(下面给出的代码段): 詹金斯档案

    env.TARGET_BRANCH = bat "GetTargetBranchFromGit.bat ${env.BRANCH_NAME}"
    

    BatchFile:

    node getTargetBranchForPR.js %1
    

    但是不幸的是,变量env.target_branch没有被设置为目标分支,即使nodejs脚本得到了正确的值。实际上,我无法从批处理文件返回值。有人能帮我一下吗?

    1 回复  |  直到 6 年前
        1
  •  0
  •   hakamairi    6 年前

    @npocmaka提到是正确的方式: How to do I get the output of a shell command executed using into a variable from Jenkinsfile (groovy)?

    AcCODRIN Jenkins' documentation .

    returnstdout(可选)如果选中,则任务的标准输出为 作为步骤值作为字符串返回,而不是打印到 生成日志。(如果有标准错误,仍将打印到 日志。)您通常希望对结果调用.trim()以除去 尾随换行符。

    所以你的代码应该是

    env.TARGET_BRANCH = bat( script: "GetTargetBranchFromGit.bat ${env.BRANCH_NAME}",
                             returnStdout: true
    ).trim()
    

    如果您返回的数据比预期的要多,您可能需要解析它。