Jenkins工作通知失败,“没有针对URI的git使用者...”

时间:2014-04-10 22:25:16

标签: git curl jenkins

我想设置一个post-receive git挂钩,通知jenkins有关更改的内容,但jenkins中没有触发任何作业。

我的post-receive挂钩看起来像这样:

curl http://localhost/jenkins/git/notifyCommit?url=<git_repository_url>

如果我在终端发出命令,我收到以下消息:

"No git consumers for URI..."

我有一个连接到Git源代码管理的jenkins工作,给出了存储库URL以及分支:*/master

我已经搜索过这个问题,但我发现没有什么有用的内容:“没有针对URI的git使用者”

我用:

  • LinuxMint
  • Apache 2.4.6
  • git 1.8.3.2
  • curl 7.32.0
  • Jenkins 1.532.2

我在apache中有一个代理设置:

<Proxy *>
    Order deny,allow
    deny from all
   allow from 127.0.0.1
</Proxy>

git存储库是bare

4 个答案:

答案 0 :(得分:43)

为要通知的每个项目启用SCM轮询:

  1. 转到信息中心
  2. 点击项目
  3. 点击配置
  4. 构建触发器下,选中投票SCM 框。
  5. 重复任何其他项目。
  6. 您发送的通知告诉Jenkins轮询存储库,因此项目只会在启用SCM轮询时响应。

答案 1 :(得分:15)

消息No git consumers for URI始终显示,如果您看到No git jobs using repository,您应该担心。响应将包含计划进行轮询的作业列表,因此只要您看到它们,就会触发轮询。

那说你可能想检查轮询实际上是某事。如果你进入配置了Git的工作,你可以看到左边的Git Polling Log的链接。在那里,您将能够看到触发器是否实际执行了任何操作,更重要的是,如果出现错误。

我遇到了类似的问题,我花了一段时间才发现我的Git配置错误。我的工作将在手动触发时构建正常,但轮询触发器将使用与Git二进制文件不同的路径并失败。我最终必须定义Git路径来解决我的问题。

答案 2 :(得分:6)

我必须采取以下步骤:

  1. 根据@ angstadt530的说明启用 SCM轮询
    • project-&gt; configure-&gt;&#34;构建触发器&#34; - &gt;&#34;启用SCM轮询&#34; ......检查一下
  2. 按照@monitorjbl的说明检查 Git轮询日志
    • project-&gt;&#34; Git Polling Log&#34; ......确定#3
  3. 使用工作区强制轮询
    • 项目 - &gt;配置 - &gt;&#34;源代码管理&#34; - &gt;&#34;其他行为&#34; - &gt;添加 - &gt;&#34;强制轮询使用工作区&#34 ; ...从下拉列表中选择它。
  4. 除了&#34之外完成#1;没有针对URI gitRepoURI的#git消费者&#34;我也得到了&#34;计划轮询projectName&#34;。

    但是,查看Git Polling Log我发现错误消息:无法运行程序&#34; C:\ Program Files(x86)\ Git \ bin \ git.exe&#34;:error = 2,没有这样的文件或目录

    要修复此错误,我必须将源代码管理配置为使用工作区强制轮询(#3)。我不确定为什么,因为手动启动的构建工作正常。也许是一个错误 - 可能是Linux服务器和Windows奴隶的混合。但不管怎样,这最终为我解决了这个问题。希望它有所帮助。

答案 3 :(得分:1)

除了@idontevenseethecode的解决方案

如果 git repo 是专用的,请不要忘记检查“源代码管理”下的“存储库 URL”!