Git PullRequest工作失败。找不到任何修改版本。验证此作业的存储库和分支配置

时间:2014-05-28 08:24:32

标签: git github jenkins pull-request

昨天我的pullrequest工作失败,输出如下:

11:07:41  > git rev-parse origin/${sha1}^{commit}
11:07:41  > git rev-parse ${sha1}^{commit}
11:07:41 ERROR: Couldn't find any revision to build. Verify the repository and branch configuration for this job.

我已经进行了调查,发现在财产$ {sha1}中没有任何东西。当我粘贴一个绝对路径来拉取请求构建器,如pr / 341 / merge而不是$ {sha1}时,构建工作正常。它可以是什么?

Git客户端插件 1.9.0

GitHub API插件 1.44

17 个答案:

答案 0 :(得分:13)

我花了很长时间在这上面。以上评论"如果我将此字段留空并且#34;像魅力一样工作。在SCM中:
1)选择Git
2)姓名:origin
3)Refspec:+refs/pull/*:refs/remotes/origin/pr/*
4)要建立的分支:留空

这解决了上述错误。

答案 1 :(得分:8)

如上所述here,如果要手动构建作业,请在作业设置中选中“此构建参数化”,并使用默认值添加名为sha1的字符串参数master。在开始构建时,给出要构建或引用的sha1参数提交ID(例如:origin / pr / 9 / head)。

答案 2 :(得分:3)

根据this,Github分支的默认名称已从“主”更改为“主”。

因此,在为新存储库创建新作业时,必须将“ main”设置为分支名称,而不是“ master”。

请注意,github可以将“ master”(或其他方便的名称)设置为默认分支名称。

答案 3 :(得分:2)

如果未正确设置“分支说明符”,有时会发生这种情况。 我更正了说明符,它对我有用。

*/release/release4.5.0

*/fetaure/myfeature

答案 4 :(得分:1)

您需要定义分支名称,因为Jenkins默认捕获master,而GitHub中没有master,现在是main,因此在GitHub的情况下,您还需要传递分支名称。

git branch: 'main', credentialsId: 'GithubCred', url: 'Your-Repo-URL'

它解决了我的问题

答案 5 :(得分:0)

就我而言,我通过将 Jenkins 默认分支名称从“/master”更新为“/Master”来解决该问题。我正在使用 Bitbucket 云和 Master 分支。

答案 6 :(得分:0)

问题 - 错误:找不到要构建的任何修订版。验证此作业的存储库和分支配置。 嗨,伙计们,请检查以 jenkins 构建为目标的分支名称 两边应该是一样的(git 和 jenkins )

答案 7 :(得分:0)

在 Jenkins 的 Branch Specifier 中留空对我有用 SourceCodeManagement>Branchs to build>Branch Specifier 它会默认为 */master 删除默认的一个

答案 8 :(得分:0)

我遇到了类似的问题,错误出在分支名称中,您需要在 origin repository 中指定 branch name 以确保更改被接受。

  • 例如
origin/feature/branch_name

答案 9 :(得分:0)

在 Jenkins 的作业配置中,在 Pipeline SCM 部分下,取消选中“Lightweight checkout”并保存。还要确保您正确命名您的分支,正如其他人提到的那样。

答案 10 :(得分:0)

我最近遇到了同样的错误,由于我希望Jenkins检出我代码的特定分支,因此以上都不对我有用。分支名称设置为 $ {BRANCH} ,这是我在同一作业上创建的Jenkins参数。

如果我使用其他分支,它可以正常工作。我花了很长时间调试,因为它在其他地方都可以使用。我可以克隆回购库并结帐到本地分支机构而不会出现问题。但只有詹金斯(Jenkins)似乎在报告此错误。

最后,经过大量调查,我意识到我在此Jenkins作业中设置为BRANCH参数的默认值是我从“参数”部分中的同一作业的较早运行中复制的。如果我们从该部分进行复制,看起来好像添加了隐藏的特殊字符,这就是为什么即使它看起来是我想在Jenkins日志中签出的同一分支,也以某种方式具有附加的隐藏字符,因此每次都失败。我从该参数中删除了默认值,然后在Job配置中手动将该值重新键入为默认值,之后效果很好。

答案 11 :(得分:0)

每当我们没有指定要提取的正确分支时,git就会查找存储库具有的所有分支,并最终抛出一条错误消息:“找不到要构建的任何修订版。请验证以下内容的存储库和分支配置:这项工作。”

我的git pull遇到了同样的问题,并且我使用jenkins来指定配置。

