Jenkins:将GIT输出放到一个数组中



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

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:homejenkinsmyjob>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: []

我不知道如何删除我的命令而不是实际输出的元素

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

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

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

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

我通过使用找到了一个解决方案:listOfFiles[2..-1]我可以放下前两个元素,并拥有我需要的

最新更新