如何在詹金斯的master分支上运行git diff-tree?

时间:2019-01-18 16:32:27

标签: git jenkins groovy jenkins-pipeline git-diff-tree

我希望能够查看在jenkins构建过程中当前分支和主分支之间哪些文件已更改。

在我的jenkinsfile中,我有以下代码。

git diff-tree -r --no-commit-id --name-only ${env.GIT_COMMIT} origin/master

但是我得到以下错误

  

致命:模棱两可的参数“主”:未知的修订或路径不在工作树中。

任何帮助将不胜感激..如果有人可以告诉我我做错了什么,或设计出一种替代解决方案来为我提供已更改文件的文件路径,那就太好了。

fyi,以上命令在本地有效,但在jenkins中无效。

2 个答案:

答案 0 :(得分:2)

我终于找到了解决办法。 @vonc向我指出了正确的方向,但是他提供的链接没有任何意义。

这是对我有帮助的链接。

https://issues.jenkins-ci.org/browse/JENKINS-45666?page=com.atlassian.jira.plugin.system.issuetabpanels%3Achangehistory-tabpanel

您必须在项目的詹金斯设置中添加一个refspec。如果您使用的是github组织,则必须在组织设置中应用,因为您无法更改特定的回购设置。无论如何,这对我有用。

将其添加为参考规范。

+refs/heads/master:refs/remotes/@{remote}/master

答案 1 :(得分:0)

这应该意味着Jenkins工作空间中没有检出master分支。
这是典型的克隆回购,其 default 分支为 not master

确保在jenkins中进行预构建:

git checkout -b master origin/master

然后再试一次您的差异。