如果我们将其保留为空白,它将从master分支中获取文件,但是如果出现问题或输入错误,它将查找所有分支并抛出错误,提示未找到分支。

答案 12 :(得分:0)

我有同样的问题。以我为例,原因是我使用了一个github存储库,该存储库是svn存储库的镜像(因为SonarCloud不正确支持svn)。 Jenkins中的默认值为*/master。解决方案(found by Gavin McDonald of Apache INFRA)使用*/trunk。另一个问题是网址中的“ .git”,不应使用。

答案 13 :(得分:0)

我遇到了同样的问题,花了4个小时才解决,但终于解决了。

就我而言,错误是由于错误的Git exe引起的。在Jenkins内部,在Windows上设置Git exe路径时,请在cmd文件夹下设置路径

在我的情况下是C:\ Program Files \ Git \ cmd \ git.exe

它解决了我的问题。

答案 14 :(得分:0)

我使用“Branches to build - branch specifier”中的refs/heads/<branchName>语法通过修复了同样的错误消息。

例如,我将origin/master作为分支说明符来代替refs/remotes/origin/master来修复作业。

(在我的情况下,我不确定是什么原因导致出现此错误消息,因为该作业以前只使用origin/master作为分支说明符正常工作。它可能是相关的更新或配置更改...)

请注意,您可以使用git show-ref命令列出本地存储库中的引用,例如

git show-ref master
28f1f186807d1316bf1c59631d6d8825a5087e27 refs/heads/master
28f1f186807d1316bf1c59631d6d8825a5087e27 refs/remotes/origin/master

另外,“?” 'Branch Specifier'字段旁边的帮助文档也支持这个答案,作为指定分支说明符以确保预期分支明确无误的最安全的选项:

Specify the branches if you'd like to track a specific branch in a repository. If left blank, all branches will be examined for changes and built.

The safest way is to use the refs/heads/<branchName> syntax. This way the expected branch is unambiguous.

Possible options:

<branchName>
Tracks/checks out the specified branch. If ambiguous the first result is taken, which is not necessarily the expected one. Better use refs/heads/<branchName>.
E.g. master, feature1,...

refs/heads/<branchName>
Tracks/checks out the specified branch.
E.g. refs/heads/master, refs/heads/feature1/master,...

<remoteRepoName>/<branchName>
Tracks/checks out the specified branch. If ambiguous the first result is taken, which is not necessarily the expected one.
Better use refs/heads/<branchName>.
E.g. origin/master

remotes/<remoteRepoName>/<branchName>
Tracks/checks out the specified branch.
E.g. remotes/origin/master

refs/remotes/<remoteRepoName>/<branchName>
Tracks/checks out the specified branch.
E.g. refs/remotes/origin/master

<tagName>
This does not work since the tag will not be recognized as tag.
Use refs/tags/<tagName> instead.
E.g. git-2.3.0

refs/tags/<tagName>
Tracks/checks out the specified tag.
E.g. refs/tags/git-2.3.0

<commitId>
Checks out the specified commit.
E.g. 5062ac843f2b947733e6a3b105977056821bd352, 5062ac84, ...

${ENV_VARIABLE}
It is also possible to use environment variables. In this case the variables are evaluated and the result is used as described above.
E.g. ${TREEISH}, refs/tags/${TAGNAME},...

<Wildcards>
The syntax is of the form: REPOSITORYNAME/BRANCH. In addition, BRANCH is recognized as a shorthand of */BRANCH, '*' is recognized as a wildcard, and '**' is recognized as wildcard that includes the separator '/'. Therefore, origin/branches* would match origin/branches-foo but not origin/branches/foo, while origin/branches** would match both origin/branches-foo and origin/branches/foo.

:<regular expression>
The syntax is of the form: :regexp. Regular expression syntax in branches to build will only build those branches whose names match the regular expression.

答案 15 :(得分:0)

经过大量研究和突破。我收到了同样的错误,我发现如果你使用不同的git路径也会出现这个错误。确保您有正确的路径。例如: 我用 C:\ Program Files \ Git \ bin \ git.exe 替换了 C:\ Program Files \ Git \ git-bash.exe ,这解决了这个问题。< / p>

答案 16 :(得分:-1)

有时,在詹金斯和存储库中指定的分支名称不同。在我的情况下,jenkins将Master设置为jenkins中的默认分支。但是我实际的分支是主要的。我花了两个多小时来识别。我没有更改它,因为詹金斯将其设置为默认值。 Errormain 但这是错误。 因此,如果出现此错误,请首先验证存储库中的分支名称和jenkins中的分支名称。