Git PullRequest 作业失败。找不到要构建的任何修订。验证此作业的存储库和分支配置

Posted

技术标签:

【中文标题】Git PullRequest 作业失败。找不到要构建的任何修订。验证此作业的存储库和分支配置【英文标题】:Git PullRequest job failed. Couldn't find any revision to build. Verify the repository and branch configuration for this job 【发布时间】:2014-07-17 08:46:43 【问题描述】:

昨天我的 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

【问题讨论】:

【参考方案1】:

我在这方面花了很长时间。上面的评论“如果我将此字段留空”就像一个魅力。在单片机中: 1) 选择 Git 2) 姓名:origin 3) 参考规格:+refs/pull/*:refs/remotes/origin/pr/* 4)要建立的分支:留空

这样就解决了上面的错误。

【讨论】:

请编辑您的答案并添加代码/命令格式以便于阅读。谢谢。 感谢关于留空分支进行构建的提示。不幸的是,在我的小例子中,我仍然需要手动配置 master 分支到 PR 分支的合并(至少在使用分支而不是 fork 时):***.com/a/51915362/4279361 The above comment "if I leave this field blank"?什么评论?在哪里? ** 我在 Jenkins 中也遇到了同样的问题,我删除了要构建的分支名称,我的问题得到了解决 ** 我挣扎了 2 个多小时【参考方案2】:

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

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

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

【讨论】:

完美答案。它对我有用。谢谢。【参考方案3】:

如here所述,如果您想手动构建作业,请在作业设置中检查此构建已参数化并添加名为sha1的字符串参数,默认值为master .开始构建时,请提供您要构建的 sha1 参数提交 ID 或引用名称(例如:origin/pr/9/head)。

【讨论】:

【参考方案4】:

我通过在“要构建的分支 - 分支说明符”中使用 refs/heads/<branchName> 语法修复了同样的错误消息

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

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


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

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

还有,“?” “分支说明符”字段旁边的帮助文档也支持此答案,作为指定分支说明符以确保预期分支明确的最安全选项:

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.

【讨论】:

当您调用 SCM 或在 jenkins 中执行此操作时,您在哪里定义“要构建的分支 - 分支说明符”? @MiguelCosta 在詹金斯。我在Jenkins -&gt; Select a job -&gt; Configure -&gt; Source Code Management -&gt; Branches to build -&gt; Branch Specifier 看到了这个 感谢您的反馈,我正在使用多分支管道,我进行了搜索,但找不到类似的东西,也许我使用的是不同的 jenkins 版本,或者它在我的基础架构上不活跃,无论如何谢谢你【参考方案5】:

您需要定义分支名称,因为 Jenkins 默认捕获 master,并且 GitHub 中没有 master,它现在是 main,因此对于 GitHub,您还需要传递分支名称。

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

它解决了我的问题

【讨论】:

【参考方案6】:

经过大量研究和头脑风暴。我收到了同样的错误,我发现如果您使用不同的 git 路径也会发生此错误。确保你有正确的路径。例如: 我用 C:\Program Files\Git\bin\git.exe 替换了 C:\Program Files\Git\git-bash.exe,这解决了问题。

【讨论】:

【参考方案7】:

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

*/release/release4.5.0

*/feature/myfeature

【讨论】:

【参考方案8】:

我也浪费了一些时间来寻找解决方案。一段时间后,我了解到分支名称不同,这就是它不采用的原因。

解决方案在我的 repo 中是 main 并尝试使用 master.its 错误

这里变了

【讨论】:

找不到与我相同的错误分支名称。【参考方案9】:

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

在我的例子中,错误是因为错误的 Git exe。在Jenkins里面,在windows上设置Git exe路径的同时,设置cmd文件夹下的路径

在我的例子中是 C:\Program Files\Git\cmd\git.exe

它解决了我的问题。

【讨论】:

【参考方案10】:

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

【讨论】:

【参考方案11】:

当我们没有指定要拉取的正确分支时,git 将查找存储库具有的所有分支,并最终抛出错误说“找不到要构建的任何修订。验证存储库和分支配置这份工作。”

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

如果我们将其留空,它会从 master 分支获取文件,但如果出现问题或存在拼写错误,它会查找所有分支并抛出找不到分支的错误。

【讨论】:

【参考方案12】:

我最近遇到了同样的错误,因为我希望 Jenkins 签出我的代码的特定分支,所以上述方法都不适合我。分支名称设置为 $BRANCH,这是我在同一作业中创建的 Jenkins 参数。

如果我使用其他分支,它工作得很好。我花了很长时间来调试,因为它在其他任何地方都可以工作。我可以克隆 repo 并在本地结帐,而不会出现问题。但似乎只有 Jenkins 报告了这个错误。

最后,经过大量调查,我意识到我在此 Jenkins 作业中设置的 BRANCH 参数的默认值是我从“参数”部分的同一作业的早期运行中复制的。如果我们从该部分复制,看起来会添加一个隐藏的特殊字符,这就是为什么即使它看起来是我想在 Jenkins 日志中检查的同一个分支,但它不知何故有一个额外的隐藏字符,因此每次都失败.我从该参数中删除了默认值,并在作业配置中手动将该值重新键入为默认值,之后它工作正常。

【讨论】:

【参考方案13】:

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

【讨论】:

这并不能真正回答问题。如果您有其他问题,可以点击 提问。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review 嗨,@Gowthaman。这个 main/master 默认分支名称是最近从 Github 更改的。这也是我的问题,我最终通过在 github 中更改此配置来解决我的问题。看我的回答:***.com/a/64532475/3055724【参考方案14】:

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

【讨论】:

【参考方案15】:

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

例如
origin/feature/branch_name

【讨论】:

【参考方案16】:

在 Jenkins 的分支说明符中留空对我有用 SourceCodeManagement>Branchs to build>Branch Specifier 它将被默认为 */master 删除默认的一个

【讨论】:

【参考方案17】:

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

【讨论】:

您可能需要稍微编辑一下您的答案,使其更具结构性并更具可读性。在当前版本中,它看起来像意识流【参考方案18】:

在我的情况下,我通过将 Jenkins 默认分支名称从“/master”更新为“/Master”解决了这个问题。我正在使用 Bitbucket 云和 Master 分支。

【讨论】:

【参考方案19】:

这对我有用:

stage ('Git Checkout') 
  steps 
      git branch: 'main', url: 'https://<token>@github.com/username/repoName.git'
     
  

【讨论】:

以上是关于Git PullRequest 作业失败。找不到要构建的任何修订。验证此作业的存储库和分支配置的主要内容,如果未能解决你的问题,请参考以下文章

关于xshell连接阿里云服务器后报错的问题,git安装失败,找不到git包

找不到 git 命令,也找不到 ssh-agent

第一次作业

上传git编译失败回退

上传git编译失败回退

写入 Big Query 时数据流作业失败 - 未找到 JSON 文件