如何在Jenkins中对master分支运行git diff-tree?

5

我希望在 Jenkins 构建过程中能够查看当前分支和主分支之间发生了哪些文件变化。

在我的 Jenkinsfile 中,我有以下代码:

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

但我收到以下错误:

致命错误:模糊参数 'master':未知的修订版或路径不在工作树中。

非常感谢任何帮助..如果有人能告诉我哪里错了或设计一个替代方案来给出已更改文件的文件路径,那将是太好了。

另外,上述命令在本地可行,但在Jenkins中无法执行。

3个回答

9
我终于找到了解决方法。@vonc指引了我正确的方向,但他提供的链接毫无意义。
这是帮助我的链接。

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

你需要在项目的Jenkins设置中添加一个refspec。如果你正在使用Github组织,你需要在组织的设置中应用,因为你无法更改特定存储库的设置。不管怎样,这对我有效。
将此添加为refspec。
+refs/heads/master:refs/remotes/@{remote}/master

好的反馈。+1。 - VonC
我已经寻找了很久这个修复方法。谢谢。 - CodeGodie

0

这意味着在Jenkins工作区中没有检出master分支。
这是典型的克隆存储库,其默认分支不是master

确保在Jenkins中进行预构建步骤:

git checkout -b master origin/master

然后再尝试一次你的差异。


我已经检查了Github存储库的设置,主分支是默认分支。这是你想要的吗? - gurpsone
@gurpsone 是的。但你仍然可以尝试将我提到的检出作为预构建步骤添加到Jenkins作业中,以查看是否有任何差异。 - VonC
  • git checkout -b master origin/master 致命错误:'origin/master' 不是一个提交,无法从中创建分支 'master'
- gurpsone
@gurpsone 是的,或者指定一个带有所有分支的refspec,例如https://dev59.com/mZ_ha4cB1Zd3GeqPy3EK#45112838 - VonC
Jenkinsfile 中的 fetch 操作会一直挂起直到超时。我不理解 refspec … 不过还是谢谢。 - gurpsone
显示剩余3条评论

-1

列出从当前 HEAD(当前提交)到主分支(master)的更改文件。

git diff-tree -r --no-commit-id --name-only HEAD origin/main

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接