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/4279361The 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 -> Select a job -> Configure -> Source Code Management -> Branches to build -> 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 作业失败。找不到要构建的任何修订。验证此作业的存储库和分支配置的主要内容,如果未能解决你的问题,请参考以下文章