【问题标题】:Jenkins: Get GIT output into an arrayJenkins:将 GIT 输出放入数组中
【发布时间】:2022-10-14 22:10:56
【问题描述】:

我目前正在使用下面的代码来获取在当前提交和主分支之间更改的文件列表:

        gitOutput = bat script: "git diff-tree -r --no-commit-id --name-only HEAD origin/master", returnStdout: true
        changedFiles = gitOutput .split("\n")
        echo changedFiles.toString() 

这是我得到的输出:

[
, D:\home\jenkins\myjob>git diff-tree -r --no-commit-id --name-only HEAD origin/master 
, Jenkinsfile, MyData/Program.cs]

我想得到的输出是:

[Jenkinsfile, MyData/Program.cs]

我试图添加 .trim() 但我得到:

No signature of method: [Ljava.lang.String;.trim() is applicable for argument types: () values: []

而且我不确定如何删除我的命令而不是实际输出的元素

【问题讨论】:

    标签: jenkins groovy


    【解决方案1】:

    发生这种情况是因为您直接将 bat 命令分配给变量,这导致您的命令及其输出被写入变量。

    为避免这种情况,请使用:

    def gitOutput = bat(script: script, returnStdout: true)
    

    其中 script 是需要运行的命令。这将只返回输出而不是命令。

    【讨论】:

    • 我仍然收到相同的错误 hudson.remoting.ProxyException: groovy.lang.MissingMethodException: No signature of method: [Ljava.lang.String;.trim() is applicable for argument types: () values: []
    【解决方案2】:

    我使用以下方法找到了解决方案: listOfFiles[2..-1]我可以删除前两个元素并拥有我需要的东西

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-19
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      相关资源
      最近更新 更多