groovy 如何在jenkins中运行git diff-tree来对抗主分支?

fkaflof6  于 2022-11-01  发布在  Jenkins
关注(0)|答案(3)|浏览(184)

我希望能够看到在jenkins构建过程中,哪些文件在我的当前分支和主分支之间发生了变化。
在我的jenkinsfile中,我有下面的代码。

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

但我得到下面的错误
fatal:参数'master'不明确:未知的修订或路径不在工作树中。
任何帮助将不胜感激..这将是伟大的,如果有人能告诉我,我做错了什么,或设计一个替代的解决方案,将给我的文件路径的文件已经改变。
仅供参考,上述命令在本地有效,但在jenkins中无效。

inkz8wg9

inkz8wg91#

我终于找到了解决这个问题的方法。@vonc给我指出了正确的方向,但他提供的链接没有任何意义。
这是帮助我的链接。
https://issues.jenkins-ci.org/browse/JENKINS-45666?page=com.atlassian.jira.plugin.system.issuetabpanels%3Achangehistory-tabpanel
你必须在jenkins设置中为项目添加一个refspec。如果你使用github组织,你必须在组织设置中应用,因为你不能改变一个特定的repos设置。无论如何,这对我来说是有效的。
将其添加为参考规范。

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

zqry0prt2#

这意味着Jenkins工作区中没有检出的master分支。
这是典型的 default 分支为 notmaster的克隆存储库。
请确保在jenkins中执行预构建步骤:

git checkout -b master origin/master

然后重试您的差异。

iqjalb3h

iqjalb3h3#

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

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

相关问题