昨天我的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
答案 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中的分支名称。