【问题标题】:How to run git diff-tree against master branch in jenkins?如何在詹金斯的主分支上运行 git diff-tree?
【发布时间】:2019-01-18 16:32:27
【问题描述】:

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

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

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

但我得到以下错误

致命:不明确的参数“master”:未知修订版或路径不在工作树中。

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

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

【问题讨论】:

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


    【解决方案1】:

    我终于找到了解决这个问题的方法。 @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
    

    【讨论】:

    • 良好的反馈。 +1。
    • 我一直在寻找这个修复程序。谢谢。
    【解决方案2】:

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

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

    git checkout -b master origin/master
    

    然后再试一次你的差异。

    【讨论】:

    • 我已经检查了 github 中 repo 的设置,master 分支是默认分支。你是这个意思吗?
    • @gurpsone 是的。但您仍然可以尝试添加您的 Jenkins 作业,作为预构建步骤,即我提到的结帐,看看是否有什么不同。
    • + git checkout -b master origin/master fatal: 'origin/master' 不是提交,不能从中创建分支 'master'
    • @gurpsone 所以......远程仓库显然没有主分支。或者获取规则没有获取所有远程分支。
    • 我如何确保它获取所有远程分支?远程仓库肯定有一个 master 分支。
    猜你喜欢
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多