如何 运行 git diff-tree against master branch in jenkins?

How to run git diff-tree against master branch in jenkins?

我希望能够在 jenkins 构建期间查看当前分支和 master 分支之间哪些文件发生了变化。

在我的 jenkinsfile 中有以下代码。

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

但我收到以下错误

fatal: ambiguous argument 'master': unknown revision or path not in the working tree.

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

仅供参考,上面的命令在本地有效,但在 jenkins 中无效。

这应该意味着 Jenkins 工作区中没有签出 master 分支。
这是典型的克隆仓库,其 default 分支是 not master.

确保在 jenkins 中执行预构建步骤:

git checkout -b master origin/master

然后再试一次你的差异。

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

这是对我有帮助的link。

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

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

将其添加为参考规范。

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